From 99eb514306e38239cbc2b222cdd3b647bc332b78 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 28 Feb 2024 21:16:26 +0700 Subject: [PATCH 001/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20restru?= =?UTF-8?q?ctured=20and=20restryling=20repository=20list=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ => RepositoryList}/RepositoryList.tsx | 92 +++++++++++-------- .../projects/create/RepositoryList/index.ts | 1 + .../pages/org-slug/projects/create/index.tsx | 8 +- 3 files changed, 61 insertions(+), 40 deletions(-) rename packages/frontend/src/components/projects/create/{ => RepositoryList}/RepositoryList.tsx (59%) create mode 100644 packages/frontend/src/components/projects/create/RepositoryList/index.ts diff --git a/packages/frontend/src/components/projects/create/RepositoryList.tsx b/packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx similarity index 59% rename from packages/frontend/src/components/projects/create/RepositoryList.tsx rename to packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx index f09e61d6..171082ed 100644 --- a/packages/frontend/src/components/projects/create/RepositoryList.tsx +++ b/packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx @@ -3,13 +3,17 @@ import { Octokit } from 'octokit'; import assert from 'assert'; import { useDebounce } from 'usehooks-ts'; -import { Button, Typography, Option } from '@material-tailwind/react'; +import { Button, Typography } from '@material-tailwind/react'; -import SearchBar from '../../SearchBar'; -import ProjectRepoCard from './ProjectRepoCard'; -import { GitOrgDetails, GitRepositoryDetails } from '../../../types'; -import AsyncSelect from '../../shared/AsyncSelect'; -import { GithubIcon } from 'components/shared/CustomIcon'; +import { ProjectRepoCard } from 'components/projects/create/ProjectRepoCard'; +import { GitOrgDetails, GitRepositoryDetails } from 'types'; +import { + ChevronGrabberHorizontal, + GithubIcon, + SearchIcon, +} from 'components/shared/CustomIcon'; +import { Select, SelectOption } from 'components/shared/Select'; +import { Input } from 'components/shared/Input'; const DEFAULT_SEARCHED_REPO = ''; const REPOS_PER_PAGE = 5; @@ -18,9 +22,9 @@ interface RepositoryListProps { octokit: Octokit; } -const RepositoryList = ({ octokit }: RepositoryListProps) => { +export const RepositoryList = ({ octokit }: RepositoryListProps) => { const [searchedRepo, setSearchedRepo] = useState(DEFAULT_SEARCHED_REPO); - const [selectedAccount, setSelectedAccount] = useState(''); + const [selectedAccount, setSelectedAccount] = useState(); const [orgs, setOrgs] = useState([]); // TODO: Add new type for Git user when required const [gitUser, setGitUser] = useState(); @@ -35,7 +39,7 @@ const RepositoryList = ({ octokit }: RepositoryListProps) => { const orgs = await octokit.rest.orgs.listForAuthenticatedUser(); setOrgs(orgs.data); setGitUser(user.data); - setSelectedAccount(user.data.login); + setSelectedAccount({ label: user.data.login, value: user.data.login }); }; fetchUserAndOrgs(); @@ -54,7 +58,7 @@ const RepositoryList = ({ octokit }: RepositoryListProps) => { let query = `${debouncedSearchedRepo} in:name fork:true`; // Check if selected account is an organization - if (selectedAccount === gitUser.login) { + if (selectedAccount.value === gitUser.login) { query = query + ` user:${selectedAccount}`; } else { query = query + ` org:${selectedAccount}`; @@ -69,7 +73,7 @@ const RepositoryList = ({ octokit }: RepositoryListProps) => { return; } - if (selectedAccount === gitUser.login) { + if (selectedAccount.value === gitUser.login) { const result = await octokit.rest.repos.listForAuthenticatedUser({ per_page: REPOS_PER_PAGE, affiliation: 'owner', @@ -78,7 +82,9 @@ const RepositoryList = ({ octokit }: RepositoryListProps) => { return; } - const selectedOrg = orgs.find((org) => org.login === selectedAccount); + const selectedOrg = orgs.find( + (org) => org.login === selectedAccount.value, + ); assert(selectedOrg, 'Selected org not found in list'); const result = await octokit.rest.repos.listForOrg({ @@ -96,7 +102,7 @@ const RepositoryList = ({ octokit }: RepositoryListProps) => { const handleResetFilters = useCallback(() => { assert(gitUser, 'Git user is not available'); setSearchedRepo(DEFAULT_SEARCHED_REPO); - setSelectedAccount(gitUser.login); + setSelectedAccount({ label: gitUser.login, value: gitUser.login }); }, [gitUser]); const accounts = useMemo(() => { @@ -107,35 +113,51 @@ const RepositoryList = ({ octokit }: RepositoryListProps) => { return [gitUser, ...orgs]; }, [octokit, orgs, gitUser]); + const options = useMemo(() => { + return accounts.map((account) => ({ + label: account.login, + value: account.login, + leftIcon: , + })); + }, [accounts]); + return ( -
-
-
- + {/* Dropdown and search */} +
+
+ setSearchedRepo(event.target.value)} placeholder="Search for repository" + leftIcon={} + onChange={(e) => setSearchedRepo(e.target.value)} />
+ + {/* Repository list */} {Boolean(repositoryDetails.length) ? ( - repositoryDetails.map((repo, key) => { - return ; - }) +
+ {repositoryDetails.map((repo, index) => ( + <> + + {/* Horizontal line */} + {index !== repositoryDetails.length - 1 && ( +
+ )} + + ))} +
) : (
@@ -151,8 +173,6 @@ const RepositoryList = ({ octokit }: RepositoryListProps) => {
)} -
+ ); }; - -export default RepositoryList; diff --git a/packages/frontend/src/components/projects/create/RepositoryList/index.ts b/packages/frontend/src/components/projects/create/RepositoryList/index.ts new file mode 100644 index 00000000..dc3bc8c5 --- /dev/null +++ b/packages/frontend/src/components/projects/create/RepositoryList/index.ts @@ -0,0 +1 @@ +export * from './RepositoryList'; diff --git a/packages/frontend/src/pages/org-slug/projects/create/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/index.tsx index 1c86ee3b..49eeed96 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; import templates from 'assets/templates'; -import RepositoryList from 'components/projects/create/RepositoryList'; +import { RepositoryList } from 'components/projects/create/RepositoryList'; import ConnectAccount from 'components/projects/create/ConnectAccount'; import { useOctokit } from 'context/OctokitContext'; import { Heading } from 'components/shared/Heading'; @@ -13,8 +13,8 @@ const NewProject = () => { return isAuth ? ( <>
- - Start with template + + Start with a template
{templates.map((template) => { @@ -28,7 +28,7 @@ const NewProject = () => { })}
- + Import a repository From eda2cc76edad4b94d83f26c0e38fe1dbc73cba57 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 28 Feb 2024 21:16:59 +0700 Subject: [PATCH 002/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20restru?= =?UTF-8?q?ctured=20and=20restyling=20project=20repo=20card=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/create/ProjectRepoCard.tsx | 81 ---------------- .../ProjectRepoCard/ProjectRepoCard.tsx | 94 +++++++++++++++++++ .../projects/create/ProjectRepoCard/index.ts | 1 + 3 files changed, 95 insertions(+), 81 deletions(-) delete mode 100644 packages/frontend/src/components/projects/create/ProjectRepoCard.tsx create mode 100644 packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx create mode 100644 packages/frontend/src/components/projects/create/ProjectRepoCard/index.ts diff --git a/packages/frontend/src/components/projects/create/ProjectRepoCard.tsx b/packages/frontend/src/components/projects/create/ProjectRepoCard.tsx deleted file mode 100644 index fbcf50b4..00000000 --- a/packages/frontend/src/components/projects/create/ProjectRepoCard.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import React, { useCallback } from 'react'; -import toast from 'react-hot-toast'; -import { useNavigate, useParams } from 'react-router-dom'; - -import { Chip, IconButton, Spinner } from '@material-tailwind/react'; - -import { relativeTimeISO } from '../../../utils/time'; -import { GitRepositoryDetails } from '../../../types'; -import { useGQLClient } from '../../../context/GQLClientContext'; -import { GithubIcon, LockIcon } from 'components/shared/CustomIcon'; - -interface ProjectRepoCardProps { - repository: GitRepositoryDetails; -} - -const ProjectRepoCard: React.FC = ({ repository }) => { - const client = useGQLClient(); - const navigate = useNavigate(); - const [isLoading, setIsLoading] = React.useState(false); - - const { orgSlug } = useParams(); - - const createProject = useCallback(async () => { - if (!repository) { - return; - } - - setIsLoading(true); - const { addProject } = await client.addProject(orgSlug!, { - name: `${repository.owner!.login}-${repository.name}`, - prodBranch: repository.default_branch!, - repository: repository.full_name, - // TODO: Compute template from repo - template: 'webapp', - }); - - if (Boolean(addProject)) { - setIsLoading(false); - navigate(`import?projectId=${addProject.id}`); - } else { - setIsLoading(false); - toast.error('Failed to create project'); - } - }, [client, repository]); - - return ( -
-
- -
-
-
- {repository.full_name} - {repository.visibility === 'private' && ( - } - /> - )} -
-

{repository.updated_at && relativeTimeISO(repository.updated_at)}

-
- {isLoading ? ( - - ) : ( -
- - {'>'} - -
- )} -
- ); -}; - -export default ProjectRepoCard; diff --git a/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx b/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx new file mode 100644 index 00000000..6c8363ef --- /dev/null +++ b/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx @@ -0,0 +1,94 @@ +import React, { useCallback } from 'react'; +import toast from 'react-hot-toast'; +import { useNavigate, useParams } from 'react-router-dom'; + +import { Spinner } from '@material-tailwind/react'; + +import { relativeTimeISO } from 'utils/time'; +import { GitRepositoryDetails } from 'types'; +import { useGQLClient } from 'context/GQLClientContext'; +import { + ArrowRightCircleIcon, + GithubIcon, + LockIcon, +} from 'components/shared/CustomIcon'; +import { Button } from 'components/shared/Button'; + +interface ProjectRepoCardProps { + repository: GitRepositoryDetails; +} + +export const ProjectRepoCard: React.FC = ({ + repository, +}) => { + const client = useGQLClient(); + const navigate = useNavigate(); + const [isLoading, setIsLoading] = React.useState(false); + + const { orgSlug } = useParams(); + + const createProject = useCallback(async () => { + if (!repository) { + return; + } + + setIsLoading(true); + const { addProject } = await client.addProject(orgSlug!, { + name: `${repository.owner!.login}-${repository.name}`, + prodBranch: repository.default_branch!, + repository: repository.full_name, + // TODO: Compute template from repo + template: 'webapp', + }); + + if (Boolean(addProject)) { + setIsLoading(false); + navigate(`import?projectId=${addProject.id}`); + } else { + setIsLoading(false); + toast.error('Failed to create project'); + } + }, [client, repository]); + + return ( +
+ {/* Icon container */} +
+ +
+ {/* Content */} +
+
+

+ {repository.full_name} +

+

+ {repository.updated_at && relativeTimeISO(repository.updated_at)} +

+
+ {repository.visibility === 'private' && ( +
+ + Private +
+ )} +
+ {/* Right action */} + {isLoading ? ( + + ) : ( + + )} +
+ ); +}; diff --git a/packages/frontend/src/components/projects/create/ProjectRepoCard/index.ts b/packages/frontend/src/components/projects/create/ProjectRepoCard/index.ts new file mode 100644 index 00000000..78472497 --- /dev/null +++ b/packages/frontend/src/components/projects/create/ProjectRepoCard/index.ts @@ -0,0 +1 @@ +export * from './ProjectRepoCard'; From 769593913e22b2ea6ac71d50a67f6f6bdf6ef60f Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 28 Feb 2024 21:17:30 +0700 Subject: [PATCH 003/251] =?UTF-8?q?=F0=9F=90=9B=20fix:=20button=20inside?= =?UTF-8?q?=20button=20console=20browser=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/create/TemplateCard/TemplateCard.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/components/projects/create/TemplateCard/TemplateCard.tsx b/packages/frontend/src/components/projects/create/TemplateCard/TemplateCard.tsx index b7c549fd..b26ff856 100644 --- a/packages/frontend/src/components/projects/create/TemplateCard/TemplateCard.tsx +++ b/packages/frontend/src/components/projects/create/TemplateCard/TemplateCard.tsx @@ -49,9 +49,9 @@ export const TemplateCard = ({ template, isGitAuth }: TemplateCardProps) => { }, [isGitAuth, navigate, template, toast]); return ( - )} - +
); }; From eb4ccfbc9cb4a7cef1c5522b28d3e8ba1ac834e7 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 28 Feb 2024 21:17:59 +0700 Subject: [PATCH 004/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20make=20the=20in?= =?UTF-8?q?put=20width=20full?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Input/Input.theme.ts | 4 +++- packages/frontend/src/components/shared/Input/Input.tsx | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/components/shared/Input/Input.theme.ts b/packages/frontend/src/components/shared/Input/Input.theme.ts index b1ecb705..0144d578 100644 --- a/packages/frontend/src/components/shared/Input/Input.theme.ts +++ b/packages/frontend/src/components/shared/Input/Input.theme.ts @@ -8,6 +8,8 @@ export const inputTheme = tv( 'items-center', 'rounded-lg', 'relative', + 'gap-2', + 'w-full', 'placeholder:text-elements-disabled', 'disabled:cursor-not-allowed', 'disabled:bg-controls-disabled', @@ -27,7 +29,7 @@ export const inputTheme = tv( 'disabled:shadow-none', 'disabled:border-none', ], - icon: ['text-elements-mid-em'], + icon: ['text-elements-low-em'], iconContainer: [ 'absolute', 'inset-y-0', diff --git a/packages/frontend/src/components/shared/Input/Input.tsx b/packages/frontend/src/components/shared/Input/Input.tsx index fb3fd7d6..dd88bd80 100644 --- a/packages/frontend/src/components/shared/Input/Input.tsx +++ b/packages/frontend/src/components/shared/Input/Input.tsx @@ -87,12 +87,12 @@ export const Input = ({ ); return ( -
+
{renderLabels}
{leftIcon && renderLeftIcon} Date: Wed, 28 Feb 2024 21:18:29 +0700 Subject: [PATCH 005/251] =?UTF-8?q?=F0=9F=90=9B=20fix:=20controlled=20and?= =?UTF-8?q?=20uncontroller=20console=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/shared/Select/Select.theme.ts | 4 +-- .../src/components/shared/Select/Select.tsx | 34 +++++-------------- 2 files changed, 11 insertions(+), 27 deletions(-) diff --git a/packages/frontend/src/components/shared/Select/Select.theme.ts b/packages/frontend/src/components/shared/Select/Select.theme.ts index 43d4b0f4..fed6531e 100644 --- a/packages/frontend/src/components/shared/Select/Select.theme.ts +++ b/packages/frontend/src/components/shared/Select/Select.theme.ts @@ -85,7 +85,7 @@ export const selectTheme = tv({ size: { md: { container: ['min-h-11'], - inputWrapper: ['min-h-11', 'text-sm', 'pl-4', 'pr-4', 'py-1'], + inputWrapper: ['min-h-11', 'text-sm', 'pl-4', 'pr-4'], icon: ['h-[18px]', 'w-[18px]'], helperText: 'text-sm', helperIcon: ['h-5', 'w-5'], @@ -93,7 +93,7 @@ export const selectTheme = tv({ }, sm: { container: ['min-h-8'], - inputWrapper: ['min-h-8', 'text-xs', 'pl-3', 'pr-3', 'py-0.5'], + inputWrapper: ['min-h-8', 'text-xs', 'pl-3', 'pr-3'], icon: ['h-4', 'w-4'], helperText: 'text-xs', helperIcon: ['h-4', 'w-4'], diff --git a/packages/frontend/src/components/shared/Select/Select.tsx b/packages/frontend/src/components/shared/Select/Select.tsx index 963cc0bb..8c7e9149 100644 --- a/packages/frontend/src/components/shared/Select/Select.tsx +++ b/packages/frontend/src/components/shared/Select/Select.tsx @@ -3,7 +3,6 @@ import React, { useState, ComponentPropsWithoutRef, useMemo, - useCallback, MouseEvent, useRef, useEffect, @@ -135,7 +134,9 @@ export const Select = ({ const theme = selectTheme({ size, error, variant, orientation }); const [inputValue, setInputValue] = useState(''); - const [selectedItem, setSelectedItem] = useState(null); + const [selectedItem, setSelectedItem] = useState( + (value as SelectOption) || null, + ); const [dropdownOpen, setDropdownOpen] = useState(false); const [dropdownPosition, setDropdownPosition] = useState<'top' | 'bottom'>( 'bottom', @@ -166,22 +167,6 @@ export const Select = ({ } }, [dropdownOpen]); // Re-calculate whenever the dropdown is opened - useEffect(() => { - // If multiple selection is enabled, ensure the internal state is an array - if (multiple) { - if (Array.isArray(value)) { - // Directly use the provided array - setSelectedItems(value); - } else { - // Reset or set to empty array if the value is not an array - setSelectedItems([]); - } - } else { - // For single selection, directly set the selected item - setSelectedItem(value as SelectOption); - } - }, [value, multiple]); - const handleSelectedItemChange = (selectedItem: SelectOption | null) => { setSelectedItem(selectedItem); setInputValue(selectedItem ? selectedItem.label : ''); @@ -194,9 +179,10 @@ export const Select = ({ addSelectedItem, removeSelectedItem, selectedItems, - setSelectedItems, + // setSelectedItems, reset, } = useMultipleSelection({ + selectedItems: multiple ? (value as SelectOption[]) : [], onSelectedItemsChange: multiple ? undefined : ({ selectedItems }) => { @@ -234,6 +220,7 @@ export const Select = ({ openMenu, } = useCombobox({ items: filteredItems, + selectedItem: multiple ? null : (value as SelectOption) || null, // @ts-expect-error – there are two params but we don't need the second one isItemDisabled: (item) => item.disabled, onInputValueChange: ({ inputValue = '' }) => setInputValue(inputValue), @@ -265,16 +252,12 @@ export const Select = ({ setInputValue(''); } }, - selectedItem: multiple ? null : selectedItem, // TODO: Make the input value empty when the dropdown is open, has a value, it is not multiple, and searchable itemToString: (item) => (item && !multiple ? item.label : ''), }); - const isSelected = useCallback( - (item: SelectOption) => - multiple ? selectedItems.includes(item) : selectedItem === item, - [selectedItems, selectedItem, multiple], - ); + const isSelected = (item: SelectOption) => + multiple ? selectedItems.includes(item) : selectedItem === item; const handleClear = (e: MouseEvent) => { e.stopPropagation(); @@ -336,6 +319,7 @@ export const Select = ({ const isMultipleHasValue = multiple && selectedItems.length > 0; const isMultipleHasValueButNotSearchable = multiple && !searchable && selectedItems.length > 0; + const displayPlaceholder = useMemo(() => { if (hideValues && isMultipleHasValue) { return `${selectedItems.length} selected`; From 075cec58e5d039ef4c3dd5c7feb6349df43dd715 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 28 Feb 2024 21:27:04 +0700 Subject: [PATCH 006/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20add=20github=20?= =?UTF-8?q?icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/create/RepositoryList/RepositoryList.tsx | 1 + packages/frontend/src/components/shared/Select/Select.tsx | 2 ++ 2 files changed, 3 insertions(+) diff --git a/packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx b/packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx index 171082ed..14af57e6 100644 --- a/packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx +++ b/packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx @@ -130,6 +130,7 @@ export const RepositoryList = ({ octokit }: RepositoryListProps) => { options={options} placeholder="Select a repository" value={selectedAccount} + leftIcon={selectedAccount ? : undefined} rightIcon={} onChange={(value) => setSelectedAccount(value as SelectOption)} /> diff --git a/packages/frontend/src/components/shared/Select/Select.tsx b/packages/frontend/src/components/shared/Select/Select.tsx index 8c7e9149..0e82edcc 100644 --- a/packages/frontend/src/components/shared/Select/Select.tsx +++ b/packages/frontend/src/components/shared/Select/Select.tsx @@ -375,6 +375,8 @@ export const Select = ({ 'w-6': isMultipleHasValueButNotSearchable && !hideValues, // Add margin to the X icon 'ml-6': isMultipleHasValueButNotSearchable && clearable, + // Add padding if there's a left icon + 'pl-7': leftIcon, }, )} /> From ee35e64f6997f2b33e97917460a9f2a933295f0b Mon Sep 17 00:00:00 2001 From: Andre H Date: Wed, 28 Feb 2024 23:06:54 +0700 Subject: [PATCH 007/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20add=20icons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/CustomIcon/BuildingIcon.tsx | 22 +++++++++++++++++++ .../shared/CustomIcon/ChevronUpDown.tsx | 21 ++++++++++++++++++ .../src/components/shared/CustomIcon/index.ts | 2 ++ 3 files changed, 45 insertions(+) create mode 100644 packages/frontend/src/components/shared/CustomIcon/BuildingIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/ChevronUpDown.tsx diff --git a/packages/frontend/src/components/shared/CustomIcon/BuildingIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/BuildingIcon.tsx new file mode 100644 index 00000000..cae3610e --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/BuildingIcon.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const BuildingIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/ChevronUpDown.tsx b/packages/frontend/src/components/shared/CustomIcon/ChevronUpDown.tsx new file mode 100644 index 00000000..ac6f1723 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/ChevronUpDown.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const ChevronUpDown = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index 72205c83..59a6d8f2 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -4,6 +4,7 @@ export * from './CheckIcon'; export * from './ChevronGrabberHorizontal'; export * from './ChevronLeft'; export * from './ChevronRight'; +export * from './ChevronUpDown'; export * from './InfoSquareIcon'; export * from './WarningIcon'; export * from './SearchIcon'; @@ -26,6 +27,7 @@ export * from './GithubIcon'; export * from './GitTeaIcon'; export * from './LockIcon'; export * from './PencilIcon'; +export * from './BuildingIcon'; export * from './CheckRadioIcon'; export * from './ChevronDownIcon'; export * from './BranchIcon'; From 2f466d4fbb3a8eb6e13511772b4ca491b205b259 Mon Sep 17 00:00:00 2001 From: Andre H Date: Wed, 28 Feb 2024 23:07:31 +0700 Subject: [PATCH 008/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20remove=20dot=20?= =?UTF-8?q?when=20description=20dont=20exist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/shared/Select/SelectItem/SelectItem.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx b/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx index a6bbc487..060be52a 100644 --- a/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx +++ b/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx @@ -62,11 +62,13 @@ const SelectItem = forwardRef(

{label}

- {orientation === 'horizontal' && } {description && ( -

- {description} -

+ <> + {orientation === 'horizontal' && } +

+ {description} +

+ )}
{renderRightIcon} From 0381fdbbedbe1ff80cc26a4d69e6ac76188d3e6c Mon Sep 17 00:00:00 2001 From: Andre H Date: Wed, 28 Feb 2024 23:07:54 +0700 Subject: [PATCH 009/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20impelment?= =?UTF-8?q?=20user=20select?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/UserSelect/UserSelect.theme.ts | 58 ++++++ .../shared/UserSelect/UserSelect.tsx | 186 ++++++++++++++++++ .../UserSelectItem/UserSelectItem.theme.ts | 28 +++ .../UserSelectItem/UserSelectItem.tsx | 75 +++++++ .../shared/UserSelect/UserSelectItem/index.ts | 2 + .../src/components/shared/UserSelect/index.ts | 2 + 6 files changed, 351 insertions(+) create mode 100644 packages/frontend/src/components/shared/UserSelect/UserSelect.theme.ts create mode 100644 packages/frontend/src/components/shared/UserSelect/UserSelect.tsx create mode 100644 packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.theme.ts create mode 100644 packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx create mode 100644 packages/frontend/src/components/shared/UserSelect/UserSelectItem/index.ts create mode 100644 packages/frontend/src/components/shared/UserSelect/index.ts diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelect.theme.ts b/packages/frontend/src/components/shared/UserSelect/UserSelect.theme.ts new file mode 100644 index 00000000..7e17355e --- /dev/null +++ b/packages/frontend/src/components/shared/UserSelect/UserSelect.theme.ts @@ -0,0 +1,58 @@ +import { tv, VariantProps } from 'tailwind-variants'; + +export const userSelectTheme = tv({ + slots: { + container: ['flex', 'flex-col', 'relative', 'gap-2'], + inputWrapper: [ + 'relative', + 'flex', + 'flex-wrap', + 'gap-1', + 'min-w-[200px]', + 'w-full', + 'rounded-lg', + 'bg-transparent', + 'text-elements-mid-em', + 'shadow-sm', + 'border', + 'border-border-interactive', + 'focus-ring', + 'disabled:shadow-none', + 'disabled:border-none', + ], + input: ['outline-none'], + popover: [ + 'mt-12', + 'z-20', + 'absolute', + 'px-1', + 'py-1', + 'flex-col', + 'gap-0.5', + 'min-w-full', + 'bg-surface-floating', + 'shadow-dropdown', + 'w-auto', + 'max-h-60', + 'overflow-auto', + 'border', + 'border-gray-200', + 'rounded-xl', + ], + }, + variants: { + isOpen: { + true: { + popover: ['flex'], + }, + false: { + popover: ['hidden'], + }, + }, + hasValue: { + true: '', + }, + }, +}); + +export type UserSelectTheme = VariantProps; diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx new file mode 100644 index 00000000..7bfca072 --- /dev/null +++ b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx @@ -0,0 +1,186 @@ +import React, { + useState, + ComponentPropsWithoutRef, + useCallback, + useRef, + useEffect, +} from 'react'; +import { useNavigate } from 'react-router-dom'; +import { useCombobox } from 'downshift'; +import { UserSelectTheme, userSelectTheme } from './UserSelect.theme'; +import { + BuildingIcon, + ChevronUpDown, + SettingsSlidersIcon, +} from 'components/shared/CustomIcon'; +import { cn } from 'utils/classnames'; +import { EmptyUserSelectItem, UserSelectItem } from './UserSelectItem'; + +export type UserSelectOption = { + value: string; + label: string; + imgSrc?: string; +}; + +interface UserSelectProps + extends Omit, 'value' | 'onChange'>, + UserSelectTheme { + options: UserSelectOption[]; + value?: UserSelectOption; +} + +export const UserSelect = ({ options, value }: UserSelectProps) => { + const theme = userSelectTheme(); + const navigate = useNavigate(); + + const [selectedItem, setSelectedItem] = useState( + null, + ); + const [dropdownOpen, setDropdownOpen] = useState(false); + const [dropdownPosition, setDropdownPosition] = useState<'top' | 'bottom'>( + 'bottom', + ); + const popoverRef = useRef(null); // Ref for the popover + const inputWrapperRef = useRef(null); // Ref for the input wrapper + + // Calculate and update popover position + useEffect(() => { + if (dropdownOpen && popoverRef.current && inputWrapperRef.current) { + const popover = popoverRef.current; + // @ts-expect-error – we know it's not null lol + const input = inputWrapperRef.current.getBoundingClientRect(); + const spaceBelow = window.innerHeight - input.bottom; + const spaceAbove = input.top; + // @ts-expect-error – we know it's not null lol + const popoverHeight = popover.offsetHeight; + + // Determine if there's enough space below + if (spaceBelow >= popoverHeight) { + setDropdownPosition('bottom'); + } else if (spaceAbove >= popoverHeight) { + setDropdownPosition('top'); + } else { + // Default to bottom if neither has enough space, but you could also set logic to choose the side with more space + setDropdownPosition('bottom'); + } + } + }, [dropdownOpen]); // Re-calculate whenever the dropdown is opened + + useEffect(() => { + setSelectedItem(value as UserSelectOption); + }, [value]); + + const handleSelectedItemChange = (selectedItem: UserSelectOption | null) => { + setSelectedItem(selectedItem); + navigate(`/${selectedItem?.value}`); + }; + + const isSelected = useCallback( + (item: UserSelectOption) => selectedItem?.value === item.value, + [selectedItem], + ); + + const { isOpen, getMenuProps, highlightedIndex, getItemProps, openMenu } = + useCombobox({ + items: options, + // @ts-expect-error – there are two params but we don't need the second one + isItemDisabled: (item) => item.disabled, + onSelectedItemChange: ({ selectedItem }) => { + if (selectedItem) { + console.log(selectedItem); + handleSelectedItemChange(selectedItem); + } + }, + onIsOpenChange: ({ isOpen }) => { + setDropdownOpen(isOpen ?? false); + }, + selectedItem: selectedItem, + itemToString: (item) => (item ? item.label : ''), + }); + + const handleManage = () => { + //TODO: implement manage handler + }; + + return ( +
+ {/* Input */} +
!dropdownOpen && openMenu()} + className="cursor-pointer relative py-2 pl-2 pr-4 flex min-w-[200px] w-full items-center justify-between rounded-xl bg-surface-card shadow-sm" + > +
+ Snowball Logo +
+ {selectedItem?.label ? ( +

+ {selectedItem?.label} +

+ ) : ( +
+ )} +

Organization

+
+
+ +
+ +
+
+ + {/* Popover */} +
    + {/* Settings header */} +
    +
    + +

    Other teams

    +
    +
    +

    Manage

    + +
    +
    + + {/* Organization */} + {isOpen && options.length !== 0 ? ( + options.map((item, index) => ( + + )) + ) : ( + + )} + + {/* //TODO:Squiggly line */} + {/* //TODO:Personal */} +
+
+ ); +}; diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.theme.ts b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.theme.ts new file mode 100644 index 00000000..e5b8685e --- /dev/null +++ b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.theme.ts @@ -0,0 +1,28 @@ +import { tv, VariantProps } from 'tailwind-variants'; + +export const userSelectItemTheme = tv({ + slots: { + wrapper: [ + 'p-2', + 'gap-3', + 'flex', + 'items-center', + 'justify-between', + 'rounded-lg', + 'cursor-pointer', + ], + content: ['flex', 'gap-3', 'items-center'], + img: ['h-5', 'w-5'], + selectedIcon: ['h-5', 'w-5', 'text-controls-primary'], + label: ['text-sm', 'text-elements-high-em', 'tracking-[-0.006em]'], + }, + variants: { + active: { + true: { + wrapper: ['bg-base-bg-emphasized'], + }, + }, + }, +}); + +export type UserSelectItemTheme = VariantProps; diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx new file mode 100644 index 00000000..9684bc9a --- /dev/null +++ b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx @@ -0,0 +1,75 @@ +import React, { forwardRef, ComponentPropsWithoutRef, useMemo } from 'react'; +import { Overwrite, UseComboboxGetItemPropsReturnValue } from 'downshift'; +import { + userSelectItemTheme, + UserSelectItemTheme, +} from './UserSelectItem.theme'; +import { CheckRadioIcon } from 'components/shared/CustomIcon'; +import { UserSelectOption } from 'components/shared/UserSelect'; +import { OmitCommon } from 'types/common'; + +/** + * Represents a type that merges ComponentPropsWithoutRef<'li'> with certain exclusions. + * @type {MergedComponentPropsWithoutRef} + */ +type MergedComponentPropsWithoutRef = OmitCommon< + ComponentPropsWithoutRef<'li'>, + Omit< + Overwrite, + 'index' | 'item' + > +>; + +export interface UserSelectItemProps + extends MergedComponentPropsWithoutRef, + UserSelectItemTheme { + selected: boolean; + option: UserSelectOption; + hovered?: boolean; +} + +const UserSelectItem = forwardRef( + ({ className, selected, hovered, option, ...props }, ref) => { + const theme = userSelectItemTheme(); + + const { value, label, imgSrc } = option; + + const renderLeftImage = useMemo( + () => ( +
+ {`${value}-logo`} +
+ ), + [imgSrc, value], + ); + + return ( +
  • +
    + {renderLeftImage} +

    {label}

    +
    + {selected && } +
  • + ); + }, +); + +export const EmptyUserSelectItem = () => { + const theme = userSelectItemTheme(); + return ( +
  • +
    +

    No results found

    +
    +
  • + ); +}; + +UserSelectItem.displayName = 'UserSelectItem'; + +export { UserSelectItem }; diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/index.ts b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/index.ts new file mode 100644 index 00000000..57e76fc6 --- /dev/null +++ b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/index.ts @@ -0,0 +1,2 @@ +export * from './UserSelectItem'; +export * from './UserSelectItem.theme'; diff --git a/packages/frontend/src/components/shared/UserSelect/index.ts b/packages/frontend/src/components/shared/UserSelect/index.ts new file mode 100644 index 00000000..8225a33c --- /dev/null +++ b/packages/frontend/src/components/shared/UserSelect/index.ts @@ -0,0 +1,2 @@ +export * from './UserSelect'; +export * from './UserSelect.theme'; From 30c50a3eec21e1572fc1635a1a2b483c7684bf9a Mon Sep 17 00:00:00 2001 From: Andre H Date: Wed, 28 Feb 2024 23:08:21 +0700 Subject: [PATCH 010/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20use=20UserSelec?= =?UTF-8?q?t=20in=20sidebar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/shared/Sidebar/Sidebar.tsx | 69 ++++++------------- 1 file changed, 22 insertions(+), 47 deletions(-) diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index 0d746749..1dbb3b6d 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -1,14 +1,11 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { Link, NavLink, useNavigate, useParams } from 'react-router-dom'; import { Organization } from 'gql-client'; -import { Option } from '@material-tailwind/react'; import { useDisconnect } from 'wagmi'; import { useGQLClient } from 'context/GQLClientContext'; -import AsyncSelect from 'components/shared/AsyncSelect'; import { - ChevronGrabberHorizontal, FolderIcon, GlobeIcon, LifeBuoyIcon, @@ -17,6 +14,7 @@ import { } from 'components/shared/CustomIcon'; import { Tabs } from 'components/shared/Tabs'; import { Heading } from 'components/shared/Heading'; +import { UserSelect } from 'components/shared/UserSelect'; export const Sidebar = () => { const { orgSlug } = useParams(); @@ -37,6 +35,22 @@ export const Sidebar = () => { setSelectedOrgSlug(orgSlug); }, [orgSlug]); + const formattedSelected = useMemo(() => { + const selected = organizations.find((org) => org.slug === selectedOrgSlug); + return { + value: selected?.slug ?? '', + label: selected?.name ?? '', + imgSrc: '/logo.svg', + }; + }, [organizations, selectedOrgSlug, orgSlug]); + const formattedSelectOptions = useMemo(() => { + return organizations.map((org) => ({ + value: org.slug, + label: org.name, + imgSrc: '/logo.svg', + })); + }, [organizations, selectedOrgSlug, orgSlug]); + const handleLogOut = useCallback(() => { disconnect(); navigate('/login'); @@ -57,49 +71,10 @@ export const Sidebar = () => { {/* Switch organization */}
    - { - setSelectedOrgSlug(value!); - navigate(`/${value}`); - }} - selected={(_, index) => ( -
    - Application Logo -
    -
    - {organizations[index!]?.name} -
    -
    Organization
    -
    -
    - )} - arrow={} - > - {/* // TODO: Show label organization and manage in option */} - {organizations.map((org) => ( - - ))} -
    + {[ From 22f3cbafb7a8f5adfb9e7f815b96e73450f847b0 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 28 Feb 2024 17:27:27 -0700 Subject: [PATCH 011/251] readme --- README.md | 83 +++++++++++++++++++------------------------------------ 1 file changed, 29 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index d75ccdfb..1d93a186 100644 --- a/README.md +++ b/README.md @@ -2,44 +2,39 @@ ## Setup -- Clone the `snowballtools-base` repo +### Clone the `snowballtools-base` repo ```bash git clone git@github.com:snowball-tools/snowballtools-base.git + cd snowballtools-base ``` -- In root of the repo, install depedencies +### Install dependencies in root ```bash yarn ``` -- Build packages +### Build packages ```bash yarn build --ignore frontend ``` -## Backend +### Configuration Files -- Change directory to `packages/backend` +- For Backend: ```bash - cd packages/backend + cp packages/backend/environments/local.toml.example packages/backend/environments/local.toml ``` -- Rename backend config file from [environments/local.toml.example](packages/backend/environments/local.toml.example) to `local.toml` +- For Frontend: ```bash - mv environments/local.toml.example environments/local.toml + cp packages/frontend/.env.example packages/frontend/.env ``` -- Set `gitHub.oAuth.clientId` and `gitHub.oAuth.clientSecret` in backend [config file](packages/backend/environments/local.toml) - - Client ID and secret will be available after [creating an OAuth app](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app) - - In "Homepage URL", type `http://localhost:3000` - - In "Authorization callback URL", type `http://localhost:3000/organization/projects/create` - - Generate a new client secret after app is created - ### Backend Production - Let us assume the following domains for backend and frontend @@ -63,24 +58,21 @@ ``` - Set `gitHub.oAuth.clientId` and `gitHub.oAuth.clientSecret` in backend [config file](packages/backend/environments/local.toml) - - Client ID and secret will be available after [creating an OAuth app](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app) - - In "Homepage URL", type `https://dashboard.snowballtools.com` - - In "Authorization callback URL", type `https://dashboard.snowballtools.com/organization/projects/create` + - [OAuth App Creation](https://github.com/organizations//settings/applications/new) + - Homepage URL: `https://dashboard.snowballtools.com` + - Authorization callback URL: `https://dashboard.snowballtools.com/organization/projects/create` - Generate a new client secret after app is created - Set `gitHub.webhookUrl` in backend [config file](packages/backend/environments/local.toml) ```toml - ... [gitHub] webhookUrl = "https://api.snowballtools.com" - ... ``` - Let us assume domain for Laconicd to be `api.laconic.com` and set the following in backend [config file](packages/backend/environments/local.toml) ```toml - ... [registryConfig] fetchDeploymentRecordDelay = 5000 # Use actual port for REST endpoint @@ -98,21 +90,14 @@ amount = "200000" denom = "aphoton" gas = "750000" - ... - ``` - -- Start the server in `packages/backend` - - ```bash - yarn start ``` ### Backend Development - Set `gitHub.oAuth.clientId` and `gitHub.oAuth.clientSecret` in backend [config file](packages/backend/environments/local.toml) - - Client ID and secret will be available after [creating an OAuth app](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app) - - In "Homepage URL", type `http://localhost:3000` - - In "Authorization callback URL", type `http://localhost:3000/organization/projects/create` + - [OAuth App Creation](https://github.com/organizations//settings/applications/new) + - Homepage URL: `http://localhost:3000` + - Authorization callback URL: `http://localhost:3000/organization/projects/create` - Generate a new client secret after app is created - Setup Laconicd @@ -159,26 +144,16 @@ - Look for the forwarding URL in ngrok ```bash - ... Forwarding https://19c1-61-95-158-116.ngrok-free.app -> http://localhost:8000 - ... ``` - Set `gitHub.webhookUrl` in backend [config file](packages/backend/environments/local.toml) ```toml - ... [gitHub] webhookUrl = "https://19c1-61-95-158-116.ngrok-free.app" - ... ``` -- Start the server in `packages/backend` - - ```bash - yarn start:dev - ``` - ## Frontend - Change directory to `packages/frontend` in a new terminal @@ -187,12 +162,6 @@ cd packages/frontend ``` -- Rename [.env.example](packages/frontend/.env.example) to `.env` - - ```bash - mv .env.example .env - ``` - - Copy the GitHub OAuth app client ID from previous steps and set it in frontend [.env](packages/frontend/.env) file ```env @@ -202,9 +171,8 @@ - Set `REACT_APP_GITHUB_PWA_TEMPLATE_REPO` and `REACT_APP_GITHUB_IMAGE_UPLOAD_PWA_TEMPLATE_REPO` in [.env](packages/frontend/.env) file ```env - # Set actual owner/name of the template repo that will be used for creating new repo - REACT_APP_GITHUB_PWA_TEMPLATE_REPO = cerc-io/test-progressive-web-app - REACT_APP_GITHUB_IMAGE_UPLOAD_PWA_TEMPLATE_REPO = cerc-io/image-upload-pwa-example + REACT_APP_GITHUB_PWA_TEMPLATE_REPO = 'cerc-io/test-progressive-web-app' # Set actual owner/name of the template repo that will be used for creating new repo + REACT_APP_GITHUB_IMAGE_UPLOAD_PWA_TEMPLATE_REPO = 'cerc-io/image-upload-pwa-example' # Set actual owner/name of the template repo that will be used for creating new repo ``` ### Frontend Production @@ -216,8 +184,7 @@ - Set the following values in [.env](packages/frontend/.env) file ```env - # Backend server endpoint - REACT_APP_SERVER_URL = 'https://api.snowballtools.com' + REACT_APP_SERVER_URL = 'https://api.snowballtools.com' # Backend server endpoint ``` - Sign in to [wallet connect](https://cloud.walletconnect.com/sign-in) to create a project ID @@ -260,10 +227,18 @@ REACT_APP_WALLET_CONNECT_ID = ``` -- Start the React application +- The React application will be running in `http://localhost:3000/` + +## Development + +- Start the backend server + + ```bash + yarn start:backend + ``` + +- Start the frontend ```bash yarn start ``` - -- The React application will be running in `http://localhost:3000/` From f77f7c120a00e65dbed5290f1e474108a1cfb950 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 29 Feb 2024 08:52:26 +0700 Subject: [PATCH 012/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20follow=20select?= =?UTF-8?q?=20changes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/shared/UserSelect/UserSelect.tsx | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx index 7bfca072..eaae61d1 100644 --- a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx +++ b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx @@ -1,7 +1,6 @@ import React, { useState, ComponentPropsWithoutRef, - useCallback, useRef, useEffect, } from 'react'; @@ -34,7 +33,7 @@ export const UserSelect = ({ options, value }: UserSelectProps) => { const navigate = useNavigate(); const [selectedItem, setSelectedItem] = useState( - null, + (value as UserSelectOption) || null, ); const [dropdownOpen, setDropdownOpen] = useState(false); const [dropdownPosition, setDropdownPosition] = useState<'top' | 'bottom'>( @@ -75,10 +74,8 @@ export const UserSelect = ({ options, value }: UserSelectProps) => { navigate(`/${selectedItem?.value}`); }; - const isSelected = useCallback( - (item: UserSelectOption) => selectedItem?.value === item.value, - [selectedItem], - ); + const isSelected = (item: UserSelectOption) => + selectedItem?.value === item.value; const { isOpen, getMenuProps, highlightedIndex, getItemProps, openMenu } = useCombobox({ @@ -94,7 +91,7 @@ export const UserSelect = ({ options, value }: UserSelectProps) => { onIsOpenChange: ({ isOpen }) => { setDropdownOpen(isOpen ?? false); }, - selectedItem: selectedItem, + selectedItem: value || null, itemToString: (item) => (item ? item.label : ''), }); From a5b4103515c222cade865748837c3cee9b0e211a Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 29 Feb 2024 09:15:18 +0700 Subject: [PATCH 013/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20bigger=20img=20?= =?UTF-8?q?on=20userselectitem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserSelect/UserSelectItem/UserSelectItem.theme.ts | 2 +- .../shared/UserSelect/UserSelectItem/UserSelectItem.tsx | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.theme.ts b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.theme.ts index e5b8685e..17f28bdd 100644 --- a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.theme.ts +++ b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.theme.ts @@ -12,7 +12,7 @@ export const userSelectItemTheme = tv({ 'cursor-pointer', ], content: ['flex', 'gap-3', 'items-center'], - img: ['h-5', 'w-5'], + img: ['h-10', 'w-10', 'rounded-lg'], selectedIcon: ['h-5', 'w-5', 'text-controls-primary'], label: ['text-sm', 'text-elements-high-em', 'tracking-[-0.006em]'], }, diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx index 9684bc9a..861ca13f 100644 --- a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx +++ b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx @@ -32,14 +32,10 @@ const UserSelectItem = forwardRef( ({ className, selected, hovered, option, ...props }, ref) => { const theme = userSelectItemTheme(); - const { value, label, imgSrc } = option; + const { value, label, imgSrc = './logo.svg' } = option; const renderLeftImage = useMemo( - () => ( -
    - {`${value}-logo`} -
    - ), + () => {`${value}-logo`}, [imgSrc, value], ); From fe427a9fb80a80d08cc0624ebb535ffccb782e5a Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 29 Feb 2024 09:16:01 +0700 Subject: [PATCH 014/251] =?UTF-8?q?=F0=9F=90=9B=20fix:=20onChange=20not=20?= =?UTF-8?q?triggered.=20thanks=20@ayungavis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/UserSelect/UserSelect.tsx | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx index eaae61d1..07866570 100644 --- a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx +++ b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx @@ -5,14 +5,14 @@ import React, { useEffect, } from 'react'; import { useNavigate } from 'react-router-dom'; -import { useCombobox } from 'downshift'; -import { UserSelectTheme, userSelectTheme } from './UserSelect.theme'; +import { useSelect } from 'downshift'; import { BuildingIcon, ChevronUpDown, SettingsSlidersIcon, } from 'components/shared/CustomIcon'; import { cn } from 'utils/classnames'; +import { UserSelectTheme, userSelectTheme } from './UserSelect.theme'; import { EmptyUserSelectItem, UserSelectItem } from './UserSelectItem'; export type UserSelectOption = { @@ -77,23 +77,27 @@ export const UserSelect = ({ options, value }: UserSelectProps) => { const isSelected = (item: UserSelectOption) => selectedItem?.value === item.value; - const { isOpen, getMenuProps, highlightedIndex, getItemProps, openMenu } = - useCombobox({ - items: options, - // @ts-expect-error – there are two params but we don't need the second one - isItemDisabled: (item) => item.disabled, - onSelectedItemChange: ({ selectedItem }) => { - if (selectedItem) { - console.log(selectedItem); - handleSelectedItemChange(selectedItem); - } - }, - onIsOpenChange: ({ isOpen }) => { - setDropdownOpen(isOpen ?? false); - }, - selectedItem: value || null, - itemToString: (item) => (item ? item.label : ''), - }); + const { + isOpen, + getMenuProps, + getToggleButtonProps, + highlightedIndex, + getItemProps, + openMenu, + } = useSelect({ + items: options, + // @ts-expect-error – there are two params but we don't need the second one + isItemDisabled: (item) => item.disabled, + onSelectedItemChange: ({ selectedItem }) => { + if (selectedItem) { + handleSelectedItemChange(selectedItem); + } + }, + onIsOpenChange: ({ isOpen }) => { + setDropdownOpen(isOpen ?? false); + }, + itemToString: (item) => (item ? item.label : ''), + }); const handleManage = () => { //TODO: implement manage handler @@ -103,13 +107,17 @@ export const UserSelect = ({ options, value }: UserSelectProps) => {
    {/* Input */}
    !dropdownOpen && openMenu()} className="cursor-pointer relative py-2 pl-2 pr-4 flex min-w-[200px] w-full items-center justify-between rounded-xl bg-surface-card shadow-sm" >
    Snowball Logo From f08081932c9b298a96fff00057b27fba4539e2bd Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 29 Feb 2024 09:21:28 +0700 Subject: [PATCH 015/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20use=20?= =?UTF-8?q?custom=20toast=20component=20and=20handle=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectRepoCard/ProjectRepoCard.tsx | 60 ++++++++++++------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx b/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx index 6c8363ef..b06fc233 100644 --- a/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx +++ b/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx @@ -1,5 +1,4 @@ -import React, { useCallback } from 'react'; -import toast from 'react-hot-toast'; +import React, { useCallback, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { Spinner } from '@material-tailwind/react'; @@ -13,6 +12,7 @@ import { LockIcon, } from 'components/shared/CustomIcon'; import { Button } from 'components/shared/Button'; +import { useToast } from 'components/shared/Toast'; interface ProjectRepoCardProps { repository: GitRepositoryDetails; @@ -23,32 +23,52 @@ export const ProjectRepoCard: React.FC = ({ }) => { const client = useGQLClient(); const navigate = useNavigate(); - const [isLoading, setIsLoading] = React.useState(false); + const [isLoading, setIsLoading] = useState(false); const { orgSlug } = useParams(); + const { toast, dismiss } = useToast(); const createProject = useCallback(async () => { - if (!repository) { - return; + if (!repository || !orgSlug) { + return toast({ + id: 'missing-repository-or-org-slug', + title: 'Repository or organization slug is missing', + variant: 'error', + onDismiss: dismiss, + }); } - setIsLoading(true); - const { addProject } = await client.addProject(orgSlug!, { - name: `${repository.owner!.login}-${repository.name}`, - prodBranch: repository.default_branch!, - repository: repository.full_name, - // TODO: Compute template from repo - template: 'webapp', - }); - - if (Boolean(addProject)) { + try { + setIsLoading(true); + const { addProject } = await client.addProject(orgSlug, { + name: `${repository.owner?.login}-${repository.name}`, + prodBranch: repository.default_branch as string, + repository: repository.full_name, + // TODO: Compute template from repo + template: 'webapp', + }); + if (addProject) { + navigate(`import?projectId=${addProject.id}`); + } else { + toast({ + id: 'failed-to-create-project', + title: 'Failed to create project', + variant: 'error', + onDismiss: dismiss, + }); + } + } catch (error) { + console.error(error); + toast({ + id: 'failed-to-create-project', + title: 'Failed to create project', + variant: 'error', + onDismiss: dismiss, + }); + } finally { setIsLoading(false); - navigate(`import?projectId=${addProject.id}`); - } else { - setIsLoading(false); - toast.error('Failed to create project'); } - }, [client, repository]); + }, [client, repository, orgSlug, setIsLoading, navigate, toast]); return (
    Date: Thu, 29 Feb 2024 09:21:49 +0700 Subject: [PATCH 016/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20remove?= =?UTF-8?q?=20unused=20comment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Select/Select.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/frontend/src/components/shared/Select/Select.tsx b/packages/frontend/src/components/shared/Select/Select.tsx index 0e82edcc..fa22428c 100644 --- a/packages/frontend/src/components/shared/Select/Select.tsx +++ b/packages/frontend/src/components/shared/Select/Select.tsx @@ -179,7 +179,6 @@ export const Select = ({ addSelectedItem, removeSelectedItem, selectedItems, - // setSelectedItems, reset, } = useMultipleSelection({ selectedItems: multiple ? (value as SelectOption[]) : [], From ee397d0e6ec47ea95bb926c34c5be493115a073a Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 29 Feb 2024 09:30:29 +0700 Subject: [PATCH 017/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20add=20squigglyl?= =?UTF-8?q?ine=20icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/CustomIcon/SquigglyLine.tsx | 20 +++++++++++++++++++ .../src/components/shared/CustomIcon/index.ts | 1 + 2 files changed, 21 insertions(+) create mode 100644 packages/frontend/src/components/shared/CustomIcon/SquigglyLine.tsx diff --git a/packages/frontend/src/components/shared/CustomIcon/SquigglyLine.tsx b/packages/frontend/src/components/shared/CustomIcon/SquigglyLine.tsx new file mode 100644 index 00000000..cc309d7e --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/SquigglyLine.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const SquigglyLine: React.FC = (props) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index 59a6d8f2..7a0c856e 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -36,3 +36,4 @@ export * from './ClockIcon'; export * from './HorizontalDotIcon'; export * from './WarningDiamondIcon'; export * from './ArrowRightCircleFilledIcon'; +export * from './SquigglyLine'; From 91a80cac8a9850621be95a31bfee53a363745787 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 29 Feb 2024 09:30:53 +0700 Subject: [PATCH 018/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20add=20squi?= =?UTF-8?q?ggly=20line=20and=20personal=20TODO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/UserSelect/UserSelect.theme.ts | 3 +- .../shared/UserSelect/UserSelect.tsx | 93 +++++++++++-------- 2 files changed, 57 insertions(+), 39 deletions(-) diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelect.theme.ts b/packages/frontend/src/components/shared/UserSelect/UserSelect.theme.ts index 7e17355e..bca34a1c 100644 --- a/packages/frontend/src/components/shared/UserSelect/UserSelect.theme.ts +++ b/packages/frontend/src/components/shared/UserSelect/UserSelect.theme.ts @@ -25,8 +25,6 @@ export const userSelectTheme = tv({ 'mt-12', 'z-20', 'absolute', - 'px-1', - 'py-1', 'flex-col', 'gap-0.5', 'min-w-full', @@ -39,6 +37,7 @@ export const userSelectTheme = tv({ 'border-gray-200', 'rounded-xl', ], + popoverItemWrapper: ['flex', 'flex-col', 'px-2', 'py-2', 'gap-1'], }, variants: { isOpen: { diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx index 07866570..f68214cd 100644 --- a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx +++ b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx @@ -10,6 +10,7 @@ import { BuildingIcon, ChevronUpDown, SettingsSlidersIcon, + SquigglyLine, } from 'components/shared/CustomIcon'; import { cn } from 'utils/classnames'; import { UserSelectTheme, userSelectTheme } from './UserSelect.theme'; @@ -143,48 +144,66 @@ export const UserSelect = ({ options, value }: UserSelectProps) => { {...getMenuProps({ ref: popoverRef }, { suppressRefError: true })} id="popover" ref={popoverRef} - className={cn( - theme.popover({ isOpen }), - { - // Position the popover based on the dropdown position - 'top-[27.5%]': dropdownPosition === 'bottom', - 'bottom-[92.5%]': dropdownPosition === 'top', - }, - 'px-2 py-2', - )} + className={cn(theme.popover({ isOpen }), { + // Position the popover based on the dropdown position + 'top-[27.5%]': dropdownPosition === 'bottom', + 'bottom-[92.5%]': dropdownPosition === 'top', + })} > - {/* Settings header */} -
    -
    - -

    Other teams

    -
    -
    -

    Manage

    - +
    + {/* Settings header */} +
    +
    + +

    Other teams

    +
    +
    +

    Manage

    + +
    + + {/* Organization */} + {isOpen && options.length !== 0 ? ( + options.map((item, index) => ( + + )) + ) : ( + + )}
    - {/* Organization */} - {isOpen && options.length !== 0 ? ( - options.map((item, index) => ( - - )) - ) : ( - - )} + {/* Squiggly line */} + {/* //TODO:remove if personal dont exist */} +
    + +
    - {/* //TODO:Squiggly line */} - {/* //TODO:Personal */} +
    + {/* //TODO:Personal (replace options with Personal Options) */} + {isOpen && options.length !== 0 ? ( + options.map((item, index) => ( + + )) + ) : ( + + )} +
    ); From 87307381cbd616e7085920767d71ecad5a1cc175 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 29 Feb 2024 10:43:24 +0700 Subject: [PATCH 019/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20refactor=20and?= =?UTF-8?q?=20re-styling=20filter=20form=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/deployments/FilterForm.tsx | 82 ++++++++++--------- 1 file changed, 43 insertions(+), 39 deletions(-) diff --git a/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx b/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx index c28c6218..5cf4c200 100644 --- a/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx +++ b/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx @@ -1,10 +1,10 @@ import React, { useEffect, useState } from 'react'; -import { DateRange } from 'react-day-picker'; -import { IconButton, Option, Select } from '@material-tailwind/react'; - -import SearchBar from '../../../SearchBar'; -import DatePicker from '../../../DatePicker'; +import { Input } from 'components/shared/Input'; +import { CrossCircleIcon, SearchIcon } from 'components/shared/CustomIcon'; +import { DatePicker } from 'components/shared/DatePicker'; +import { Value } from 'react-calendar/dist/cjs/shared/types'; +import { Select, SelectOption } from 'components/shared/Select'; export enum StatusOptions { ALL_STATUS = 'All status', @@ -16,7 +16,7 @@ export enum StatusOptions { export interface FilterValue { searchedBranch: string; status: StatusOptions; - updateAtRange?: DateRange; + updateAtRange?: Value; } interface FilterFormProps { @@ -27,7 +27,7 @@ interface FilterFormProps { const FilterForm = ({ value, onChange }: FilterFormProps) => { const [searchedBranch, setSearchedBranch] = useState(value.searchedBranch); const [selectedStatus, setSelectedStatus] = useState(value.status); - const [dateRange, setDateRange] = useState(); + const [dateRange, setDateRange] = useState(); useEffect(() => { onChange({ @@ -43,46 +43,50 @@ const FilterForm = ({ value, onChange }: FilterFormProps) => { setDateRange(value.updateAtRange); }, [value]); + const statusOptions = Object.values(StatusOptions) + .map((status) => ({ + label: status, + value: status, + })) + .filter((status) => status.value !== StatusOptions.ALL_STATUS); + + const handleReset = () => { + setSearchedBranch(''); + }; + return ( -
    -
    - +
    + } + rightIcon={ + searchedBranch && + } value={searchedBranch} - onChange={(event) => setSearchedBranch(event.target.value)} + onChange={(e) => setSearchedBranch(e.target.value)} />
    -
    - +
    + setDateRange(undefined)} + />
    -
    +
    - {selectedStatus !== StatusOptions.ALL_STATUS && ( -
    - setSelectedStatus(StatusOptions.ALL_STATUS)} - className="rounded-full" - size="sm" - placeholder={''} - > - X - -
    - )} + value={{ label: selectedStatus, value: selectedStatus }} + onChange={(item) => + setSelectedStatus((item as SelectOption).value as StatusOptions) + } + onClear={() => setSelectedStatus(StatusOptions.ALL_STATUS)} + />
    ); From 630af612a290970aa80b38da386161cafba6f9d3 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 29 Feb 2024 10:43:53 +0700 Subject: [PATCH 020/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20add=20some?= =?UTF-8?q?=20components?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/CustomIcon/CrossCircleIcon.tsx | 21 +++++++++++++++++ .../shared/CustomIcon/RefreshIcon.tsx | 23 +++++++++++++++++++ .../src/components/shared/CustomIcon/index.ts | 2 ++ 3 files changed, 46 insertions(+) create mode 100644 packages/frontend/src/components/shared/CustomIcon/CrossCircleIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/RefreshIcon.tsx diff --git a/packages/frontend/src/components/shared/CustomIcon/CrossCircleIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CrossCircleIcon.tsx new file mode 100644 index 00000000..78f563c5 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/CrossCircleIcon.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const CrossCircleIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/RefreshIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/RefreshIcon.tsx new file mode 100644 index 00000000..ca818a25 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/RefreshIcon.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const RefreshIcon = (props: CustomIconProps) => { + return ( + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index b9965188..4b8e4b18 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -41,6 +41,8 @@ export * from './BranchStrokeIcon'; export * from './StorageIcon'; export * from './LinkIcon'; export * from './CursorBoxIcon'; +export * from './CrossCircleIcon'; +export * from './RefreshIcon'; // Templates export * from './templates'; From e0c5895e9c6a48826fd045855041f0b640962cea Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 29 Feb 2024 10:44:25 +0700 Subject: [PATCH 021/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20add=20`onR?= =?UTF-8?q?eset`=20prop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/shared/Calendar/Calendar.tsx | 41 ++++++++++++++----- .../shared/DatePicker/DatePicker.theme.ts | 2 +- .../shared/DatePicker/DatePicker.tsx | 25 +++++++---- .../components/shared/Select/Select.theme.ts | 2 +- .../src/components/shared/Select/Select.tsx | 14 +++---- .../shared/Select/SelectItem/SelectItem.tsx | 4 +- 6 files changed, 59 insertions(+), 29 deletions(-) diff --git a/packages/frontend/src/components/shared/Calendar/Calendar.tsx b/packages/frontend/src/components/shared/Calendar/Calendar.tsx index bf01dc06..1a67c34f 100644 --- a/packages/frontend/src/components/shared/Calendar/Calendar.tsx +++ b/packages/frontend/src/components/shared/Calendar/Calendar.tsx @@ -19,6 +19,7 @@ import { import './Calendar.css'; import { format } from 'date-fns'; +import { cn } from 'utils/classnames'; type ValuePiece = Date | null; export type Value = ValuePiece | [ValuePiece, ValuePiece]; @@ -63,6 +64,11 @@ export interface CalendarProps extends CustomReactCalendarProps, CalendarTheme { * @returns None */ onCancel?: () => void; + /** + * Optional callback function that is called when a reset action is triggered. + * @returns None + */ + onReset?: () => void; } /** @@ -80,6 +86,7 @@ export const Calendar = ({ actions, onSelect, onCancel, + onReset, onChange: onChangeProp, ...props }: CalendarProps): JSX.Element => { @@ -217,6 +224,11 @@ export const Calendar = ({ [setValue, setActiveDate, changeNavigationLabel, selectRange], ); + const handleReset = useCallback(() => { + setValue(null); + onReset?.(); + }, [setValue, onReset]); + return (
    {actions ? ( actions ) : ( <> - - + {value && ( + + )} +
    + + +
    )}
    diff --git a/packages/frontend/src/components/shared/DatePicker/DatePicker.theme.ts b/packages/frontend/src/components/shared/DatePicker/DatePicker.theme.ts index 522bd348..ee1b7466 100644 --- a/packages/frontend/src/components/shared/DatePicker/DatePicker.theme.ts +++ b/packages/frontend/src/components/shared/DatePicker/DatePicker.theme.ts @@ -2,7 +2,7 @@ import { VariantProps, tv } from 'tailwind-variants'; export const datePickerTheme = tv({ slots: { - input: [], + input: ['w-full'], }, }); diff --git a/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx b/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx index 99fd82a5..bae4502a 100644 --- a/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx +++ b/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useState } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import { Input, InputProps } from 'components/shared/Input'; import * as Popover from '@radix-ui/react-popover'; import { datePickerTheme } from './DatePicker.theme'; @@ -27,6 +27,10 @@ export interface DatePickerProps * Whether to allow the selection of a date range. */ selectRange?: boolean; + /** + * Optional callback function that is called when the date picker is reset. + */ + onReset?: () => void; } /** @@ -39,6 +43,7 @@ export const DatePicker = ({ calendarProps, value, onChange, + onReset, selectRange = false, ...props }: DatePickerProps) => { @@ -50,16 +55,16 @@ export const DatePicker = ({ * Renders the value of the date based on the current state of `props.value`. * @returns {string | undefined} - The formatted date value or `undefined` if `props.value` is falsy. */ - const renderValue = useCallback(() => { - if (!value) return undefined; + const renderValue = useMemo(() => { + if (!value) return ''; if (Array.isArray(value)) { return value .map((date) => format(date as Date, 'dd/MM/yyyy')) .join(' - '); } return format(value, 'dd/MM/yyyy'); - }, [value]); - + }, [value, onReset]); + console.log(renderValue); /** * Handles the selection of a date from the calendar. */ @@ -71,15 +76,20 @@ export const DatePicker = ({ [setOpen, onChange], ); + const handleReset = useCallback(() => { + setOpen(false); + onReset?.(); + }, [setOpen, onReset]); + return ( - + setOpen(true)} />} readOnly placeholder="Select a date..." - value={renderValue()} + value={renderValue} className={input({ className })} onClick={() => setOpen(true)} /> @@ -93,6 +103,7 @@ export const DatePicker = ({ {...calendarProps} selectRange={selectRange} value={value} + onReset={handleReset} onCancel={() => setOpen(false)} onSelect={handleSelect} /> diff --git a/packages/frontend/src/components/shared/Select/Select.theme.ts b/packages/frontend/src/components/shared/Select/Select.theme.ts index 43d4b0f4..9c00a5c2 100644 --- a/packages/frontend/src/components/shared/Select/Select.theme.ts +++ b/packages/frontend/src/components/shared/Select/Select.theme.ts @@ -2,7 +2,7 @@ import { VariantProps, tv } from 'tailwind-variants'; export const selectTheme = tv({ slots: { - container: ['flex', 'flex-col', 'relative', 'gap-2'], + container: ['flex', 'flex-col', 'relative', 'gap-2', 'w-full'], label: ['text-sm', 'text-elements-high-em'], description: ['text-xs', 'text-elements-low-em'], inputWrapper: [ diff --git a/packages/frontend/src/components/shared/Select/Select.tsx b/packages/frontend/src/components/shared/Select/Select.tsx index 963cc0bb..b009e856 100644 --- a/packages/frontend/src/components/shared/Select/Select.tsx +++ b/packages/frontend/src/components/shared/Select/Select.tsx @@ -3,7 +3,6 @@ import React, { useState, ComponentPropsWithoutRef, useMemo, - useCallback, MouseEvent, useRef, useEffect, @@ -12,7 +11,7 @@ import { useMultipleSelection, useCombobox } from 'downshift'; import { SelectTheme, selectTheme } from './Select.theme'; import { ChevronDownIcon, - CrossIcon, + CrossCircleIcon, WarningIcon, } from 'components/shared/CustomIcon'; import { cloneIcon } from 'utils/cloneIcon'; @@ -270,11 +269,8 @@ export const Select = ({ itemToString: (item) => (item && !multiple ? item.label : ''), }); - const isSelected = useCallback( - (item: SelectOption) => - multiple ? selectedItems.includes(item) : selectedItem === item, - [selectedItems, selectedItem, multiple], - ); + const isSelected = (item: SelectOption) => + multiple ? selectedItems.includes(item) : selectedItem === item; const handleClear = (e: MouseEvent) => { e.stopPropagation(); @@ -306,7 +302,7 @@ export const Select = ({ return (
    {clearable && (selectedItems.length > 0 || selectedItem) && ( - @@ -318,7 +314,7 @@ export const Select = ({ )}
    ); - }, [cloneIcon, theme, rightIcon]); + }, [cloneIcon, theme, rightIcon, selectedItem, selectedItems, clearable]); const renderHelperText = useMemo( () => ( diff --git a/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx b/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx index a6bbc487..8ac93774 100644 --- a/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx +++ b/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx @@ -62,7 +62,9 @@ const SelectItem = forwardRef(

    {label}

    - {orientation === 'horizontal' && } + {orientation === 'horizontal' && description && ( + + )} {description && (

    {description} From 6db58718684e41447831155bde15ef0b4e3367d5 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 29 Feb 2024 10:44:45 +0700 Subject: [PATCH 022/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20make=20the=20in?= =?UTF-8?q?put=20width=20to=20full?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Input/Input.theme.ts | 4 +++- packages/frontend/src/components/shared/Input/Input.tsx | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/components/shared/Input/Input.theme.ts b/packages/frontend/src/components/shared/Input/Input.theme.ts index b1ecb705..0144d578 100644 --- a/packages/frontend/src/components/shared/Input/Input.theme.ts +++ b/packages/frontend/src/components/shared/Input/Input.theme.ts @@ -8,6 +8,8 @@ export const inputTheme = tv( 'items-center', 'rounded-lg', 'relative', + 'gap-2', + 'w-full', 'placeholder:text-elements-disabled', 'disabled:cursor-not-allowed', 'disabled:bg-controls-disabled', @@ -27,7 +29,7 @@ export const inputTheme = tv( 'disabled:shadow-none', 'disabled:border-none', ], - icon: ['text-elements-mid-em'], + icon: ['text-elements-low-em'], iconContainer: [ 'absolute', 'inset-y-0', diff --git a/packages/frontend/src/components/shared/Input/Input.tsx b/packages/frontend/src/components/shared/Input/Input.tsx index fb3fd7d6..dd88bd80 100644 --- a/packages/frontend/src/components/shared/Input/Input.tsx +++ b/packages/frontend/src/components/shared/Input/Input.tsx @@ -87,12 +87,12 @@ export const Input = ({ ); return ( -

    +
    {renderLabels}
    {leftIcon && renderLeftIcon} Date: Thu, 29 Feb 2024 10:45:12 +0700 Subject: [PATCH 023/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20refactor=20and?= =?UTF-8?q?=20re-styling=20deployment=20tab=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/layouts/ProjectSearch.tsx | 4 +- .../src/pages/org-slug/projects/Id.tsx | 6 +- .../org-slug/projects/id/Deployments.tsx | 63 ++++++++++--------- 3 files changed, 40 insertions(+), 33 deletions(-) diff --git a/packages/frontend/src/layouts/ProjectSearch.tsx b/packages/frontend/src/layouts/ProjectSearch.tsx index c471ab5d..5805ba37 100644 --- a/packages/frontend/src/layouts/ProjectSearch.tsx +++ b/packages/frontend/src/layouts/ProjectSearch.tsx @@ -32,7 +32,7 @@ const ProjectSearch = () => { }, []); return ( -
    +
    @@ -64,7 +64,7 @@ const ProjectSearch = () => {
    -
    +
    diff --git a/packages/frontend/src/pages/org-slug/projects/Id.tsx b/packages/frontend/src/pages/org-slug/projects/Id.tsx index 8b164852..55f979c0 100644 --- a/packages/frontend/src/pages/org-slug/projects/Id.tsx +++ b/packages/frontend/src/pages/org-slug/projects/Id.tsx @@ -87,8 +87,8 @@ const Id = () => {
    -
    - +
    + Overview @@ -107,7 +107,7 @@ const Id = () => { {/* Not wrapping in Tab.Content because we are using Outlet */} -
    +
    diff --git a/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx b/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx index d26a2dd4..8ae231d9 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx @@ -2,15 +2,15 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { Deployment, Domain } from 'gql-client'; import { useOutletContext } from 'react-router-dom'; -import { Button, Typography } from '@material-tailwind/react'; - -import DeploymentDetailsCard from '../../../../components/projects/project/deployments/DeploymentDetailsCard'; +import DeploymentDetailsCard from 'components/projects/project/deployments/DeploymentDetailsCard'; import FilterForm, { FilterValue, StatusOptions, -} from '../../../../components/projects/project/deployments/FilterForm'; -import { OutletContextType } from '../../../../types'; -import { useGQLClient } from '../../../../context/GQLClientContext'; +} from 'components/projects/project/deployments/FilterForm'; +import { OutletContextType } from 'types'; +import { useGQLClient } from 'context/GQLClientContext'; +import { Button } from 'components/shared/Button'; +import { RefreshIcon } from 'components/shared/CustomIcon'; const DEFAULT_FILTER_VALUE: FilterValue = { searchedBranch: '', @@ -73,12 +73,19 @@ const DeploymentsTabPanel = () => { // TODO: match status field types (deployment.status as unknown as StatusOptions) === filterValue.status; + const startDate = + filterValue.updateAtRange instanceof Array + ? filterValue.updateAtRange[0] + : null; + const endDate = + filterValue.updateAtRange instanceof Array + ? filterValue.updateAtRange[1] + : null; + const dateMatch = !filterValue.updateAtRange || - (new Date(Number(deployment.createdAt)) >= - filterValue.updateAtRange!.from! && - new Date(Number(deployment.createdAt)) <= - filterValue.updateAtRange!.to!); + (new Date(Number(deployment.createdAt)) >= startDate! && + new Date(Number(deployment.createdAt)) <= endDate!); return branchMatch && statusMatch && dateMatch; }); @@ -93,12 +100,12 @@ const DeploymentsTabPanel = () => { }; return ( -
    +
    setFilterValue(value)} /> -
    +
    {Boolean(filteredDeployments.length) ? ( filteredDeployments.map((deployment, key) => { return ( @@ -113,27 +120,27 @@ const DeploymentsTabPanel = () => { ); }) ) : ( -
    -
    - + // TODO: Update the height based on the layout, need to re-styling the layout similar to create project layout +
    +
    +

    No deployments found - - - Please change your search query or filters - - +

    +

    + Please change your search query or filters. +

    +
    )}
    -
    +
    ); }; From 638e31f7fe194359bad2803f14442158cfcccaf6 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 29 Feb 2024 13:58:22 +0700 Subject: [PATCH 024/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20use=20wavyBorde?= =?UTF-8?q?r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/shared/UserSelect/UserSelect.tsx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx index f68214cd..81ef7923 100644 --- a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx +++ b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx @@ -6,15 +6,15 @@ import React, { } from 'react'; import { useNavigate } from 'react-router-dom'; import { useSelect } from 'downshift'; +import { UserSelectTheme, userSelectTheme } from './UserSelect.theme'; +import { EmptyUserSelectItem, UserSelectItem } from './UserSelectItem'; import { BuildingIcon, ChevronUpDown, SettingsSlidersIcon, - SquigglyLine, } from 'components/shared/CustomIcon'; +import { WavyBorder } from 'components/shared/WavyBorder'; import { cn } from 'utils/classnames'; -import { UserSelectTheme, userSelectTheme } from './UserSelect.theme'; -import { EmptyUserSelectItem, UserSelectItem } from './UserSelectItem'; export type UserSelectOption = { value: string; @@ -182,11 +182,9 @@ export const UserSelect = ({ options, value }: UserSelectProps) => { )}
    - {/* Squiggly line */} + {/* WavyBorder */} {/* //TODO:remove if personal dont exist */} -
    - -
    +
    {/* //TODO:Personal (replace options with Personal Options) */} From dfa38a4cba488d3a30f7bbb882a8ef3fe7a9b721 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 29 Feb 2024 13:58:45 +0700 Subject: [PATCH 025/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20remove=20useMem?= =?UTF-8?q?o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/UserSelect/UserSelectItem/UserSelectItem.tsx | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx index 861ca13f..4885d6c2 100644 --- a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx +++ b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, ComponentPropsWithoutRef, useMemo } from 'react'; +import React, { forwardRef, ComponentPropsWithoutRef } from 'react'; import { Overwrite, UseComboboxGetItemPropsReturnValue } from 'downshift'; import { userSelectItemTheme, @@ -34,11 +34,6 @@ const UserSelectItem = forwardRef( const { value, label, imgSrc = './logo.svg' } = option; - const renderLeftImage = useMemo( - () => {`${value}-logo`}, - [imgSrc, value], - ); - return (
  • ( className={theme.wrapper({ className, active: selected || hovered })} >
    - {renderLeftImage} + {`${value}-logo`}

    {label}

    {selected && } From 11aeda9453dc8b13489338c13023e145561b9fd7 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 29 Feb 2024 13:59:53 +0700 Subject: [PATCH 026/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20remove=20squigg?= =?UTF-8?q?ly=20line?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/CustomIcon/SquigglyLine.tsx | 20 ------------------- .../src/components/shared/CustomIcon/index.ts | 1 - 2 files changed, 21 deletions(-) delete mode 100644 packages/frontend/src/components/shared/CustomIcon/SquigglyLine.tsx diff --git a/packages/frontend/src/components/shared/CustomIcon/SquigglyLine.tsx b/packages/frontend/src/components/shared/CustomIcon/SquigglyLine.tsx deleted file mode 100644 index cc309d7e..00000000 --- a/packages/frontend/src/components/shared/CustomIcon/SquigglyLine.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; -import { CustomIcon, CustomIconProps } from './CustomIcon'; - -export const SquigglyLine: React.FC = (props) => { - return ( - - - - ); -}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index d62654dc..26a38f55 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -38,7 +38,6 @@ export * from './WarningDiamondIcon'; export * from './ArrowRightCircleIcon'; export * from './ClockOutlineIcon'; export * from './ArrowRightCircleFilledIcon'; -export * from './SquigglyLine'; // Templates export * from './templates'; From 2cd1865d1986f100b56b153d6ada7584ab280212 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 29 Feb 2024 15:30:34 +0700 Subject: [PATCH 027/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20add=20linkchain?= =?UTF-8?q?=20icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/CustomIcon/LinkChainIcon.tsx | 21 +++++++++++++++++++ .../src/components/shared/CustomIcon/index.ts | 1 + 2 files changed, 22 insertions(+) create mode 100644 packages/frontend/src/components/shared/CustomIcon/LinkChainIcon.tsx diff --git a/packages/frontend/src/components/shared/CustomIcon/LinkChainIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/LinkChainIcon.tsx new file mode 100644 index 00000000..66ff9cd4 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/LinkChainIcon.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const LinkChainIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index b9965188..2d610c48 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -40,6 +40,7 @@ export * from './GithubStrokeIcon'; export * from './BranchStrokeIcon'; export * from './StorageIcon'; export * from './LinkIcon'; +export * from './LinkChainIcon'; export * from './CursorBoxIcon'; // Templates From d9392c095d748237638caca3f779a272c66d74af Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 29 Feb 2024 15:31:10 +0700 Subject: [PATCH 028/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20reskin=20t?= =?UTF-8?q?emplate=20header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org-slug/projects/create/Template.tsx | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx index d819a6f1..b764e45b 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx @@ -10,6 +10,8 @@ import { Avatar } from '@material-tailwind/react'; import Stepper from '../../../../components/Stepper'; import templates from '../../../../assets/templates'; +import { LinkChainIcon } from 'components/shared/CustomIcon'; +import { Heading } from 'components/shared/Heading'; // TODO: Set dynamic route for template and load details from DB const CreateWithTemplate = () => { @@ -44,19 +46,24 @@ const CreateWithTemplate = () => { return (
    -
    - -
    {template?.name}
    + From a8ad6c6eec9be4b00ac00afc47a9ce2cf1ca4120 Mon Sep 17 00:00:00 2001 From: Andre H Date: Fri, 1 Mar 2024 10:41:12 +0800 Subject: [PATCH 029/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20implement?= =?UTF-8?q?=20card=20style=20for=20radio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/shared/Radio/Radio.theme.ts | 21 ++++++++++++- .../src/components/shared/Radio/Radio.tsx | 5 +-- .../src/components/shared/Radio/RadioItem.tsx | 31 ++++++++++++++----- 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/packages/frontend/src/components/shared/Radio/Radio.theme.ts b/packages/frontend/src/components/shared/Radio/Radio.theme.ts index 0b84601e..84d8fd01 100644 --- a/packages/frontend/src/components/shared/Radio/Radio.theme.ts +++ b/packages/frontend/src/components/shared/Radio/Radio.theme.ts @@ -2,7 +2,7 @@ import { VariantProps, tv } from 'tailwind-variants'; export const radioTheme = tv({ slots: { - root: ['flex', 'gap-3', 'flex-wrap'], + root: ['flex', 'gap-3'], wrapper: ['flex', 'items-center', 'gap-2', 'group'], label: ['text-sm', 'tracking-[-0.006em]', 'text-elements-high-em'], radio: [ @@ -39,15 +39,34 @@ export const radioTheme = tv({ 'after:data-[state=checked]:group-hover:bg-elements-on-primary', 'after:data-[state=checked]:group-focus-visible:bg-elements-on-primary', ], + icon: ['w-[18px]', 'h-[18px]'], }, variants: { orientation: { vertical: { root: ['flex-col'] }, horizontal: { root: ['flex-row'] }, }, + variant: { + unstyled: {}, + card: { + wrapper: [ + 'px-4', + 'py-3', + 'rounded-lg', + 'border', + 'border-border-interactive', + 'bg-controls-tertiary', + 'shadow-button', + 'w-full', + 'cursor-pointer', + ], + label: ['select-none', 'cursor-pointer'], + }, + }, }, defaultVariants: { orientation: 'vertical', + variant: 'unstyled', }, }); diff --git a/packages/frontend/src/components/shared/Radio/Radio.tsx b/packages/frontend/src/components/shared/Radio/Radio.tsx index 96542493..80468001 100644 --- a/packages/frontend/src/components/shared/Radio/Radio.tsx +++ b/packages/frontend/src/components/shared/Radio/Radio.tsx @@ -49,14 +49,15 @@ export const Radio = ({ className, options, orientation, + variant, ...props }: RadioProps) => { - const { root } = radioTheme({ orientation }); + const { root } = radioTheme({ orientation, variant }); return ( {options.map((option) => ( - + ))} ); diff --git a/packages/frontend/src/components/shared/Radio/RadioItem.tsx b/packages/frontend/src/components/shared/Radio/RadioItem.tsx index 177af9db..4a2c2e37 100644 --- a/packages/frontend/src/components/shared/Radio/RadioItem.tsx +++ b/packages/frontend/src/components/shared/Radio/RadioItem.tsx @@ -1,13 +1,16 @@ -import React, { ComponentPropsWithoutRef } from 'react'; +import React, { ReactNode, ComponentPropsWithoutRef } from 'react'; import { Item as RadixRadio, Indicator as RadixIndicator, RadioGroupItemProps, RadioGroupIndicatorProps, } from '@radix-ui/react-radio-group'; -import { radioTheme } from './Radio.theme'; +import { RadioTheme, radioTheme } from './Radio.theme'; +import { cloneIcon } from 'utils/cloneIcon'; -export interface RadioItemProps extends RadioGroupItemProps { +export interface RadioItemProps + extends RadioGroupItemProps, + Pick { /** * The wrapper props of the radio item. * You can use this prop to customize the wrapper props. @@ -27,6 +30,10 @@ export interface RadioItemProps extends RadioGroupItemProps { * The id of the radio item. */ id?: string; + /** + * The left icon of the radio item. + */ + leftIcon?: ReactNode; /** * The label of the radio item. */ @@ -41,18 +48,26 @@ export const RadioItem = ({ wrapperProps, labelProps, indicatorProps, + leftIcon, label, id, + variant, ...props }: RadioItemProps) => { - const { wrapper, label: labelClass, radio, indicator } = radioTheme(); + const { + wrapper, + label: labelClass, + radio, + indicator, + icon, + } = radioTheme({ variant }); // Generate a unique id for the radio item from the label if the id is not provided const kebabCaseLabel = label?.toLowerCase().replace(/\s+/g, '-'); const componentId = id ?? kebabCaseLabel; return ( -
    +
    + ); }; From 0b64ccc36405e8f4be2e37d637758a20a616c90c Mon Sep 17 00:00:00 2001 From: Andre H Date: Fri, 1 Mar 2024 11:12:47 +0800 Subject: [PATCH 030/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20replace=20space?= =?UTF-8?q?-y-2=20with=20gap-y-2=20for=20input?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Input/Input.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/shared/Input/Input.tsx b/packages/frontend/src/components/shared/Input/Input.tsx index fb3fd7d6..5bd5265c 100644 --- a/packages/frontend/src/components/shared/Input/Input.tsx +++ b/packages/frontend/src/components/shared/Input/Input.tsx @@ -87,12 +87,12 @@ export const Input = ({ ); return ( -
    +
    {renderLabels}
    {leftIcon && renderLeftIcon} Date: Fri, 1 Mar 2024 11:13:17 +0800 Subject: [PATCH 031/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20reskin=20with?= =?UTF-8?q?=20shared=20components?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/create/template/index.tsx | 144 ++++++++---------- 1 file changed, 64 insertions(+), 80 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx index 9ff50c84..8f8a0f39 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx @@ -1,15 +1,23 @@ import React, { useCallback, useEffect, useState } from 'react'; -import { useForm, Controller, SubmitHandler } from 'react-hook-form'; +import { useForm, SubmitHandler } from 'react-hook-form'; import { useNavigate, useOutletContext, useParams } from 'react-router-dom'; import toast from 'react-hot-toast'; import assert from 'assert'; -import { Button, Option, Typography } from '@material-tailwind/react'; - import { useOctokit } from '../../../../../context/OctokitContext'; import { useGQLClient } from '../../../../../context/GQLClientContext'; -import AsyncSelect from '../../../../../components/shared/AsyncSelect'; import { Template } from '../../../../../types'; +import { Heading } from 'components/shared/Heading'; +import { Input } from 'components/shared/Input'; +import { Radio } from 'components/shared/Radio'; +import { Select } from 'components/shared/Select'; +import { + ArrowRightCircleFilledIcon, + GitIcon, + GitTeaIcon, +} from 'components/shared/CustomIcon'; +import { Checkbox } from 'components/shared/Checkbox'; +import { Button } from 'components/shared/Button'; type SubmitRepoValues = { framework: string; @@ -30,6 +38,19 @@ const CreateRepo = () => { const [gitAccounts, setGitAccounts] = useState([]); const [isLoading, setIsLoading] = useState(false); + const FRAMEWORK_OPTIONS = [ + { + value: 'react-native', + label: 'React Native', + leftIcon: , + }, + { + value: 'expo', + label: 'Expo', + leftIcon: , + }, + ]; + const submitRepoHandler: SubmitHandler = useCallback( async (data) => { assert(data.account); @@ -93,7 +114,7 @@ const CreateRepo = () => { fetchUserAndOrgs(); }, [octokit]); - const { register, handleSubmit, control, reset } = useForm({ + const { handleSubmit, reset } = useForm({ defaultValues: { framework: 'React', repoName: '', @@ -110,86 +131,49 @@ const CreateRepo = () => { return (
    -
    - - Create a repository - - - The project will be cloned into this repository - -
    -
    -
    Framework
    -
    - - -
    -
    -
    -
    Git account
    +
    - ( - - {gitAccounts.map((account, key) => ( - - ))} - - )} + Create a repository + + The project will be cloned into this repository + +
    +
    + Framework +
    -
    -
    -
    Name the repo
    +
    + Git account + +
    - + +
    +
    +
    -
    -
    - -
    -
    -
    ); From 207b32ce65afc30c7354ddf1d14b80896c16c577 Mon Sep 17 00:00:00 2001 From: Andre H Date: Fri, 1 Mar 2024 11:23:38 +0800 Subject: [PATCH 032/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20integrate?= =?UTF-8?q?=20useform?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/create/template/index.tsx | 68 ++++++++++++++----- 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx index 8f8a0f39..8364f60a 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx @@ -1,5 +1,5 @@ import React, { useCallback, useEffect, useState } from 'react'; -import { useForm, SubmitHandler } from 'react-hook-form'; +import { useForm, SubmitHandler, Controller } from 'react-hook-form'; import { useNavigate, useOutletContext, useParams } from 'react-router-dom'; import toast from 'react-hot-toast'; import assert from 'assert'; @@ -10,7 +10,7 @@ import { Template } from '../../../../../types'; import { Heading } from 'components/shared/Heading'; import { Input } from 'components/shared/Input'; import { Radio } from 'components/shared/Radio'; -import { Select } from 'components/shared/Select'; +import { Select, SelectOption } from 'components/shared/Select'; import { ArrowRightCircleFilledIcon, GitIcon, @@ -40,12 +40,12 @@ const CreateRepo = () => { const FRAMEWORK_OPTIONS = [ { - value: 'react-native', + value: 'React', label: 'React Native', leftIcon: , }, { - value: 'expo', + value: 'Expo', label: 'Expo', leftIcon: , }, @@ -114,7 +114,7 @@ const CreateRepo = () => { fetchUserAndOrgs(); }, [octokit]); - const { handleSubmit, reset } = useForm({ + const { handleSubmit, control, reset } = useForm({ defaultValues: { framework: 'React', repoName: '', @@ -140,29 +140,61 @@ const CreateRepo = () => {
    Framework - ( + + )} />
    Git account - onChange((value as SelectOption).value)} + options={ + gitAccounts.map((account) => ({ + value: account, + label: account, + })) ?? [] + } + /> + )} />
    Name the repo - + ( + + )} + />
    - + ( + + )} + />
    - + <> + {/* Desktop */} +
    -
    - + +
    + +
    - + + {/* Mobile */} + {/* Setting modal={false} so even if modal is active on desktop, it doesn't block clicks */} + + + {/* Not using since modal={false} disables it and its content will not show */} +
    + + {/* Heading */} +
    + {heading} + + +
    + + {/* Border */} + + + {/* Page content */} +
    + +
    +
    +
    +
    +
    + ); }; diff --git a/packages/frontend/tailwind.config.js b/packages/frontend/tailwind.config.js index 4efc11fe..b5fa02b0 100644 --- a/packages/frontend/tailwind.config.js +++ b/packages/frontend/tailwind.config.js @@ -87,6 +87,7 @@ export default withMT({ 900: '#0a3a5c', }, base: { + canvas: '#ECF6FE', bg: '#ffffff', 'bg-alternate': '#f8fafc', 'bg-emphasized': '#f1f5f9', diff --git a/yarn.lock b/yarn.lock index 60ab1754..e44f8793 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3786,6 +3786,27 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/react-dialog@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz#71657b1b116de6c7a0b03242d7d43e01062c7300" + integrity sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-dismissable-layer" "1.0.5" + "@radix-ui/react-focus-guards" "1.0.1" + "@radix-ui/react-focus-scope" "1.0.4" + "@radix-ui/react-id" "1.0.1" + "@radix-ui/react-portal" "1.0.4" + "@radix-ui/react-presence" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-slot" "1.0.2" + "@radix-ui/react-use-controllable-state" "1.0.1" + aria-hidden "^1.1.1" + react-remove-scroll "2.5.5" + "@radix-ui/react-direction@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.1.tgz#9cb61bf2ccf568f3421422d182637b7f47596c9b" From 64e3aa5b25b34b209b1977e8145a00c73d775561 Mon Sep 17 00:00:00 2001 From: Zachery Date: Sun, 3 Mar 2024 13:41:25 +0800 Subject: [PATCH 043/251] [T-4913] Create Project - Deploy page (#152) --- .../src/components/FormatMilliSecond.tsx | 15 +- .../frontend/src/components/StopWatch.tsx | 10 +- .../src/components/projects/create/Deploy.tsx | 84 ++++++----- .../components/projects/create/DeployStep.tsx | 142 +++++++++++++----- .../components/shared/CustomIcon/CopyIcon.tsx | 21 +++ .../shared/CustomIcon/LoaderIcon.tsx | 22 +++ .../shared/CustomIcon/MinusCircleIcon.tsx | 21 +++ .../src/components/shared/CustomIcon/index.ts | 3 + 8 files changed, 232 insertions(+), 86 deletions(-) create mode 100644 packages/frontend/src/components/shared/CustomIcon/CopyIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/LoaderIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/MinusCircleIcon.tsx diff --git a/packages/frontend/src/components/FormatMilliSecond.tsx b/packages/frontend/src/components/FormatMilliSecond.tsx index 047a5479..bc8dcda6 100644 --- a/packages/frontend/src/components/FormatMilliSecond.tsx +++ b/packages/frontend/src/components/FormatMilliSecond.tsx @@ -1,13 +1,22 @@ import { Duration } from 'luxon'; -import React from 'react'; +import React, { ComponentPropsWithoutRef } from 'react'; +import { cn } from 'utils/classnames'; -const FormatMillisecond = ({ time }: { time: number }) => { +export interface FormatMilliSecondProps + extends ComponentPropsWithoutRef<'div'> { + time: number; +} + +const FormatMillisecond = ({ time, ...props }: FormatMilliSecondProps) => { const formatTime = Duration.fromMillis(time) .shiftTo('days', 'hours', 'minutes', 'seconds') .toObject(); return ( -
    +
    {formatTime.days !== 0 && {formatTime.days}d } {formatTime.hours !== 0 && {formatTime.hours}h } {formatTime.minutes !== 0 && {formatTime.minutes}m } diff --git a/packages/frontend/src/components/StopWatch.tsx b/packages/frontend/src/components/StopWatch.tsx index 4e70f9b0..239b1197 100644 --- a/packages/frontend/src/components/StopWatch.tsx +++ b/packages/frontend/src/components/StopWatch.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { useStopwatch } from 'react-timer-hook'; -import FormatMillisecond from './FormatMilliSecond'; +import FormatMillisecond, { FormatMilliSecondProps } from './FormatMilliSecond'; const setStopWatchOffset = (time: string) => { const providedTime = new Date(time); @@ -11,13 +11,17 @@ const setStopWatchOffset = (time: string) => { return currentTime; }; -const Stopwatch = ({ offsetTimestamp }: { offsetTimestamp: Date }) => { +interface StopwatchProps extends Omit { + offsetTimestamp: Date; +} + +const Stopwatch = ({ offsetTimestamp, ...props }: StopwatchProps) => { const { totalSeconds } = useStopwatch({ autoStart: true, offsetTimestamp: offsetTimestamp, }); - return ; + return ; }; export { Stopwatch, setStopWatchOffset }; diff --git a/packages/frontend/src/components/projects/create/Deploy.tsx b/packages/frontend/src/components/projects/create/Deploy.tsx index 67698959..a251773d 100644 --- a/packages/frontend/src/components/projects/create/Deploy.tsx +++ b/packages/frontend/src/components/projects/create/Deploy.tsx @@ -1,11 +1,14 @@ import React, { useCallback, useEffect } from 'react'; import { useNavigate, useParams, useSearchParams } from 'react-router-dom'; -import { Button, Typography } from '@material-tailwind/react'; +import { Typography } from '@material-tailwind/react'; import { DeployStep, DeployStatus } from './DeployStep'; import { Stopwatch, setStopWatchOffset } from '../../StopWatch'; import ConfirmDialog from 'components/shared/ConfirmDialog'; +import { Heading } from 'components/shared/Heading'; +import { Button } from 'components/shared/Button'; +import { ClockOutlineIcon, WarningIcon } from 'components/shared/CustomIcon'; const TIMEOUT_DURATION = 5000; const Deploy = () => { @@ -31,27 +34,27 @@ const Deploy = () => { }, []); return ( -
    -
    -
    -

    Deployment started ...

    -
    - ^  +
    +
    +
    + + Deployment started ... + +
    +
    -
    - -
    + {
    - - - - + +
    + + + + +
    ); }; diff --git a/packages/frontend/src/components/projects/create/DeployStep.tsx b/packages/frontend/src/components/projects/create/DeployStep.tsx index 1aae9c0c..71283ddb 100644 --- a/packages/frontend/src/components/projects/create/DeployStep.tsx +++ b/packages/frontend/src/components/projects/create/DeployStep.tsx @@ -1,11 +1,22 @@ import React, { useState } from 'react'; -import toast from 'react-hot-toast'; -import { Collapse, Button, Typography } from '@material-tailwind/react'; +import { Collapse } from '@material-tailwind/react'; import { Stopwatch, setStopWatchOffset } from '../../StopWatch'; import FormatMillisecond from '../../FormatMilliSecond'; import processLogs from '../../../assets/process-logs.json'; +import { cn } from 'utils/classnames'; +import { + CheckRoundFilledIcon, + ClockOutlineIcon, + CopyIcon, + LoaderIcon, + MinusCircleIcon, + PlusIcon, +} from 'components/shared/CustomIcon'; +import { Button } from 'components/shared/Button'; +import { useToast } from 'components/shared/Toast'; +import { useIntersectionObserver } from 'usehooks-ts'; enum DeployStatus { PROCESSING = 'progress', @@ -28,61 +39,110 @@ const DeployStep = ({ startTime, processTime, }: DeployStepsProps) => { - const [collapse, setCollapse] = useState(false); + const [isOpen, setIsOpen] = useState(false); + const { toast, dismiss } = useToast(); + const { isIntersecting: hideGradientOverlay, ref } = useIntersectionObserver({ + threshold: 1, + }); + + const disableCollapse = status !== DeployStatus.COMPLETE; return ( -
    -
    - {status === DeployStatus.NOT_STARTED &&
    {step}
    } - {status === DeployStatus.PROCESSING &&
    O
    } - {status === DeployStatus.COMPLETE && ( -
    - +
    + {/* Collapisble trigger */} +
    - -
    + + + {/* Collapsible */} + +
    + {/* Logs */} {processLogs.map((log, key) => { return ( - +

    {log} - +

    ); })} -
    + + {/* End of logs ref used for hiding gradient overlay */} +
    + + {/* Overflow gradient overlay */} + {!hideGradientOverlay && ( +
    + )} + + {/* Copy log button */} +
    diff --git a/packages/frontend/src/components/shared/CustomIcon/CopyIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CopyIcon.tsx new file mode 100644 index 00000000..34975bec --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/CopyIcon.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const CopyIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/LoaderIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/LoaderIcon.tsx new file mode 100644 index 00000000..720bfc22 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/LoaderIcon.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const LoaderIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/MinusCircleIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/MinusCircleIcon.tsx new file mode 100644 index 00000000..7f685677 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/MinusCircleIcon.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const MinusCircleIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index 61239304..096761a5 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -45,6 +45,9 @@ export * from './CommitIcon'; export * from './RocketIcon'; export * from './RefreshIcon'; export * from './UndoIcon'; +export * from './LoaderIcon'; +export * from './MinusCircleIcon'; +export * from './CopyIcon'; // Templates export * from './templates'; From adb64f2db1b15de20b019be7f4af9c2a5c09f2b8 Mon Sep 17 00:00:00 2001 From: Andre H Date: Mon, 4 Mar 2024 10:14:21 +0800 Subject: [PATCH 044/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20remove=20outer?= =?UTF-8?q?=20padding=20on=20the=20icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/CustomIcon/CheckRoundFilledIcon.tsx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/frontend/src/components/shared/CustomIcon/CheckRoundFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CheckRoundFilledIcon.tsx index 145e68e1..7811a1ec 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CheckRoundFilledIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CheckRoundFilledIcon.tsx @@ -3,17 +3,11 @@ import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CheckRoundFilledIcon = (props: CustomIconProps) => { return ( - + From 6c42a2297214a3288465cf2bad4c8bdff733f4a7 Mon Sep 17 00:00:00 2001 From: Andre H Date: Mon, 4 Mar 2024 10:38:12 +0800 Subject: [PATCH 045/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20implement?= =?UTF-8?q?=20steps/=20timeline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/Steps/Step/Step.theme.ts | 43 +++++++++++++ .../src/components/shared/Steps/Step/Step.tsx | 60 +++++++++++++++++++ .../src/components/shared/Steps/Step/index.ts | 2 + .../components/shared/Steps/Steps.theme.ts | 18 ++++++ .../src/components/shared/Steps/Steps.tsx | 42 +++++++++++++ .../src/components/shared/Steps/index.ts | 2 + 6 files changed, 167 insertions(+) create mode 100644 packages/frontend/src/components/shared/Steps/Step/Step.theme.ts create mode 100644 packages/frontend/src/components/shared/Steps/Step/Step.tsx create mode 100644 packages/frontend/src/components/shared/Steps/Step/index.ts create mode 100644 packages/frontend/src/components/shared/Steps/Steps.theme.ts create mode 100644 packages/frontend/src/components/shared/Steps/Steps.tsx create mode 100644 packages/frontend/src/components/shared/Steps/index.ts diff --git a/packages/frontend/src/components/shared/Steps/Step/Step.theme.ts b/packages/frontend/src/components/shared/Steps/Step/Step.theme.ts new file mode 100644 index 00000000..82531ace --- /dev/null +++ b/packages/frontend/src/components/shared/Steps/Step/Step.theme.ts @@ -0,0 +1,43 @@ +import { VariantProps, tv } from 'tailwind-variants'; + +export const stepTheme = tv({ + slots: { + wrapper: ['relative', 'px-1.5', 'py-1.5', 'flex', 'gap-2', 'items-center'], + step: [ + 'bg-base-bg-emphasized', + 'rounded-full', + 'w-7', + 'h-7', + 'flex', + 'items-center', + 'justify-center', + 'text-elements-mid-em', + 'shadow-button', + 'shrink-0', + ], + label: ['text-sm', 'font-sans', 'text-elements-mid-em'], + connector: ['bg-border-interactive-hovered'], + }, + variants: { + orientation: { + vertical: { connector: ['w-px', 'h-3', 'ml-5'] }, + horizontal: { connector: ['h-px', 'w-full'] }, + }, + active: { + true: { + step: ['bg-controls-secondary-hovered', 'text-elements-on-secondary'], + label: ['text-elements-high-em'], + }, + }, + completed: { + true: { + step: ['text-controls-primary'], + }, + }, + }, + defaultVariants: { + orientation: 'vertical', + }, +}); + +export type StepTheme = VariantProps; diff --git a/packages/frontend/src/components/shared/Steps/Step/Step.tsx b/packages/frontend/src/components/shared/Steps/Step/Step.tsx new file mode 100644 index 00000000..001ed6b6 --- /dev/null +++ b/packages/frontend/src/components/shared/Steps/Step/Step.tsx @@ -0,0 +1,60 @@ +import React, { useCallback, ComponentPropsWithoutRef } from 'react'; +import { stepTheme, StepTheme } from './Step.theme'; +import { CheckRoundFilledIcon } from 'components/shared/CustomIcon'; + +export interface StepProps extends ComponentPropsWithoutRef<'li'>, StepTheme { + /** + * The label for the step + */ + label: string; + /** + * The index of the step + */ + index: number; + /** + * The total number of steps + */ + currentIndex: number; +} + +export const Step = ({ + label, + index, + currentIndex, + orientation, + ...props +}: StepProps) => { + const theme = stepTheme(); + + const active = currentIndex === index; + const completed = currentIndex > index; + + const renderConnector = useCallback( + (index: number) => { + if (index === 0) { + return null; + } + + return
    ; + }, + [theme], + ); + + return ( + <> + {renderConnector(index)} +
  • + { +
    + {completed ? ( + + ) : ( + index + 1 + )} +
    + } +

    {label}

    +
  • + + ); +}; diff --git a/packages/frontend/src/components/shared/Steps/Step/index.ts b/packages/frontend/src/components/shared/Steps/Step/index.ts new file mode 100644 index 00000000..84d83fcb --- /dev/null +++ b/packages/frontend/src/components/shared/Steps/Step/index.ts @@ -0,0 +1,2 @@ +export * from './Step'; +export * from './Step.theme'; diff --git a/packages/frontend/src/components/shared/Steps/Steps.theme.ts b/packages/frontend/src/components/shared/Steps/Steps.theme.ts new file mode 100644 index 00000000..a5d62e99 --- /dev/null +++ b/packages/frontend/src/components/shared/Steps/Steps.theme.ts @@ -0,0 +1,18 @@ +import { VariantProps, tv } from 'tailwind-variants'; + +export const stepsTheme = tv({ + slots: { + root: [], + }, + variants: { + orientation: { + vertical: { root: ['flex', 'flex-col'] }, + horizontal: { root: ['flex', 'items-center'] }, + }, + }, + defaultVariants: { + orientation: 'vertical', + }, +}); + +export type StepsTheme = VariantProps; diff --git a/packages/frontend/src/components/shared/Steps/Steps.tsx b/packages/frontend/src/components/shared/Steps/Steps.tsx new file mode 100644 index 00000000..51d4eb2d --- /dev/null +++ b/packages/frontend/src/components/shared/Steps/Steps.tsx @@ -0,0 +1,42 @@ +import React, { Fragment, ComponentPropsWithoutRef } from 'react'; +import { stepsTheme, StepsTheme } from './Steps.theme'; +import { Step, StepProps, StepTheme } from './Step'; + +interface StepsProps + extends ComponentPropsWithoutRef<'ul'>, + StepsTheme, + Pick { + /** + * The index of the current step + */ + currentIndex: number; + /** + * The steps to render + */ + steps: Pick[]; +} + +export const Steps = ({ + currentIndex, + steps = [], + className, + orientation, + ...props +}: StepsProps) => { + const theme = stepsTheme(); + + return ( +
      + {steps.map((step, i) => ( + + + + ))} +
    + ); +}; diff --git a/packages/frontend/src/components/shared/Steps/index.ts b/packages/frontend/src/components/shared/Steps/index.ts new file mode 100644 index 00000000..27d56a3b --- /dev/null +++ b/packages/frontend/src/components/shared/Steps/index.ts @@ -0,0 +1,2 @@ +export * from './Steps'; +export * from './Steps.theme'; From 8f0c39022dde1874a423b211c655e1952d108291 Mon Sep 17 00:00:00 2001 From: Andre H Date: Mon, 4 Mar 2024 10:40:06 +0800 Subject: [PATCH 046/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20add=20render=20?= =?UTF-8?q?component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/pages/components/index.tsx | 12 ++++++ .../src/pages/components/renders/steps.tsx | 41 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 packages/frontend/src/pages/components/renders/steps.tsx diff --git a/packages/frontend/src/pages/components/index.tsx b/packages/frontend/src/pages/components/index.tsx index aab2d652..077434d5 100644 --- a/packages/frontend/src/pages/components/index.tsx +++ b/packages/frontend/src/pages/components/index.tsx @@ -26,6 +26,7 @@ import { import { renderInputs } from './renders/input'; import { RADIO_OPTIONS } from './renders/radio'; import { SEGMENTED_CONTROLS_OPTIONS } from './renders/segmentedControls'; +import { renderHorizontalSteps, renderVerticalSteps } from './renders/steps'; import { renderTabWithBadges, renderTabs, @@ -56,6 +57,17 @@ const Page: React.FC = () => {
    + {/* Steps */} +
    +
    +

    Steps

    +
    + {renderVerticalSteps()} + {renderHorizontalSteps()} +
    +
    +
    + {/* Tag */}
    diff --git a/packages/frontend/src/pages/components/renders/steps.tsx b/packages/frontend/src/pages/components/renders/steps.tsx new file mode 100644 index 00000000..2d3f3da5 --- /dev/null +++ b/packages/frontend/src/pages/components/renders/steps.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import { Steps } from 'components/shared/Steps'; + +export const renderVerticalSteps = () => { + return ( + + ); +}; + +export const renderHorizontalSteps = () => { + return ( + + ); +}; From f5296e9b8d00e586fa341ced47481fd061a412a1 Mon Sep 17 00:00:00 2001 From: Andre H Date: Mon, 4 Mar 2024 11:52:31 +0800 Subject: [PATCH 047/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20first=20index?= =?UTF-8?q?=20to=20be=20'1'=20for=20`Steps`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Steps/Step/Step.tsx | 4 ++-- packages/frontend/src/components/shared/Steps/Steps.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/components/shared/Steps/Step/Step.tsx b/packages/frontend/src/components/shared/Steps/Step/Step.tsx index 001ed6b6..06c49368 100644 --- a/packages/frontend/src/components/shared/Steps/Step/Step.tsx +++ b/packages/frontend/src/components/shared/Steps/Step/Step.tsx @@ -31,7 +31,7 @@ export const Step = ({ const renderConnector = useCallback( (index: number) => { - if (index === 0) { + if (index === 1) { return null; } @@ -49,7 +49,7 @@ export const Step = ({ {completed ? ( ) : ( - index + 1 + index )}
    } diff --git a/packages/frontend/src/components/shared/Steps/Steps.tsx b/packages/frontend/src/components/shared/Steps/Steps.tsx index 51d4eb2d..cac61ff9 100644 --- a/packages/frontend/src/components/shared/Steps/Steps.tsx +++ b/packages/frontend/src/components/shared/Steps/Steps.tsx @@ -33,7 +33,7 @@ export const Steps = ({ {...step} orientation={orientation} currentIndex={currentIndex} - index={i} + index={i + 1} /> ))} From 460f8a80b8f12e0f91d0e043a0bf3b5dfb77c6d9 Mon Sep 17 00:00:00 2001 From: Andre H Date: Mon, 4 Mar 2024 11:52:55 +0800 Subject: [PATCH 048/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20replace=20`Step?= =?UTF-8?q?per`=20with=20`Steps`=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/pages/org-slug/projects/create/Template.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx index d819a6f1..0633540c 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx @@ -8,8 +8,8 @@ import { import { Avatar } from '@material-tailwind/react'; -import Stepper from '../../../../components/Stepper'; import templates from '../../../../assets/templates'; +import { Steps } from 'components/shared/Steps'; // TODO: Set dynamic route for template and load details from DB const CreateWithTemplate = () => { @@ -62,7 +62,7 @@ const CreateWithTemplate = () => {
    - +
    From add2559860c34a7bffd1ffe7be0190cd693153a2 Mon Sep 17 00:00:00 2001 From: Andre H Date: Mon, 4 Mar 2024 17:41:33 +0800 Subject: [PATCH 049/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20adjust=20other?= =?UTF-8?q?=20CheckRoundFilledIcon=20user?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/components/projects/create/DeployStep.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/frontend/src/components/projects/create/DeployStep.tsx b/packages/frontend/src/components/projects/create/DeployStep.tsx index 71283ddb..de78f789 100644 --- a/packages/frontend/src/components/projects/create/DeployStep.tsx +++ b/packages/frontend/src/components/projects/create/DeployStep.tsx @@ -101,7 +101,12 @@ const DeployStep = ({ )} {status === DeployStatus.COMPLETE && (
    - +
    + +
    {' '}
    )} From c1da92bc991b085576936c0a7056e076a4bc4d51 Mon Sep 17 00:00:00 2001 From: Andre H Date: Mon, 4 Mar 2024 17:50:04 +0800 Subject: [PATCH 050/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20adjust=20design?= =?UTF-8?q?=20to=20figma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/shared/Steps/Step/Step.theme.ts | 10 +++++++--- .../src/components/shared/Steps/Step/Step.tsx | 13 ++++++++++--- .../src/components/shared/Steps/Steps.theme.ts | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/components/shared/Steps/Step/Step.theme.ts b/packages/frontend/src/components/shared/Steps/Step/Step.theme.ts index 82531ace..30d190f8 100644 --- a/packages/frontend/src/components/shared/Steps/Step/Step.theme.ts +++ b/packages/frontend/src/components/shared/Steps/Step/Step.theme.ts @@ -16,12 +16,16 @@ export const stepTheme = tv({ 'shrink-0', ], label: ['text-sm', 'font-sans', 'text-elements-mid-em'], - connector: ['bg-border-interactive-hovered'], + connector: [], }, variants: { orientation: { - vertical: { connector: ['w-px', 'h-3', 'ml-5'] }, - horizontal: { connector: ['h-px', 'w-full'] }, + vertical: { + connector: ['bg-border-interactive-hovered', 'w-px', 'h-3', 'ml-5'], + }, + horizontal: { + connector: ['text-border-interactive-hovered', 'h-3', 'w-3'], + }, }, active: { true: { diff --git a/packages/frontend/src/components/shared/Steps/Step/Step.tsx b/packages/frontend/src/components/shared/Steps/Step/Step.tsx index 06c49368..9d731139 100644 --- a/packages/frontend/src/components/shared/Steps/Step/Step.tsx +++ b/packages/frontend/src/components/shared/Steps/Step/Step.tsx @@ -1,6 +1,9 @@ import React, { useCallback, ComponentPropsWithoutRef } from 'react'; import { stepTheme, StepTheme } from './Step.theme'; -import { CheckRoundFilledIcon } from 'components/shared/CustomIcon'; +import { + CheckRoundFilledIcon, + ChevronRight, +} from 'components/shared/CustomIcon'; export interface StepProps extends ComponentPropsWithoutRef<'li'>, StepTheme { /** @@ -35,9 +38,13 @@ export const Step = ({ return null; } - return
    ; + return ( +
    + {orientation === 'horizontal' && } +
    + ); }, - [theme], + [orientation, theme], ); return ( diff --git a/packages/frontend/src/components/shared/Steps/Steps.theme.ts b/packages/frontend/src/components/shared/Steps/Steps.theme.ts index a5d62e99..4c3b2acb 100644 --- a/packages/frontend/src/components/shared/Steps/Steps.theme.ts +++ b/packages/frontend/src/components/shared/Steps/Steps.theme.ts @@ -7,7 +7,7 @@ export const stepsTheme = tv({ variants: { orientation: { vertical: { root: ['flex', 'flex-col'] }, - horizontal: { root: ['flex', 'items-center'] }, + horizontal: { root: ['flex', 'items-center', 'gap-1'] }, }, }, defaultVariants: { From 0a2686d5ec94db3f7fe96351a08ecab0f69a47d7 Mon Sep 17 00:00:00 2001 From: Andre H Date: Mon, 4 Mar 2024 17:50:23 +0800 Subject: [PATCH 051/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20add=20divider?= =?UTF-8?q?=20to=20render=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/pages/components/index.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/frontend/src/pages/components/index.tsx b/packages/frontend/src/pages/components/index.tsx index 077434d5..feee4595 100644 --- a/packages/frontend/src/pages/components/index.tsx +++ b/packages/frontend/src/pages/components/index.tsx @@ -68,6 +68,8 @@ const Page: React.FC = () => {
    +
    + {/* Tag */}
    From 8a1e84386a6655f401154c4424d2670dac9f0e86 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Tue, 5 Mar 2024 05:05:54 +0700 Subject: [PATCH 052/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20create=20s?= =?UTF-8?q?ome=20icons=20needed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shared/CustomIcon/CalendarIcon.tsx | 12 +++++------ .../CustomIcon/CheckRadioOutlineIcon.tsx | 21 +++++++++++++++++++ .../CustomIcon/CirclePlaceholderOnIcon.tsx | 20 ++++++++++++++++++ .../shared/CustomIcon/TrendingIcon.tsx | 21 +++++++++++++++++++ .../shared/CustomIcon/WarningTriangleIcon.tsx | 21 +++++++++++++++++++ .../src/components/shared/CustomIcon/index.ts | 4 ++++ 6 files changed, 93 insertions(+), 6 deletions(-) create mode 100644 packages/frontend/src/components/shared/CustomIcon/CheckRadioOutlineIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/CirclePlaceholderOnIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/TrendingIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/WarningTriangleIcon.tsx diff --git a/packages/frontend/src/components/shared/CustomIcon/CalendarIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CalendarIcon.tsx index 6a51210a..7e841bb1 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CalendarIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CalendarIcon.tsx @@ -5,16 +5,16 @@ export const CalendarIcon = (props: CustomIconProps) => { return ( ); diff --git a/packages/frontend/src/components/shared/CustomIcon/CheckRadioOutlineIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CheckRadioOutlineIcon.tsx new file mode 100644 index 00000000..79fe29b6 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/CheckRadioOutlineIcon.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const CheckRadioOutlineIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/CirclePlaceholderOnIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CirclePlaceholderOnIcon.tsx new file mode 100644 index 00000000..deb69392 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/CirclePlaceholderOnIcon.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const CirclePlaceholderOnIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/TrendingIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/TrendingIcon.tsx new file mode 100644 index 00000000..19e40ede --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/TrendingIcon.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const TrendingIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/WarningTriangleIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/WarningTriangleIcon.tsx new file mode 100644 index 00000000..d5303a60 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/WarningTriangleIcon.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const WarningTriangleIcon = (props: CustomIconProps) => { + return ( + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index 9141aa17..893e45ab 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -50,6 +50,10 @@ export * from './UndoIcon'; export * from './LoaderIcon'; export * from './MinusCircleIcon'; export * from './CopyIcon'; +export * from './CirclePlaceholderOnIcon'; +export * from './WarningTriangleIcon'; +export * from './CheckRadioOutlineIcon'; +export * from './TrendingIcon'; // Templates export * from './templates'; From e9f32ff668d169dd67c9ef7a7d8cbbb8178cf93d Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Tue, 5 Mar 2024 05:06:28 +0700 Subject: [PATCH 053/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20make?= =?UTF-8?q?=20the=20conditional=20logic=20to=20boolean?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Calendar/Calendar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/shared/Calendar/Calendar.tsx b/packages/frontend/src/components/shared/Calendar/Calendar.tsx index 1a67c34f..613f785f 100644 --- a/packages/frontend/src/components/shared/Calendar/Calendar.tsx +++ b/packages/frontend/src/components/shared/Calendar/Calendar.tsx @@ -289,7 +289,7 @@ export const Calendar = ({
    {actions ? ( From d9bae720d74cf215774cec9358959a52d9a7b035 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Tue, 5 Mar 2024 05:06:53 +0700 Subject: [PATCH 054/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20update=20d?= =?UTF-8?q?ate=20picker=20input=20icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/shared/DatePicker/DatePicker.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx b/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx index bae4502a..464b9b74 100644 --- a/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx +++ b/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx @@ -3,7 +3,10 @@ import { Input, InputProps } from 'components/shared/Input'; import * as Popover from '@radix-ui/react-popover'; import { datePickerTheme } from './DatePicker.theme'; import { Calendar, CalendarProps } from 'components/shared/Calendar'; -import { CalendarIcon } from 'components/shared/CustomIcon'; +import { + CalendarIcon, + ChevronGrabberHorizontal, +} from 'components/shared/CustomIcon'; import { Value } from 'react-calendar/dist/cjs/shared/types'; import { format } from 'date-fns'; @@ -64,7 +67,7 @@ export const DatePicker = ({ } return format(value, 'dd/MM/yyyy'); }, [value, onReset]); - console.log(renderValue); + /** * Handles the selection of a date from the calendar. */ @@ -86,7 +89,8 @@ export const DatePicker = ({ setOpen(true)} />} + leftIcon={ setOpen(true)} />} + rightIcon={} readOnly placeholder="Select a date..." value={renderValue} From 18dde52c9a4a9071e3fe11b3dd4fc71bf0c2212b Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Tue, 5 Mar 2024 05:07:21 +0700 Subject: [PATCH 055/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20update=20s?= =?UTF-8?q?elect=20input=20default=20icon=20and=20options=20icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/deployments/FilterForm.tsx | 25 ++++++++++++++++++- .../src/components/shared/Select/Select.tsx | 15 +++++++---- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx b/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx index 5cf4c200..78324eff 100644 --- a/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx +++ b/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx @@ -1,7 +1,14 @@ import React, { useEffect, useState } from 'react'; import { Input } from 'components/shared/Input'; -import { CrossCircleIcon, SearchIcon } from 'components/shared/CustomIcon'; +import { + CheckRadioOutlineIcon, + CrossCircleIcon, + LoaderIcon, + SearchIcon, + TrendingIcon, + WarningTriangleIcon, +} from 'components/shared/CustomIcon'; import { DatePicker } from 'components/shared/DatePicker'; import { Value } from 'react-calendar/dist/cjs/shared/types'; import { Select, SelectOption } from 'components/shared/Select'; @@ -43,10 +50,25 @@ const FilterForm = ({ value, onChange }: FilterFormProps) => { setDateRange(value.updateAtRange); }, [value]); + const getOptionIcon = (status: StatusOptions) => { + switch (status) { + case StatusOptions.BUILDING: + return ; + case StatusOptions.READY: + return ; + case StatusOptions.ERROR: + return ; + case StatusOptions.ALL_STATUS: + default: + return ; + } + }; + const statusOptions = Object.values(StatusOptions) .map((status) => ({ label: status, value: status, + leftIcon: getOptionIcon(status), })) .filter((status) => status.value !== StatusOptions.ALL_STATUS); @@ -78,6 +100,7 @@ const FilterForm = ({ value, onChange }: FilterFormProps) => {
    } + placeholder="Search" + appearance="borderless" + value={inputValue} + autoFocus + onChange={(e) => setInputValue(e.target.value)} + /> + +
    + {/* Content */} +
    + {items.length > 0 + ? items.map((item) => ( + <> +
    +

    + Suggestions +

    +
    + + + )) + : inputValue && } +
    + +
    + + + ); +}; diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarEmpty.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarEmpty.tsx new file mode 100644 index 00000000..342969c2 --- /dev/null +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarEmpty.tsx @@ -0,0 +1,24 @@ +import { InfoRoundFilledIcon } from 'components/shared/CustomIcon'; +import React, { ComponentPropsWithoutRef } from 'react'; +import { cn } from 'utils/classnames'; + +interface ProjectSearchBarEmptyProps extends ComponentPropsWithoutRef<'div'> {} + +export const ProjectSearchBarEmpty = ({ + className, + ...props +}: ProjectSearchBarEmptyProps) => { + return ( +
    +
    + +
    +

    + No projects matching this name +

    +
    + ); +}; diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx new file mode 100644 index 00000000..5afd8a84 --- /dev/null +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx @@ -0,0 +1,59 @@ +import { Avatar } from 'components/shared/Avatar'; +import { Overwrite, UseComboboxGetItemPropsReturnValue } from 'downshift'; +import { Project } from 'gql-client'; +import React, { ComponentPropsWithoutRef, forwardRef } from 'react'; +import { OmitCommon } from 'types/common'; +import { cn } from 'utils/classnames'; +import { getInitials } from 'utils/geInitials'; + +/** + * Represents a type that merges ComponentPropsWithoutRef<'li'> with certain exclusions. + * @type {MergedComponentPropsWithoutRef} + */ +type MergedComponentPropsWithoutRef = OmitCommon< + ComponentPropsWithoutRef<'div'>, + Omit< + Overwrite, + 'index' | 'item' + > +>; + +interface ProjectSearchBarItemProps extends MergedComponentPropsWithoutRef { + item: Project; + active?: boolean; +} + +const ProjectSearchBarItem = forwardRef< + HTMLDivElement, + ProjectSearchBarItemProps +>(({ item, active, ...props }, ref) => { + return ( +
    + +
    +

    + {item.name} +

    +

    {item.organization.name}

    +
    +
    + ); +}); + +ProjectSearchBarItem.displayName = 'ProjectSearchBarItem'; + +export { ProjectSearchBarItem }; diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/index.ts b/packages/frontend/src/components/projects/ProjectSearchBar/index.ts new file mode 100644 index 00000000..6fd8929b --- /dev/null +++ b/packages/frontend/src/components/projects/ProjectSearchBar/index.ts @@ -0,0 +1,2 @@ +export * from './ProjectSearchBar'; +export * from './ProjectSearchBarDialog'; diff --git a/packages/frontend/src/layouts/ProjectSearch.tsx b/packages/frontend/src/layouts/ProjectSearch.tsx index e2b90f42..9f94a2a6 100644 --- a/packages/frontend/src/layouts/ProjectSearch.tsx +++ b/packages/frontend/src/layouts/ProjectSearch.tsx @@ -2,16 +2,14 @@ import React, { useCallback, useEffect, useState } from 'react'; import { Outlet, useNavigate } from 'react-router-dom'; import { User } from 'gql-client'; -// import { Tooltip } from '@material-tailwind/react'; - import HorizontalLine from 'components/HorizontalLine'; -import ProjectSearchBar from 'components/projects/ProjectSearchBar'; import { useGQLClient } from 'context/GQLClientContext'; import { NotificationBellIcon, PlusIcon } from 'components/shared/CustomIcon'; import { Button } from 'components/shared/Button'; import { Avatar } from 'components/shared/Avatar'; import { getInitials } from 'utils/geInitials'; -import { formatAddress } from '../utils/format'; +import { formatAddress } from 'utils/format'; +import { ProjectSearchBar } from 'components/projects/ProjectSearchBar'; const ProjectSearch = () => { const navigate = useNavigate(); From 5a86abd13365fa0c31a519766d71b0e1bfc0eaf6 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 10:30:50 +0700 Subject: [PATCH 073/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20input?= =?UTF-8?q?=20and=20search=20bar=20input=20style?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/SearchBar.tsx | 1 + packages/frontend/src/components/shared/Input/Input.tsx | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/SearchBar.tsx b/packages/frontend/src/components/SearchBar.tsx index 4e37c20d..a81b9f98 100644 --- a/packages/frontend/src/components/SearchBar.tsx +++ b/packages/frontend/src/components/SearchBar.tsx @@ -16,6 +16,7 @@ const SearchBar: React.ForwardRefRenderFunction< type="search" placeholder={placeholder} appearance="borderless" + className="w-full lg:w-[459px]" {...props} />
    diff --git a/packages/frontend/src/components/shared/Input/Input.tsx b/packages/frontend/src/components/shared/Input/Input.tsx index fb3fd7d6..0819e294 100644 --- a/packages/frontend/src/components/shared/Input/Input.tsx +++ b/packages/frontend/src/components/shared/Input/Input.tsx @@ -87,12 +87,12 @@ export const Input = ({ ); return ( -
    +
    {renderLabels}
    {leftIcon && renderLeftIcon} Date: Wed, 6 Mar 2024 10:31:11 +0700 Subject: [PATCH 074/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20add=20sear?= =?UTF-8?q?ch=20dialog=20on=20mobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/pages/org-slug/layout.tsx | 161 ++++++++++-------- 1 file changed, 87 insertions(+), 74 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/layout.tsx b/packages/frontend/src/pages/org-slug/layout.tsx index 7ff72e7c..1ff1679f 100644 --- a/packages/frontend/src/pages/org-slug/layout.tsx +++ b/packages/frontend/src/pages/org-slug/layout.tsx @@ -13,6 +13,7 @@ import { Outlet, useParams } from 'react-router-dom'; import { AnimatePresence, motion } from 'framer-motion'; import { cn } from 'utils/classnames'; import { useMediaQuery } from 'usehooks-ts'; +import { ProjectSearchBarDialog } from 'components/projects/ProjectSearchBar'; export interface DashboardLayoutProps extends ComponentPropsWithoutRef<'section'> {} @@ -23,7 +24,9 @@ export const DashboardLayout = ({ }: DashboardLayoutProps) => { const { orgSlug } = useParams(); const isDesktop = useMediaQuery('(min-width: 1024px)'); + const [isSidebarOpen, setIsSidebarOpen] = useState(false); + const [isSearchOpen, setIsSearchOpen] = useState(false); useEffect(() => { if (isDesktop) { @@ -32,86 +35,96 @@ export const DashboardLayout = ({ }, [isDesktop]); return ( -
    - {/* Header on mobile */} -
    - -
    - - {isSidebarOpen ? ( - - - - ) : ( - - <> - - - - - )} - -
    -
    -
    - - -
    - - - + + ) : ( + + <> + + + + + + )} +
    -
    -
    -
    +
    +
    + + +
    + + + +
    +
    +
    + + setIsSearchOpen(false)} + /> + ); }; From 48e3581322f86970454e321f9ba67371b5b0a3c5 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 10:42:06 +0700 Subject: [PATCH 075/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20add=20hand?= =?UTF-8?q?ler=20when=20click=20the=20project=20item=20on=20mobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectSearchBarDialog.tsx | 45 ++++++++++++++++--- .../frontend/src/pages/org-slug/layout.tsx | 1 + 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx index 01f5b803..21f31901 100644 --- a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx @@ -8,18 +8,46 @@ import { Project } from 'gql-client'; import { useDebounce } from 'usehooks-ts'; import { ProjectSearchBarItem } from './ProjectSearchBarItem'; import { ProjectSearchBarEmpty } from './ProjectSearchBarEmpty'; +import { useNavigate } from 'react-router-dom'; +import { useCombobox } from 'downshift'; interface ProjectSearchBarDialogProps extends Dialog.DialogProps { onClose?: () => void; + onClickItem?: (data: Project) => void; } export const ProjectSearchBarDialog = ({ onClose, + onClickItem, ...props }: ProjectSearchBarDialogProps) => { const [items, setItems] = useState([]); - const [inputValue, setInputValue] = useState(''); + const [selectedItem, setSelectedItem] = useState(null); const client = useGQLClient(); + const navigate = useNavigate(); + + const { + getMenuProps, + getInputProps, + getItemProps, + inputValue, + setInputValue, + } = useCombobox({ + items, + itemToString(item) { + return item ? item.name : ''; + }, + selectedItem, + onSelectedItemChange: ({ selectedItem: newSelectedItem }) => { + if (newSelectedItem) { + setSelectedItem(newSelectedItem); + onClickItem?.(newSelectedItem); + navigate( + `/${newSelectedItem.organization.slug}/projects/${newSelectedItem.id}`, + ); + } + }, + }); const debouncedInputValue = useDebounce(inputValue, 500); @@ -42,7 +70,7 @@ export const ProjectSearchBarDialog = ({ setItems([]); onClose?.(); }; - console.log(items); + return ( @@ -50,28 +78,31 @@ export const ProjectSearchBarDialog = ({
    } placeholder="Search" appearance="borderless" - value={inputValue} autoFocus - onChange={(e) => setInputValue(e.target.value)} />
    {/* Content */} -
    +
    {items.length > 0 - ? items.map((item) => ( + ? items.map((item, index) => ( <>

    Suggestions

    - + )) : inputValue && } diff --git a/packages/frontend/src/pages/org-slug/layout.tsx b/packages/frontend/src/pages/org-slug/layout.tsx index 1ff1679f..36dade67 100644 --- a/packages/frontend/src/pages/org-slug/layout.tsx +++ b/packages/frontend/src/pages/org-slug/layout.tsx @@ -123,6 +123,7 @@ export const DashboardLayout = ({ setIsSearchOpen(false)} onClose={() => setIsSearchOpen(false)} /> From ced50bf7f29c010ef8fc93cf767489fe0c271b81 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 10:55:37 +0700 Subject: [PATCH 076/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20add=20animation?= =?UTF-8?q?=20to=20the=20layout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/pages/org-slug/layout.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/layout.tsx b/packages/frontend/src/pages/org-slug/layout.tsx index 36dade67..cb126af1 100644 --- a/packages/frontend/src/pages/org-slug/layout.tsx +++ b/packages/frontend/src/pages/org-slug/layout.tsx @@ -113,11 +113,18 @@ export const DashboardLayout = ({ }} transition={{ type: 'spring', stiffness: 260, damping: 20 }} > -
    + -
    +
    From a80d40156f1d1949379611ad52b7a9caad58b346 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 11:11:16 +0700 Subject: [PATCH 077/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20remove=20bounci?= =?UTF-8?q?ng=20animation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Sidebar/Sidebar.tsx | 2 +- packages/frontend/src/pages/org-slug/layout.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index 62e25fac..06e7b053 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -71,7 +71,7 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { initial={{ x: -320 }} animate={{ x: isDesktop || mobileOpen ? 0 : -320 }} exit={{ x: -320 }} - transition={{ type: 'spring', stiffness: 260, damping: 20 }} + transition={{ ease: 'easeInOut', duration: 0.3 }} className={cn('h-full flex-none w-[320px] lg:flex hidden flex-col', { flex: mobileOpen, })} diff --git a/packages/frontend/src/pages/org-slug/layout.tsx b/packages/frontend/src/pages/org-slug/layout.tsx index cb126af1..bf503c10 100644 --- a/packages/frontend/src/pages/org-slug/layout.tsx +++ b/packages/frontend/src/pages/org-slug/layout.tsx @@ -111,7 +111,7 @@ export const DashboardLayout = ({ animate={{ x: isSidebarOpen ? '10px' : 0, // Translate X based on sidebar state }} - transition={{ type: 'spring', stiffness: 260, damping: 20 }} + transition={{ ease: 'easeInOut', duration: 0.3 }} > From 80097a32ac355a55272222b1bd24ed45e6a7d31a Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 11:17:08 +0700 Subject: [PATCH 078/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20make=20the?= =?UTF-8?q?=20default=20status=20to=20undefined?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/deployments/FilterForm.tsx | 22 ++++++++++--------- .../org-slug/projects/id/Deployments.tsx | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx b/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx index 78324eff..3668b7ac 100644 --- a/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx +++ b/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx @@ -22,7 +22,7 @@ export enum StatusOptions { export interface FilterValue { searchedBranch: string; - status: StatusOptions; + status: StatusOptions | string; updateAtRange?: Value; } @@ -64,13 +64,11 @@ const FilterForm = ({ value, onChange }: FilterFormProps) => { } }; - const statusOptions = Object.values(StatusOptions) - .map((status) => ({ - label: status, - value: status, - leftIcon: getOptionIcon(status), - })) - .filter((status) => status.value !== StatusOptions.ALL_STATUS); + const statusOptions = Object.values(StatusOptions).map((status) => ({ + label: status, + value: status, + leftIcon: getOptionIcon(status), + })); const handleReset = () => { setSearchedBranch(''); @@ -104,11 +102,15 @@ const FilterForm = ({ value, onChange }: FilterFormProps) => { options={statusOptions} clearable placeholder="All status" - value={{ label: selectedStatus, value: selectedStatus }} + value={ + selectedStatus + ? { label: selectedStatus, value: selectedStatus } + : undefined + } onChange={(item) => setSelectedStatus((item as SelectOption).value as StatusOptions) } - onClear={() => setSelectedStatus(StatusOptions.ALL_STATUS)} + onClear={() => setSelectedStatus('')} />
    diff --git a/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx b/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx index 25be67b9..1437754f 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx @@ -14,7 +14,7 @@ import { RefreshIcon } from 'components/shared/CustomIcon'; const DEFAULT_FILTER_VALUE: FilterValue = { searchedBranch: '', - status: StatusOptions.ALL_STATUS, + status: '', }; const FETCH_DEPLOYMENTS_INTERVAL = 5000; From b6e02fb19d948d5313a820f4b81ef154b12ea170 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 11:23:25 +0700 Subject: [PATCH 079/251] =?UTF-8?q?=F0=9F=90=9B=20fix:=20on=20reset=20erro?= =?UTF-8?q?r=20when=20value=20is=20undefined?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Select/Select.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/shared/Select/Select.tsx b/packages/frontend/src/components/shared/Select/Select.tsx index a2c33e20..2f1667de 100644 --- a/packages/frontend/src/components/shared/Select/Select.tsx +++ b/packages/frontend/src/components/shared/Select/Select.tsx @@ -167,7 +167,8 @@ export const Select = ({ } }, [dropdownOpen]); // Re-calculate whenever the dropdown is opened - const handleSelectedItemChange = (selectedItem: SelectOption | null) => { + const handleSelectedItemChange = (selectedItem: SelectOption | undefined) => { + if (!selectedItem) return; setSelectedItem(selectedItem); setInputValue(selectedItem ? selectedItem.label : ''); onChange?.(selectedItem as SelectOption); @@ -185,7 +186,7 @@ export const Select = ({ onSelectedItemsChange: multiple ? undefined : ({ selectedItems }) => { - handleSelectedItemChange(selectedItems?.[0] || null); + handleSelectedItemChange(selectedItems?.[0]); }, }); From eccf78afdbc3cef58e447fb7dbb5cde4ea8ee3d9 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 11:40:07 +0700 Subject: [PATCH 080/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20add=20backgroun?= =?UTF-8?q?d=20tot=20the=20project=20search=20header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/layouts/ProjectSearch.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/layouts/ProjectSearch.tsx b/packages/frontend/src/layouts/ProjectSearch.tsx index 9f94a2a6..5a71356d 100644 --- a/packages/frontend/src/layouts/ProjectSearch.tsx +++ b/packages/frontend/src/layouts/ProjectSearch.tsx @@ -34,7 +34,7 @@ const ProjectSearch = () => { return (
    {/* Header */} -
    +
    {
    {/* Content */} -
    +
    From daffcf1203c009fe86b936c1958f45b9243d7ca6 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 11:53:44 +0700 Subject: [PATCH 081/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20mobile?= =?UTF-8?q?=20sidebar=20animation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/shared/Sidebar/Sidebar.tsx | 12 +++++++----- packages/frontend/src/pages/org-slug/layout.tsx | 14 +++----------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index 06e7b053..14ff0f3b 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -72,17 +72,19 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { animate={{ x: isDesktop || mobileOpen ? 0 : -320 }} exit={{ x: -320 }} transition={{ ease: 'easeInOut', duration: 0.3 }} - className={cn('h-full flex-none w-[320px] lg:flex hidden flex-col', { + className={cn('h-full flex-none w-[320px] flex flex-col', { flex: mobileOpen, })} >
    {/* Logo */} - {!mobileOpen && } +
    + +
    {/* Switch organization */}
    - +
    - +
    From b75957929a7a3a71ca40dfba763c9ce454d8f48d Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 12:46:49 +0700 Subject: [PATCH 082/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20fixed=20content?= =?UTF-8?q?=20moves=20down=20issue=20when=20opening=20the=20sidebar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/pages/org-slug/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/org-slug/layout.tsx b/packages/frontend/src/pages/org-slug/layout.tsx index b82e7678..ece5123a 100644 --- a/packages/frontend/src/pages/org-slug/layout.tsx +++ b/packages/frontend/src/pages/org-slug/layout.tsx @@ -63,7 +63,7 @@ export const DashboardLayout = ({ variant="ghost" onClick={() => setIsSidebarOpen(false)} > - + ) : ( From 90295fd620835d5671f2364673546ae3d96bc3b7 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 13:09:23 +0700 Subject: [PATCH 083/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20use=20?= =?UTF-8?q?dialog=20overlay=20instead=20of=20div?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectSearchBarDialog.tsx | 52 +++++++++---------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx index 21f31901..a3988ae3 100644 --- a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx @@ -26,28 +26,23 @@ export const ProjectSearchBarDialog = ({ const client = useGQLClient(); const navigate = useNavigate(); - const { - getMenuProps, - getInputProps, - getItemProps, - inputValue, - setInputValue, - } = useCombobox({ - items, - itemToString(item) { - return item ? item.name : ''; - }, - selectedItem, - onSelectedItemChange: ({ selectedItem: newSelectedItem }) => { - if (newSelectedItem) { - setSelectedItem(newSelectedItem); - onClickItem?.(newSelectedItem); - navigate( - `/${newSelectedItem.organization.slug}/projects/${newSelectedItem.id}`, - ); - } - }, - }); + const { getInputProps, getItemProps, inputValue, setInputValue } = + useCombobox({ + items, + itemToString(item) { + return item ? item.name : ''; + }, + selectedItem, + onSelectedItemChange: ({ selectedItem: newSelectedItem }) => { + if (newSelectedItem) { + setSelectedItem(newSelectedItem); + onClickItem?.(newSelectedItem); + navigate( + `/${newSelectedItem.organization.slug}/projects/${newSelectedItem.id}`, + ); + } + }, + }); const debouncedInputValue = useDebounce(inputValue, 500); @@ -74,9 +69,10 @@ export const ProjectSearchBarDialog = ({ return ( -
    - -
    + + +
    +
    } @@ -89,7 +85,7 @@ export const ProjectSearchBarDialog = ({
    {/* Content */} -
    +
    {items.length > 0 ? items.map((item, index) => ( <> @@ -107,8 +103,8 @@ export const ProjectSearchBarDialog = ({ )) : inputValue && }
    - -
    +
    +
    ); From 274762cbfecd8700636a6fdcb30f14bb49822451 Mon Sep 17 00:00:00 2001 From: Andre H Date: Wed, 6 Mar 2024 14:14:10 +0800 Subject: [PATCH 084/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20create=20p?= =?UTF-8?q?roject=20mobile=20layout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org-slug/projects/create/Template.tsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx index 3d61792d..1f4236ff 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx @@ -14,11 +14,15 @@ import { } from 'components/shared/CustomIcon'; import { Heading } from 'components/shared/Heading'; import { Steps } from 'components/shared/Steps'; +import { useMediaQuery } from 'usehooks-ts'; // TODO: Set dynamic route for template and load details from DB const CreateWithTemplate = () => { const { orgSlug } = useParams(); + const isDesktopView = useMediaQuery('(min-width: 720px)'); // md: + const stepsOrientation = isDesktopView ? 'vertical' : 'horizontal'; + const stepperValues = [ { step: 1, @@ -47,7 +51,7 @@ const CreateWithTemplate = () => { ); return ( -
    +
    @@ -69,11 +73,15 @@ const CreateWithTemplate = () => {
    -
    -
    - +
    +
    +
    -
    +
    From 3737550f7f8b429b8849abe47039a20809b38bc2 Mon Sep 17 00:00:00 2001 From: Andre H Date: Wed, 6 Mar 2024 14:14:49 +0800 Subject: [PATCH 085/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20useMediaQuery?= =?UTF-8?q?=20change=20md=20to=20>720px?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/pages/org-slug/projects/Id.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/org-slug/projects/Id.tsx b/packages/frontend/src/pages/org-slug/projects/Id.tsx index cf333ba3..60c2f073 100644 --- a/packages/frontend/src/pages/org-slug/projects/Id.tsx +++ b/packages/frontend/src/pages/org-slug/projects/Id.tsx @@ -24,7 +24,7 @@ const Id = () => { const client = useGQLClient(); const location = useLocation(); - const isDesktopView = useMediaQuery('(min-width: 768px)'); // md: + const isDesktopView = useMediaQuery('(min-width: 720px)'); // md: const buttonSize = isDesktopView ? {} : { size: 'sm' as const }; const [project, setProject] = useState(null); From f23c757de9f11d03102e829eaa04e88fc7685f8d Mon Sep 17 00:00:00 2001 From: Andre H Date: Wed, 6 Mar 2024 14:15:19 +0800 Subject: [PATCH 086/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20create=20projec?= =?UTF-8?q?t=20create=20repo=20buttonSize=20to=20be=20responsive?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/components/shared/Button/Button.theme.ts | 2 +- .../src/pages/org-slug/projects/create/template/index.tsx | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/shared/Button/Button.theme.ts b/packages/frontend/src/components/shared/Button/Button.theme.ts index 262cb8f9..eedb9b24 100644 --- a/packages/frontend/src/components/shared/Button/Button.theme.ts +++ b/packages/frontend/src/components/shared/Button/Button.theme.ts @@ -20,7 +20,7 @@ export const buttonTheme = tv( variants: { size: { lg: ['gap-2', 'py-3.5', 'px-5', 'text-base', 'tracking-[-0.011em]'], - md: ['gap-2', 'py-3.25', 'px-5', 'text-sm', 'tracking-[-0.006em]'], + md: ['gap-2', 'py-3', 'px-5', 'text-sm', 'tracking-[-0.006em]'], sm: ['gap-1', 'py-2', 'px-3', 'text-xs'], xs: ['gap-1', 'py-1', 'px-2', 'text-xs'], }, diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx index 9fc8795e..f57428e1 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx @@ -3,6 +3,7 @@ import { useForm, SubmitHandler, Controller } from 'react-hook-form'; import { useNavigate, useOutletContext, useParams } from 'react-router-dom'; import toast from 'react-hot-toast'; import assert from 'assert'; +import { useMediaQuery } from 'usehooks-ts'; import { useOctokit } from '../../../../../context/OctokitContext'; import { useGQLClient } from '../../../../../context/GQLClientContext'; @@ -28,6 +29,9 @@ const CreateRepo = () => { const { orgSlug } = useParams(); + const isDesktopView = useMediaQuery('(min-width: 720px)'); // md: + const buttonSize = isDesktopView ? { size: 'lg' as const } : {}; + const navigate = useNavigate(); const [gitAccounts, setGitAccounts] = useState([]); @@ -166,8 +170,8 @@ const CreateRepo = () => {
    {/* Bottom navigation */} diff --git a/packages/frontend/src/components/shared/Sidebar/constants.tsx b/packages/frontend/src/components/shared/Sidebar/constants.tsx new file mode 100644 index 00000000..6c303105 --- /dev/null +++ b/packages/frontend/src/components/shared/Sidebar/constants.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { FolderIcon, SettingsSlidersIcon } from 'components/shared/CustomIcon'; + +export const SIDEBAR_MENU = (orgSlug?: string) => [ + { + title: 'Projects', + url: `/${orgSlug}/`, + icon: , + }, + { + title: 'Settings', + url: `/${orgSlug}/settings`, + icon: , + }, +]; From ca64d00355e1beea45abadfe04041fa87d6cee4d Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 13:22:39 +0700 Subject: [PATCH 088/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20grid?= =?UTF-8?q?=20for=20the=20project=20list?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/pages/org-slug/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/org-slug/index.tsx b/packages/frontend/src/pages/org-slug/index.tsx index 585c97ff..0237b77a 100644 --- a/packages/frontend/src/pages/org-slug/index.tsx +++ b/packages/frontend/src/pages/org-slug/index.tsx @@ -44,7 +44,7 @@ const Projects = () => {
    {/* List of projects */} -
    +
    {projects.length > 0 && projects.map((project, key) => { return ; From 226d02ea59f8a6773a400fec341186f9f241226d Mon Sep 17 00:00:00 2001 From: Andre H Date: Wed, 6 Mar 2024 14:29:28 +0800 Subject: [PATCH 089/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20change=20media?= =?UTF-8?q?=20query=20to=20lg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/org-slug/projects/create/Template.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx index 1f4236ff..682d1f48 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx @@ -20,7 +20,7 @@ import { useMediaQuery } from 'usehooks-ts'; const CreateWithTemplate = () => { const { orgSlug } = useParams(); - const isDesktopView = useMediaQuery('(min-width: 720px)'); // md: + const isDesktopView = useMediaQuery('(min-width: 960px)'); // lg: const stepsOrientation = isDesktopView ? 'vertical' : 'horizontal'; const stepperValues = [ @@ -51,8 +51,8 @@ const CreateWithTemplate = () => { ); return ( -
    -
    +
    +
    {template?.name} @@ -73,15 +73,15 @@ const CreateWithTemplate = () => {
    -
    -
    +
    +
    -
    +
    From 6c31113bcac00f1020e828792ec99a12e4e253af Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 15:08:45 +0700 Subject: [PATCH 090/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20grid?= =?UTF-8?q?=20width=20of=20the=20project=20list?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/pages/org-slug/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/org-slug/index.tsx b/packages/frontend/src/pages/org-slug/index.tsx index 0237b77a..e0e5af06 100644 --- a/packages/frontend/src/pages/org-slug/index.tsx +++ b/packages/frontend/src/pages/org-slug/index.tsx @@ -44,7 +44,7 @@ const Projects = () => {
    {/* List of projects */} -
    +
    {projects.length > 0 && projects.map((project, key) => { return ; From 7aac8cdcefadb1a4d3ee6f898cb46ff20cebb96b Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 15:11:16 +0700 Subject: [PATCH 091/251] =?UTF-8?q?=F0=9F=9A=80=20perf:=20change=20the=20d?= =?UTF-8?q?ebounce=20to=20300=20ms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/projects/ProjectSearchBar/ProjectSearchBar.tsx | 2 +- .../projects/ProjectSearchBar/ProjectSearchBarDialog.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBar.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBar.tsx index f88709ef..22e8b2f7 100644 --- a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBar.tsx +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBar.tsx @@ -42,7 +42,7 @@ export const ProjectSearchBar = ({ onChange }: ProjectSearchBarProps) => { }, }); - const debouncedInputValue = useDebounce(inputValue, 500); + const debouncedInputValue = useDebounce(inputValue, 300); const fetchProjects = useCallback( async (inputValue: string) => { diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx index a3988ae3..e49b44d0 100644 --- a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx @@ -44,7 +44,7 @@ export const ProjectSearchBarDialog = ({ }, }); - const debouncedInputValue = useDebounce(inputValue, 500); + const debouncedInputValue = useDebounce(inputValue, 300); const fetchProjects = useCallback( async (inputValue: string) => { From 8d3ef369bbc0681b784254bdf7d85e4e56ccf6e6 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 15:14:09 +0700 Subject: [PATCH 092/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20change?= =?UTF-8?q?=20project=20bar=20item=20component=20to=20button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/ProjectSearchBar/ProjectSearchBarItem.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx index 5afd8a84..f97419ff 100644 --- a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx @@ -11,7 +11,7 @@ import { getInitials } from 'utils/geInitials'; * @type {MergedComponentPropsWithoutRef} */ type MergedComponentPropsWithoutRef = OmitCommon< - ComponentPropsWithoutRef<'div'>, + ComponentPropsWithoutRef<'button'>, Omit< Overwrite, 'index' | 'item' @@ -24,16 +24,16 @@ interface ProjectSearchBarItemProps extends MergedComponentPropsWithoutRef { } const ProjectSearchBarItem = forwardRef< - HTMLDivElement, + HTMLButtonElement, ProjectSearchBarItemProps >(({ item, active, ...props }, ref) => { return ( -

    {item.organization.name}

    -
    + ); }); From b605c1bc5b370dcf028bea70375d56405b3ca901 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 15:27:29 +0700 Subject: [PATCH 093/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20media?= =?UTF-8?q?=20query=20minimum=20width=20for=20desktop=20to=20match=20with?= =?UTF-8?q?=20tailwind=20large=20responsive=20min=20width?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Sidebar/Sidebar.tsx | 2 +- packages/frontend/src/pages/org-slug/layout.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index 8493cd1e..e6ea17c6 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -34,7 +34,7 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { const navigate = useNavigate(); const client = useGQLClient(); const { disconnect } = useDisconnect(); - const isDesktop = useMediaQuery('(min-width: 1024px)'); + const isDesktop = useMediaQuery('(min-width: 960px)'); const [user, setUser] = useState(); diff --git a/packages/frontend/src/pages/org-slug/layout.tsx b/packages/frontend/src/pages/org-slug/layout.tsx index ece5123a..19515ea7 100644 --- a/packages/frontend/src/pages/org-slug/layout.tsx +++ b/packages/frontend/src/pages/org-slug/layout.tsx @@ -23,7 +23,7 @@ export const DashboardLayout = ({ ...props }: DashboardLayoutProps) => { const { orgSlug } = useParams(); - const isDesktop = useMediaQuery('(min-width: 1024px)'); + const isDesktop = useMediaQuery('(min-width: 960px)'); const [isSidebarOpen, setIsSidebarOpen] = useState(false); const [isSearchOpen, setIsSearchOpen] = useState(false); From d812cdf05ffadcf55b61d1458d19962246bf7ef4 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 15:39:46 +0700 Subject: [PATCH 094/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20logo?= =?UTF-8?q?=20and=20mobile=20header=20padding=20on=20mobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/Logo.tsx | 6 ++++-- packages/frontend/src/pages/org-slug/layout.tsx | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/components/Logo.tsx b/packages/frontend/src/components/Logo.tsx index 1c4c7daf..a46607c3 100644 --- a/packages/frontend/src/components/Logo.tsx +++ b/packages/frontend/src/components/Logo.tsx @@ -13,9 +13,11 @@ export const Logo = ({ orgSlug }: LogoProps) => { Snowball Logo - Snowball + + Snowball +
    ); diff --git a/packages/frontend/src/pages/org-slug/layout.tsx b/packages/frontend/src/pages/org-slug/layout.tsx index 19515ea7..e3ca631a 100644 --- a/packages/frontend/src/pages/org-slug/layout.tsx +++ b/packages/frontend/src/pages/org-slug/layout.tsx @@ -44,7 +44,7 @@ export const DashboardLayout = ({ )} > {/* Header on mobile */} -
    +
    From 9e4e203f5f343d6556a321b2ef776e1e0e43d515 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 15:44:35 +0700 Subject: [PATCH 095/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20remove=20bottom?= =?UTF-8?q?=20border=20radius=20for=20mobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/pages/org-slug/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/org-slug/layout.tsx b/packages/frontend/src/pages/org-slug/layout.tsx index e3ca631a..def0de9a 100644 --- a/packages/frontend/src/pages/org-slug/layout.tsx +++ b/packages/frontend/src/pages/org-slug/layout.tsx @@ -112,7 +112,7 @@ export const DashboardLayout = ({ }} transition={{ ease: 'easeInOut', duration: 0.3 }} > -
    +
    From 532732943ed09e942e17e042539a28b0c577dcd9 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 16:38:45 +0700 Subject: [PATCH 096/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20add=20?= =?UTF-8?q?empty=20space?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Sidebar/Sidebar.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index 2e3eb143..646156d0 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -66,6 +66,7 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { imgSrc: '/logo.svg', }; }, [organizations, selectedOrgSlug, orgSlug]); + const formattedSelectOptions = useMemo(() => { return organizations.map((org) => ({ value: org.slug, From efa74898af6a1a83f3c1857df3cac7ea9c5d2998 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 19:07:41 +0700 Subject: [PATCH 097/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20paddin?= =?UTF-8?q?g=20of=20the=20content=20layout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/pages/org-slug/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/org-slug/layout.tsx b/packages/frontend/src/pages/org-slug/layout.tsx index def0de9a..62ec1aa1 100644 --- a/packages/frontend/src/pages/org-slug/layout.tsx +++ b/packages/frontend/src/pages/org-slug/layout.tsx @@ -104,7 +104,7 @@ export const DashboardLayout = ({ Date: Wed, 6 Mar 2024 19:14:32 +0700 Subject: [PATCH 098/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20change=20the=20?= =?UTF-8?q?background=20color=20of=20the=20avatar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Sidebar/Sidebar.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index 646156d0..1196f47d 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -148,6 +148,7 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { {user?.name && (
    From 02500b3cbae147a1018be7419b2131cfc03e09c5 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Wed, 6 Mar 2024 21:03:01 +0700 Subject: [PATCH 099/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20make=20the=20si?= =?UTF-8?q?debar=20scrollable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/components/shared/Sidebar/Sidebar.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index 1196f47d..5dd1ed2d 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -96,9 +96,12 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { animate={{ x: isDesktop || mobileOpen ? 0 : -320 }} exit={{ x: -320 }} transition={{ ease: 'easeInOut', duration: 0.3 }} - className={cn('h-full flex-none w-[320px] flex flex-col', { - flex: mobileOpen, - })} + className={cn( + 'h-full flex-none w-[320px] flex flex-col overflow-y-auto', + { + flex: mobileOpen, + }, + )} >
    Date: Thu, 7 Mar 2024 10:17:30 +0800 Subject: [PATCH 100/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20add=20new=20ico?= =?UTF-8?q?ns?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomIcon/ArrowLeftCircleFilledIcon.tsx | 21 +++++++++++++++++++ .../QuestionMarkRoundFilledIcon.tsx | 21 +++++++++++++++++++ .../src/components/shared/CustomIcon/index.ts | 2 ++ 3 files changed, 44 insertions(+) create mode 100644 packages/frontend/src/components/shared/CustomIcon/ArrowLeftCircleFilledIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundFilledIcon.tsx diff --git a/packages/frontend/src/components/shared/CustomIcon/ArrowLeftCircleFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ArrowLeftCircleFilledIcon.tsx new file mode 100644 index 00000000..a2d348d5 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/ArrowLeftCircleFilledIcon.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const ArrowLeftCircleFilledIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundFilledIcon.tsx new file mode 100644 index 00000000..7e1d9fe5 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundFilledIcon.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const QuestionMarkRoundFilledIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index 5b853217..74e3cbfe 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -18,6 +18,7 @@ export * from './FolderIcon'; export * from './SettingsSlidersIcon'; export * from './LifeBuoyIcon'; export * from './QuestionMarkRoundIcon'; +export * from './QuestionMarkRoundFilledIcon'; export * from './GitIcon'; export * from './EllipseIcon'; export * from './EllipsesIcon'; @@ -38,6 +39,7 @@ export * from './WarningDiamondIcon'; export * from './ArrowRightCircleIcon'; export * from './ClockOutlineIcon'; export * from './ArrowRightCircleFilledIcon'; +export * from './ArrowLeftCircleFilledIcon'; export * from './GithubStrokeIcon'; export * from './BranchStrokeIcon'; export * from './StorageIcon'; From 2ed07a6987876ab4e1771276ef92e1d75b01d941 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 10:18:04 +0800 Subject: [PATCH 101/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20reskin=20s?= =?UTF-8?q?uccess=20create=20project?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org-slug/projects/create/success/Id.tsx | 133 ++++++++++-------- 1 file changed, 73 insertions(+), 60 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx index 940df255..c6a4040d 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx @@ -1,82 +1,95 @@ import React from 'react'; import { Link, useParams } from 'react-router-dom'; -import { Button } from '@material-tailwind/react'; +import { Badge } from 'components/shared/Badge'; +import { Button } from 'components/shared/Button'; +import { + ArrowLeftCircleFilledIcon, + LinkChainIcon, + QuestionMarkRoundFilledIcon, +} from 'components/shared/CustomIcon'; +import { Heading } from 'components/shared/Heading'; const Id = () => { const { id, orgSlug } = useParams(); + + const handleSetupDomain = () => { + //TODO: Implement this + }; return ( -
    -
    -
    ^
    -
    -
    -

    Project deployed successfully.

    -
    -
    - - Your project has been deployed at{' '} - - - ^ www.iglootools.snowballtools.xyz - - +
    + {/* Icon */} +
    ^
    + + {/* Heading */} +
    + + Project deployed successfully. + +

    + Your project has been deployed at{' '} + + + + www.iglootools.snowballtools.xyz + +

    +
    + + {/* Card */} +
    + {/* Trigger question */} +
    +
    +
    + + Wondering what’s next? +
    -
    -
    - ^? 
    Wondering what’s next?
    -
    -
    -
    -
    1
    -
    -
    Add a custom domain
    -

    + {/* CTA card */} +

    +
    + 1 +
    +
    + + Add a custom domain + +

    Make it easy for your visitors to remember your URL with a custom domain.

    -
    - -
    +
    +
    -
    -
    - - - -
    -
    - - - -
    + {/* CTA Buttons */} +
    +
    + + + +
    +
    + + +
    From 6b0548ec4749cdb0af2ec30d2bf4b12dc4583d83 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 11:41:41 +0800 Subject: [PATCH 102/251] =?UTF-8?q?=E2=9A=92=EF=B8=8F=20build:=20add=20lot?= =?UTF-8?q?tie-react?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/package.json | 1 + yarn.lock | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 614068fb..e9721a29 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -32,6 +32,7 @@ "downshift": "^8.3.2", "eslint-config-react-app": "^7.0.1", "gql-client": "^1.0.0", + "lottie-react": "^2.4.0", "luxon": "^3.4.4", "octokit": "^3.1.2", "react": "^18.2.0", diff --git a/yarn.lock b/yarn.lock index 2708695e..40284615 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13006,6 +13006,18 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lottie-react@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/lottie-react/-/lottie-react-2.4.0.tgz#f7249eee2b1deee70457a2d142194fdf2456e4bd" + integrity sha512-pDJGj+AQlnlyHvOHFK7vLdsDcvbuqvwPZdMlJ360wrzGFurXeKPr8SiRCjLf3LrNYKANQtSsh5dz9UYQHuqx4w== + dependencies: + lottie-web "^5.10.2" + +lottie-web@^5.10.2: + version "5.12.2" + resolved "https://registry.yarnpkg.com/lottie-web/-/lottie-web-5.12.2.tgz#579ca9fe6d3fd9e352571edd3c0be162492f68e5" + integrity sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg== + lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" From 646099707ca258f879f4d6d55de4dd6fdb848ded Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 11:42:12 +0800 Subject: [PATCH 103/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20use=20lottie=20?= =?UTF-8?q?for=20success=20logo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/public/lottie/logo.json | 1 + .../src/pages/org-slug/projects/create/success/Id.tsx | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 packages/frontend/public/lottie/logo.json diff --git a/packages/frontend/public/lottie/logo.json b/packages/frontend/public/lottie/logo.json new file mode 100644 index 00000000..f3b02a22 --- /dev/null +++ b/packages/frontend/public/lottie/logo.json @@ -0,0 +1 @@ +{"nm":"logo","v":"5.9.6","fr":60,"ip":0,"op":128.60000000000002,"w":40,"h":40,"ddd":0,"markers":[],"assets":[{"nm":"icon","fr":60,"id":"538:1272","layers":[{"ty":3,"ddd":0,"ind":5,"hd":false,"nm":"icon - Null","ks":{"a":{"a":0,"k":[14,14]},"o":{"a":0,"k":100},"p":{"a":0,"k":[19.5,20]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":83.39999999999999,"s":[-0.1,-0.1],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":129.60000000000002,"s":[100,100]}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ty":4,"ddd":0,"ind":6,"hd":false,"nm":"logo - Shape Mask","ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1,"shapes":[{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"sh","nm":"Path","hd":false,"ks":{"a":0,"k":{"c":true,"v":[[12,0],[28,0],[40,12],[40,28],[28,40],[12,40],[0,28],[0,12],[12,0],[12,0]],"i":[[0,0],[0,0],[0,-6.6274],[0,0],[6.6274,0],[0,0],[0,6.6274],[0,0],[-6.6274,0],[0,0]],"o":[[0,0],[6.627420000000001,0],[0,0],[0,6.627420000000001],[0,0],[-6.62742,0],[0,0],[0,-6.62742],[0,0],[0,0]]}}},{"ty":"fl","o":{"a":0,"k":100},"c":{"a":0,"k":[0,1,0,1]},"nm":"Fill","hd":false,"r":1},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}]},{"nm":"check, checmark","fr":60,"id":"538:1273","layers":[{"ty":3,"ddd":0,"ind":7,"hd":false,"nm":"icon - Null","ks":{"a":{"a":0,"k":[14,14]},"o":{"a":0,"k":100},"p":{"a":0,"k":[19.5,20]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":83.39999999999999,"s":[-0.1,-0.1],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":129.60000000000002,"s":[100,100]}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ty":3,"ddd":0,"ind":8,"hd":false,"nm":"check, checmark - Null","parent":7,"ks":{"a":{"a":0,"k":[6,6]},"o":{"a":0,"k":100},"p":{"a":0,"k":[14,14]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":0,"nm":"icon","td":1,"refId":"538:1272","sr":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"ao":0,"w":40,"h":40,"ip":0,"op":129.60000000000002,"st":0,"hd":false,"bm":0},{"ty":4,"ddd":0,"ind":10,"hd":false,"nm":"check, checmark - Shape Mask","parent":8,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"st":0,"ip":75,"op":240,"bm":0,"sr":1,"shapes":[{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"sh","nm":"Path","hd":false,"ks":{"a":0,"k":{"c":true,"v":[[0,0],[12,0],[12,0],[12,12],[12,12],[0,12],[0,12],[0,0]],"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]}}},{"ty":"fl","o":{"a":0,"k":100},"c":{"a":0,"k":[0,1,0,1]},"nm":"Fill","hd":false,"r":1},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"tt":1}]},{"nm":"check, checmark","fr":60,"id":"ltgojk9vajqo3xuqysw","layers":[{"ty":3,"ddd":0,"ind":21,"hd":false,"nm":"icon - Null","ks":{"a":{"a":0,"k":[14,14]},"o":{"a":0,"k":100},"p":{"a":0,"k":[19.5,20]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":83.39999999999999,"s":[-0.1,-0.1],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":129.60000000000002,"s":[100,100]}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ty":3,"ddd":0,"ind":22,"hd":false,"nm":"check, checmark - Null","parent":21,"ks":{"a":{"a":0,"k":[6,6]},"o":{"a":0,"k":100},"p":{"a":0,"k":[14,14]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ty":3,"ddd":0,"ind":15,"hd":false,"nm":"Icon - Null","parent":22,"ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[1.5,2]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ddd":0,"ind":16,"hd":false,"nm":"Icon - Stroke","parent":15,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"st":0,"ip":75,"op":240,"bm":0,"sr":1,"ty":4,"shapes":[{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"sh","nm":"Path","hd":false,"ks":{"a":0,"k":{"c":false,"v":[[0,5.5],[3.1471,8],[9,0]],"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]]}}},{"ty":"st","o":{"a":0,"k":100},"w":{"a":0,"k":2},"c":{"a":0,"k":[0.24705882352941178,0.5058823529411764,0.9254901960784314,1]},"ml":4,"lc":2,"lj":2,"nm":"Stroke","hd":false},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"p":{"a":0,"k":[5.5,5]},"s":{"a":0,"k":[22,20]},"r":{"a":0,"k":0}},{"ty":"fl","o":{"a":0,"k":0},"c":{"a":0,"k":[0,1,0,1]},"nm":"Fill","hd":false,"r":1},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}]},{"nm":"[FRAME] icon - Null / icon - Stroke / icon - Null / check, checmark - Null / icon - Null / check, checmark - Null / check, checmark / check, checmark / icon","fr":60,"id":"ltgojk9svnf3mrgghfq","layers":[{"ty":3,"ddd":0,"ind":17,"hd":false,"nm":"icon - Null","ks":{"a":{"a":0,"k":[14,14]},"o":{"a":0,"k":100},"p":{"a":0,"k":[19.5,20]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":83.39999999999999,"s":[-0.1,-0.1],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":129.60000000000002,"s":[100,100]}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ddd":0,"ind":18,"hd":false,"nm":"icon - Stroke","parent":17,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"st":0,"ip":75,"op":240,"bm":0,"sr":1,"ty":4,"shapes":[{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"sh","nm":"Path","hd":false,"ks":{"a":0,"k":{"c":true,"v":[[14,0],[14,0],[28,14],[28,14],[14,28],[14,28],[0,14],[0,14],[14,0],[14,0]],"i":[[0,0],[0,0],[0,-7.732],[0,0],[7.732,0],[0,0],[0,7.732],[0,0],[-7.732,0],[0,0]],"o":[[0,0],[7.73199,0],[0,0],[0,7.73199],[0,0],[-7.73199,0],[0,0],[0,-7.73199],[0,0],[0,0]]}}},{"ty":"st","o":{"a":0,"k":6},"w":{"a":0,"k":2},"c":{"a":0,"k":[0.03137254901960784,0.1843137254901961,0.33725490196078434,1]},"ml":4,"lc":1,"lj":1,"nm":"Stroke","hd":false},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"p":{"a":0,"k":[14.5,14.5]},"s":{"a":0,"k":[58,58]},"r":{"a":0,"k":0}},{"ty":"fl","o":{"a":0,"k":0},"c":{"a":0,"k":[0,1,0,1]},"nm":"Fill","hd":false,"r":1},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"hasMask":true,"masksProperties":[{"nm":"Mask","pt":{"a":0,"k":{"c":true,"v":[[14,0],[14,0],[28,14],[28,14],[14,28],[14,28],[0,14],[0,14],[14,0],[14,0]],"i":[[0,0],[0,0],[0,-7.732],[0,0],[7.732,0],[0,0],[0,7.732],[0,0],[-7.732,0],[0,0]],"o":[[0,0],[7.73199,0],[0,0],[0,7.73199],[0,0],[-7.73199,0],[0,0],[0,-7.73199],[0,0],[0,0]]}},"o":{"a":0,"k":100},"mode":"a","x":{"a":0,"k":0}}]},{"ty":3,"ddd":0,"ind":19,"hd":false,"nm":"icon - Null","ks":{"a":{"a":0,"k":[14,14]},"o":{"a":0,"k":100},"p":{"a":0,"k":[19.5,20]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":83.39999999999999,"s":[-0.1,-0.1],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":129.60000000000002,"s":[100,100]}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ty":3,"ddd":0,"ind":20,"hd":false,"nm":"check, checmark - Null","parent":19,"ks":{"a":{"a":0,"k":[6,6]},"o":{"a":0,"k":100},"p":{"a":0,"k":[14,14]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ty":3,"ddd":0,"ind":21,"hd":false,"nm":"icon - Null","ks":{"a":{"a":0,"k":[14,14]},"o":{"a":0,"k":100},"p":{"a":0,"k":[19.5,20]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":83.39999999999999,"s":[-0.1,-0.1],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":129.60000000000002,"s":[100,100]}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ty":3,"ddd":0,"ind":22,"hd":false,"nm":"check, checmark - Null","parent":21,"ks":{"a":{"a":0,"k":[6,6]},"o":{"a":0,"k":100},"p":{"a":0,"k":[14,14]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":75,"op":240,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":0,"nm":"check, checmark","td":1,"refId":"538:1273","sr":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"ao":0,"w":40,"h":40,"ip":0,"op":129.60000000000002,"st":0,"hd":false,"bm":0},{"ddd":0,"ind":24,"ty":0,"nm":"check, checmark","refId":"ltgojk9vajqo3xuqysw","sr":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"ao":0,"w":40,"h":40,"ip":0,"op":129.60000000000002,"st":0,"hd":false,"bm":0,"tt":1},{"ty":4,"ddd":0,"ind":25,"hd":false,"nm":"icon","parent":17,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"st":0,"ip":75,"op":240,"bm":0,"sr":1,"shapes":[{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"sh","nm":"Path","hd":false,"ks":{"a":0,"k":{"c":true,"v":[[14,0],[14,0],[28,14],[28,14],[14,28],[14,28],[0,14],[0,14],[14,0],[14,0]],"i":[[0,0],[0,0],[0,-7.732],[0,0],[7.732,0],[0,0],[0,7.732],[0,0],[-7.732,0],[0,0]],"o":[[0,0],[7.73199,0],[0,0],[0,7.73199],[0,0],[-7.73199,0],[0,0],[0,-7.73199],[0,0],[0,0]]}}},{"ty":"fl","o":{"a":0,"k":100},"c":{"a":0,"k":[1,1,1,1]},"nm":"Fill","hd":false,"r":1},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}]},{"nm":"logo","fr":60,"id":"ltgojk9qxrn7edmrf1","layers":[{"ty":3,"ddd":0,"ind":26,"hd":false,"nm":"logo - Null","ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1},{"ddd":0,"ind":27,"ty":0,"nm":"icon","refId":"ltgojk9svnf3mrgghfq","sr":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"ao":0,"w":40,"h":40,"ip":0,"op":129.60000000000002,"st":0,"hd":false,"bm":0},{"ty":3,"ddd":0,"ind":28,"hd":false,"nm":"Group 7230 - Null","ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[5,10]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1},{"ty":3,"ddd":0,"ind":29,"hd":false,"nm":"Vector - Null","parent":28,"ks":{"a":{"a":0,"k":[10,10]},"o":{"a":0,"k":100},"p":{"a":1,"k":[{"t":0,"s":[19,10],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]},"ti":[0,0],"to":[0,0]},{"t":37.2,"s":[14.5,10]}]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":39.6,"s":[100,100],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":40.800000000000004,"s":[98.17,98.17],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":76.8,"s":[-0.1,-0.1]}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1},{"ty":4,"ddd":0,"ind":30,"hd":false,"nm":"Vector","parent":29,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1,"shapes":[{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"sh","nm":"Path","hd":false,"ks":{"a":0,"k":{"c":true,"v":[[9.3499,0.0101],[15.9234,3.8396],[19.9895,10.3292],[16.6625,17.5485],[9.3499,19.9831],[1.6132,17.9671],[0.0587,10.3292],[2.0807,3.1528],[9.3499,0.0101],[9.3499,0.0101]],"i":[[0,0],[-1.8867,-1.8299],[-0.1424,-2.6405],[2.0497,-1.8598],[2.6731,-0.0744],[1.9099,1.9844],[-0.0852,2.6983],[-1.737,1.9292],[-2.7464,-0.1363],[0,0]],"o":[[2.641540000000001,0.13106],[1.9106500000000004,1.8530800000000003],[0.14798000000000044,2.744489999999999],[-1.9689200000000007,1.7865199999999994],[-2.7716399999999997,0.0771000000000015],[-1.88353,-1.9570800000000013],[0.08142000000000002,-2.57993],[1.8269200000000003,-2.02903],[0,0],[0,0]]}}},{"ty":"fl","o":{"a":0,"k":100},"c":{"a":0,"k":[1,1,1,1]},"nm":"Fill","hd":false,"r":2},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":3,"ddd":0,"ind":31,"hd":false,"nm":"Vector - Null","parent":28,"ks":{"a":{"a":0,"k":[10,10]},"o":{"a":0,"k":100},"p":{"a":1,"k":[{"t":0,"s":[16,10],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]},"ti":[0,0],"to":[0,0]},{"t":37.2,"s":[14.5,10]}]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":37.8,"s":[100,100],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":73.8,"s":[-0.1,-0.1]}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1},{"ty":4,"ddd":0,"ind":32,"hd":false,"nm":"Vector","parent":31,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1,"shapes":[{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"sh","nm":"Path","hd":false,"ks":{"a":0,"k":{"c":true,"v":[[9.3499,0.0101],[15.9234,3.8396],[19.9895,10.3292],[16.6625,17.5485],[9.3499,19.9831],[1.6132,17.9671],[0.0587,10.3292],[2.0807,3.1528],[9.3499,0.0101],[9.3499,0.0101]],"i":[[0,0],[-1.8867,-1.8299],[-0.1424,-2.6405],[2.0497,-1.8598],[2.6731,-0.0744],[1.9099,1.9844],[-0.0852,2.6983],[-1.737,1.9292],[-2.7464,-0.1363],[0,0]],"o":[[2.641540000000001,0.13106],[1.9106500000000004,1.8530800000000003],[0.14798000000000044,2.744489999999999],[-1.9689200000000007,1.7865199999999994],[-2.7716399999999997,0.0771000000000015],[-1.88353,-1.9570800000000013],[0.08142000000000002,-2.57993],[1.8269200000000003,-2.02903],[0,0],[0,0]]}}},{"ty":"fl","o":{"a":0,"k":100},"c":{"a":0,"k":[0.792156862745098,0.8941176470588236,0.9921568627450981,1]},"nm":"Fill","hd":false,"r":2},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":3,"ddd":0,"ind":33,"hd":false,"nm":"Vector - Null","parent":28,"ks":{"a":{"a":0,"k":[10,10]},"o":{"a":0,"k":100},"p":{"a":1,"k":[{"t":0,"s":[13,10],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]},"ti":[0,0],"to":[0,0]},{"t":37.2,"s":[14.5,10]}]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":36,"s":[100,100],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":72,"s":[-0.1,-0.1]}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1},{"ty":4,"ddd":0,"ind":34,"hd":false,"nm":"Vector","parent":33,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1,"shapes":[{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"sh","nm":"Path","hd":false,"ks":{"a":0,"k":{"c":true,"v":[[9.3499,0.0101],[15.9234,3.8396],[19.9895,10.3292],[16.6625,17.5485],[9.3499,19.9831],[1.6132,17.9671],[0.0587,10.3292],[2.0807,3.1528],[9.3499,0.0101],[9.3499,0.0101]],"i":[[0,0],[-1.8867,-1.8299],[-0.1424,-2.6405],[2.0497,-1.8598],[2.6731,-0.0744],[1.9099,1.9844],[-0.0852,2.6983],[-1.737,1.9292],[-2.7464,-0.1363],[0,0]],"o":[[2.641540000000001,0.13106],[1.9106500000000004,1.8530800000000003],[0.14798000000000044,2.744489999999999],[-1.9689200000000007,1.7865199999999994],[-2.7716399999999997,0.0771000000000015],[-1.88353,-1.9570800000000013],[0.08142000000000002,-2.57993],[1.8269200000000003,-2.02903],[0,0],[0,0]]}}},{"ty":"fl","o":{"a":0,"k":100},"c":{"a":0,"k":[0.5411764705882353,0.7686274509803922,0.9803921568627451,1]},"nm":"Fill","hd":false,"r":2},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":3,"ddd":0,"ind":35,"hd":false,"nm":"Vector - Null","parent":28,"ks":{"a":{"a":0,"k":[10,10]},"o":{"a":0,"k":100},"p":{"a":1,"k":[{"t":0,"s":[10,10],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]},"ti":[0,0],"to":[0,0]},{"t":37.2,"s":[14.5,10]}]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":46.800000000000004,"s":[100,100],"o":{"x":[0.5],"y":[0.35]},"i":{"x":[0.15],"y":[1]}},{"t":82.8,"s":[-0.1,-0.1]}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1},{"ty":4,"ddd":0,"ind":36,"hd":false,"nm":"Vector","parent":35,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1,"shapes":[{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"sh","nm":"Path","hd":false,"ks":{"a":0,"k":{"c":true,"v":[[9.3499,0.0101],[15.9234,3.8396],[19.9895,10.3292],[16.6625,17.5485],[9.3499,19.9831],[1.6132,17.9671],[0.0587,10.3292],[2.0807,3.1528],[9.3499,0.0101],[9.3499,0.0101]],"i":[[0,0],[-1.8867,-1.8299],[-0.1424,-2.6405],[2.0497,-1.8598],[2.6731,-0.0744],[1.9099,1.9844],[-0.0852,2.6983],[-1.737,1.9292],[-2.7464,-0.1363],[0,0]],"o":[[2.641540000000001,0.13106],[1.9106500000000004,1.8530800000000003],[0.14798000000000044,2.744489999999999],[-1.9689200000000007,1.7865199999999994],[-2.7716399999999997,0.0771000000000015],[-1.88353,-1.9570800000000013],[0.08142000000000002,-2.57993],[1.8269200000000003,-2.02903],[0,0],[0,0]]}}},{"ty":"fl","o":{"a":0,"k":100},"c":{"a":0,"k":[0.29411764705882354,0.6431372549019608,0.9686274509803922,1]},"nm":"Fill","hd":false,"r":2},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"ddd":0,"ind":37,"hd":false,"nm":"logo","parent":26,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1,"shapes":[{"ty":"gr","nm":"Group","hd":false,"np":3,"it":[{"ty":"sh","nm":"Path","hd":false,"ks":{"a":0,"k":{"c":true,"v":[[12,0],[28,0],[40,12],[40,28],[28,40],[12,40],[0,28],[0,12],[12,0],[12,0]],"i":[[0,0],[0,0],[0,-6.6274],[0,0],[6.6274,0],[0,0],[0,6.6274],[0,0],[-6.6274,0],[0,0]],"o":[[0,0],[6.627420000000001,0],[0,0],[0,6.627420000000001],[0,0],[-6.62742,0],[0,0],[0,-6.62742],[0,0],[0,0]]}}},{"ty":"fl","o":{"a":0,"k":100},"c":{"a":0,"k":[0.058823529411764705,0.5254901960784314,0.9607843137254902,1]},"nm":"Fill","hd":false,"r":1},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}]}],"layers":[{"ty":3,"ddd":0,"ind":26,"hd":false,"nm":"logo - Null","ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"st":0,"ip":0,"op":129.60000000000002,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":0,"nm":"logo","refId":"ltgojk9qxrn7edmrf1","sr":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"ao":0,"w":40,"h":40,"ip":0,"op":129.60000000000002,"st":0,"hd":false,"bm":0}],"meta":{"a":"","d":"","tc":"","g":"Aninix"}} \ No newline at end of file diff --git a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx index c6a4040d..9def857e 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Link, useParams } from 'react-router-dom'; +import Lottie from 'lottie-react'; import { Badge } from 'components/shared/Badge'; import { Button } from 'components/shared/Button'; @@ -10,6 +11,8 @@ import { } from 'components/shared/CustomIcon'; import { Heading } from 'components/shared/Heading'; +import logoAnimation from 'components/../../public/lottie/logo.json'; + const Id = () => { const { id, orgSlug } = useParams(); @@ -17,16 +20,18 @@ const Id = () => { //TODO: Implement this }; return ( -
    +
    {/* Icon */} -
    ^
    +
    + +
    {/* Heading */}
    Project deployed successfully. -

    +

    Your project has been deployed at{' '} From 028831f80649f6ace11d74b5dbf8ddcb5a3a3c71 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 11:45:51 +0800 Subject: [PATCH 104/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20change=20isDesk?= =?UTF-8?q?topView=20to=20isTabletView?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/pages/org-slug/projects/Id.tsx | 4 ++-- .../frontend/src/pages/org-slug/projects/create/Template.tsx | 4 ++-- .../src/pages/org-slug/projects/create/template/index.tsx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/Id.tsx b/packages/frontend/src/pages/org-slug/projects/Id.tsx index 60c2f073..e5b7604d 100644 --- a/packages/frontend/src/pages/org-slug/projects/Id.tsx +++ b/packages/frontend/src/pages/org-slug/projects/Id.tsx @@ -24,8 +24,8 @@ const Id = () => { const client = useGQLClient(); const location = useLocation(); - const isDesktopView = useMediaQuery('(min-width: 720px)'); // md: - const buttonSize = isDesktopView ? {} : { size: 'sm' as const }; + const isTabletView = useMediaQuery('(min-width: 720px)'); // md: + const buttonSize = isTabletView ? {} : { size: 'sm' as const }; const [project, setProject] = useState(null); const [repoUrl, setRepoUrl] = useState(''); diff --git a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx index 682d1f48..ae7f55ab 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx @@ -20,8 +20,8 @@ import { useMediaQuery } from 'usehooks-ts'; const CreateWithTemplate = () => { const { orgSlug } = useParams(); - const isDesktopView = useMediaQuery('(min-width: 960px)'); // lg: - const stepsOrientation = isDesktopView ? 'vertical' : 'horizontal'; + const isTabletView = useMediaQuery('(min-width: 960px)'); // lg: + const stepsOrientation = isTabletView ? 'vertical' : 'horizontal'; const stepperValues = [ { diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx index f57428e1..777a866d 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx @@ -29,8 +29,8 @@ const CreateRepo = () => { const { orgSlug } = useParams(); - const isDesktopView = useMediaQuery('(min-width: 720px)'); // md: - const buttonSize = isDesktopView ? { size: 'lg' as const } : {}; + const isTabletView = useMediaQuery('(min-width: 720px)'); // md: + const buttonSize = isTabletView ? { size: 'lg' as const } : {}; const navigate = useNavigate(); From 4074dd4001ea663c7d3c81a3cc8be341a235d44c Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 12:16:03 +0800 Subject: [PATCH 105/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20use=20link-emph?= =?UTF-8?q?asized=20button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/org-slug/projects/create/success/Id.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx index 9def857e..e3379ca9 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx @@ -33,12 +33,16 @@ const Id = () => {

    Your project has been deployed at{' '} - - - +

    From 2a8fc30979a5ec742b6283c48b7d9ac244d40afb Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 12:16:23 +0800 Subject: [PATCH 106/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20add=20TODO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/pages/org-slug/projects/create/success/Id.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx index e3379ca9..78ce49a5 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx @@ -35,12 +35,14 @@ const Id = () => { Your project has been deployed at{' '}

    From be8f0bc4ad1bfaacacf8293440e3c97aa5aa2094 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 12:17:06 +0800 Subject: [PATCH 107/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20use=20``=20for?= =?UTF-8?q?=20text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/org-slug/projects/create/success/Id.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx index 78ce49a5..ae7779e8 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx @@ -43,7 +43,7 @@ const Id = () => { leftIcon={} > {/* // TODO: use dynamic value */} - www.iglootools.snowballtools.xyz + www.iglootools.snowballtools.xyz

    @@ -56,7 +56,7 @@ const Id = () => {
    - Wondering what’s next? + {`Wondering what's next?`}
    From 658cc0b6b2610a04a61b15ac366e5993b76365be Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 12:18:41 +0800 Subject: [PATCH 108/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20change=20to=20i?= =?UTF-8?q?sDesktopView=20for=20>960px?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/pages/org-slug/projects/create/Template.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx index ae7f55ab..682d1f48 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx @@ -20,8 +20,8 @@ import { useMediaQuery } from 'usehooks-ts'; const CreateWithTemplate = () => { const { orgSlug } = useParams(); - const isTabletView = useMediaQuery('(min-width: 960px)'); // lg: - const stepsOrientation = isTabletView ? 'vertical' : 'horizontal'; + const isDesktopView = useMediaQuery('(min-width: 960px)'); // lg: + const stepsOrientation = isDesktopView ? 'vertical' : 'horizontal'; const stepperValues = [ { From 3a84832da5e45489a72551daa79b9f0260527907 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 14:22:10 +0800 Subject: [PATCH 109/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20add=20tooltip?= =?UTF-8?q?=20on=20hover=20projectcard=20name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/ProjectCard/ProjectCard.tsx | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx b/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx index 1c91e51d..5a0ff9b5 100644 --- a/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx +++ b/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx @@ -1,12 +1,18 @@ +import { + Menu, + MenuHandler, + MenuItem, + MenuList, +} from '@material-tailwind/react'; import React, { ComponentPropsWithoutRef, MouseEvent, useCallback, } from 'react'; -import { ProjectCardTheme, projectCardTheme } from './ProjectCard.theme'; +import { useNavigate } from 'react-router-dom'; import { Project } from 'gql-client'; +import { Avatar } from 'components/shared/Avatar'; import { Button } from 'components/shared/Button'; -import { WavyBorder } from 'components/shared/WavyBorder'; import { BranchIcon, ClockIcon, @@ -14,16 +20,11 @@ import { HorizontalDotIcon, WarningDiamondIcon, } from 'components/shared/CustomIcon'; +import { Tooltip } from 'components/shared/Tooltip'; +import { WavyBorder } from 'components/shared/WavyBorder'; import { relativeTimeMs } from 'utils/time'; -import { useNavigate } from 'react-router-dom'; -import { Avatar } from 'components/shared/Avatar'; import { getInitials } from 'utils/geInitials'; -import { - Menu, - MenuHandler, - MenuItem, - MenuList, -} from '@material-tailwind/react'; +import { ProjectCardTheme, projectCardTheme } from './ProjectCard.theme'; export interface ProjectCardProps extends ComponentPropsWithoutRef<'div'>, @@ -72,7 +73,9 @@ export const ProjectCard = ({ /> {/* Title and website */}
    -

    {project.name}

    + +

    {project.name}

    +

    {project.deployments[0]?.domain?.name ?? 'No domain'}

    From cdb995205afbaff4377911c85580c48e3cc4c1e7 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 14:22:32 +0800 Subject: [PATCH 110/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20truncate=20over?= =?UTF-8?q?flow=20text=20on=20projectCard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/projects/ProjectCard/ProjectCard.theme.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/projects/ProjectCard/ProjectCard.theme.ts b/packages/frontend/src/components/projects/ProjectCard/ProjectCard.theme.ts index db662ebc..117a2cde 100644 --- a/packages/frontend/src/components/projects/ProjectCard/ProjectCard.theme.ts +++ b/packages/frontend/src/components/projects/ProjectCard/ProjectCard.theme.ts @@ -9,16 +9,18 @@ export const projectCardTheme = tv({ 'flex', 'flex-col', 'group', + 'cursor-pointer', ], upperContent: ['px-4', 'py-4', 'flex', 'items-start', 'gap-3', 'relative'], - content: ['flex', 'flex-col', 'gap-1', 'flex-1'], + content: ['flex', 'flex-col', 'gap-1', 'flex-1', 'overflow-hidden'], title: [ 'text-sm', 'font-medium', 'text-elements-high-em', 'tracking-[-0.006em]', + 'truncate', ], - description: ['text-xs', 'text-elements-low-em'], + description: ['text-xs', 'text-elements-low-em', 'truncate'], icons: ['flex', 'items-center', 'gap-1'], lowerContent: [ 'transition-colors', From 41033c5241dfc7bcc24aeb2f0364b01a0d8eec36 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 14:23:11 +0800 Subject: [PATCH 111/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20reskin=20"?= =?UTF-8?q?no=20repository=20found"=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../create/RepositoryList/RepositoryList.tsx | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx b/packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx index 14af57e6..5b96ce37 100644 --- a/packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx +++ b/packages/frontend/src/components/projects/create/RepositoryList/RepositoryList.tsx @@ -3,17 +3,17 @@ import { Octokit } from 'octokit'; import assert from 'assert'; import { useDebounce } from 'usehooks-ts'; -import { Button, Typography } from '@material-tailwind/react'; - import { ProjectRepoCard } from 'components/projects/create/ProjectRepoCard'; import { GitOrgDetails, GitRepositoryDetails } from 'types'; import { ChevronGrabberHorizontal, GithubIcon, + RefreshIcon, SearchIcon, } from 'components/shared/CustomIcon'; import { Select, SelectOption } from 'components/shared/Select'; import { Input } from 'components/shared/Input'; +import { Button } from 'components/shared/Button'; const DEFAULT_SEARCHED_REPO = ''; const REPOS_PER_PAGE = 5; @@ -160,18 +160,16 @@ export const RepositoryList = ({ octokit }: RepositoryListProps) => { ))}
    ) : ( -
    -
    - No repository found - -
    +
    +

    No repository found

    +
    )} From 095008867f7c2c4d8729c76f44c504126ee8d055 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 14:23:34 +0800 Subject: [PATCH 112/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20show=20loading?= =?UTF-8?q?=20state=20on=20fetching=20repo=20activities?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/overview/Activity/Activity.tsx | 17 ++++++++++++++--- .../src/pages/org-slug/projects/id/Overview.tsx | 6 +++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/frontend/src/components/projects/project/overview/Activity/Activity.tsx b/packages/frontend/src/components/projects/project/overview/Activity/Activity.tsx index 252d85a1..38b4d959 100644 --- a/packages/frontend/src/components/projects/project/overview/Activity/Activity.tsx +++ b/packages/frontend/src/components/projects/project/overview/Activity/Activity.tsx @@ -4,10 +4,13 @@ import { GitCommitWithBranch } from 'types'; import { Heading } from 'components/shared/Heading'; import ActivityCard from './ActivityCard'; import { Button } from 'components/shared/Button'; +import { LoadingIcon } from 'components/shared/CustomIcon'; export const Activity = ({ + isLoading, activities, }: { + isLoading: boolean; activities: GitCommitWithBranch[]; }) => { return ( @@ -19,9 +22,17 @@ export const Activity = ({
    - {activities.map((activity, index) => { - return ; - })} + {isLoading ? ( +
    + +
    + ) : ( + activities.map((activity, index) => { + return ( + + ); + }) + )}
    ); diff --git a/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx b/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx index c1337045..40975555 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx @@ -32,6 +32,7 @@ const OverviewTabPanel = () => { const { octokit } = useOctokit(); const navigate = useNavigate(); const [activities, setActivities] = useState([]); + const [fetchingActivities, setFetchingActivities] = useState(true); const [liveDomain, setLiveDomain] = useState(); const client = useGQLClient(); @@ -39,6 +40,7 @@ const OverviewTabPanel = () => { const { project } = useOutletContext(); useEffect(() => { + setFetchingActivities(true); // TODO: Save repo commits in DB and avoid using GitHub API in frontend // TODO: Figure out fetching latest commits for all branches const fetchRepoActivity = async () => { @@ -91,6 +93,8 @@ const OverviewTabPanel = () => { // TODO: Show warning in activity section on request error console.log(err.message); + } finally { + setFetchingActivities(false); } }; @@ -217,7 +221,7 @@ const OverviewTabPanel = () => {

    )}
    - +
    ); }; From 667deb78fb7441bc6d71a9997a55239fc9f74ecd Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 14:23:59 +0800 Subject: [PATCH 113/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20tabs=20to=20use?= =?UTF-8?q?=20overflow-auto=20instead=20of=20overflow-scroll?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Tabs/Tabs.theme.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/shared/Tabs/Tabs.theme.ts b/packages/frontend/src/components/shared/Tabs/Tabs.theme.ts index 783d242b..7fe66671 100644 --- a/packages/frontend/src/components/shared/Tabs/Tabs.theme.ts +++ b/packages/frontend/src/components/shared/Tabs/Tabs.theme.ts @@ -71,7 +71,7 @@ export const tabsTheme = tv({ 'gap-5', 'border-b', 'border-transparent', - 'overflow-scroll', + 'overflow-auto', // Horizontal – default 'data-[orientation=horizontal]:border-border-interactive/10', // Vertical From b1f318bbbda86031ae1e0cda2827f40b34f726eb Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 18:23:22 +0800 Subject: [PATCH 114/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20implement?= =?UTF-8?q?=20mock=20connect=20git=20card?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/create/MockConnectGitCard.tsx | 163 ++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 packages/frontend/src/components/projects/create/MockConnectGitCard.tsx diff --git a/packages/frontend/src/components/projects/create/MockConnectGitCard.tsx b/packages/frontend/src/components/projects/create/MockConnectGitCard.tsx new file mode 100644 index 00000000..5d214c94 --- /dev/null +++ b/packages/frontend/src/components/projects/create/MockConnectGitCard.tsx @@ -0,0 +1,163 @@ +import React, { useMemo } from 'react'; +import { SegmentedControls } from 'components/shared/SegmentedControls'; +import { useState } from 'react'; +import { + GithubIcon, + LockIcon, + TemplateIcon, + TemplateIconType, +} from 'components/shared/CustomIcon'; +import { relativeTimeISO } from 'utils/time'; +import { useMediaQuery } from 'usehooks-ts'; + +export const MockConnectGitCard = () => { + const [segmentedControlsValue, setSegmentedControlsValue] = + useState('import'); + + const isDesktopView = useMediaQuery('(min-width: 960px)'); // lg: + const segmentedControlsProps = isDesktopView ? {} : { size: 'sm' as const }; + + const fiveMinutesAgo = new Date(Date.now() - 1000 * 300).toISOString(); + + const SEGMENTED_CONTROLS_OPTIONS = [ + { + label: 'Import a repository', + value: 'import', + }, + { + label: 'Start with a template', + value: 'template', + }, + ]; + + const IMPORT_CONTENT = [ + { + full_name: 'snowball/igloo', + updated_at: fiveMinutesAgo, + }, + { + full_name: 'snowball/android-sdk', + updated_at: fiveMinutesAgo, + visibility: 'private', + }, + { + full_name: 'snowball/landing-page', + updated_at: fiveMinutesAgo, + }, + ]; + + const TEMPLATE_CONTENT = [ + { + name: 'Web app', + icon: 'web', + }, + { + name: 'Progressive Web App (PWA)', + icon: 'pwa', + }, + { + name: 'React Native', + icon: 'react-native', + }, + { + name: 'Kotlin', + icon: 'kotlin', + }, + { + name: 'Swift', + icon: 'swift', + }, + ]; + + const renderContent = useMemo(() => { + if (segmentedControlsValue === 'import') { + return ( +
    + {IMPORT_CONTENT.map((repo, index) => ( + <> + + {index !== IMPORT_CONTENT.length - 1 && ( +
    + )} + + ))} +
    + ); + } + return ( +
    + {TEMPLATE_CONTENT.map((template, index) => ( + + ))} +
    + ); + }, [segmentedControlsValue]); + + return ( +
    + {/* Content */} + + {renderContent} + + {/* Shade */} +
    +
    + ); +}; + +const MockProjectCard = ({ + full_name, + updated_at, + visibility, +}: { + full_name: string; + updated_at?: string; + visibility?: string; +}) => { + return ( +
    + {/* Icon container */} +
    + +
    + {/* Content */} +
    +
    +

    + {full_name} +

    +

    + {updated_at && relativeTimeISO(updated_at)} +

    +
    + {visibility === 'private' && ( +
    + + Private +
    + )} +
    +
    + ); +}; + +const MockTemplateCard = ({ icon, name }: { icon: string; name: string }) => { + return ( +
    + {/* Icon */} +
    + +
    + {/* Name */} +

    + {name} +

    +
    + ); +}; From b922e632bf5dd46abb550afafc5e74d1499ccb83 Mon Sep 17 00:00:00 2001 From: Andre H Date: Thu, 7 Mar 2024 18:23:43 +0800 Subject: [PATCH 115/251] =?UTF-8?q?=F0=9F=94=A7=20chore:=20add=20mock=20ca?= =?UTF-8?q?rd=20to=20template?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/components/projects/create/ConnectAccount.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/frontend/src/components/projects/create/ConnectAccount.tsx b/packages/frontend/src/components/projects/create/ConnectAccount.tsx index 1fc099a2..7c4e1e4e 100644 --- a/packages/frontend/src/components/projects/create/ConnectAccount.tsx +++ b/packages/frontend/src/components/projects/create/ConnectAccount.tsx @@ -13,6 +13,7 @@ import { import { useToast } from 'components/shared/Toast'; import { IconWithFrame } from 'components/shared/IconWithFrame'; import { Heading } from 'components/shared/Heading'; +import { MockConnectGitCard } from './MockConnectGitCard'; const SCOPES = 'repo user'; const GITHUB_OAUTH_URL = `https://github.com/login/oauth/authorize?client_id=${ @@ -93,6 +94,7 @@ const ConnectAccount: React.FC = ({
    {/* TODO: Add ConnectAccountTabPanel */} + {/*
    */} From 6d861c71cc1a10781e8eff93196d18147ff6be7a Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Fri, 8 Mar 2024 09:57:50 +0700 Subject: [PATCH 116/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20filter?= =?UTF-8?q?=20form=20mobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/projects/project/deployments/FilterForm.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx b/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx index 3668b7ac..348ecaf0 100644 --- a/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx +++ b/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx @@ -75,7 +75,7 @@ const FilterForm = ({ value, onChange }: FilterFormProps) => { }; return ( -
    +
    Date: Fri, 8 Mar 2024 09:58:26 +0700 Subject: [PATCH 117/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20respon?= =?UTF-8?q?sive=20for=20deployment=20details=20card?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deployments/DeploymentDetailsCard.tsx | 175 ++++++++++-------- 1 file changed, 102 insertions(+), 73 deletions(-) diff --git a/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx b/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx index c4940bac..3c964344 100644 --- a/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx +++ b/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useCallback } from 'react'; import { Deployment, DeploymentStatus, @@ -60,85 +60,114 @@ const DeploymentDetailsCard = ({ } }; - return ( -
    -
    - {/* DEPLOYMENT URL */} - {deployment.url && ( - - - {deployment.url} - - - )} - - {deployment.environment === Environment.Production - ? `Production ${deployment.isCurrent ? '(Current)' : ''}` - : 'Preview'} - -
    - - {/* DEPLOYMENT STATUS */} -
    - - {deployment.status} - -
    - - {/* DEPLOYMENT COMMIT DETAILS */} -
    - - - {deployment.branch} - - - - - {deployment.commitHash.substring(0, SHORT_COMMIT_HASH_LENGTH)}{' '} - {deployment.commitMessage} - - -
    - - {/* DEPLOYMENT INFOs */} -
    -
    - - - {relativeTimeMs(deployment.createdAt)} - -
    - -
    - - - {formatAddress(deployment.createdBy.name ?? '')} - -
    + const renderDeploymentMenu = useCallback( + (className?: string) => { + return ( + ); + }, + [deployment, currentDeployment, onUpdate, project, prodBranchDomains], + ); + + const renderDeploymentStatus = useCallback( + (className?: string) => { + return ( +
    + + {deployment.status} + +
    + ); + }, + [deployment.status, deployment.commitHash], + ); + + return ( +
    +
    +
    + {/* DEPLOYMENT URL */} + {deployment.url && ( + + + {deployment.url} + + + )} + + {deployment.environment === Environment.Production + ? `Production ${deployment.isCurrent ? '(Current)' : ''}` + : 'Preview'} + +
    + {/* MENU ON MOBILE */} + {renderDeploymentMenu('flex md:hidden ml-auto')} +
    + + {/* DEPLOYMENT STATUS */} + {renderDeploymentStatus('w-[10%] max-w-[110px] hidden md:flex h-fit')} + + {/* DEPLOYMENT COMMIT DETAILS */} +
    +
    + + + + {deployment.branch} + + + + + + {deployment.commitHash.substring(0, SHORT_COMMIT_HASH_LENGTH)}{' '} + {deployment.commitMessage} + + +
    + {renderDeploymentStatus('flex md:hidden h-fit')} +
    + + {/* DEPLOYMENT INFOs */} +
    +
    +
    + + + {relativeTimeMs(deployment.createdAt)} + +
    +
    +
    + +
    + + {formatAddress(deployment.createdBy.name ?? '')} + +
    +
    + {renderDeploymentMenu('ml-auto hidden md:flex')}
    ); From 65b66fe3831234339baaf360cb50793931aebd3e Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Fri, 8 Mar 2024 10:35:22 +0700 Subject: [PATCH 118/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20remove?= =?UTF-8?q?=20empty=20space?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/project/deployments/DeploymentDetailsCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx b/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx index 3c964344..8caf9ad1 100644 --- a/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx +++ b/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx @@ -95,7 +95,7 @@ const DeploymentDetailsCard = ({ return (
    -
    +
    {/* DEPLOYMENT URL */} {deployment.url && ( From de197759deaed43a4257f7d2f48cc1acc47dde9d Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Fri, 8 Mar 2024 10:36:14 +0700 Subject: [PATCH 119/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20remove=20width?= =?UTF-8?q?=20and=20height=20icon=20style=20from=20tag=20size?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Tag/Tag.theme.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/shared/Tag/Tag.theme.ts b/packages/frontend/src/components/shared/Tag/Tag.theme.ts index 884f79bc..1aec8467 100644 --- a/packages/frontend/src/components/shared/Tag/Tag.theme.ts +++ b/packages/frontend/src/components/shared/Tag/Tag.theme.ts @@ -36,11 +36,11 @@ export const tagTheme = tv( size: { sm: { wrapper: ['px-2', 'py-2'], - icon: ['h-4', 'w-4'], + icon: [], }, xs: { wrapper: ['px-2', 'py-1'], - icon: ['h-3', 'w-3'], + icon: [], }, }, }, From 519618b4568d72ac4906b9e67a9b1ed2cc6726c1 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Fri, 8 Mar 2024 12:42:42 +0700 Subject: [PATCH 120/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20remove?= =?UTF-8?q?=20duplicate=20component=20and=20use=20absolute=20for=20the=20m?= =?UTF-8?q?obile=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deployments/DeploymentDetailsCard.tsx | 31 ++++++------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx b/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx index 8caf9ad1..09bfe11c 100644 --- a/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx +++ b/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx @@ -60,22 +60,6 @@ const DeploymentDetailsCard = ({ } }; - const renderDeploymentMenu = useCallback( - (className?: string) => { - return ( - - ); - }, - [deployment, currentDeployment, onUpdate, project, prodBranchDomains], - ); - const renderDeploymentStatus = useCallback( (className?: string) => { return ( @@ -94,9 +78,9 @@ const DeploymentDetailsCard = ({ ); return ( -
    +
    -
    +
    {/* DEPLOYMENT URL */} {deployment.url && (
    - {/* MENU ON MOBILE */} - {renderDeploymentMenu('flex md:hidden ml-auto')}
    {/* DEPLOYMENT STATUS */} @@ -167,7 +149,14 @@ const DeploymentDetailsCard = ({
    - {renderDeploymentMenu('ml-auto hidden md:flex')} +
    ); From 32305cedbc8f94c369af5ca5e79494daad590b25 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Fri, 8 Mar 2024 12:44:48 +0700 Subject: [PATCH 121/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20add=20overflow?= =?UTF-8?q?=20for=20the=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/layouts/ProjectSearch.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/layouts/ProjectSearch.tsx b/packages/frontend/src/layouts/ProjectSearch.tsx index 5a71356d..1343a5b0 100644 --- a/packages/frontend/src/layouts/ProjectSearch.tsx +++ b/packages/frontend/src/layouts/ProjectSearch.tsx @@ -72,7 +72,7 @@ const ProjectSearch = () => {
    {/* Content */} -
    +
    From 16e7b225071e3b5919aea5498254eddf2f967f73 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Fri, 8 Mar 2024 15:27:53 +0700 Subject: [PATCH 122/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20create=20m?= =?UTF-8?q?odal=20comopnent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/shared/Modal/Modal.theme.ts | 67 +++++++++++++++++++ .../src/components/shared/Modal/Modal.tsx | 46 +++++++++++++ .../shared/Modal/ModalBody/ModalBody.tsx | 26 +++++++ .../shared/Modal/ModalBody/index.ts | 1 + .../Modal/ModalContent/ModalContent.tsx | 64 ++++++++++++++++++ .../shared/Modal/ModalContent/index.ts | 1 + .../shared/Modal/ModalFooter/ModalFooter.tsx | 23 +++++++ .../shared/Modal/ModalFooter/index.ts | 1 + .../shared/Modal/ModalHeader/ModalHeader.tsx | 52 ++++++++++++++ .../shared/Modal/ModalHeader/index.ts | 1 + .../components/shared/Modal/ModalProvider.tsx | 42 ++++++++++++ .../src/components/shared/Modal/index.ts | 1 + 12 files changed, 325 insertions(+) create mode 100644 packages/frontend/src/components/shared/Modal/Modal.theme.ts create mode 100644 packages/frontend/src/components/shared/Modal/Modal.tsx create mode 100644 packages/frontend/src/components/shared/Modal/ModalBody/ModalBody.tsx create mode 100644 packages/frontend/src/components/shared/Modal/ModalBody/index.ts create mode 100644 packages/frontend/src/components/shared/Modal/ModalContent/ModalContent.tsx create mode 100644 packages/frontend/src/components/shared/Modal/ModalContent/index.ts create mode 100644 packages/frontend/src/components/shared/Modal/ModalFooter/ModalFooter.tsx create mode 100644 packages/frontend/src/components/shared/Modal/ModalFooter/index.ts create mode 100644 packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx create mode 100644 packages/frontend/src/components/shared/Modal/ModalHeader/index.ts create mode 100644 packages/frontend/src/components/shared/Modal/ModalProvider.tsx create mode 100644 packages/frontend/src/components/shared/Modal/index.ts diff --git a/packages/frontend/src/components/shared/Modal/Modal.theme.ts b/packages/frontend/src/components/shared/Modal/Modal.theme.ts new file mode 100644 index 00000000..81dec838 --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/Modal.theme.ts @@ -0,0 +1,67 @@ +import type { VariantProps } from 'tailwind-variants'; +import { tv } from 'tailwind-variants'; + +export const modalTheme = tv({ + slots: { + overlay: [ + 'z-modal', + 'fixed', + 'inset-0', + 'bg-bg-base/90', + 'backdrop-blur-sm', + 'overflow-y-auto', + 'flex', + 'justify-center', + 'items-center', + 'p-6', + 'sm:p-10', + 'data-[state=closed]:animate-[dialog-overlay-hide_200ms]', + 'data-[state=open]:animate-[dialog-overlay-show_200ms]', + 'data-[state=closed]:hidden', // Fix overlay not close when modal is closed + ], + close: [ + 'absolute', + 'right-6', + 'top-5', + 'sm:right-10', + 'sm:top-[38px]', + 'z-[1]', + ], + header: ['flex', 'flex-col', 'gap-2', 'items-start', 'px-6', 'sm:px-10'], + headerTitle: ['text-lg', 'sm:text-xl', 'text-text-em-high'], + headerDescription: ['text-sm', 'text-text-em-low'], + footer: ['flex', 'justify-end', 'gap-3', 'sm:gap-4', 'px-6', 'sm:px-10'], + content: [ + 'h-fit', + 'sm:min-h-0', + 'sm:m-auto', + 'relative', + 'flex', + 'flex-col', + 'gap-y-8', + 'py-6', + 'sm:py-10', + 'overflow-hidden', + 'w-full', + 'max-w-[560px]', + 'rounded-xl', + 'bg-surface-base', + 'border', + 'border-border-base', + 'text-text-em-high', + ], + body: ['flex-1', 'px-6', 'sm:px-10'], + }, + variants: { + fullPage: { + true: { + content: ['h-full'], + overlay: ['!p-0'], + }, + }, + }, + defaultVariants: { + fullPage: false, + }, +}); +export type ModalVariants = VariantProps; diff --git a/packages/frontend/src/components/shared/Modal/Modal.tsx b/packages/frontend/src/components/shared/Modal/Modal.tsx new file mode 100644 index 00000000..ef9069f4 --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/Modal.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import type { DialogProps } from '@radix-ui/react-dialog'; +import { Root, Trigger } from '@radix-ui/react-dialog'; +import type { ComponentPropsWithoutRef, PropsWithChildren } from 'react'; + +import type { ModalVariants } from './Modal.theme'; +import { ModalBody } from './ModalBody'; +import { ModalContent } from './ModalContent'; +import { ModalFooter } from './ModalFooter'; +import { ModalHeader } from './ModalHeader'; +import ModalProvider from './ModalProvider'; + +export interface ModalProps + extends ComponentPropsWithoutRef<'div'>, + ModalVariants, + DialogProps { + hasCloseButton?: boolean; + hasOverlay?: boolean; + preventClickOutsideToClose?: boolean; +} +export const Modal = ({ + children, + hasCloseButton = true, + hasOverlay = true, + preventClickOutsideToClose = false, + fullPage = false, + ...props +}: PropsWithChildren) => { + return ( + + {children} + + ); +}; + +Modal.Trigger = Trigger; +Modal.Content = ModalContent; +Modal.Header = ModalHeader; +Modal.Footer = ModalFooter; +Modal.Body = ModalBody; diff --git a/packages/frontend/src/components/shared/Modal/ModalBody/ModalBody.tsx b/packages/frontend/src/components/shared/Modal/ModalBody/ModalBody.tsx new file mode 100644 index 00000000..3079b267 --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/ModalBody/ModalBody.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import type { ComponentPropsWithoutRef, PropsWithChildren } from 'react'; +import { modalTheme } from 'components/shared/Modal/Modal.theme'; + +export interface ModalBodyProps extends ComponentPropsWithoutRef<'div'> { + className?: string; +} + +export const ModalBody = ({ + children, + className, + ...props +}: PropsWithChildren) => { + const { body } = modalTheme(); + + return ( +
    + {children} +
    + ); +}; diff --git a/packages/frontend/src/components/shared/Modal/ModalBody/index.ts b/packages/frontend/src/components/shared/Modal/ModalBody/index.ts new file mode 100644 index 00000000..ad32ff0c --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/ModalBody/index.ts @@ -0,0 +1 @@ +export * from './ModalBody'; diff --git a/packages/frontend/src/components/shared/Modal/ModalContent/ModalContent.tsx b/packages/frontend/src/components/shared/Modal/ModalContent/ModalContent.tsx new file mode 100644 index 00000000..166256a8 --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/ModalContent/ModalContent.tsx @@ -0,0 +1,64 @@ +import React from 'react'; +import type { DialogContentProps } from '@radix-ui/react-dialog'; +import { Close, Content, Overlay, Portal } from '@radix-ui/react-dialog'; +import { Ref, forwardRef, type PropsWithChildren } from 'react'; +import { useModal } from 'components/shared/Modal/ModalProvider'; +import { modalTheme } from 'components/shared/Modal/Modal.theme'; +import { Button } from 'components/shared/Button'; +import { CrossIcon } from 'components/shared/CustomIcon'; + +type PointerDownOutsideEvent = CustomEvent<{ + originalEvent: PointerEvent; +}>; + +export interface ModalContentProps extends DialogContentProps { + className?: string; +} + +const ModalContent = forwardRef( + ( + { children, className, ...props }: PropsWithChildren, + forwardedRef, + ) => { + const { hasCloseButton, preventClickOutsideToClose, fullPage } = useModal(); + + const { content, close, overlay } = modalTheme({ fullPage }); + + const preventClickOutsideToCloseProps = preventClickOutsideToClose && { + onPointerDownOutside: (e: PointerDownOutsideEvent) => e.preventDefault(), + onEscapeKeyDown: (e: KeyboardEvent) => e.preventDefault(), + }; + + return ( + + + } + > + {hasCloseButton && ( + + + + )} + {children} + + + + ); + }, +); + +ModalContent.displayName = 'ModalContent'; + +export { ModalContent }; diff --git a/packages/frontend/src/components/shared/Modal/ModalContent/index.ts b/packages/frontend/src/components/shared/Modal/ModalContent/index.ts new file mode 100644 index 00000000..79dee456 --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/ModalContent/index.ts @@ -0,0 +1 @@ +export * from './ModalContent'; diff --git a/packages/frontend/src/components/shared/Modal/ModalFooter/ModalFooter.tsx b/packages/frontend/src/components/shared/Modal/ModalFooter/ModalFooter.tsx new file mode 100644 index 00000000..5152e884 --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/ModalFooter/ModalFooter.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import type { ComponentPropsWithoutRef, PropsWithChildren } from 'react'; +import { modalTheme } from 'components/shared/Modal/Modal.theme'; + +type ModalFooterProps = ComponentPropsWithoutRef<'div'> & { + className?: string; +}; + +export const ModalFooter = ({ + children, + className, + ...props +}: PropsWithChildren) => { + const { footer } = modalTheme({ + className, + }); + + return ( +
    + {children} +
    + ); +}; diff --git a/packages/frontend/src/components/shared/Modal/ModalFooter/index.ts b/packages/frontend/src/components/shared/Modal/ModalFooter/index.ts new file mode 100644 index 00000000..2da6856b --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/ModalFooter/index.ts @@ -0,0 +1 @@ +export * from './ModalFooter'; diff --git a/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx b/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx new file mode 100644 index 00000000..ca588db9 --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx @@ -0,0 +1,52 @@ +import React from 'react'; +import type { DialogDescriptionProps } from '@radix-ui/react-dialog'; +import { Description, Title } from '@radix-ui/react-dialog'; +import type { ComponentPropsWithoutRef, PropsWithChildren } from 'react'; +import { Heading } from 'components/shared/Heading'; +import { modalTheme } from 'components/shared/Modal/Modal.theme'; + +type ModalHeaderProps = ComponentPropsWithoutRef<'div'> & { + className?: string; + description?: string | React.ReactNode; + descriptionProps?: DialogDescriptionProps; + headingProps?: ComponentPropsWithoutRef<'h2'>; +}; + +export const ModalHeader = ({ + children, + description, + className, + descriptionProps, + headingProps, + ...props +}: PropsWithChildren) => { + const { header, headerDescription, headerTitle } = modalTheme(); + + return ( +
    + + <Heading + {...headingProps} + className={headerTitle({ className: headingProps?.className })} + > + {children} + </Heading> + + {description && ( + + {description} + + )} +
    + ); +}; diff --git a/packages/frontend/src/components/shared/Modal/ModalHeader/index.ts b/packages/frontend/src/components/shared/Modal/ModalHeader/index.ts new file mode 100644 index 00000000..4424e620 --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/ModalHeader/index.ts @@ -0,0 +1 @@ +export * from './ModalHeader'; diff --git a/packages/frontend/src/components/shared/Modal/ModalProvider.tsx b/packages/frontend/src/components/shared/Modal/ModalProvider.tsx new file mode 100644 index 00000000..2be6bebd --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/ModalProvider.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import type { PropsWithChildren } from 'react'; +import { createContext, useContext } from 'react'; + +import type { ModalProps } from './Modal'; +import type { ModalVariants } from './Modal.theme'; + +export interface ModalProviderProps + extends Partial, + ModalProps {} + +type ModalProviderContext = ReturnType; + +const ModalContext = createContext | undefined>( + undefined, +); + +// For inferring return type +const useModalValues = (props: ModalProviderProps) => { + return props; +}; + +export const ModalProvider = ({ + children, + ...props +}: PropsWithChildren): JSX.Element => { + const values = useModalValues(props); + + return ( + {children} + ); +}; + +export const useModal = () => { + const context = useContext(ModalContext); + if (context === undefined) { + throw new Error('useModal was used outside of its Provider'); + } + return context; +}; + +export default ModalProvider; diff --git a/packages/frontend/src/components/shared/Modal/index.ts b/packages/frontend/src/components/shared/Modal/index.ts new file mode 100644 index 00000000..cb89ee17 --- /dev/null +++ b/packages/frontend/src/components/shared/Modal/index.ts @@ -0,0 +1 @@ +export * from './Modal'; From cbda1cc6523412fda6c7e862daf25cd7b9b70054 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Fri, 8 Mar 2024 15:28:23 +0700 Subject: [PATCH 123/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20add=20new=20key?= =?UTF-8?q?frame=20animation=20for=20modal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/index.css | 40 +++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/packages/frontend/src/index.css b/packages/frontend/src/index.css index 502904a5..541fb61e 100644 --- a/packages/frontend/src/index.css +++ b/packages/frontend/src/index.css @@ -153,4 +153,44 @@ .focus-ring { @apply focus-visible:ring-[3px] focus-visible:ring-snowball-200 focus-visible:ring-offset-1 focus-visible:ring-offset-snowball-500 focus-visible:outline-none; } + + @keyframes dialog-overlay-show { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + + @keyframes dialog-overlay-hide { + from { + opacity: 1; + } + to { + opacity: 0; + } + } + + @keyframes dialog-content-show { + from { + opacity: 0; + transform: translate(-50%, -50%) scale(0.95); + } + to { + opacity: 1; + transform: translate(-50%, -50%) scale(1); + } + } + + @keyframes dialog-content-hide { + from { + opacity: 1; + transform: translate(-50%, -50%) scale(1); + } + to { + opacity: 0; + transform: translate(-50%, -50%) scale(0.95); + } + } } From 296e149391875426a444fccc18a7facc6a81fa73 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Fri, 8 Mar 2024 15:29:06 +0700 Subject: [PATCH 124/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20update=20confir?= =?UTF-8?q?m=20dialog=20to=20use=20custom=20modal=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/shared/ConfirmDialog.tsx | 56 ++++++------------- 1 file changed, 16 insertions(+), 40 deletions(-) diff --git a/packages/frontend/src/components/shared/ConfirmDialog.tsx b/packages/frontend/src/components/shared/ConfirmDialog.tsx index 1de20e98..9a943d54 100644 --- a/packages/frontend/src/components/shared/ConfirmDialog.tsx +++ b/packages/frontend/src/components/shared/ConfirmDialog.tsx @@ -1,16 +1,10 @@ import React from 'react'; import { color } from '@material-tailwind/react/types/components/button'; -import { - Typography, - Button, - Dialog, - DialogHeader, - DialogBody, - DialogFooter, -} from '@material-tailwind/react'; +import { Modal, ModalProps } from './Modal'; +import { Button } from './Button'; -type ConfirmDialogProp = { +type ConfirmDialogProp = ModalProps & { children: React.ReactNode; dialogTitle: string; open: boolean; @@ -23,42 +17,24 @@ type ConfirmDialogProp = { const ConfirmDialog = ({ children, dialogTitle, - open, handleOpen, confirmButtonTitle, handleConfirm, - color, + ...props }: ConfirmDialogProp) => { return ( - - - - {dialogTitle}{' '} - - - - {children} - - - - - + + + {dialogTitle} + {children} + + + + + + ); }; From 300b8e4b5e2e132013d1fd54fa2028c622f97577 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Fri, 8 Mar 2024 15:30:53 +0700 Subject: [PATCH 125/251] =?UTF-8?q?=F0=9F=93=9D=20docs:=20add=20modal=20to?= =?UTF-8?q?=20the=20example=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/pages/components/index.tsx | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/packages/frontend/src/pages/components/index.tsx b/packages/frontend/src/pages/components/index.tsx index feee4595..85e5631e 100644 --- a/packages/frontend/src/pages/components/index.tsx +++ b/packages/frontend/src/pages/components/index.tsx @@ -35,6 +35,8 @@ import { import { renderDefaultTag, renderMinimalTag } from './renders/tag'; import { renderToast, renderToastsWithCta } from './renders/toast'; import { renderTooltips } from './renders/tooltip'; +import { Button } from 'components/shared/Button'; +import { Modal } from 'components/shared/Modal'; const Page: React.FC = () => { const [singleDate, setSingleDate] = useState(); @@ -43,6 +45,7 @@ const Page: React.FC = () => { useState('Test 1'); const [switchValue, setSwitchValue] = useState(false); const [selectedRadio, setSelectedRadio] = useState(''); + const [openModal, setOpenModal] = useState(false); return (
    @@ -57,6 +60,31 @@ const Page: React.FC = () => {
    + {/* Modal */} +
    +
    +

    Modal

    +
    + + + + + + Modal title + +

    Modal content

    +
    + + + +
    +
    +
    +
    +
    + +
    + {/* Steps */}
    From 56e9be59ad976ffee955f69c00c84e9048cf20e3 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Fri, 8 Mar 2024 15:32:11 +0700 Subject: [PATCH 126/251] =?UTF-8?q?=F0=9F=90=9B=20fix:=20missing=20props?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/ProjectSearchBar/ProjectSearchBarDialog.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx index e49b44d0..0f5e1172 100644 --- a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx @@ -12,6 +12,7 @@ import { useNavigate } from 'react-router-dom'; import { useCombobox } from 'downshift'; interface ProjectSearchBarDialogProps extends Dialog.DialogProps { + open?: boolean; onClose?: () => void; onClickItem?: (data: Project) => void; } From 102c86161729557f59b0c35d91f6a6ac703e7168 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:49:13 +0700 Subject: [PATCH 127/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20modal?= =?UTF-8?q?=20theme=20and=20add=20wavy=20border=20on=20the=20header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/shared/Modal/Modal.theme.ts | 54 ++++++++++--------- .../shared/Modal/ModalHeader/ModalHeader.tsx | 54 ++++++++++--------- 2 files changed, 59 insertions(+), 49 deletions(-) diff --git a/packages/frontend/src/components/shared/Modal/Modal.theme.ts b/packages/frontend/src/components/shared/Modal/Modal.theme.ts index 81dec838..4552ff70 100644 --- a/packages/frontend/src/components/shared/Modal/Modal.theme.ts +++ b/packages/frontend/src/components/shared/Modal/Modal.theme.ts @@ -7,30 +7,40 @@ export const modalTheme = tv({ 'z-modal', 'fixed', 'inset-0', - 'bg-bg-base/90', + 'bg-black/80', 'backdrop-blur-sm', 'overflow-y-auto', 'flex', 'justify-center', - 'items-center', - 'p-6', + 'items-end', + 'sm:items-center', + 'p-0', 'sm:p-10', 'data-[state=closed]:animate-[dialog-overlay-hide_200ms]', 'data-[state=open]:animate-[dialog-overlay-show_200ms]', 'data-[state=closed]:hidden', // Fix overlay not close when modal is closed ], - close: [ - 'absolute', - 'right-6', - 'top-5', - 'sm:right-10', - 'sm:top-[38px]', - 'z-[1]', + close: ['absolute', 'right-4', 'top-2', 'sm:right-6', 'sm:top-3', 'z-[1]'], + header: [ + 'flex', + 'flex-col', + 'gap-4', + 'items-start', + 'px-4', + 'py-4', + 'sm:px-6', + 'sm:py-5', + 'bg-base-bg-alternate', ], - header: ['flex', 'flex-col', 'gap-2', 'items-start', 'px-6', 'sm:px-10'], - headerTitle: ['text-lg', 'sm:text-xl', 'text-text-em-high'], - headerDescription: ['text-sm', 'text-text-em-low'], - footer: ['flex', 'justify-end', 'gap-3', 'sm:gap-4', 'px-6', 'sm:px-10'], + headerTitle: [ + 'text-base', + 'sm:text-lg', + 'tracking-[0.011em]', + 'sm:tracking-normal', + 'text-elements-high-em', + ], + headerDescription: ['text-sm', 'text-elements-low-em'], + footer: ['flex', 'gap-3', 'px-4', 'pb-4', 'pt-7', 'sm:pb-6', 'sm:px-6'], content: [ 'h-fit', 'sm:min-h-0', @@ -38,19 +48,15 @@ export const modalTheme = tv({ 'relative', 'flex', 'flex-col', - 'gap-y-8', - 'py-6', - 'sm:py-10', 'overflow-hidden', 'w-full', - 'max-w-[560px]', - 'rounded-xl', - 'bg-surface-base', - 'border', - 'border-border-base', - 'text-text-em-high', + 'sm:max-w-[562px]', + 'rounded-2xl', + 'bg-base-bg', + 'shadow-card', + 'text-elements-high-em', ], - body: ['flex-1', 'px-6', 'sm:px-10'], + body: ['flex-1', 'px-4', 'pt-4', 'sm:pt-6', 'sm:px-6'], }, variants: { fullPage: { diff --git a/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx b/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx index ca588db9..c0783847 100644 --- a/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx +++ b/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx @@ -4,6 +4,7 @@ import { Description, Title } from '@radix-ui/react-dialog'; import type { ComponentPropsWithoutRef, PropsWithChildren } from 'react'; import { Heading } from 'components/shared/Heading'; import { modalTheme } from 'components/shared/Modal/Modal.theme'; +import { WavyBorder } from 'components/shared/WavyBorder'; type ModalHeaderProps = ComponentPropsWithoutRef<'div'> & { className?: string; @@ -23,30 +24,33 @@ export const ModalHeader = ({ const { header, headerDescription, headerTitle } = modalTheme(); return ( -
    - - <Heading - {...headingProps} - className={headerTitle({ className: headingProps?.className })} - > - {children} - </Heading> - - {description && ( - - {description} - - )} -
    + <> +
    + + <Heading + {...headingProps} + className={headerTitle({ className: headingProps?.className })} + > + {children} + </Heading> + + {description && ( + + {description} + + )} +
    + + ); }; From 3674750011bbc3927fb6d0dcd631189b047613c8 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:49:45 +0700 Subject: [PATCH 128/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20update=20c?= =?UTF-8?q?onfirm=20dialog=20to=20use=20new=20modal=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/shared/ConfirmDialog.tsx | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/packages/frontend/src/components/shared/ConfirmDialog.tsx b/packages/frontend/src/components/shared/ConfirmDialog.tsx index 9a943d54..e7374ad5 100644 --- a/packages/frontend/src/components/shared/ConfirmDialog.tsx +++ b/packages/frontend/src/components/shared/ConfirmDialog.tsx @@ -1,37 +1,49 @@ -import React from 'react'; - -import { color } from '@material-tailwind/react/types/components/button'; +import React, { ReactNode } from 'react'; import { Modal, ModalProps } from './Modal'; -import { Button } from './Button'; +import { Button, ButtonOrLinkProps } from './Button'; -type ConfirmDialogProp = ModalProps & { - children: React.ReactNode; - dialogTitle: string; +export type ConfirmDialogProps = ModalProps & { + children?: ReactNode; + dialogTitle?: string; open: boolean; - handleOpen: () => void; - confirmButtonTitle: string; + handleCancel: () => void; + confirmButtonTitle?: string; handleConfirm?: () => void; - color: color; + cancelButtonProps?: ButtonOrLinkProps; + confirmButtonProps?: ButtonOrLinkProps; }; const ConfirmDialog = ({ children, dialogTitle, - handleOpen, + handleCancel, confirmButtonTitle, handleConfirm, + cancelButtonProps, + confirmButtonProps, ...props -}: ConfirmDialogProp) => { +}: ConfirmDialogProps) => { + // Close the dialog when the user clicks outside of it + const handleOpenChange = (open: boolean) => { + if (!open) return handleCancel?.(); + }; + return ( - + {dialogTitle} {children} - - - + From d50a318e16db40bcb6bd785947dd02127cc88689 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:50:11 +0700 Subject: [PATCH 129/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20create=20c?= =?UTF-8?q?hevron=20doublw=20down=20icon=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomIcon/ChevronDoubleDownIcon.tsx | 20 +++++++++++++++++++ .../src/components/shared/CustomIcon/index.ts | 1 + 2 files changed, 21 insertions(+) create mode 100644 packages/frontend/src/components/shared/CustomIcon/ChevronDoubleDownIcon.tsx diff --git a/packages/frontend/src/components/shared/CustomIcon/ChevronDoubleDownIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ChevronDoubleDownIcon.tsx new file mode 100644 index 00000000..64993ac6 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/ChevronDoubleDownIcon.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const ChevronDoubleDownIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index 29e38448..4d77a8b9 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -61,6 +61,7 @@ export * from './CirclePlaceholderOnIcon'; export * from './WarningTriangleIcon'; export * from './CheckRadioOutlineIcon'; export * from './TrendingIcon'; +export * from './ChevronDoubleDownIcon'; // Templates export * from './templates'; From c2417a9daa84473ead1bf372a45854fd73c7df27 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:52:07 +0700 Subject: [PATCH 130/251] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20feat:=20export=20t?= =?UTF-8?q?he=20tag=20props?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/shared/Tag/Tag.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/shared/Tag/Tag.tsx b/packages/frontend/src/components/shared/Tag/Tag.tsx index 8be34c85..08fb665e 100644 --- a/packages/frontend/src/components/shared/Tag/Tag.tsx +++ b/packages/frontend/src/components/shared/Tag/Tag.tsx @@ -6,7 +6,7 @@ import React, { import { tagTheme, type TagTheme } from './Tag.theme'; import { cloneIcon } from 'utils/cloneIcon'; -type TagProps = ComponentPropsWithoutRef<'div'> & +export type TagProps = ComponentPropsWithoutRef<'div'> & TagTheme & { /** * The optional left icon element for a component. From f3ce0d062111cf5f2daaeac32f61a0013acf349c Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:52:55 +0700 Subject: [PATCH 131/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20deploy?= =?UTF-8?q?ment=20body=20card=20design=20to=20match=20with=20the=20figma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deployments/DeploymentDialogBodyCard.tsx | 81 +++++++++++++------ 1 file changed, 55 insertions(+), 26 deletions(-) diff --git a/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx b/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx index a8b40b8b..64b6956d 100644 --- a/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx +++ b/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx @@ -1,17 +1,23 @@ import React from 'react'; import { Deployment } from 'gql-client'; -import { Typography, Chip, Card } from '@material-tailwind/react'; -import { color } from '@material-tailwind/react/types/components/chip'; -import { relativeTimeMs } from '../../../../utils/time'; +import { relativeTimeMs } from 'utils/time'; import { SHORT_COMMIT_HASH_LENGTH } from '../../../../constants'; -import { formatAddress } from '../../../../utils/format'; +import { + BranchStrokeIcon, + ClockOutlineIcon, + CommitIcon, +} from 'components/shared/CustomIcon'; +import { Avatar } from 'components/shared/Avatar'; +import { getInitials } from 'utils/geInitials'; +import { OverflownText } from 'components/shared/OverflownText'; +import { Tag, TagProps } from 'components/shared/Tag'; interface DeploymentDialogBodyCardProps { deployment: Deployment; chip?: { value: string; - color?: color; + type?: TagProps['type']; }; } @@ -19,31 +25,54 @@ const DeploymentDialogBodyCard = ({ chip, deployment, }: DeploymentDialogBodyCardProps) => { + const commit = + deployment.commitHash.substring(0, SHORT_COMMIT_HASH_LENGTH) + + ' ' + + deployment.commitMessage; + return ( - +
    {chip && ( - + + {chip.value} + )} - {deployment.url && ( - +
    + {/* Title */} +

    {deployment.url} - - )} - - ^ {deployment.branch} ^{' '} - {deployment.commitHash.substring(0, SHORT_COMMIT_HASH_LENGTH)}{' '} - {deployment.commitMessage} - - - ^ {relativeTimeMs(deployment.createdAt)} ^{' '} - {formatAddress(deployment.createdBy.name ?? '')} - - +

    + {/* Branch & commit */} +
    +
    + +

    {deployment.branch}

    +
    +
    + +

    + {commit} +

    +
    +
    +
    +
    + +

    + {relativeTimeMs(deployment.createdAt)} +

    + +

    + {deployment.createdBy.name ?? 'Unknown'} +

    +
    +
    ); }; From 97289d85a3da163a62144a07062c0a06ab10d081 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:53:48 +0700 Subject: [PATCH 132/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20create?= =?UTF-8?q?=20cancel=20deployment=20dialog=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dialog/CancelDeploymentDialog.tsx | 30 +++++++++++++++++++ .../src/components/projects/create/Deploy.tsx | 20 ++++--------- 2 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 packages/frontend/src/components/projects/Dialog/CancelDeploymentDialog.tsx diff --git a/packages/frontend/src/components/projects/Dialog/CancelDeploymentDialog.tsx b/packages/frontend/src/components/projects/Dialog/CancelDeploymentDialog.tsx new file mode 100644 index 00000000..f238788d --- /dev/null +++ b/packages/frontend/src/components/projects/Dialog/CancelDeploymentDialog.tsx @@ -0,0 +1,30 @@ +import ConfirmDialog, { + ConfirmDialogProps, +} from 'components/shared/ConfirmDialog'; +import React from 'react'; + +interface CancelDeploymentDialogProps extends ConfirmDialogProps {} + +export const CancelDeploymentDialog = ({ + open, + handleCancel, + handleConfirm, + ...props +}: CancelDeploymentDialogProps) => { + return ( + +

    + This will halt the deployment and you'll have to start the process + from scratch. +

    +
    + ); +}; diff --git a/packages/frontend/src/components/projects/create/Deploy.tsx b/packages/frontend/src/components/projects/create/Deploy.tsx index a251773d..f443d5ed 100644 --- a/packages/frontend/src/components/projects/create/Deploy.tsx +++ b/packages/frontend/src/components/projects/create/Deploy.tsx @@ -1,14 +1,12 @@ import React, { useCallback, useEffect } from 'react'; import { useNavigate, useParams, useSearchParams } from 'react-router-dom'; -import { Typography } from '@material-tailwind/react'; - import { DeployStep, DeployStatus } from './DeployStep'; -import { Stopwatch, setStopWatchOffset } from '../../StopWatch'; -import ConfirmDialog from 'components/shared/ConfirmDialog'; +import { Stopwatch, setStopWatchOffset } from 'components/StopWatch'; import { Heading } from 'components/shared/Heading'; import { Button } from 'components/shared/Button'; import { ClockOutlineIcon, WarningIcon } from 'components/shared/CustomIcon'; +import { CancelDeploymentDialog } from 'components/projects/Dialog/CancelDeploymentDialog'; const TIMEOUT_DURATION = 5000; const Deploy = () => { @@ -55,19 +53,11 @@ const Deploy = () => { > Cancel - - - This will halt the deployment and you will have to start the process - from scratch. - - + />
    From 28740ffbee5d520ea3da4a3e512778ca808fa684 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:54:30 +0700 Subject: [PATCH 133/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20create?= =?UTF-8?q?=20change=20state=20to=20production=20dialog=20reusable=20compo?= =?UTF-8?q?nent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dialog/ChangeStateToProductionDialog.tsx | 90 ++++++++++++++++ .../project/deployments/DeploymentMenu.tsx | 102 ++++-------------- 2 files changed, 109 insertions(+), 83 deletions(-) create mode 100644 packages/frontend/src/components/projects/Dialog/ChangeStateToProductionDialog.tsx diff --git a/packages/frontend/src/components/projects/Dialog/ChangeStateToProductionDialog.tsx b/packages/frontend/src/components/projects/Dialog/ChangeStateToProductionDialog.tsx new file mode 100644 index 00000000..cf7f1ef1 --- /dev/null +++ b/packages/frontend/src/components/projects/Dialog/ChangeStateToProductionDialog.tsx @@ -0,0 +1,90 @@ +import ConfirmDialog, { + ConfirmDialogProps, +} from 'components/shared/ConfirmDialog'; +import { Deployment, Domain } from 'gql-client'; +import React from 'react'; +import DeploymentDialogBodyCard from 'components/projects/project/deployments/DeploymentDialogBodyCard'; +import { Button } from 'components/shared/Button'; +import { + ChevronDoubleDownIcon, + LinkChainIcon, +} from 'components/shared/CustomIcon'; +import { TagProps } from 'components/shared/Tag'; + +interface ChangeStateToProductionDialogProps extends ConfirmDialogProps { + deployment: Deployment; + newDeployment?: Deployment; + domains: Domain[]; +} + +export const ChangeStateToProductionDialog = ({ + deployment, + newDeployment, + domains, + open, + handleCancel, + handleConfirm, + ...props +}: ChangeStateToProductionDialogProps) => { + const currentChip = { + value: 'Live Deployment', + type: 'positive' as TagProps['type'], + }; + const newChip = { + value: 'New Deployment', + type: 'attention' as TagProps['type'], + }; + + return ( + +
    +
    +

    + Upon confirmation, this deployment will be changed to production. +

    + + {newDeployment && ( + <> +
    + {Array.from({ length: 7 }).map((_, index) => ( + + ))} +
    + + + )} +
    +
    +

    + The new deployment will be associated with these domains: +

    + {domains.length > 0 && + domains.map((value) => { + return ( + + ); + })} +
    +
    +
    + ); +}; diff --git a/packages/frontend/src/components/projects/project/deployments/DeploymentMenu.tsx b/packages/frontend/src/components/projects/project/deployments/DeploymentMenu.tsx index f4eb9808..516b468a 100644 --- a/packages/frontend/src/components/projects/project/deployments/DeploymentMenu.tsx +++ b/packages/frontend/src/components/projects/project/deployments/DeploymentMenu.tsx @@ -17,12 +17,10 @@ import { MenuList, } from '@material-tailwind/react'; import { ComponentPropsWithRef } from 'react'; -import ConfirmDialog from '../../../shared/ConfirmDialog'; import AssignDomainDialog from './AssignDomainDialog'; -import DeploymentDialogBodyCard from './DeploymentDialogBodyCard'; -import { Typography } from '@material-tailwind/react'; -import { useGQLClient } from '../../../../context/GQLClientContext'; +import { useGQLClient } from 'context/GQLClientContext'; import { cn } from 'utils/classnames'; +import { ChangeStateToProductionDialog } from 'components/projects/Dialog/ChangeStateToProductionDialog'; interface DeploymentMenuProps extends ComponentPropsWithRef<'div'> { deployment: Deployment; @@ -158,106 +156,44 @@ export const DeploymentMenu = ({
    {/* Dialogs */} - setChangeToProduction((preVal) => !preVal)} - open={changeToProduction} confirmButtonTitle="Change" - color="blue" + handleCancel={() => setChangeToProduction((preVal) => !preVal)} + open={changeToProduction} handleConfirm={async () => { await updateDeployment(); setChangeToProduction((preVal) => !preVal); }} - > -
    - - Upon confirmation, this deployment will be changed to production. - - - - The new deployment will be associated with these domains: - - {prodBranchDomains.length > 0 && - prodBranchDomains.map((value) => { - return ( - - ^ {value.name} - - ); - })} -
    -
    - + setRedeployToProduction((preVal) => !preVal)} + handleCancel={() => setRedeployToProduction((preVal) => !preVal)} open={redeployToProduction} confirmButtonTitle="Redeploy" - color="blue" handleConfirm={async () => { await redeployToProd(); setRedeployToProduction((preVal) => !preVal); }} - > -
    - - Upon confirmation, new deployment will be created with the same - source code as current deployment. - - - - These domains will point to your new deployment: - - {deployment.domain?.name && ( - - {deployment.domain?.name} - - )} -
    -
    + deployment={deployment} + domains={deployment.domain ? [deployment.domain] : []} + /> {Boolean(currentDeployment) && ( - setRollbackDeployment((preVal) => !preVal)} + handleCancel={() => setRollbackDeployment((preVal) => !preVal)} open={rollbackDeployment} confirmButtonTitle="Rollback" - color="blue" handleConfirm={async () => { await rollbackDeploymentHandler(); setRollbackDeployment((preVal) => !preVal); }} - > -
    - - Upon confirmation, this deployment will replace your current - deployment - - - - - These domains will point to your new deployment: - - - ^ {currentDeployment.domain?.name} - -
    -
    + deployment={currentDeployment} + newDeployment={deployment} + domains={currentDeployment.domain ? [currentDeployment.domain] : []} + /> )} Date: Thu, 14 Mar 2024 21:55:02 +0700 Subject: [PATCH 134/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20create?= =?UTF-8?q?=20delete=20domain=20dialog=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/Dialog/DeleteDomainDialog.tsx | 42 +++++++++++++++++++ .../projects/project/settings/DomainCard.tsx | 26 ++++-------- 2 files changed, 49 insertions(+), 19 deletions(-) create mode 100644 packages/frontend/src/components/projects/Dialog/DeleteDomainDialog.tsx diff --git a/packages/frontend/src/components/projects/Dialog/DeleteDomainDialog.tsx b/packages/frontend/src/components/projects/Dialog/DeleteDomainDialog.tsx new file mode 100644 index 00000000..5d6d3e07 --- /dev/null +++ b/packages/frontend/src/components/projects/Dialog/DeleteDomainDialog.tsx @@ -0,0 +1,42 @@ +import ConfirmDialog, { + ConfirmDialogProps, +} from 'components/shared/ConfirmDialog'; +import React from 'react'; + +interface DeleteDomainDialogProps extends ConfirmDialogProps { + projectName: string; + domainName: string; +} + +export const DeleteDomainDialog = ({ + projectName, + domainName, + open, + handleCancel, + handleConfirm, + ...props +}: DeleteDomainDialogProps) => { + return ( + +

    + Once deleted, the project{' '} + + {projectName} + {' '} + will not be accessible from the domain{' '} + + {domainName} + + . +

    +
    + ); +}; diff --git a/packages/frontend/src/components/projects/project/settings/DomainCard.tsx b/packages/frontend/src/components/projects/project/settings/DomainCard.tsx index c5f657eb..e8a7c81c 100644 --- a/packages/frontend/src/components/projects/project/settings/DomainCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/DomainCard.tsx @@ -12,9 +12,9 @@ import { Card, } from '@material-tailwind/react'; -import ConfirmDialog from '../../../shared/ConfirmDialog'; import EditDomainDialog from './EditDomainDialog'; -import { useGQLClient } from '../../../../context/GQLClientContext'; +import { useGQLClient } from 'context/GQLClientContext'; +import { DeleteDomainDialog } from 'components/projects/Dialog/DeleteDomainDialog'; enum RefreshStatus { IDLE, @@ -118,28 +118,16 @@ const DomainCard = ({
    - setDeleteDialogOpen((preVal) => !preVal)} + setDeleteDialogOpen((preVal) => !preVal)} open={deleteDialogOpen} - confirmButtonTitle="Yes, Delete domain" handleConfirm={() => { deleteDomain(); setDeleteDialogOpen((preVal) => !preVal); }} - color="red" - > - - Once deleted, the project{' '} - - {project.name} - {' '} - will not be accessible from the domain{' '} - - {domain.name}. - - - + projectName={project.name} + domainName={domain.name} + />
    From c1696fbf480a1e5bf10b067f8bf36ef38485abba Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:55:30 +0700 Subject: [PATCH 135/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20create?= =?UTF-8?q?=20delete=20variable=20dialog=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/Dialog/DeleteVariableDialog.tsx | 36 +++++++++++++++++++ .../settings/EditEnvironmentVariableRow.tsx | 20 ++++------- 2 files changed, 42 insertions(+), 14 deletions(-) create mode 100644 packages/frontend/src/components/projects/Dialog/DeleteVariableDialog.tsx diff --git a/packages/frontend/src/components/projects/Dialog/DeleteVariableDialog.tsx b/packages/frontend/src/components/projects/Dialog/DeleteVariableDialog.tsx new file mode 100644 index 00000000..227fa34a --- /dev/null +++ b/packages/frontend/src/components/projects/Dialog/DeleteVariableDialog.tsx @@ -0,0 +1,36 @@ +import ConfirmDialog, { + ConfirmDialogProps, +} from 'components/shared/ConfirmDialog'; +import React from 'react'; + +interface DeleteVariableDialogProps extends ConfirmDialogProps { + variableKey: string; +} + +export const DeleteVariableDialog = ({ + variableKey, + open, + handleCancel, + handleConfirm, + ...props +}: DeleteVariableDialogProps) => { + return ( + +

    + Are you sure you want to delete the variable{' '} + + {variableKey} + + ? +

    +
    + ); +}; diff --git a/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx b/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx index c15c142e..0e382986 100644 --- a/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx +++ b/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx @@ -5,8 +5,8 @@ import { EnvironmentVariable } from 'gql-client'; import { IconButton, Input, Typography } from '@material-tailwind/react'; -import ConfirmDialog from '../../../shared/ConfirmDialog'; -import { useGQLClient } from '../../../../context/GQLClientContext'; +import { useGQLClient } from 'context/GQLClientContext'; +import { DeleteVariableDialog } from 'components/projects/Dialog/DeleteVariableDialog'; const ShowPasswordIcon = ({ handler, @@ -161,20 +161,12 @@ const EditEnvironmentVariableRow = ({ )}
    - - setDeleteDialogOpen((preVal) => !preVal)} + setDeleteDialogOpen((preVal) => !preVal)} open={deleteDialogOpen} - confirmButtonTitle="Yes, Confirm delete" handleConfirm={removeEnvironmentVariableHandler} - color="red" - > - - Are you sure you want to delete the variable  - {variable.key}? - - + variableKey={variable.key} + /> ); }; From f5807c1126271fc5f84819384fb549b6b91e446e Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:56:00 +0700 Subject: [PATCH 136/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20create?= =?UTF-8?q?=20delete=20webhook=20dialog=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/Dialog/DeleteWebhookDialog.tsx | 36 +++++++++++++++++++ .../projects/project/settings/WebhookCard.tsx | 21 ++++------- 2 files changed, 42 insertions(+), 15 deletions(-) create mode 100644 packages/frontend/src/components/projects/Dialog/DeleteWebhookDialog.tsx diff --git a/packages/frontend/src/components/projects/Dialog/DeleteWebhookDialog.tsx b/packages/frontend/src/components/projects/Dialog/DeleteWebhookDialog.tsx new file mode 100644 index 00000000..c2c82c16 --- /dev/null +++ b/packages/frontend/src/components/projects/Dialog/DeleteWebhookDialog.tsx @@ -0,0 +1,36 @@ +import ConfirmDialog, { + ConfirmDialogProps, +} from 'components/shared/ConfirmDialog'; +import React from 'react'; + +interface DeleteWebhookDialogProps extends ConfirmDialogProps { + webhookUrl: string; +} + +export const DeleteWebhookDialog = ({ + webhookUrl, + open, + handleCancel, + handleConfirm, + ...props +}: DeleteWebhookDialogProps) => { + return ( + +

    + Are you sure you want to delete{' '} + + {webhookUrl} + + ? +

    +
    + ); +}; diff --git a/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx b/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx index 0d03e46e..80aaf4f1 100644 --- a/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx @@ -1,9 +1,9 @@ import React, { useState } from 'react'; import toast from 'react-hot-toast'; -import { Button, Typography } from '@material-tailwind/react'; +import { Button } from '@material-tailwind/react'; -import ConfirmDialog from '../../../shared/ConfirmDialog'; +import { DeleteWebhookDialog } from 'components/projects/Dialog/DeleteWebhookDialog'; interface WebhookCardProps { webhookUrl: string; @@ -15,7 +15,6 @@ const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => { return (
    {webhookUrl} -
    - - setDeleteDialogOpen((preVal) => !preVal)} + setDeleteDialogOpen((preVal) => !preVal)} open={deleteDialogOpen} - confirmButtonTitle="Yes, Confirm delete" handleConfirm={() => { setDeleteDialogOpen((preVal) => !preVal); onDelete(); }} - color="red" - > - - Are you sure you want to delete the variable{' '} - {webhookUrl}? - - + webhookUrl={webhookUrl} + />
    ); }; From 4c936b1eb7c377c2dfc69c6fe1cbe196c47bd5b2 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:56:29 +0700 Subject: [PATCH 137/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20create?= =?UTF-8?q?=20remove=20member=20dialog=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/Dialog/RemoveMemberDialog.tsx | 38 +++++++++++++++++++ .../projects/project/settings/MemberCard.tsx | 23 ++++------- 2 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 packages/frontend/src/components/projects/Dialog/RemoveMemberDialog.tsx diff --git a/packages/frontend/src/components/projects/Dialog/RemoveMemberDialog.tsx b/packages/frontend/src/components/projects/Dialog/RemoveMemberDialog.tsx new file mode 100644 index 00000000..6695ff8b --- /dev/null +++ b/packages/frontend/src/components/projects/Dialog/RemoveMemberDialog.tsx @@ -0,0 +1,38 @@ +import ConfirmDialog, { + ConfirmDialogProps, +} from 'components/shared/ConfirmDialog'; +import React from 'react'; +import { formatAddress } from 'utils/format'; + +interface RemoveMemberDialogProps extends ConfirmDialogProps { + memberName: string; + ethAddress: string; + emailDomain: string; +} + +export const RemoveMemberDialog = ({ + memberName, + ethAddress, + emailDomain, + open, + handleCancel, + handleConfirm, + ...props +}: RemoveMemberDialogProps) => { + return ( + +

    + Once removed, {formatAddress(memberName)} ({formatAddress(ethAddress)}@ + {emailDomain}) will not be able to access this project. +

    +
    + ); +}; diff --git a/packages/frontend/src/components/projects/project/settings/MemberCard.tsx b/packages/frontend/src/components/projects/project/settings/MemberCard.tsx index 715d8bf4..8dd8fd16 100644 --- a/packages/frontend/src/components/projects/project/settings/MemberCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/MemberCard.tsx @@ -3,15 +3,14 @@ import { Permission, User } from 'gql-client'; import { Select, - Typography, Option, Chip, IconButton, Tooltip, } from '@material-tailwind/react'; -import ConfirmDialog from '../../../shared/ConfirmDialog'; -import { formatAddress } from '../../../../utils/format'; +import { formatAddress } from 'utils/format'; +import { RemoveMemberDialog } from 'components/projects/Dialog/RemoveMemberDialog'; const PERMISSION_OPTIONS = [ { @@ -141,25 +140,19 @@ const MemberCard = ({
    )}
    - setRemoveMemberDialogOpen((preVal) => !preVal)} + setRemoveMemberDialogOpen((preVal) => !preVal)} open={removeMemberDialogOpen} - confirmButtonTitle="Yes, Remove member" handleConfirm={() => { setRemoveMemberDialogOpen((preVal) => !preVal); if (onRemoveProjectMember) { onRemoveProjectMember(); } }} - color="red" - > - - Once removed, {formatAddress(member.name ?? '')} ( - {formatAddress(ethAddress)}@{emailDomain}) will not be able to access - this project. - - + memberName={member.name ?? ''} + ethAddress={ethAddress} + emailDomain={emailDomain} + />
    ); }; From e4fdae332956104190c52989d014fce09b6d9d4e Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:57:00 +0700 Subject: [PATCH 138/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20create?= =?UTF-8?q?=20disconnect=20repository=20dialog=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dialog/DisconnectRepositoryDialog.tsx | 30 +++++++++++++++++++ .../project/settings/RepoConnectedSection.tsx | 18 ++++------- 2 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 packages/frontend/src/components/projects/Dialog/DisconnectRepositoryDialog.tsx diff --git a/packages/frontend/src/components/projects/Dialog/DisconnectRepositoryDialog.tsx b/packages/frontend/src/components/projects/Dialog/DisconnectRepositoryDialog.tsx new file mode 100644 index 00000000..52ac52f8 --- /dev/null +++ b/packages/frontend/src/components/projects/Dialog/DisconnectRepositoryDialog.tsx @@ -0,0 +1,30 @@ +import ConfirmDialog, { + ConfirmDialogProps, +} from 'components/shared/ConfirmDialog'; +import React from 'react'; + +interface DisconnectRepositoryDialogProps extends ConfirmDialogProps {} + +export const DisconnectRepositoryDialog = ({ + open, + handleCancel, + handleConfirm, + ...props +}: DisconnectRepositoryDialogProps) => { + return ( + +

    + Any data tied to your Git project may become misconfigured. Are you sure + you want to continue? +

    +
    + ); +}; diff --git a/packages/frontend/src/components/projects/project/settings/RepoConnectedSection.tsx b/packages/frontend/src/components/projects/project/settings/RepoConnectedSection.tsx index 594062fe..f0a35e97 100644 --- a/packages/frontend/src/components/projects/project/settings/RepoConnectedSection.tsx +++ b/packages/frontend/src/components/projects/project/settings/RepoConnectedSection.tsx @@ -2,8 +2,8 @@ import React, { useState } from 'react'; import { Button, Typography } from '@material-tailwind/react'; -import { GitRepositoryDetails } from '../../../../types'; -import ConfirmDialog from '../../../shared/ConfirmDialog'; +import { GitRepositoryDetails } from 'types'; +import { DisconnectRepositoryDialog } from 'components/projects/Dialog/DisconnectRepositoryDialog'; const RepoConnectedSection = ({ linkedRepo, @@ -34,21 +34,13 @@ const RepoConnectedSection = ({ ^ Disconnect
    - setDisconnectRepoDialogOpen((preVal) => !preVal)} + setDisconnectRepoDialogOpen((preVal) => !preVal)} open={disconnectRepoDialogOpen} - confirmButtonTitle="Yes, confirm disconnect" handleConfirm={() => { setDisconnectRepoDialogOpen((preVal) => !preVal); }} - color="red" - > - - Any data tied to your Git project may become misconfigured. Are you - sure you want to continue? - - + />
    ); }; From 9b3ac4654fa560adbf71d572389e3545a39bc38e Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:57:26 +0700 Subject: [PATCH 139/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20create?= =?UTF-8?q?=20transfer=20project=20dialog=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/Dialog/TransferProjectDialog.tsx | 47 +++++++++++++++++++ .../org-slug/projects/id/settings/General.tsx | 27 +++++------ 2 files changed, 58 insertions(+), 16 deletions(-) create mode 100644 packages/frontend/src/components/projects/Dialog/TransferProjectDialog.tsx diff --git a/packages/frontend/src/components/projects/Dialog/TransferProjectDialog.tsx b/packages/frontend/src/components/projects/Dialog/TransferProjectDialog.tsx new file mode 100644 index 00000000..7d26ab93 --- /dev/null +++ b/packages/frontend/src/components/projects/Dialog/TransferProjectDialog.tsx @@ -0,0 +1,47 @@ +import ConfirmDialog, { + ConfirmDialogProps, +} from 'components/shared/ConfirmDialog'; +import React from 'react'; + +interface TransferProjectDialogProps extends ConfirmDialogProps { + projectName: string; + from: string; + to: string; +} + +export const TransferProjectDialog = ({ + projectName, + from, + to, + open, + handleCancel, + handleConfirm, + ...props +}: TransferProjectDialogProps) => { + return ( + +

    + Upon confirmation, your project{' '} + + {projectName} + {' '} + will be transferred from{' '} + + {from} + {' '} + to{' '} + + {to} + + . +

    +
    + ); +}; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx index 22d42089..8c1d0bd7 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx @@ -6,11 +6,11 @@ import { Organization } from 'gql-client'; import { Button, Typography, Input, Option } from '@material-tailwind/react'; -import DeleteProjectDialog from '../../../../../components/projects/project/settings/DeleteProjectDialog'; -import ConfirmDialog from '../../../../../components/shared/ConfirmDialog'; -import { useGQLClient } from '../../../../../context/GQLClientContext'; -import AsyncSelect from '../../../../../components/shared/AsyncSelect'; -import { OutletContextType } from '../../../../../types'; +import DeleteProjectDialog from 'components/projects/project/settings/DeleteProjectDialog'; +import { useGQLClient } from 'context/GQLClientContext'; +import AsyncSelect from 'components/shared/AsyncSelect'; +import { OutletContextType } from 'types'; +import { TransferProjectDialog } from 'components/projects/Dialog/TransferProjectDialog'; const CopyIcon = ({ value }: { value: string }) => { return ( @@ -230,19 +230,14 @@ const GeneralTabPanel = () => { Transfer - setOpenTransferDialog(!openTransferDialog)} + setOpenTransferDialog(!openTransferDialog)} open={openTransferDialog} - confirmButtonTitle="Yes, Confirm transfer" handleConfirm={handleTransferProject} - color="blue" - > - - Upon confirmation, your project {project.name} will be transferred - from {project.organization.name} to {selectedUserOrgName}. - - + projectName={project.name} + from={project.organization.name} + to={selectedUserOrgName} + />
    From 8834de893ecdb7ad745a3fa87c6768424f3b78e3 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 21:58:04 +0700 Subject: [PATCH 140/251] =?UTF-8?q?=F0=9F=93=9D=20docs:=20put=20all=20the?= =?UTF-8?q?=20new=20dialog=20into=20component=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/pages/components/index.tsx | 233 +++++++++++++++++- 1 file changed, 228 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/pages/components/index.tsx b/packages/frontend/src/pages/components/index.tsx index 85e5631e..2d4fe399 100644 --- a/packages/frontend/src/pages/components/index.tsx +++ b/packages/frontend/src/pages/components/index.tsx @@ -37,6 +37,74 @@ import { renderToast, renderToastsWithCta } from './renders/toast'; import { renderTooltips } from './renders/tooltip'; import { Button } from 'components/shared/Button'; import { Modal } from 'components/shared/Modal'; +import { TransferProjectDialog } from 'components/projects/Dialog/TransferProjectDialog'; +import { DeleteWebhookDialog } from 'components/projects/Dialog/DeleteWebhookDialog'; +import { DisconnectRepositoryDialog } from 'components/projects/Dialog/DisconnectRepositoryDialog'; +import { RemoveMemberDialog } from 'components/projects/Dialog/RemoveMemberDialog'; +import { DeleteVariableDialog } from 'components/projects/Dialog/DeleteVariableDialog'; +import { DeleteDomainDialog } from 'components/projects/Dialog/DeleteDomainDialog'; +import { CancelDeploymentDialog } from 'components/projects/Dialog/CancelDeploymentDialog'; +import { + Deployment, + DeploymentStatus, + Domain, + DomainStatus, + Environment, +} from 'gql-client'; +import { ChangeStateToProductionDialog } from 'components/projects/Dialog/ChangeStateToProductionDialog'; + +const deployment: Deployment = { + id: '1', + domain: { + id: 'domain1', + branch: 'main', + name: 'example.com', + status: DomainStatus.Live, + redirectTo: null, + createdAt: '1677609600', // 2023-02-25T12:00:00Z + updatedAt: '1677613200', // 2023-02-25T13:00:00Z + }, + branch: 'main', + commitHash: 'a1b2c3d', + commitMessage: + 'lkajsdlakjsdlaijwlkjadlksjdlaisjdlakjswdalijsdlaksdj lakjsdlasjdlaijwdel akjsdlaj sldkjaliwjdeal ksjdla ijsdlaksjd', + url: 'https://deploy1.example.com', + environment: Environment.Production, + isCurrent: true, + status: DeploymentStatus.Ready, + createdBy: { + id: 'user1', + name: 'Alice', + email: 'alice@example.com', + isVerified: true, + createdAt: '1672656000', // 2023-01-01T10:00:00Z + updatedAt: '1672659600', // 2023-01-01T11:00:00Z + gitHubToken: null, + }, + createdAt: '1677676800', // 2023-03-01T12:00:00Z + updatedAt: '1677680400', // 2023-03-01T13:00:00Z +}; + +const domains: Domain[] = [ + { + id: '1', + branch: 'main', + name: 'saugat.com', + status: DomainStatus.Live, + redirectTo: null, + createdAt: '1677676800', // 2023-03-01T12:00:00Z + updatedAt: '1677680400', // 2023-03-01T13:00:00Z + }, + { + id: '2', + branch: 'main', + name: 'www.saugat.com', + status: DomainStatus.Live, + redirectTo: null, + createdAt: '1677676800', // 2023-03-01T12:00:00Z + updatedAt: '1677680400', // 2023-03-01T13:00:00Z + }, +]; const Page: React.FC = () => { const [singleDate, setSingleDate] = useState(); @@ -45,7 +113,20 @@ const Page: React.FC = () => { useState('Test 1'); const [switchValue, setSwitchValue] = useState(false); const [selectedRadio, setSelectedRadio] = useState(''); - const [openModal, setOpenModal] = useState(false); + const [openTransferDialog, setOpenTransferDialog] = useState(false); + const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); + const [disconnectRepoDialogOpen, setDisconnectRepoDialogOpen] = + useState(false); + const [removeMemberDialogOpen, setRemoveMemberDialogOpen] = useState(false); + const [deleteVariableDialogOpen, setDeleteVariableDialogOpen] = + useState(false); + const [deleteDomainDialogOpen, setDeleteDomainDialogOpen] = useState(false); + const [cancelDeploymentDialogOpen, setCancelDeploymentDialogOpen] = + useState(false); + const [changeProductionDialogOpen, setChangeProductionDialogOpen] = + useState(false); + const [redeployToProduction, setRedeployToProduction] = useState(false); + const [rollbackDeployment, setRollbackDeployment] = useState(false); return (
    @@ -64,10 +145,11 @@ const Page: React.FC = () => {

    Modal

    -
    - +
    + {/* Modal example */} + - + Modal title @@ -75,10 +157,151 @@ const Page: React.FC = () => {

    Modal content

    - +
    + {/* Transfer project */} + + setOpenTransferDialog(!openTransferDialog)} + open={openTransferDialog} + handleConfirm={() => setOpenTransferDialog(!openTransferDialog)} + projectName="nextjs-boilerplate" + from="ayungavis" + to="Airfoil" + /> + {/* Delete webhook */} + + setDeleteDialogOpen((preVal) => !preVal)} + open={deleteDialogOpen} + handleConfirm={() => setDeleteDialogOpen((preVal) => !preVal)} + webhookUrl="examplehook.com" + /> + {/* Disconnect repository */} + + + setDisconnectRepoDialogOpen((preVal) => !preVal) + } + open={disconnectRepoDialogOpen} + handleConfirm={() => { + setDisconnectRepoDialogOpen((preVal) => !preVal); + }} + /> + {/* Remove member */} + + + setRemoveMemberDialogOpen((preVal) => !preVal) + } + open={removeMemberDialogOpen} + confirmButtonTitle="Yes, Remove member" + handleConfirm={() => + setRemoveMemberDialogOpen((preVal) => !preVal) + } + memberName="John Doe" + ethAddress="0x1234567890" + emailDomain="example.com" + /> + {/* Delete variable */} + + + setDeleteVariableDialogOpen((preVal) => !preVal) + } + open={deleteVariableDialogOpen} + handleConfirm={() => + setDeleteVariableDialogOpen((preVal) => !preVal) + } + variableKey="AIUTH_TOKEN" + /> + {/* Delete domain */} + + + setDeleteDomainDialogOpen((preVal) => !preVal) + } + open={deleteDomainDialogOpen} + handleConfirm={() => + setDeleteDomainDialogOpen((preVal) => !preVal) + } + projectName="Airfoil" + domainName="airfoil.com" + /> + {/* Cancel deployment */} + + + setCancelDeploymentDialogOpen(!cancelDeploymentDialogOpen) + } + open={cancelDeploymentDialogOpen} + handleConfirm={() => + setCancelDeploymentDialogOpen(!cancelDeploymentDialogOpen) + } + /> + {/* Change to production */} + + setChangeProductionDialogOpen(false)} + open={changeProductionDialogOpen} + handleConfirm={() => setChangeProductionDialogOpen(false)} + deployment={deployment} + domains={domains} + /> + {/* Redeploy to production */} + + + setRedeployToProduction((preVal) => !preVal) + } + open={redeployToProduction} + confirmButtonTitle="Redeploy" + handleConfirm={async () => + setRedeployToProduction((preVal) => !preVal) + } + deployment={deployment} + domains={deployment.domain ? [deployment.domain] : []} + /> + {/* Rollback to this deployment */} + + setRollbackDeployment((preVal) => !preVal)} + open={rollbackDeployment} + confirmButtonTitle="Rollback" + handleConfirm={async () => + setRollbackDeployment((preVal) => !preVal) + } + deployment={deployment} + newDeployment={deployment} + domains={deployment.domain ? [deployment.domain] : []} + />
    From 193dbb058aa6faddb01893fa3778ed19d1084ca5 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 22:07:05 +0700 Subject: [PATCH 141/251] =?UTF-8?q?=F0=9F=8E=A8=20style:=20adjust=20overfl?= =?UTF-8?q?ow=20text=20width=20on=20mobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/project/deployments/DeploymentDialogBodyCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx b/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx index 64b6956d..fd008de6 100644 --- a/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx +++ b/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx @@ -50,7 +50,7 @@ const DeploymentDialogBodyCard = ({
    -

    +

    {commit}

    From 4fcf8e92b7c9b42cb63e73b669b038052139f4b7 Mon Sep 17 00:00:00 2001 From: Wahyu Kurniawan Date: Thu, 14 Mar 2024 22:07:36 +0700 Subject: [PATCH 142/251] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20create?= =?UTF-8?q?=20another=20example=20page=20for=20modal=20only?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/pages/components/index.tsx | 223 -------------- .../frontend/src/pages/components/modals.tsx | 274 ++++++++++++++++++ 2 files changed, 274 insertions(+), 223 deletions(-) create mode 100644 packages/frontend/src/pages/components/modals.tsx diff --git a/packages/frontend/src/pages/components/index.tsx b/packages/frontend/src/pages/components/index.tsx index 2d4fe399..84e3e188 100644 --- a/packages/frontend/src/pages/components/index.tsx +++ b/packages/frontend/src/pages/components/index.tsx @@ -37,74 +37,6 @@ import { renderToast, renderToastsWithCta } from './renders/toast'; import { renderTooltips } from './renders/tooltip'; import { Button } from 'components/shared/Button'; import { Modal } from 'components/shared/Modal'; -import { TransferProjectDialog } from 'components/projects/Dialog/TransferProjectDialog'; -import { DeleteWebhookDialog } from 'components/projects/Dialog/DeleteWebhookDialog'; -import { DisconnectRepositoryDialog } from 'components/projects/Dialog/DisconnectRepositoryDialog'; -import { RemoveMemberDialog } from 'components/projects/Dialog/RemoveMemberDialog'; -import { DeleteVariableDialog } from 'components/projects/Dialog/DeleteVariableDialog'; -import { DeleteDomainDialog } from 'components/projects/Dialog/DeleteDomainDialog'; -import { CancelDeploymentDialog } from 'components/projects/Dialog/CancelDeploymentDialog'; -import { - Deployment, - DeploymentStatus, - Domain, - DomainStatus, - Environment, -} from 'gql-client'; -import { ChangeStateToProductionDialog } from 'components/projects/Dialog/ChangeStateToProductionDialog'; - -const deployment: Deployment = { - id: '1', - domain: { - id: 'domain1', - branch: 'main', - name: 'example.com', - status: DomainStatus.Live, - redirectTo: null, - createdAt: '1677609600', // 2023-02-25T12:00:00Z - updatedAt: '1677613200', // 2023-02-25T13:00:00Z - }, - branch: 'main', - commitHash: 'a1b2c3d', - commitMessage: - 'lkajsdlakjsdlaijwlkjadlksjdlaisjdlakjswdalijsdlaksdj lakjsdlasjdlaijwdel akjsdlaj sldkjaliwjdeal ksjdla ijsdlaksjd', - url: 'https://deploy1.example.com', - environment: Environment.Production, - isCurrent: true, - status: DeploymentStatus.Ready, - createdBy: { - id: 'user1', - name: 'Alice', - email: 'alice@example.com', - isVerified: true, - createdAt: '1672656000', // 2023-01-01T10:00:00Z - updatedAt: '1672659600', // 2023-01-01T11:00:00Z - gitHubToken: null, - }, - createdAt: '1677676800', // 2023-03-01T12:00:00Z - updatedAt: '1677680400', // 2023-03-01T13:00:00Z -}; - -const domains: Domain[] = [ - { - id: '1', - branch: 'main', - name: 'saugat.com', - status: DomainStatus.Live, - redirectTo: null, - createdAt: '1677676800', // 2023-03-01T12:00:00Z - updatedAt: '1677680400', // 2023-03-01T13:00:00Z - }, - { - id: '2', - branch: 'main', - name: 'www.saugat.com', - status: DomainStatus.Live, - redirectTo: null, - createdAt: '1677676800', // 2023-03-01T12:00:00Z - updatedAt: '1677680400', // 2023-03-01T13:00:00Z - }, -]; const Page: React.FC = () => { const [singleDate, setSingleDate] = useState(); @@ -113,20 +45,6 @@ const Page: React.FC = () => { useState('Test 1'); const [switchValue, setSwitchValue] = useState(false); const [selectedRadio, setSelectedRadio] = useState(''); - const [openTransferDialog, setOpenTransferDialog] = useState(false); - const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); - const [disconnectRepoDialogOpen, setDisconnectRepoDialogOpen] = - useState(false); - const [removeMemberDialogOpen, setRemoveMemberDialogOpen] = useState(false); - const [deleteVariableDialogOpen, setDeleteVariableDialogOpen] = - useState(false); - const [deleteDomainDialogOpen, setDeleteDomainDialogOpen] = useState(false); - const [cancelDeploymentDialogOpen, setCancelDeploymentDialogOpen] = - useState(false); - const [changeProductionDialogOpen, setChangeProductionDialogOpen] = - useState(false); - const [redeployToProduction, setRedeployToProduction] = useState(false); - const [rollbackDeployment, setRollbackDeployment] = useState(false); return (
    @@ -161,147 +79,6 @@ const Page: React.FC = () => { - {/* Transfer project */} - - setOpenTransferDialog(!openTransferDialog)} - open={openTransferDialog} - handleConfirm={() => setOpenTransferDialog(!openTransferDialog)} - projectName="nextjs-boilerplate" - from="ayungavis" - to="Airfoil" - /> - {/* Delete webhook */} - - setDeleteDialogOpen((preVal) => !preVal)} - open={deleteDialogOpen} - handleConfirm={() => setDeleteDialogOpen((preVal) => !preVal)} - webhookUrl="examplehook.com" - /> - {/* Disconnect repository */} - - - setDisconnectRepoDialogOpen((preVal) => !preVal) - } - open={disconnectRepoDialogOpen} - handleConfirm={() => { - setDisconnectRepoDialogOpen((preVal) => !preVal); - }} - /> - {/* Remove member */} - - - setRemoveMemberDialogOpen((preVal) => !preVal) - } - open={removeMemberDialogOpen} - confirmButtonTitle="Yes, Remove member" - handleConfirm={() => - setRemoveMemberDialogOpen((preVal) => !preVal) - } - memberName="John Doe" - ethAddress="0x1234567890" - emailDomain="example.com" - /> - {/* Delete variable */} - - - setDeleteVariableDialogOpen((preVal) => !preVal) - } - open={deleteVariableDialogOpen} - handleConfirm={() => - setDeleteVariableDialogOpen((preVal) => !preVal) - } - variableKey="AIUTH_TOKEN" - /> - {/* Delete domain */} - - - setDeleteDomainDialogOpen((preVal) => !preVal) - } - open={deleteDomainDialogOpen} - handleConfirm={() => - setDeleteDomainDialogOpen((preVal) => !preVal) - } - projectName="Airfoil" - domainName="airfoil.com" - /> - {/* Cancel deployment */} - - - setCancelDeploymentDialogOpen(!cancelDeploymentDialogOpen) - } - open={cancelDeploymentDialogOpen} - handleConfirm={() => - setCancelDeploymentDialogOpen(!cancelDeploymentDialogOpen) - } - /> - {/* Change to production */} - - setChangeProductionDialogOpen(false)} - open={changeProductionDialogOpen} - handleConfirm={() => setChangeProductionDialogOpen(false)} - deployment={deployment} - domains={domains} - /> - {/* Redeploy to production */} - - - setRedeployToProduction((preVal) => !preVal) - } - open={redeployToProduction} - confirmButtonTitle="Redeploy" - handleConfirm={async () => - setRedeployToProduction((preVal) => !preVal) - } - deployment={deployment} - domains={deployment.domain ? [deployment.domain] : []} - /> - {/* Rollback to this deployment */} - - setRollbackDeployment((preVal) => !preVal)} - open={rollbackDeployment} - confirmButtonTitle="Rollback" - handleConfirm={async () => - setRollbackDeployment((preVal) => !preVal) - } - deployment={deployment} - newDeployment={deployment} - domains={deployment.domain ? [deployment.domain] : []} - />
    diff --git a/packages/frontend/src/pages/components/modals.tsx b/packages/frontend/src/pages/components/modals.tsx new file mode 100644 index 00000000..63d34e2a --- /dev/null +++ b/packages/frontend/src/pages/components/modals.tsx @@ -0,0 +1,274 @@ +import React from 'react'; + +import { useState } from 'react'; + +import { Button } from 'components/shared/Button'; +import { Modal } from 'components/shared/Modal'; +import { TransferProjectDialog } from 'components/projects/Dialog/TransferProjectDialog'; +import { DeleteWebhookDialog } from 'components/projects/Dialog/DeleteWebhookDialog'; +import { DisconnectRepositoryDialog } from 'components/projects/Dialog/DisconnectRepositoryDialog'; +import { RemoveMemberDialog } from 'components/projects/Dialog/RemoveMemberDialog'; +import { DeleteVariableDialog } from 'components/projects/Dialog/DeleteVariableDialog'; +import { DeleteDomainDialog } from 'components/projects/Dialog/DeleteDomainDialog'; +import { CancelDeploymentDialog } from 'components/projects/Dialog/CancelDeploymentDialog'; +import { + Deployment, + DeploymentStatus, + Domain, + DomainStatus, + Environment, +} from 'gql-client'; +import { ChangeStateToProductionDialog } from 'components/projects/Dialog/ChangeStateToProductionDialog'; + +const deployment: Deployment = { + id: '1', + domain: { + id: 'domain1', + branch: 'main', + name: 'example.com', + status: DomainStatus.Live, + redirectTo: null, + createdAt: '1677609600', // 2023-02-25T12:00:00Z + updatedAt: '1677613200', // 2023-02-25T13:00:00Z + }, + branch: 'main', + commitHash: 'a1b2c3d', + commitMessage: + 'lkajsdlakjsdlaijwlkjadlksjdlaisjdlakjswdalijsdlaksdj lakjsdlasjdlaijwdel akjsdlaj sldkjaliwjdeal ksjdla ijsdlaksjd', + url: 'https://deploy1.example.com', + environment: Environment.Production, + isCurrent: true, + status: DeploymentStatus.Ready, + createdBy: { + id: 'user1', + name: 'Alice', + email: 'alice@example.com', + isVerified: true, + createdAt: '1672656000', // 2023-01-01T10:00:00Z + updatedAt: '1672659600', // 2023-01-01T11:00:00Z + gitHubToken: null, + }, + createdAt: '1677676800', // 2023-03-01T12:00:00Z + updatedAt: '1677680400', // 2023-03-01T13:00:00Z +}; + +const domains: Domain[] = [ + { + id: '1', + branch: 'main', + name: 'saugat.com', + status: DomainStatus.Live, + redirectTo: null, + createdAt: '1677676800', // 2023-03-01T12:00:00Z + updatedAt: '1677680400', // 2023-03-01T13:00:00Z + }, + { + id: '2', + branch: 'main', + name: 'www.saugat.com', + status: DomainStatus.Live, + redirectTo: null, + createdAt: '1677676800', // 2023-03-01T12:00:00Z + updatedAt: '1677680400', // 2023-03-01T13:00:00Z + }, +]; + +const ModalsPage: React.FC = () => { + const [openTransferDialog, setOpenTransferDialog] = useState(false); + const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); + const [disconnectRepoDialogOpen, setDisconnectRepoDialogOpen] = + useState(false); + const [removeMemberDialogOpen, setRemoveMemberDialogOpen] = useState(false); + const [deleteVariableDialogOpen, setDeleteVariableDialogOpen] = + useState(false); + const [deleteDomainDialogOpen, setDeleteDomainDialogOpen] = useState(false); + const [cancelDeploymentDialogOpen, setCancelDeploymentDialogOpen] = + useState(false); + const [changeProductionDialogOpen, setChangeProductionDialogOpen] = + useState(false); + const [redeployToProduction, setRedeployToProduction] = useState(false); + const [rollbackDeployment, setRollbackDeployment] = useState(false); + + return ( +
    +
    +

    Manual Storybook

    +

    + Get started by editing{' '} + + packages/frontend/src/pages/components/index.tsx + +

    + +
    + + {/* Modal */} +
    +
    +

    Modal

    +
    + {/* Modal example */} + + + + + + Modal title + +

    Modal content

    +
    + + + +
    +
    + {/* Transfer project */} + + setOpenTransferDialog(!openTransferDialog)} + open={openTransferDialog} + handleConfirm={() => setOpenTransferDialog(!openTransferDialog)} + projectName="nextjs-boilerplate" + from="ayungavis" + to="Airfoil" + /> + {/* Delete webhook */} + + setDeleteDialogOpen((preVal) => !preVal)} + open={deleteDialogOpen} + handleConfirm={() => setDeleteDialogOpen((preVal) => !preVal)} + webhookUrl="examplehook.com" + /> + {/* Disconnect repository */} + + + setDisconnectRepoDialogOpen((preVal) => !preVal) + } + open={disconnectRepoDialogOpen} + handleConfirm={() => { + setDisconnectRepoDialogOpen((preVal) => !preVal); + }} + /> + {/* Remove member */} + + + setRemoveMemberDialogOpen((preVal) => !preVal) + } + open={removeMemberDialogOpen} + confirmButtonTitle="Yes, Remove member" + handleConfirm={() => + setRemoveMemberDialogOpen((preVal) => !preVal) + } + memberName="John Doe" + ethAddress="0x1234567890" + emailDomain="example.com" + /> + {/* Delete variable */} + + + setDeleteVariableDialogOpen((preVal) => !preVal) + } + open={deleteVariableDialogOpen} + handleConfirm={() => + setDeleteVariableDialogOpen((preVal) => !preVal) + } + variableKey="AIUTH_TOKEN" + /> + {/* Delete domain */} + + + setDeleteDomainDialogOpen((preVal) => !preVal) + } + open={deleteDomainDialogOpen} + handleConfirm={() => + setDeleteDomainDialogOpen((preVal) => !preVal) + } + projectName="Airfoil" + domainName="airfoil.com" + /> + {/* Cancel deployment */} + + + setCancelDeploymentDialogOpen(!cancelDeploymentDialogOpen) + } + open={cancelDeploymentDialogOpen} + handleConfirm={() => + setCancelDeploymentDialogOpen(!cancelDeploymentDialogOpen) + } + /> + {/* Change to production */} + + setChangeProductionDialogOpen(false)} + open={changeProductionDialogOpen} + handleConfirm={() => setChangeProductionDialogOpen(false)} + deployment={deployment} + domains={domains} + /> + {/* Redeploy to production */} + + + setRedeployToProduction((preVal) => !preVal) + } + open={redeployToProduction} + confirmButtonTitle="Redeploy" + handleConfirm={async () => + setRedeployToProduction((preVal) => !preVal) + } + deployment={deployment} + domains={deployment.domain ? [deployment.domain] : []} + /> + {/* Rollback to this deployment */} + + setRollbackDeployment((preVal) => !preVal)} + open={rollbackDeployment} + confirmButtonTitle="Rollback" + handleConfirm={async () => + setRollbackDeployment((preVal) => !preVal) + } + deployment={deployment} + newDeployment={deployment} + domains={deployment.domain ? [deployment.domain] : []} + /> +
    +
    +
    +
    +
    + ); +}; + +export default ModalsPage; From 351db16336eacc3e1f9119ceb8d1282b8e27a27e Mon Sep 17 00:00:00 2001 From: Nabarun Gogoi Date: Wed, 3 Apr 2024 20:26:34 +0530 Subject: [PATCH 143/251] Upgrade laconic-sdk package for showing error with reason in console (#165) * Upgrade laconic sdk version * Update toast message for add project * Log error messages * Update bond id in readme --------- Co-authored-by: neeraj --- packages/backend/package.json | 2 +- packages/deployer/README.md | 8 ++-- packages/deployer/deploy-frontend.sh | 2 +- .../ProjectRepoCard/ProjectRepoCard.tsx | 2 +- .../projects/create/template/index.tsx | 39 +++++++++++++------ yarn.lock | 8 ++-- 6 files changed, 39 insertions(+), 22 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index f629dab9..8a47a4ba 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "main": "index.js", "dependencies": { - "@cerc-io/laconic-sdk": "^0.1.14", + "@cerc-io/laconic-sdk": "^0.1.16", "@graphql-tools/schema": "^10.0.2", "@graphql-tools/utils": "^10.0.12", "@octokit/oauth-app": "^6.1.0", diff --git a/packages/deployer/README.md b/packages/deployer/README.md index d2976852..48050dbb 100644 --- a/packages/deployer/README.md +++ b/packages/deployer/README.md @@ -30,8 +30,8 @@ ## Troubleshoot -- Check deployment status [here](https://console.laconic.com/deployer). -- Check records [here](https://console.laconic.com/#/registry). +- Check deployment status in [web-app deployer](https://console.laconic.com/deployer). +- Check records in [registry console app](https://console.laconic.com/#/registry). - If deployment fails due to low bond balance - Check balances @@ -40,9 +40,9 @@ yarn laconic cns account get # Bond balance - yarn laconic cns bond get --id 8fcf44b2f326b4b63ac57547777f1c78b7d494e5966e508f09001af53cb440ac + yarn laconic cns bond get --id 99c0e9aec0ac1b8187faa579be3b54f93fafb6060ac1fd29170b860df605be32 ``` - Command to refill bond ```bash - yarn laconic cns bond refill --id 8fcf44b2f326b4b63ac57547777f1c78b7d494e5966e508f09001af53cb440ac --type aphoton --quantity 10000000 + yarn laconic cns bond refill --id 99c0e9aec0ac1b8187faa579be3b54f93fafb6060ac1fd29170b860df605be32 --type aphoton --quantity 10000000 ``` diff --git a/packages/deployer/deploy-frontend.sh b/packages/deployer/deploy-frontend.sh index 92510428..d1ae439e 100755 --- a/packages/deployer/deploy-frontend.sh +++ b/packages/deployer/deploy-frontend.sh @@ -13,7 +13,7 @@ PACKAGE_VERSION=$(jq -r '.version' ../frontend/package.json) CURRENT_DATE_TIME=$(date -u) CONFIG_FILE=config.yml -REGISTRY_BOND_ID="8fcf44b2f326b4b63ac57547777f1c78b7d494e5966e508f09001af53cb440ac" +REGISTRY_BOND_ID="99c0e9aec0ac1b8187faa579be3b54f93fafb6060ac1fd29170b860df605be32" # Reference: https://git.vdb.to/cerc-io/test-progressive-web-app/src/branch/main/scripts diff --git a/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx b/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx index b06fc233..98eb0be9 100644 --- a/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx +++ b/packages/frontend/src/components/projects/create/ProjectRepoCard/ProjectRepoCard.tsx @@ -58,7 +58,7 @@ export const ProjectRepoCard: React.FC = ({ }); } } catch (error) { - console.error(error); + console.error((error as Error).message); toast({ id: 'failed-to-create-project', title: 'Failed to create project', diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx index 777a866d..305f2fa1 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx @@ -1,9 +1,9 @@ import React, { useCallback, useEffect, useState } from 'react'; import { useForm, SubmitHandler, Controller } from 'react-hook-form'; import { useNavigate, useOutletContext, useParams } from 'react-router-dom'; -import toast from 'react-hot-toast'; import assert from 'assert'; import { useMediaQuery } from 'usehooks-ts'; +import { RequestError } from 'octokit'; import { useOctokit } from '../../../../../context/OctokitContext'; import { useGQLClient } from '../../../../../context/GQLClientContext'; @@ -14,6 +14,9 @@ import { Select, SelectOption } from 'components/shared/Select'; import { ArrowRightCircleFilledIcon } from 'components/shared/CustomIcon'; import { Checkbox } from 'components/shared/Checkbox'; import { Button } from 'components/shared/Button'; +import { useToast } from 'components/shared/Toast'; + +const REPO_EXIST_ERROR = 'Could not clone: Name already exists on this account'; type SubmitRepoValues = { framework: string; @@ -28,6 +31,7 @@ const CreateRepo = () => { const client = useGQLClient(); const { orgSlug } = useParams(); + const { toast, dismiss } = useToast(); const isTabletView = useMediaQuery('(min-width: 720px)'); // md: const buttonSize = isTabletView ? { size: 'lg' as const } : {}; @@ -68,18 +72,31 @@ const CreateRepo = () => { template: 'webapp', }); - if (Boolean(addProject)) { - setIsLoading(true); - navigate( - `deploy?projectId=${addProject.id}&templateId=${template.id}`, - ); - } else { - setIsLoading(false); - } + navigate(`deploy?projectId=${addProject.id}&templateId=${template.id}`); } catch (err) { - console.error(err); setIsLoading(false); - toast.error('Error deploying project'); + + if ( + err instanceof RequestError && + err.message.includes(REPO_EXIST_ERROR) + ) { + toast({ + id: 'repo-exist-error', + title: 'Could not create: repository already exists', + variant: 'error', + onDismiss: dismiss, + }); + + return; + } + + console.error((err as Error).message); + toast({ + id: 'failed-to-create-project', + title: 'Failed to create project', + variant: 'error', + onDismiss: dismiss, + }); } }, [octokit], diff --git a/yarn.lock b/yarn.lock index f0ed8b79..a9c62cef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1313,10 +1313,10 @@ lodash-clean "^2.2.3" yargs "^17.4.1" -"@cerc-io/laconic-sdk@^0.1.14", "@cerc-io/laconic-sdk@^0.1.15": - version "0.1.15" - resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Flaconic-sdk/-/0.1.15/laconic-sdk-0.1.15.tgz#1011a07933c6f1525e05e1ba7dd6a4e4df9b6edb" - integrity sha512-Ifl4JUGpckZsu2RkaGyGlObpu9B9GhwFVoDCt8WM9ApdtFnGEVSbDzRuh4f2vLj9WaZkbfdSI/Xci1Fugj3lZg== +"@cerc-io/laconic-sdk@^0.1.15", "@cerc-io/laconic-sdk@^0.1.16": + version "0.1.16" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Flaconic-sdk/-/0.1.16/laconic-sdk-0.1.16.tgz#53f12a32f156a177987f89e727eb5f16743df7db" + integrity sha512-wu6k711qHPxowgyzAmjxz8i/ZTGxW+4sHf9WQ+0hW/E9PlR3Gn8OIsN3J8tvY45wvNdKKR3bm+7w/byyYLRF9A== dependencies: "@cosmjs/amino" "^0.28.1" "@cosmjs/crypto" "^0.28.1" From f38dfb56040525c5a27f445b770be32c10a8b79e Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Thu, 4 Apr 2024 10:50:39 -0400 Subject: [PATCH 144/251] chore: bump deploy --- .../deployer/records/application-deployment-request.yml | 8 ++++---- packages/deployer/records/application-record.yml | 6 +++--- packages/frontend/package.json | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/deployer/records/application-deployment-request.yml b/packages/deployer/records/application-deployment-request.yml index 8551abf7..1426c36d 100644 --- a/packages/deployer/records/application-deployment-request.yml +++ b/packages/deployer/records/application-deployment-request.yml @@ -1,8 +1,8 @@ record: type: ApplicationDeploymentRequest version: '1.0.0' - name: snowballtools-base-frontend@0.1.7 - application: crn://snowballtools/applications/snowballtools-base-frontend@0.1.7 + name: snowballtools-base-frontend@0.1.8 + application: crn://snowballtools/applications/snowballtools-base-frontend@0.1.8 dns: dashboard config: env: @@ -13,6 +13,6 @@ record: LACONIC_HOSTED_CONFIG_app_github_image_upload_templaterepo: snowball-tools-platform/image-upload-pwa-example LACONIC_HOSTED_CONFIG_app_wallet_connect_id: eda9ba18042a5ea500f358194611ece2 meta: - note: Added by Snowball @ Thursday 29 February 2024 04:36:04 PM UTC + note: Added by Snowball @ Thu Apr 4 14:49:41 UTC 2024 repository: "https://git.vdb.to/cerc-io/snowballtools-base" - repository_ref: 1ff5ab3dfdba9dcf5dd1cb0f9435bd863a6d0340 + repository_ref: 351db16336eacc3e1f9119ceb8d1282b8e27a27e diff --git a/packages/deployer/records/application-record.yml b/packages/deployer/records/application-record.yml index eceed263..9c1d614c 100644 --- a/packages/deployer/records/application-record.yml +++ b/packages/deployer/records/application-record.yml @@ -1,8 +1,8 @@ record: type: ApplicationRecord - version: 0.0.1 - repository_ref: 1ff5ab3dfdba9dcf5dd1cb0f9435bd863a6d0340 + version: 0.0.2 + repository_ref: 351db16336eacc3e1f9119ceb8d1282b8e27a27e repository: ["https://git.vdb.to/cerc-io/snowballtools-base"] app_type: webapp name: snowballtools-base-frontend - app_version: 0.1.7 + app_version: 0.1.8 diff --git a/packages/frontend/package.json b/packages/frontend/package.json index d9048532..729d7b1e 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -1,6 +1,6 @@ { "name": "frontend", - "version": "0.1.7", + "version": "0.1.8", "private": true, "dependencies": { "@fontsource-variable/jetbrains-mono": "^5.0.19", From ea6ad52a7394a79baca04c36bfb80225dc1bc0e2 Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Tue, 9 Apr 2024 14:10:39 -0400 Subject: [PATCH 145/251] fix: show placeholder select while waiting for load --- .../src/components/shared/Select/Select.tsx | 1 + .../projects/create/template/index.tsx | 37 +++++++++++-------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/packages/frontend/src/components/shared/Select/Select.tsx b/packages/frontend/src/components/shared/Select/Select.tsx index 2f1667de..3578890a 100644 --- a/packages/frontend/src/components/shared/Select/Select.tsx +++ b/packages/frontend/src/components/shared/Select/Select.tsx @@ -219,6 +219,7 @@ export const Select = ({ getItemProps, openMenu, } = useCombobox({ + defaultInputValue: (options[0] as unknown as SelectOption)?.value, items: filteredItems, selectedItem: multiple ? null : (value as SelectOption) || null, // @ts-expect-error – there are two params but we don't need the second one diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx index 305f2fa1..417ab241 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx @@ -143,24 +143,29 @@ const CreateRepo = () => { The project will be cloned into this repository
    +
    Git account - ( - onChange((value as SelectOption).value)} + options={ + gitAccounts.map((account) => ({ + value: account, + label: account, + })) ?? [] + } + /> + )} + /> + ) : ( + null} - value={inputValue} - crossOrigin={undefined} - /> + null} value={inputValue} /> {/* TODO: Figure out what placeholder is for */} - + {/* @ts-ignore */} + {mode === 'single' && ( setIsOpen(false)} - placeholder={''} > Cancel @@ -162,7 +158,6 @@ const DatePicker = ({ className="rounded-full" color="gray" onClick={() => handleRangeSelect()} - placeholder={''} > Select diff --git a/packages/frontend/src/components/Dropdown.tsx b/packages/frontend/src/components/Dropdown.tsx index 13430072..5660bea3 100644 --- a/packages/frontend/src/components/Dropdown.tsx +++ b/packages/frontend/src/components/Dropdown.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { default as ReactDropdown, Option as ReactDropdownOption, diff --git a/packages/frontend/src/components/FormatMilliSecond.tsx b/packages/frontend/src/components/FormatMilliSecond.tsx index bc8dcda6..4148ef77 100644 --- a/packages/frontend/src/components/FormatMilliSecond.tsx +++ b/packages/frontend/src/components/FormatMilliSecond.tsx @@ -1,5 +1,5 @@ import { Duration } from 'luxon'; -import React, { ComponentPropsWithoutRef } from 'react'; +import { ComponentPropsWithoutRef } from 'react'; import { cn } from 'utils/classnames'; export interface FormatMilliSecondProps diff --git a/packages/frontend/src/components/HorizontalLine.tsx b/packages/frontend/src/components/HorizontalLine.tsx index 78660727..62c6242f 100644 --- a/packages/frontend/src/components/HorizontalLine.tsx +++ b/packages/frontend/src/components/HorizontalLine.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - const HorizontalLine = () => { return
    ; }; diff --git a/packages/frontend/src/components/Logo.tsx b/packages/frontend/src/components/Logo.tsx index a46607c3..6b6d8131 100644 --- a/packages/frontend/src/components/Logo.tsx +++ b/packages/frontend/src/components/Logo.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Link } from 'react-router-dom'; import { Heading } from './shared/Heading'; diff --git a/packages/frontend/src/components/Stepper.tsx b/packages/frontend/src/components/Stepper.tsx index ff9958da..0c866202 100644 --- a/packages/frontend/src/components/Stepper.tsx +++ b/packages/frontend/src/components/Stepper.tsx @@ -1,9 +1,8 @@ -import React from "react"; -import { StepperNav } from "./VerticalStepper"; +import { StepperNav } from './VerticalStepper'; -const COLOR_COMPLETED = "#059669"; -const COLOR_ACTIVE = "#CFE6FC"; -const COLOR_NOT_STARTED = "#F1F5F9"; +const COLOR_COMPLETED = '#059669'; +const COLOR_ACTIVE = '#CFE6FC'; +const COLOR_NOT_STARTED = '#F1F5F9'; interface StepperValue { step: number; @@ -25,8 +24,8 @@ const Stepper = ({ activeStep, stepperValues }: StepperProps) => {
    {stepperValue.label} diff --git a/packages/frontend/src/components/StopWatch.tsx b/packages/frontend/src/components/StopWatch.tsx index 239b1197..d9c62775 100644 --- a/packages/frontend/src/components/StopWatch.tsx +++ b/packages/frontend/src/components/StopWatch.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { useStopwatch } from 'react-timer-hook'; import FormatMillisecond, { FormatMilliSecondProps } from './FormatMilliSecond'; diff --git a/packages/frontend/src/components/VerticalStepper.tsx b/packages/frontend/src/components/VerticalStepper.tsx index 203267c2..43ff80a4 100644 --- a/packages/frontend/src/components/VerticalStepper.tsx +++ b/packages/frontend/src/components/VerticalStepper.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import * as CSS from 'csstype'; // diff --git a/packages/frontend/src/components/projects/Dialog/CancelDeploymentDialog.tsx b/packages/frontend/src/components/projects/Dialog/CancelDeploymentDialog.tsx index f238788d..3b453536 100644 --- a/packages/frontend/src/components/projects/Dialog/CancelDeploymentDialog.tsx +++ b/packages/frontend/src/components/projects/Dialog/CancelDeploymentDialog.tsx @@ -1,7 +1,6 @@ import ConfirmDialog, { ConfirmDialogProps, } from 'components/shared/ConfirmDialog'; -import React from 'react'; interface CancelDeploymentDialogProps extends ConfirmDialogProps {} diff --git a/packages/frontend/src/components/projects/Dialog/ChangeStateToProductionDialog.tsx b/packages/frontend/src/components/projects/Dialog/ChangeStateToProductionDialog.tsx index cf7f1ef1..1e6d9f58 100644 --- a/packages/frontend/src/components/projects/Dialog/ChangeStateToProductionDialog.tsx +++ b/packages/frontend/src/components/projects/Dialog/ChangeStateToProductionDialog.tsx @@ -2,7 +2,7 @@ import ConfirmDialog, { ConfirmDialogProps, } from 'components/shared/ConfirmDialog'; import { Deployment, Domain } from 'gql-client'; -import React from 'react'; + import DeploymentDialogBodyCard from 'components/projects/project/deployments/DeploymentDialogBodyCard'; import { Button } from 'components/shared/Button'; import { diff --git a/packages/frontend/src/components/projects/Dialog/DeleteDomainDialog.tsx b/packages/frontend/src/components/projects/Dialog/DeleteDomainDialog.tsx index 5d6d3e07..3d2d5c16 100644 --- a/packages/frontend/src/components/projects/Dialog/DeleteDomainDialog.tsx +++ b/packages/frontend/src/components/projects/Dialog/DeleteDomainDialog.tsx @@ -1,7 +1,6 @@ import ConfirmDialog, { ConfirmDialogProps, } from 'components/shared/ConfirmDialog'; -import React from 'react'; interface DeleteDomainDialogProps extends ConfirmDialogProps { projectName: string; diff --git a/packages/frontend/src/components/projects/Dialog/DeleteVariableDialog.tsx b/packages/frontend/src/components/projects/Dialog/DeleteVariableDialog.tsx index 227fa34a..ba014480 100644 --- a/packages/frontend/src/components/projects/Dialog/DeleteVariableDialog.tsx +++ b/packages/frontend/src/components/projects/Dialog/DeleteVariableDialog.tsx @@ -1,7 +1,6 @@ import ConfirmDialog, { ConfirmDialogProps, } from 'components/shared/ConfirmDialog'; -import React from 'react'; interface DeleteVariableDialogProps extends ConfirmDialogProps { variableKey: string; diff --git a/packages/frontend/src/components/projects/Dialog/DeleteWebhookDialog.tsx b/packages/frontend/src/components/projects/Dialog/DeleteWebhookDialog.tsx index c2c82c16..2017d4c0 100644 --- a/packages/frontend/src/components/projects/Dialog/DeleteWebhookDialog.tsx +++ b/packages/frontend/src/components/projects/Dialog/DeleteWebhookDialog.tsx @@ -1,7 +1,6 @@ import ConfirmDialog, { ConfirmDialogProps, } from 'components/shared/ConfirmDialog'; -import React from 'react'; interface DeleteWebhookDialogProps extends ConfirmDialogProps { webhookUrl: string; diff --git a/packages/frontend/src/components/projects/Dialog/DisconnectRepositoryDialog.tsx b/packages/frontend/src/components/projects/Dialog/DisconnectRepositoryDialog.tsx index 52ac52f8..43d1f372 100644 --- a/packages/frontend/src/components/projects/Dialog/DisconnectRepositoryDialog.tsx +++ b/packages/frontend/src/components/projects/Dialog/DisconnectRepositoryDialog.tsx @@ -1,7 +1,6 @@ import ConfirmDialog, { ConfirmDialogProps, } from 'components/shared/ConfirmDialog'; -import React from 'react'; interface DisconnectRepositoryDialogProps extends ConfirmDialogProps {} diff --git a/packages/frontend/src/components/projects/Dialog/RemoveMemberDialog.tsx b/packages/frontend/src/components/projects/Dialog/RemoveMemberDialog.tsx index 6695ff8b..01067a71 100644 --- a/packages/frontend/src/components/projects/Dialog/RemoveMemberDialog.tsx +++ b/packages/frontend/src/components/projects/Dialog/RemoveMemberDialog.tsx @@ -1,7 +1,7 @@ import ConfirmDialog, { ConfirmDialogProps, } from 'components/shared/ConfirmDialog'; -import React from 'react'; + import { formatAddress } from 'utils/format'; interface RemoveMemberDialogProps extends ConfirmDialogProps { diff --git a/packages/frontend/src/components/projects/Dialog/TransferProjectDialog.tsx b/packages/frontend/src/components/projects/Dialog/TransferProjectDialog.tsx index 7d26ab93..9e412e38 100644 --- a/packages/frontend/src/components/projects/Dialog/TransferProjectDialog.tsx +++ b/packages/frontend/src/components/projects/Dialog/TransferProjectDialog.tsx @@ -1,7 +1,6 @@ import ConfirmDialog, { ConfirmDialogProps, } from 'components/shared/ConfirmDialog'; -import React from 'react'; interface TransferProjectDialogProps extends ConfirmDialogProps { projectName: string; diff --git a/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx b/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx index 5a0ff9b5..84a34b4f 100644 --- a/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx +++ b/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx @@ -3,12 +3,8 @@ import { MenuHandler, MenuItem, MenuList, -} from '@material-tailwind/react'; -import React, { - ComponentPropsWithoutRef, - MouseEvent, - useCallback, -} from 'react'; +} from '@snowballtools/material-tailwind-react-fork'; +import { ComponentPropsWithoutRef, MouseEvent, useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; import { Project } from 'gql-client'; import { Avatar } from 'components/shared/Avatar'; @@ -95,11 +91,9 @@ export const ProjectCard = ({ - - Project settings - - Delete project - + + Project settings + Delete project
    diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBar.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBar.tsx index 22e8b2f7..c5fb90ba 100644 --- a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBar.tsx +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBar.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useCombobox } from 'downshift'; import { Project } from 'gql-client'; import { useDebounce } from 'usehooks-ts'; diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx index 0f5e1172..40296ad4 100644 --- a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarDialog.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import * as Dialog from '@radix-ui/react-dialog'; import { Button } from 'components/shared/Button'; import { CrossIcon, SearchIcon } from 'components/shared/CustomIcon'; diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarEmpty.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarEmpty.tsx index 342969c2..74c4d033 100644 --- a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarEmpty.tsx +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarEmpty.tsx @@ -1,5 +1,5 @@ import { InfoRoundFilledIcon } from 'components/shared/CustomIcon'; -import React, { ComponentPropsWithoutRef } from 'react'; +import { ComponentPropsWithoutRef } from 'react'; import { cn } from 'utils/classnames'; interface ProjectSearchBarEmptyProps extends ComponentPropsWithoutRef<'div'> {} diff --git a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx index f97419ff..959af589 100644 --- a/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx +++ b/packages/frontend/src/components/projects/ProjectSearchBar/ProjectSearchBarItem.tsx @@ -1,7 +1,7 @@ import { Avatar } from 'components/shared/Avatar'; import { Overwrite, UseComboboxGetItemPropsReturnValue } from 'downshift'; import { Project } from 'gql-client'; -import React, { ComponentPropsWithoutRef, forwardRef } from 'react'; +import { ComponentPropsWithoutRef, forwardRef } from 'react'; import { OmitCommon } from 'types/common'; import { cn } from 'utils/classnames'; import { getInitials } from 'utils/geInitials'; diff --git a/packages/frontend/src/components/projects/create/ConnectAccount.tsx b/packages/frontend/src/components/projects/create/ConnectAccount.tsx index ab90cb97..e69cd00a 100644 --- a/packages/frontend/src/components/projects/create/ConnectAccount.tsx +++ b/packages/frontend/src/components/projects/create/ConnectAccount.tsx @@ -1,21 +1,21 @@ -import React from "react"; -import OauthPopup from "react-oauth-popup"; +import React from 'react'; +import OauthPopup from 'react-oauth-popup'; -import { useGQLClient } from "../../../context/GQLClientContext"; -import { Button } from "../../shared/Button"; +import { useGQLClient } from '../../../context/GQLClientContext'; +import { Button } from '../../shared/Button'; import { GitIcon, EllipsesIcon, SnowballIcon, GithubIcon, GitTeaIcon, -} from "../../shared/CustomIcon"; -import { useToast } from "../../shared/Toast"; -import { IconWithFrame } from "../../shared/IconWithFrame"; -import { Heading } from "../../shared/Heading"; -import { MockConnectGitCard } from "./MockConnectGitCard"; +} from '../../shared/CustomIcon'; +import { useToast } from '../../shared/Toast'; +import { IconWithFrame } from '../../shared/IconWithFrame'; +import { Heading } from '../../shared/Heading'; +import { MockConnectGitCard } from './MockConnectGitCard'; -const SCOPES = "repo user"; +const SCOPES = 'repo user'; const GITHUB_OAUTH_URL = `https://github.com/login/oauth/authorize?client_id=${ import.meta.env.VITE_GITHUB_CLIENT_ID }&scope=${encodeURIComponent(SCOPES)}`; @@ -39,9 +39,9 @@ const ConnectAccount: React.FC = ({ onToken(token); toast({ onDismiss: dismiss, - id: "connected-to-github", - title: "The Git account is connected.", - variant: "success", + id: 'connected-to-github', + title: 'The Git account is connected.', + variant: 'success', }); }; diff --git a/packages/frontend/src/components/projects/create/ConnectAccountTabPanel.tsx b/packages/frontend/src/components/projects/create/ConnectAccountTabPanel.tsx index 7a9565b7..f7706520 100644 --- a/packages/frontend/src/components/projects/create/ConnectAccountTabPanel.tsx +++ b/packages/frontend/src/components/projects/create/ConnectAccountTabPanel.tsx @@ -1,6 +1,6 @@ -import React from "react"; +import React from 'react'; -import { Tabs } from "components/shared/Tabs"; +import { Tabs } from 'components/shared/Tabs'; const ConnectAccountTabPanel: React.FC = () => { return ( @@ -11,8 +11,8 @@ const ConnectAccountTabPanel: React.FC = () => { > {[ - { title: "Import a repository" }, - { title: "Start with a template" }, + { title: 'Import a repository' }, + { title: 'Start with a template' }, ].map(({ title }, index) => ( {title} diff --git a/packages/frontend/src/components/projects/create/Deploy.tsx b/packages/frontend/src/components/projects/create/Deploy.tsx index 8482b78e..e943dfed 100644 --- a/packages/frontend/src/components/projects/create/Deploy.tsx +++ b/packages/frontend/src/components/projects/create/Deploy.tsx @@ -1,17 +1,17 @@ -import React, { useCallback, useEffect } from "react"; -import { useNavigate, useParams, useSearchParams } from "react-router-dom"; +import React, { useCallback, useEffect } from 'react'; +import { useNavigate, useParams, useSearchParams } from 'react-router-dom'; -import { DeployStep, DeployStatus } from "./DeployStep"; -import { Stopwatch, setStopWatchOffset } from "../../StopWatch"; -import { Heading } from "../../shared/Heading"; -import { Button } from "../../shared/Button"; -import { ClockOutlineIcon, WarningIcon } from "../../shared/CustomIcon"; -import { CancelDeploymentDialog } from "../../projects/Dialog/CancelDeploymentDialog"; +import { DeployStep, DeployStatus } from './DeployStep'; +import { Stopwatch, setStopWatchOffset } from '../../StopWatch'; +import { Heading } from '../../shared/Heading'; +import { Button } from '../../shared/Button'; +import { ClockOutlineIcon, WarningIcon } from '../../shared/CustomIcon'; +import { CancelDeploymentDialog } from '../../projects/Dialog/CancelDeploymentDialog'; const TIMEOUT_DURATION = 5000; const Deploy = () => { const [searchParams] = useSearchParams(); - const projectId = searchParams.get("projectId"); + const projectId = searchParams.get('projectId'); const [open, setOpen] = React.useState(false); const handleOpen = () => setOpen(!open); diff --git a/packages/frontend/src/components/projects/create/DeployStep.tsx b/packages/frontend/src/components/projects/create/DeployStep.tsx index 8e750e2f..2453b7ee 100644 --- a/packages/frontend/src/components/projects/create/DeployStep.tsx +++ b/packages/frontend/src/components/projects/create/DeployStep.tsx @@ -1,11 +1,11 @@ -import React, { useState } from "react"; +import { useState } from 'react'; -import { Collapse } from "@material-tailwind/react"; +import { Collapse } from '@snowballtools/material-tailwind-react-fork'; -import { Stopwatch, setStopWatchOffset } from "../../StopWatch"; -import FormatMillisecond from "../../FormatMilliSecond"; -import processLogs from "../../../assets/process-logs.json"; -import { cn } from "utils/classnames"; +import { Stopwatch, setStopWatchOffset } from '../../StopWatch'; +import FormatMillisecond from '../../FormatMilliSecond'; +import processLogs from '../../../assets/process-logs.json'; +import { cn } from 'utils/classnames'; import { CheckRoundFilledIcon, ClockOutlineIcon, @@ -13,15 +13,15 @@ import { LoaderIcon, MinusCircleIcon, PlusIcon, -} from "components/shared/CustomIcon"; -import { Button } from "components/shared/Button"; -import { useToast } from "components/shared/Toast"; -import { useIntersectionObserver } from "usehooks-ts"; +} from 'components/shared/CustomIcon'; +import { Button } from 'components/shared/Button'; +import { useToast } from 'components/shared/Toast'; +import { useIntersectionObserver } from 'usehooks-ts'; enum DeployStatus { - PROCESSING = "progress", - COMPLETE = "complete", - NOT_STARTED = "notStarted", + PROCESSING = 'progress', + COMPLETE = 'complete', + NOT_STARTED = 'notStarted', } interface DeployStepsProps { @@ -52,8 +52,8 @@ const DeployStep = ({ {/* Collapisble trigger */} @@ -133,15 +133,15 @@ const DeployStep = ({ )} {/* Copy log button */} -
    +
    diff --git a/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx b/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx index 09bfe11c..4c55e246 100644 --- a/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx +++ b/packages/frontend/src/components/projects/project/deployments/DeploymentDetailsCard.tsx @@ -1,4 +1,4 @@ -import React, { useCallback } from 'react'; +import { useCallback } from 'react'; import { Deployment, DeploymentStatus, diff --git a/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx b/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx index fd008de6..79e2e04d 100644 --- a/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx +++ b/packages/frontend/src/components/projects/project/deployments/DeploymentDialogBodyCard.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Deployment } from 'gql-client'; import { relativeTimeMs } from 'utils/time'; diff --git a/packages/frontend/src/components/projects/project/deployments/DeploymentMenu.tsx b/packages/frontend/src/components/projects/project/deployments/DeploymentMenu.tsx index 516b468a..c2b62fd1 100644 --- a/packages/frontend/src/components/projects/project/deployments/DeploymentMenu.tsx +++ b/packages/frontend/src/components/projects/project/deployments/DeploymentMenu.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import { useState } from 'react'; import toast from 'react-hot-toast'; import { Deployment, Domain, Environment, Project } from 'gql-client'; import { Button } from 'components/shared/Button'; @@ -15,7 +15,7 @@ import { MenuHandler, MenuItem, MenuList, -} from '@material-tailwind/react'; +} from '@snowballtools/material-tailwind-react-fork'; import { ComponentPropsWithRef } from 'react'; import AssignDomainDialog from './AssignDomainDialog'; import { useGQLClient } from 'context/GQLClientContext'; @@ -96,11 +96,10 @@ export const DeploymentMenu = ({ aria-label="Toggle Menu" /> - + setAssignDomainDialog(!assignDomainDialog)} - placeholder={''} > Assign domain @@ -122,7 +120,6 @@ export const DeploymentMenu = ({ className="hover:bg-base-bg-emphasized flex items-center gap-3" onClick={() => setChangeToProduction(!changeToProduction)} disabled={!(deployment.environment !== Environment.Production)} - placeholder={''} > Change to production @@ -136,7 +133,6 @@ export const DeploymentMenu = ({ deployment.isCurrent ) } - placeholder={''} > Redeploy to production @@ -148,7 +144,6 @@ export const DeploymentMenu = ({ deployment.environment !== Environment.Production || !Boolean(currentDeployment) } - placeholder={''} > Rollback to this version diff --git a/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx b/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx index 348ecaf0..e63eac4c 100644 --- a/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx +++ b/packages/frontend/src/components/projects/project/deployments/FilterForm.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { Input } from 'components/shared/Input'; import { @@ -10,8 +10,8 @@ import { WarningTriangleIcon, } from 'components/shared/CustomIcon'; import { DatePicker } from 'components/shared/DatePicker'; -import { Value } from 'react-calendar/dist/cjs/shared/types'; import { Select, SelectOption } from 'components/shared/Select'; +import { Value } from 'types/vendor'; export enum StatusOptions { ALL_STATUS = 'All status', diff --git a/packages/frontend/src/components/projects/project/overview/Activity/Activity.tsx b/packages/frontend/src/components/projects/project/overview/Activity/Activity.tsx index 38b4d959..82d5e016 100644 --- a/packages/frontend/src/components/projects/project/overview/Activity/Activity.tsx +++ b/packages/frontend/src/components/projects/project/overview/Activity/Activity.tsx @@ -1,6 +1,4 @@ -import React from 'react'; - -import { GitCommitWithBranch } from 'types'; +import { GitCommitWithBranch } from '../../../../../types/types'; import { Heading } from 'components/shared/Heading'; import ActivityCard from './ActivityCard'; import { Button } from 'components/shared/Button'; diff --git a/packages/frontend/src/components/projects/project/overview/Activity/ActivityCard.tsx b/packages/frontend/src/components/projects/project/overview/Activity/ActivityCard.tsx index 6d86ecd5..278a727c 100644 --- a/packages/frontend/src/components/projects/project/overview/Activity/ActivityCard.tsx +++ b/packages/frontend/src/components/projects/project/overview/Activity/ActivityCard.tsx @@ -1,6 +1,5 @@ -import React from 'react'; import { Link } from 'react-router-dom'; -import { GitCommitWithBranch } from '../../../../../types'; +import { GitCommitWithBranch } from '../../../../../types/types'; import { Avatar } from 'components/shared/Avatar'; import { Button } from 'components/shared/Button'; import { diff --git a/packages/frontend/src/components/projects/project/overview/OverviewInfo.tsx b/packages/frontend/src/components/projects/project/overview/OverviewInfo.tsx index 386d1c5f..f926072e 100644 --- a/packages/frontend/src/components/projects/project/overview/OverviewInfo.tsx +++ b/packages/frontend/src/components/projects/project/overview/OverviewInfo.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { PropsWithChildren } from 'react'; import { cloneElement } from 'utils/cloneElement'; diff --git a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx index cb93f260..5cf0f0f6 100644 --- a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx +++ b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx @@ -1,9 +1,12 @@ -import React from 'react'; import { UseFormRegister } from 'react-hook-form'; -import { Typography, Input, IconButton } from '@material-tailwind/react'; +import { + Typography, + Input, + IconButton, +} from '@snowballtools/material-tailwind-react-fork'; -import { EnvironmentVariablesFormValues } from '../../../../types'; +import { EnvironmentVariablesFormValues } from '../../../../types/types'; interface AddEnvironmentVariableRowProps { onDelete: () => void; @@ -21,22 +24,16 @@ const AddEnvironmentVariableRow = ({ return (
    - - Key - + Key
    - - Value - + Value onDelete()} disabled={isDeleteDisabled} - placeholder={''} > {'>'} diff --git a/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx b/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx index cd564e81..3f8372c3 100644 --- a/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx +++ b/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx @@ -1,4 +1,4 @@ -import React, { useCallback } from 'react'; +import { useCallback } from 'react'; import { useForm } from 'react-hook-form'; import { AddProjectMemberInput, Permission } from 'gql-client'; @@ -11,7 +11,7 @@ import { Input, Typography, Checkbox, -} from '@material-tailwind/react'; +} from '@snowballtools/material-tailwind-react-fork'; interface AddMemberDialogProp { open: boolean; @@ -61,59 +61,46 @@ const AddMemberDialog = ({ }, []); return ( - - + +
    Add member
    - - + + We will send an invitation link to this email address. - - Email address - + Email address - - Permissions - - + Permissions + You can change this later if required. - - diff --git a/packages/frontend/src/components/projects/project/settings/DeleteProjectDialog.tsx b/packages/frontend/src/components/projects/project/settings/DeleteProjectDialog.tsx index b7169d39..a2465302 100644 --- a/packages/frontend/src/components/projects/project/settings/DeleteProjectDialog.tsx +++ b/packages/frontend/src/components/projects/project/settings/DeleteProjectDialog.tsx @@ -1,4 +1,4 @@ -import React, { useCallback } from 'react'; +import { useCallback } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { useForm } from 'react-hook-form'; import toast from 'react-hot-toast'; @@ -12,7 +12,7 @@ import { DialogFooter, Input, Typography, -} from '@material-tailwind/react'; +} from '@snowballtools/material-tailwind-react-fork'; import { useGQLClient } from '../../../../context/GQLClientContext'; interface DeleteProjectDialogProp { @@ -53,21 +53,20 @@ const DeleteProjectDialog = ({ }, [client, project, handleOpen]); return ( - - + +
    Delete project?
    - - + + Deleting your project is irreversible. Enter your project’s name  ({project.name}) @@ -75,23 +74,17 @@ const DeleteProjectDialog = ({ value === project.name, })} /> - + ^ Deleting your project is irreversible. - - diff --git a/packages/frontend/src/components/projects/project/settings/DisplayEnvironmentVariables.tsx b/packages/frontend/src/components/projects/project/settings/DisplayEnvironmentVariables.tsx index 20a70d8c..7c07c88f 100644 --- a/packages/frontend/src/components/projects/project/settings/DisplayEnvironmentVariables.tsx +++ b/packages/frontend/src/components/projects/project/settings/DisplayEnvironmentVariables.tsx @@ -1,5 +1,9 @@ -import React, { useState } from 'react'; -import { Card, Collapse, Typography } from '@material-tailwind/react'; +import { useState } from 'react'; +import { + Card, + Collapse, + Typography, +} from '@snowballtools/material-tailwind-react-fork'; import EditEnvironmentVariableRow from './EditEnvironmentVariableRow'; import { Environment, EnvironmentVariable } from 'gql-client'; @@ -29,11 +33,11 @@ const DisplayEnvironmentVariables = ({
    {variables.length === 0 ? ( - - + + No environment variables added yet. - + Once you add them, they’ll show up here. diff --git a/packages/frontend/src/components/projects/project/settings/DomainCard.tsx b/packages/frontend/src/components/projects/project/settings/DomainCard.tsx index e8a7c81c..02e5546f 100644 --- a/packages/frontend/src/components/projects/project/settings/DomainCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/DomainCard.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import { useState } from 'react'; import toast from 'react-hot-toast'; import { Domain, DomainStatus, Project } from 'gql-client'; @@ -10,7 +10,7 @@ import { MenuList, MenuItem, Card, -} from '@material-tailwind/react'; +} from '@snowballtools/material-tailwind-react-fork'; import EditDomainDialog from './EditDomainDialog'; import { useGQLClient } from 'context/GQLClientContext'; @@ -68,7 +68,7 @@ const DomainCard = ({ <>
    - + ^ {domain.name} - + { setEditDialogOpen((preVal) => !preVal); }} - placeholder={''} > ^ Edit domain setDeleteDialogOpen((preVal) => !preVal)} - placeholder={''} > ^ Delete domain @@ -130,21 +128,15 @@ const DomainCard = ({ />
    - - Production - + Production {domain.status === DomainStatus.Pending && ( - + {refreshStatus === RefreshStatus.IDLE ? ( - + ^ Add these records to your domain and refresh to check ) : refreshStatus === RefreshStatus.CHECKING ? ( - + ^ Checking records for {domain.name} ) : ( diff --git a/packages/frontend/src/components/projects/project/settings/EditDomainDialog.tsx b/packages/frontend/src/components/projects/project/settings/EditDomainDialog.tsx index b5984acb..113b10aa 100644 --- a/packages/frontend/src/components/projects/project/settings/EditDomainDialog.tsx +++ b/packages/frontend/src/components/projects/project/settings/EditDomainDialog.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useMemo } from 'react'; +import { useCallback, useEffect, useMemo } from 'react'; import { Controller, useForm, SubmitHandler } from 'react-hook-form'; import toast from 'react-hot-toast'; import { Domain } from 'gql-client'; @@ -13,7 +13,7 @@ import { Typography, Select, Option, -} from '@material-tailwind/react'; +} from '@snowballtools/material-tailwind-react-fork'; import { useGQLClient } from '../../../../context/GQLClientContext'; @@ -122,32 +122,27 @@ const EditDomainDialog = ({ }, [domain]); return ( - - + +
    Edit domain
    - - - Domain name - - - - Redirect to - + + Domain name + + Redirect to ( - {redirectOptions.map((option, key) => ( - - diff --git a/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx b/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx index 0e382986..dafa876d 100644 --- a/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx +++ b/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx @@ -1,9 +1,13 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useForm } from 'react-hook-form'; import toast from 'react-hot-toast'; import { EnvironmentVariable } from 'gql-client'; -import { IconButton, Input, Typography } from '@material-tailwind/react'; +import { + IconButton, + Input, + Typography, +} from '@snowballtools/material-tailwind-react-fork'; import { useGQLClient } from 'context/GQLClientContext'; import { DeleteVariableDialog } from 'components/projects/Dialog/DeleteVariableDialog'; @@ -84,21 +88,12 @@ const EditEnvironmentVariableRow = ({ <>
    - - Key - - + Key +
    - - Value - + Value {'S'} @@ -130,7 +124,6 @@ const EditEnvironmentVariableRow = ({ reset(); setEdit((preVal) => !preVal); }} - placeholder={''} > {'C'} @@ -144,7 +137,6 @@ const EditEnvironmentVariableRow = ({ onClick={() => { setEdit((preVal) => !preVal); }} - placeholder={''} > {'E'} @@ -153,7 +145,6 @@ const EditEnvironmentVariableRow = ({ setDeleteDialogOpen((preVal) => !preVal)} - placeholder={''} > {'D'} diff --git a/packages/frontend/src/components/projects/project/settings/GitSelectionSection.tsx b/packages/frontend/src/components/projects/project/settings/GitSelectionSection.tsx index 05b8887f..8982b1ee 100644 --- a/packages/frontend/src/components/projects/project/settings/GitSelectionSection.tsx +++ b/packages/frontend/src/components/projects/project/settings/GitSelectionSection.tsx @@ -1,6 +1,4 @@ -import React from 'react'; - -import { GitSelect } from '../../../../types'; +import { GitSelect } from '../../../../types/types'; const GitSelectionSection = ({ gitSelectionHandler, diff --git a/packages/frontend/src/components/projects/project/settings/MemberCard.tsx b/packages/frontend/src/components/projects/project/settings/MemberCard.tsx index 8dd8fd16..dcc4e5c4 100644 --- a/packages/frontend/src/components/projects/project/settings/MemberCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/MemberCard.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useState } from 'react'; +import { useCallback, useState } from 'react'; import { Permission, User } from 'gql-client'; import { @@ -7,7 +7,7 @@ import { Chip, IconButton, Tooltip, -} from '@material-tailwind/react'; +} from '@snowballtools/material-tailwind-react-fork'; import { formatAddress } from 'utils/format'; import { RemoveMemberDialog } from 'components/projects/Dialog/RemoveMemberDialog'; @@ -103,7 +103,6 @@ const MemberCard = ({ selected={(_, index) => ( {DROPDOWN_OPTIONS[index!]?.label} )} - placeholder={''} > {DROPDOWN_OPTIONS.map((permission, key) => (
    ^
    - - {linkedRepo.full_name} - - - Connected just now - + {linkedRepo.full_name} + Connected just now
    diff --git a/packages/frontend/src/components/projects/project/settings/SetupDomain.tsx b/packages/frontend/src/components/projects/project/settings/SetupDomain.tsx index ae81f8d7..d8e7dd44 100644 --- a/packages/frontend/src/components/projects/project/settings/SetupDomain.tsx +++ b/packages/frontend/src/components/projects/project/settings/SetupDomain.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { useForm } from 'react-hook-form'; @@ -8,7 +8,7 @@ import { Button, Input, Alert, -} from '@material-tailwind/react'; +} from '@snowballtools/material-tailwind-react-fork'; const SetupDomain = () => { const { @@ -54,23 +54,18 @@ const SetupDomain = () => { className="flex flex-col gap-6 w-full" >
    - - Setup domain name - - + Setup domain name + Add your domain and setup redirects
    - - Domain name - + Domain name { {isValid && (
    - Primary domain + Primary domain
    { className="w-fit" color={isValid ? 'blue' : 'gray'} type="submit" - placeholder={''} > ^ Next diff --git a/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx b/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx index 80aaf4f1..c0ecbf80 100644 --- a/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx @@ -1,7 +1,7 @@ -import React, { useState } from 'react'; +import { useState } from 'react'; import toast from 'react-hot-toast'; -import { Button } from '@material-tailwind/react'; +import { Button } from '@snowballtools/material-tailwind-react-fork'; import { DeleteWebhookDialog } from 'components/projects/Dialog/DeleteWebhookDialog'; @@ -22,7 +22,6 @@ const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => { navigator.clipboard.writeText(webhookUrl); toast.success('Copied to clipboard'); }} - placeholder={''} > C @@ -32,7 +31,6 @@ const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => { onClick={() => { setDeleteDialogOpen(true); }} - placeholder={''} > X diff --git a/packages/frontend/src/components/shared/AsyncSelect.tsx b/packages/frontend/src/components/shared/AsyncSelect.tsx index 303cf22f..18bae928 100644 --- a/packages/frontend/src/components/shared/AsyncSelect.tsx +++ b/packages/frontend/src/components/shared/AsyncSelect.tsx @@ -1,6 +1,9 @@ // https://github.com/creativetimofficial/material-tailwind/issues/419#issuecomment-1760474312 import React, { useEffect, useState } from 'react'; -import { Select, SelectProps } from '@material-tailwind/react'; +import { + Select, + SelectProps, +} from '@snowballtools/material-tailwind-react-fork'; // TODO: Use correct type for ref // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -9,7 +12,7 @@ const AsyncSelect = React.forwardRef((props: SelectProps, ref: any) => { useEffect(() => setKey((preVal) => preVal + 1), [props]); - return ; }); AsyncSelect.displayName = 'AsyncSelect'; diff --git a/packages/frontend/src/components/shared/Avatar/Avatar.tsx b/packages/frontend/src/components/shared/Avatar/Avatar.tsx index fd7b1e59..c7f6744a 100644 --- a/packages/frontend/src/components/shared/Avatar/Avatar.tsx +++ b/packages/frontend/src/components/shared/Avatar/Avatar.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { type ComponentPropsWithoutRef, type ComponentProps } from 'react'; import { avatarTheme, type AvatarVariants } from './Avatar.theme'; import * as PrimitiveAvatar from '@radix-ui/react-avatar'; diff --git a/packages/frontend/src/components/shared/Badge/Badge.tsx b/packages/frontend/src/components/shared/Badge/Badge.tsx index 50bae236..33471078 100644 --- a/packages/frontend/src/components/shared/Badge/Badge.tsx +++ b/packages/frontend/src/components/shared/Badge/Badge.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { ComponentPropsWithoutRef } from 'react'; import { BadgeTheme, badgeTheme } from './Badge.theme'; diff --git a/packages/frontend/src/components/shared/Button/Button.tsx b/packages/frontend/src/components/shared/Button/Button.tsx index 90d9085c..d1ac4d49 100644 --- a/packages/frontend/src/components/shared/Button/Button.tsx +++ b/packages/frontend/src/components/shared/Button/Button.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, useCallback } from 'react'; +import { forwardRef, useCallback } from 'react'; import type { ComponentPropsWithoutRef, ReactNode } from 'react'; import { buttonTheme } from './Button.theme'; diff --git a/packages/frontend/src/components/shared/Calendar/Calendar.tsx b/packages/frontend/src/components/shared/Calendar/Calendar.tsx index 613f785f..4ccb8655 100644 --- a/packages/frontend/src/components/shared/Calendar/Calendar.tsx +++ b/packages/frontend/src/components/shared/Calendar/Calendar.tsx @@ -1,4 +1,4 @@ -import React, { +import { ComponentPropsWithRef, MouseEvent, ReactNode, diff --git a/packages/frontend/src/components/shared/Checkbox/Checkbox.tsx b/packages/frontend/src/components/shared/Checkbox/Checkbox.tsx index 0ba9d825..12d2abbf 100644 --- a/packages/frontend/src/components/shared/Checkbox/Checkbox.tsx +++ b/packages/frontend/src/components/shared/Checkbox/Checkbox.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import * as CheckboxRadix from '@radix-ui/react-checkbox'; import { type CheckboxProps as CheckboxRadixProps } from '@radix-ui/react-checkbox'; diff --git a/packages/frontend/src/components/shared/ConfirmDialog.tsx b/packages/frontend/src/components/shared/ConfirmDialog.tsx index e7374ad5..887291cd 100644 --- a/packages/frontend/src/components/shared/ConfirmDialog.tsx +++ b/packages/frontend/src/components/shared/ConfirmDialog.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode } from 'react'; +import { ReactNode } from 'react'; import { Modal, ModalProps } from './Modal'; import { Button, ButtonOrLinkProps } from './Button'; diff --git a/packages/frontend/src/components/shared/CustomIcon/ArrowLeftCircleFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ArrowLeftCircleFilledIcon.tsx index a2d348d5..285bfa98 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ArrowLeftCircleFilledIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ArrowLeftCircleFilledIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ArrowLeftCircleFilledIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx index 480f70e4..842f2f3b 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ArrowRightCircleFilledIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleIcon.tsx index cce7cc58..c1e19a09 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ArrowRightCircleIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/BranchIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/BranchIcon.tsx index aa1f71b0..42b32afd 100644 --- a/packages/frontend/src/components/shared/CustomIcon/BranchIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/BranchIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const BranchIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/BranchStrokeIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/BranchStrokeIcon.tsx index e8b95175..0348e35d 100644 --- a/packages/frontend/src/components/shared/CustomIcon/BranchStrokeIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/BranchStrokeIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const BranchStrokeIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/BuildingIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/BuildingIcon.tsx index cae3610e..37cde199 100644 --- a/packages/frontend/src/components/shared/CustomIcon/BuildingIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/BuildingIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const BuildingIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CalendarDaysIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CalendarDaysIcon.tsx index 2528559e..c15be87a 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CalendarDaysIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CalendarDaysIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CalendarDaysIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CalendarIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CalendarIcon.tsx index 7e841bb1..4caf93e3 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CalendarIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CalendarIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CalendarIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CheckIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CheckIcon.tsx index e1096cb1..e873b96a 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CheckIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CheckIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CheckIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CheckRadioIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CheckRadioIcon.tsx index 9795cb3e..def78b74 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CheckRadioIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CheckRadioIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CheckRadioIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CheckRadioOutlineIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CheckRadioOutlineIcon.tsx index 79fe29b6..dd914b7c 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CheckRadioOutlineIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CheckRadioOutlineIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CheckRadioOutlineIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CheckRoundFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CheckRoundFilledIcon.tsx index 7811a1ec..3ec506c6 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CheckRoundFilledIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CheckRoundFilledIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CheckRoundFilledIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/ChevronDoubleDownIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ChevronDoubleDownIcon.tsx index 64993ac6..a604e71a 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ChevronDoubleDownIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ChevronDoubleDownIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ChevronDoubleDownIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/ChevronDownIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ChevronDownIcon.tsx index 1e83d823..6b85cdfc 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ChevronDownIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ChevronDownIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ChevronDownIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/ChevronGrabberHorizontal.tsx b/packages/frontend/src/components/shared/CustomIcon/ChevronGrabberHorizontal.tsx index b62f79d0..c9a12c79 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ChevronGrabberHorizontal.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ChevronGrabberHorizontal.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ChevronGrabberHorizontal = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/ChevronLeft.tsx b/packages/frontend/src/components/shared/CustomIcon/ChevronLeft.tsx index f9c4885c..2cf5ef20 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ChevronLeft.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ChevronLeft.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ChevronLeft = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/ChevronRight.tsx b/packages/frontend/src/components/shared/CustomIcon/ChevronRight.tsx index 75da0052..95823c69 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ChevronRight.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ChevronRight.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ChevronRight = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/ChevronUpDown.tsx b/packages/frontend/src/components/shared/CustomIcon/ChevronUpDown.tsx index ac6f1723..b49816fd 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ChevronUpDown.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ChevronUpDown.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ChevronUpDown = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CirclePlaceholderOnIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CirclePlaceholderOnIcon.tsx index deb69392..7858d8c0 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CirclePlaceholderOnIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CirclePlaceholderOnIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CirclePlaceholderOnIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/ClockIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ClockIcon.tsx index ceba322b..911d5859 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ClockIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ClockIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ClockIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/ClockOutlineIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ClockOutlineIcon.tsx index 01fec9ba..adc706b1 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ClockOutlineIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ClockOutlineIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ClockOutlineIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CommitIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CommitIcon.tsx index 38bb05f4..cc58413e 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CommitIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CommitIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CommitIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CopyIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CopyIcon.tsx index 34975bec..a10049c7 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CopyIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CopyIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CopyIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CrossCircleIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CrossCircleIcon.tsx index 78f563c5..d613684b 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CrossCircleIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CrossCircleIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CrossCircleIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CrossIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CrossIcon.tsx index 8d649f0c..13f260c9 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CrossIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CrossIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CrossIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CursorBoxIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CursorBoxIcon.tsx index df7889cc..59334259 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CursorBoxIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CursorBoxIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const CursorBoxIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/CustomIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CustomIcon.tsx index 6b32bb73..9e7e3d44 100644 --- a/packages/frontend/src/components/shared/CustomIcon/CustomIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/CustomIcon.tsx @@ -1,4 +1,4 @@ -import React, { ComponentPropsWithoutRef } from 'react'; +import { ComponentPropsWithoutRef } from 'react'; export interface CustomIconProps extends ComponentPropsWithoutRef<'svg'> { size?: number | string; // width and height will both be set as the same value diff --git a/packages/frontend/src/components/shared/CustomIcon/EllipseIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/EllipseIcon.tsx index 5e274364..6fdc5cbe 100644 --- a/packages/frontend/src/components/shared/CustomIcon/EllipseIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/EllipseIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const EllipseIcon: React.FC = (props) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/EllipsesIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/EllipsesIcon.tsx index c6cd58b5..b9500a71 100644 --- a/packages/frontend/src/components/shared/CustomIcon/EllipsesIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/EllipsesIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; import { EllipseIcon } from './EllipseIcon'; diff --git a/packages/frontend/src/components/shared/CustomIcon/FolderIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/FolderIcon.tsx index cf82caa5..022ac811 100644 --- a/packages/frontend/src/components/shared/CustomIcon/FolderIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/FolderIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const FolderIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/GitHubLogo.tsx b/packages/frontend/src/components/shared/CustomIcon/GitHubLogo.tsx index 4a650760..f870f83a 100644 --- a/packages/frontend/src/components/shared/CustomIcon/GitHubLogo.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/GitHubLogo.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const GitHubLogo = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/GitIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/GitIcon.tsx index df23b2f2..e048198f 100644 --- a/packages/frontend/src/components/shared/CustomIcon/GitIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/GitIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const GitIcon: React.FC = (props) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/GitTeaIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/GitTeaIcon.tsx index 6131822a..2939ceba 100644 --- a/packages/frontend/src/components/shared/CustomIcon/GitTeaIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/GitTeaIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const GitTeaIcon: React.FC = (props) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/GithubIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/GithubIcon.tsx index 4a0f59ab..01db4b9f 100644 --- a/packages/frontend/src/components/shared/CustomIcon/GithubIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/GithubIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const GithubIcon: React.FC = (props) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/GithubStrokeIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/GithubStrokeIcon.tsx index 74d259ba..30a142b0 100644 --- a/packages/frontend/src/components/shared/CustomIcon/GithubStrokeIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/GithubStrokeIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const GithubStrokeIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/GlobeIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/GlobeIcon.tsx index f2a23cab..1aa97335 100644 --- a/packages/frontend/src/components/shared/CustomIcon/GlobeIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/GlobeIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const GlobeIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/HorizontalDotIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/HorizontalDotIcon.tsx index bb77271f..6c98903f 100644 --- a/packages/frontend/src/components/shared/CustomIcon/HorizontalDotIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/HorizontalDotIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const HorizontalDotIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/InfoRoundFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/InfoRoundFilledIcon.tsx index d7eb24c4..44511f8f 100644 --- a/packages/frontend/src/components/shared/CustomIcon/InfoRoundFilledIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/InfoRoundFilledIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const InfoRoundFilledIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/InfoSquareIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/InfoSquareIcon.tsx index 273131d6..3b8e6769 100644 --- a/packages/frontend/src/components/shared/CustomIcon/InfoSquareIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/InfoSquareIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const InfoSquareIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/LifeBuoyIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/LifeBuoyIcon.tsx index 1e20afc4..aa5f3f0a 100644 --- a/packages/frontend/src/components/shared/CustomIcon/LifeBuoyIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/LifeBuoyIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const LifeBuoyIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/LinkChainIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/LinkChainIcon.tsx index 66ff9cd4..3abcd41b 100644 --- a/packages/frontend/src/components/shared/CustomIcon/LinkChainIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/LinkChainIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const LinkChainIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/LinkIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/LinkIcon.tsx index 2f0aa923..cd459259 100644 --- a/packages/frontend/src/components/shared/CustomIcon/LinkIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/LinkIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const LinkIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/LoaderIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/LoaderIcon.tsx index 720bfc22..22dd6a90 100644 --- a/packages/frontend/src/components/shared/CustomIcon/LoaderIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/LoaderIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const LoaderIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/LoadingIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/LoadingIcon.tsx index 012fa986..58f80a90 100644 --- a/packages/frontend/src/components/shared/CustomIcon/LoadingIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/LoadingIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const LoadingIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/LockIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/LockIcon.tsx index e3a588df..0a20f967 100644 --- a/packages/frontend/src/components/shared/CustomIcon/LockIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/LockIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const LockIcon: React.FC = (props) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/LogoutIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/LogoutIcon.tsx index ec3ff102..292cd9b5 100644 --- a/packages/frontend/src/components/shared/CustomIcon/LogoutIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/LogoutIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const LogoutIcon: React.FC = (props) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/MenuIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/MenuIcon.tsx index 4cdefc06..f1335c03 100644 --- a/packages/frontend/src/components/shared/CustomIcon/MenuIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/MenuIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const MenuIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/MinusCircleIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/MinusCircleIcon.tsx index 7f685677..bd631313 100644 --- a/packages/frontend/src/components/shared/CustomIcon/MinusCircleIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/MinusCircleIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const MinusCircleIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/NotificationBellIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/NotificationBellIcon.tsx index 2980e2f5..2e60bb0e 100644 --- a/packages/frontend/src/components/shared/CustomIcon/NotificationBellIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/NotificationBellIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const NotificationBellIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/PencilIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/PencilIcon.tsx index 11da196d..aefe8fde 100644 --- a/packages/frontend/src/components/shared/CustomIcon/PencilIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/PencilIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const PencilIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/PlusIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/PlusIcon.tsx index da4b1ee0..bbebef53 100644 --- a/packages/frontend/src/components/shared/CustomIcon/PlusIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/PlusIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const PlusIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundFilledIcon.tsx index 7e1d9fe5..1fb707a9 100644 --- a/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundFilledIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundFilledIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const QuestionMarkRoundFilledIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundIcon.tsx index 868efbc3..5aa25fe9 100644 --- a/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/QuestionMarkRoundIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const QuestionMarkRoundIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/RefreshIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/RefreshIcon.tsx index ca818a25..f9b15001 100644 --- a/packages/frontend/src/components/shared/CustomIcon/RefreshIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/RefreshIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const RefreshIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/RocketIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/RocketIcon.tsx index 488fba8f..01710097 100644 --- a/packages/frontend/src/components/shared/CustomIcon/RocketIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/RocketIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const RocketIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/SearchIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/SearchIcon.tsx index b72c059b..45aca2b0 100644 --- a/packages/frontend/src/components/shared/CustomIcon/SearchIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/SearchIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const SearchIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/SettingsSlidersIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/SettingsSlidersIcon.tsx index 45a870b4..6eae13b5 100644 --- a/packages/frontend/src/components/shared/CustomIcon/SettingsSlidersIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/SettingsSlidersIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const SettingsSlidersIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/SnowballIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/SnowballIcon.tsx index 343e412b..27faa03a 100644 --- a/packages/frontend/src/components/shared/CustomIcon/SnowballIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/SnowballIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const SnowballIcon: React.FC = (props) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/StorageIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/StorageIcon.tsx index 38a651f1..27218aef 100644 --- a/packages/frontend/src/components/shared/CustomIcon/StorageIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/StorageIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const StorageIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/TrendingIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/TrendingIcon.tsx index 19e40ede..ba851959 100644 --- a/packages/frontend/src/components/shared/CustomIcon/TrendingIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/TrendingIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const TrendingIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/UndoIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/UndoIcon.tsx index 713a0b6e..0b260fc8 100644 --- a/packages/frontend/src/components/shared/CustomIcon/UndoIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/UndoIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const UndoIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/WarningDiamondIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/WarningDiamondIcon.tsx index cb60f239..071ff81c 100644 --- a/packages/frontend/src/components/shared/CustomIcon/WarningDiamondIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/WarningDiamondIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const WarningDiamondIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/WarningIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/WarningIcon.tsx index 1fd27fb4..1175330b 100644 --- a/packages/frontend/src/components/shared/CustomIcon/WarningIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/WarningIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const WarningIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/WarningTriangleIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/WarningTriangleIcon.tsx index d5303a60..54992d81 100644 --- a/packages/frontend/src/components/shared/CustomIcon/WarningTriangleIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/WarningTriangleIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from './CustomIcon'; export const WarningTriangleIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/templates/KotlinIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/templates/KotlinIcon.tsx index 973b5f4f..bcdd4612 100644 --- a/packages/frontend/src/components/shared/CustomIcon/templates/KotlinIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/templates/KotlinIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from '../CustomIcon'; export const KotlinIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/templates/PWAIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/templates/PWAIcon.tsx index f0edb351..9bd6e090 100644 --- a/packages/frontend/src/components/shared/CustomIcon/templates/PWAIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/templates/PWAIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from '../CustomIcon'; export const PWAIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/templates/ReactNativeIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/templates/ReactNativeIcon.tsx index bc170f98..6e457048 100644 --- a/packages/frontend/src/components/shared/CustomIcon/templates/ReactNativeIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/templates/ReactNativeIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from '../CustomIcon'; export const ReactNativeIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/templates/SwiftIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/templates/SwiftIcon.tsx index d3422dff..50590bd2 100644 --- a/packages/frontend/src/components/shared/CustomIcon/templates/SwiftIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/templates/SwiftIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from '../CustomIcon'; export const SwitfIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/CustomIcon/templates/TemplateIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/templates/TemplateIcon.tsx index c7b307bb..fcc74154 100644 --- a/packages/frontend/src/components/shared/CustomIcon/templates/TemplateIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/templates/TemplateIcon.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import { useMemo } from 'react'; import { CustomIconProps } from '../CustomIcon'; import { ReactNativeIcon } from './ReactNativeIcon'; import { cloneIcon } from 'utils/cloneIcon'; diff --git a/packages/frontend/src/components/shared/CustomIcon/templates/WebAppIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/templates/WebAppIcon.tsx index f707fccc..2a1c7eb9 100644 --- a/packages/frontend/src/components/shared/CustomIcon/templates/WebAppIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/templates/WebAppIcon.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { CustomIcon, CustomIconProps } from '../CustomIcon'; export const WebAppIcon = (props: CustomIconProps) => { diff --git a/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx b/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx index 464b9b74..804c3cc2 100644 --- a/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx +++ b/packages/frontend/src/components/shared/DatePicker/DatePicker.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useMemo, useState } from 'react'; +import { useCallback, useMemo, useState } from 'react'; import { Input, InputProps } from 'components/shared/Input'; import * as Popover from '@radix-ui/react-popover'; import { datePickerTheme } from './DatePicker.theme'; @@ -7,8 +7,8 @@ import { CalendarIcon, ChevronGrabberHorizontal, } from 'components/shared/CustomIcon'; -import { Value } from 'react-calendar/dist/cjs/shared/types'; import { format } from 'date-fns'; +import { Value } from 'types/vendor'; export interface DatePickerProps extends Omit { diff --git a/packages/frontend/src/components/shared/Heading/Heading.tsx b/packages/frontend/src/components/shared/Heading/Heading.tsx index 0621039f..d806dea0 100644 --- a/packages/frontend/src/components/shared/Heading/Heading.tsx +++ b/packages/frontend/src/components/shared/Heading/Heading.tsx @@ -1,4 +1,4 @@ -import React, { type PropsWithChildren } from 'react'; +import { type PropsWithChildren } from 'react'; import { headingTheme, type HeadingVariants } from './Heading.theme'; import { PolymorphicProps } from 'types/common'; diff --git a/packages/frontend/src/components/shared/IconWithFrame/IconWithFrame.tsx b/packages/frontend/src/components/shared/IconWithFrame/IconWithFrame.tsx index 77bea57a..8ede3c0d 100644 --- a/packages/frontend/src/components/shared/IconWithFrame/IconWithFrame.tsx +++ b/packages/frontend/src/components/shared/IconWithFrame/IconWithFrame.tsx @@ -1,4 +1,4 @@ -import React, { ComponentPropsWithoutRef, ReactNode } from 'react'; +import { ComponentPropsWithoutRef, ReactNode } from 'react'; import { cn } from 'utils/classnames'; interface IconWithFrameProps extends ComponentPropsWithoutRef<'div'> { diff --git a/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx b/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx index b3b2845c..f24a4cfc 100644 --- a/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx +++ b/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode, useCallback } from 'react'; +import { ReactNode, useCallback } from 'react'; import { ComponentPropsWithoutRef } from 'react'; import { InlineNotificationTheme, diff --git a/packages/frontend/src/components/shared/Input/Input.tsx b/packages/frontend/src/components/shared/Input/Input.tsx index 8dcc2bed..e8252281 100644 --- a/packages/frontend/src/components/shared/Input/Input.tsx +++ b/packages/frontend/src/components/shared/Input/Input.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode, useMemo } from 'react'; +import { ReactNode, useMemo } from 'react'; import { ComponentPropsWithoutRef } from 'react'; import { InputTheme, inputTheme } from './Input.theme'; import { WarningIcon } from 'components/shared/CustomIcon'; diff --git a/packages/frontend/src/components/shared/Modal/Modal.tsx b/packages/frontend/src/components/shared/Modal/Modal.tsx index ef9069f4..3cc21afc 100644 --- a/packages/frontend/src/components/shared/Modal/Modal.tsx +++ b/packages/frontend/src/components/shared/Modal/Modal.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import type { DialogProps } from '@radix-ui/react-dialog'; import { Root, Trigger } from '@radix-ui/react-dialog'; import type { ComponentPropsWithoutRef, PropsWithChildren } from 'react'; diff --git a/packages/frontend/src/components/shared/Modal/ModalBody/ModalBody.tsx b/packages/frontend/src/components/shared/Modal/ModalBody/ModalBody.tsx index 3079b267..21f51eed 100644 --- a/packages/frontend/src/components/shared/Modal/ModalBody/ModalBody.tsx +++ b/packages/frontend/src/components/shared/Modal/ModalBody/ModalBody.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import type { ComponentPropsWithoutRef, PropsWithChildren } from 'react'; import { modalTheme } from 'components/shared/Modal/Modal.theme'; diff --git a/packages/frontend/src/components/shared/Modal/ModalContent/ModalContent.tsx b/packages/frontend/src/components/shared/Modal/ModalContent/ModalContent.tsx index 166256a8..ec6388e2 100644 --- a/packages/frontend/src/components/shared/Modal/ModalContent/ModalContent.tsx +++ b/packages/frontend/src/components/shared/Modal/ModalContent/ModalContent.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import type { DialogContentProps } from '@radix-ui/react-dialog'; import { Close, Content, Overlay, Portal } from '@radix-ui/react-dialog'; import { Ref, forwardRef, type PropsWithChildren } from 'react'; diff --git a/packages/frontend/src/components/shared/Modal/ModalFooter/ModalFooter.tsx b/packages/frontend/src/components/shared/Modal/ModalFooter/ModalFooter.tsx index 5152e884..404033ca 100644 --- a/packages/frontend/src/components/shared/Modal/ModalFooter/ModalFooter.tsx +++ b/packages/frontend/src/components/shared/Modal/ModalFooter/ModalFooter.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import type { ComponentPropsWithoutRef, PropsWithChildren } from 'react'; import { modalTheme } from 'components/shared/Modal/Modal.theme'; diff --git a/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx b/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx index c0783847..72ba3424 100644 --- a/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx +++ b/packages/frontend/src/components/shared/Modal/ModalHeader/ModalHeader.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import type { DialogDescriptionProps } from '@radix-ui/react-dialog'; import { Description, Title } from '@radix-ui/react-dialog'; import type { ComponentPropsWithoutRef, PropsWithChildren } from 'react'; diff --git a/packages/frontend/src/components/shared/Modal/ModalProvider.tsx b/packages/frontend/src/components/shared/Modal/ModalProvider.tsx index 2be6bebd..0b2c8a97 100644 --- a/packages/frontend/src/components/shared/Modal/ModalProvider.tsx +++ b/packages/frontend/src/components/shared/Modal/ModalProvider.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import type { PropsWithChildren } from 'react'; import { createContext, useContext } from 'react'; diff --git a/packages/frontend/src/components/shared/OverflownText/OverflownText.tsx b/packages/frontend/src/components/shared/OverflownText/OverflownText.tsx index b03ea580..c3e6ee2a 100644 --- a/packages/frontend/src/components/shared/OverflownText/OverflownText.tsx +++ b/packages/frontend/src/components/shared/OverflownText/OverflownText.tsx @@ -1,7 +1,7 @@ import { cn } from 'utils/classnames'; import { Tooltip, TooltipProps } from 'components/shared/Tooltip'; import { debounce } from 'lodash'; -import React, { +import { ComponentPropsWithRef, PropsWithChildren, useRef, diff --git a/packages/frontend/src/components/shared/Radio/Radio.tsx b/packages/frontend/src/components/shared/Radio/Radio.tsx index 80468001..b86d90e9 100644 --- a/packages/frontend/src/components/shared/Radio/Radio.tsx +++ b/packages/frontend/src/components/shared/Radio/Radio.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Root as RadixRoot, RadioGroupProps, diff --git a/packages/frontend/src/components/shared/Radio/RadioItem.tsx b/packages/frontend/src/components/shared/Radio/RadioItem.tsx index d77f4752..36d78385 100644 --- a/packages/frontend/src/components/shared/Radio/RadioItem.tsx +++ b/packages/frontend/src/components/shared/Radio/RadioItem.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode, ComponentPropsWithoutRef } from 'react'; +import { ReactNode, ComponentPropsWithoutRef } from 'react'; import { Item as RadixRadio, Indicator as RadixIndicator, diff --git a/packages/frontend/src/components/shared/SegmentedControls/SegmentedControlItem.tsx b/packages/frontend/src/components/shared/SegmentedControls/SegmentedControlItem.tsx index 3fe5bda6..ec81d11d 100644 --- a/packages/frontend/src/components/shared/SegmentedControls/SegmentedControlItem.tsx +++ b/packages/frontend/src/components/shared/SegmentedControls/SegmentedControlItem.tsx @@ -1,4 +1,4 @@ -import React, { +import { forwardRef, type ComponentPropsWithoutRef, type ReactNode, diff --git a/packages/frontend/src/components/shared/SegmentedControls/SegmentedControls.tsx b/packages/frontend/src/components/shared/SegmentedControls/SegmentedControls.tsx index f96fe8c2..12423905 100644 --- a/packages/frontend/src/components/shared/SegmentedControls/SegmentedControls.tsx +++ b/packages/frontend/src/components/shared/SegmentedControls/SegmentedControls.tsx @@ -1,4 +1,4 @@ -import React, { +import { useCallback, type ComponentPropsWithoutRef, type ReactNode, diff --git a/packages/frontend/src/components/shared/Select/Select.tsx b/packages/frontend/src/components/shared/Select/Select.tsx index 2f1667de..f9b15300 100644 --- a/packages/frontend/src/components/shared/Select/Select.tsx +++ b/packages/frontend/src/components/shared/Select/Select.tsx @@ -1,4 +1,4 @@ -import React, { +import { ReactNode, useState, ComponentPropsWithoutRef, diff --git a/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx b/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx index 060be52a..e94cc32f 100644 --- a/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx +++ b/packages/frontend/src/components/shared/Select/SelectItem/SelectItem.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, ComponentPropsWithoutRef, useMemo } from 'react'; +import { forwardRef, ComponentPropsWithoutRef, useMemo } from 'react'; import { Overwrite, UseComboboxGetItemPropsReturnValue } from 'downshift'; import { SelectOption, SelectOrientation } from 'components/shared/Select'; import { selectItemTheme, SelectItemTheme } from './SelectItem.theme'; diff --git a/packages/frontend/src/components/shared/Select/SelectValue/SelectValue.tsx b/packages/frontend/src/components/shared/Select/SelectValue/SelectValue.tsx index 9eedfd48..72f1f58a 100644 --- a/packages/frontend/src/components/shared/Select/SelectValue/SelectValue.tsx +++ b/packages/frontend/src/components/shared/Select/SelectValue/SelectValue.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, ComponentPropsWithoutRef } from 'react'; +import { forwardRef, ComponentPropsWithoutRef } from 'react'; import { Overwrite, UseMultipleSelectionGetSelectedItemReturnValue, diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index 5dd1ed2d..63c47f8a 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { NavLink, useNavigate, useParams } from 'react-router-dom'; import { Organization, User } from 'gql-client'; import { motion } from 'framer-motion'; diff --git a/packages/frontend/src/components/shared/Sidebar/constants.tsx b/packages/frontend/src/components/shared/Sidebar/constants.tsx index 6c303105..5d41d073 100644 --- a/packages/frontend/src/components/shared/Sidebar/constants.tsx +++ b/packages/frontend/src/components/shared/Sidebar/constants.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { FolderIcon, SettingsSlidersIcon } from 'components/shared/CustomIcon'; export const SIDEBAR_MENU = (orgSlug?: string) => [ diff --git a/packages/frontend/src/components/shared/Steps/Step/Step.tsx b/packages/frontend/src/components/shared/Steps/Step/Step.tsx index 9d731139..458a97d1 100644 --- a/packages/frontend/src/components/shared/Steps/Step/Step.tsx +++ b/packages/frontend/src/components/shared/Steps/Step/Step.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, ComponentPropsWithoutRef } from 'react'; +import { useCallback, ComponentPropsWithoutRef } from 'react'; import { stepTheme, StepTheme } from './Step.theme'; import { CheckRoundFilledIcon, diff --git a/packages/frontend/src/components/shared/Steps/Steps.tsx b/packages/frontend/src/components/shared/Steps/Steps.tsx index cac61ff9..5250a075 100644 --- a/packages/frontend/src/components/shared/Steps/Steps.tsx +++ b/packages/frontend/src/components/shared/Steps/Steps.tsx @@ -1,4 +1,4 @@ -import React, { Fragment, ComponentPropsWithoutRef } from 'react'; +import { Fragment, ComponentPropsWithoutRef } from 'react'; import { stepsTheme, StepsTheme } from './Steps.theme'; import { Step, StepProps, StepTheme } from './Step'; diff --git a/packages/frontend/src/components/shared/Switch/Switch.tsx b/packages/frontend/src/components/shared/Switch/Switch.tsx index 32d35957..af8d065a 100644 --- a/packages/frontend/src/components/shared/Switch/Switch.tsx +++ b/packages/frontend/src/components/shared/Switch/Switch.tsx @@ -1,4 +1,4 @@ -import React, { type ComponentPropsWithoutRef } from 'react'; +import { type ComponentPropsWithoutRef } from 'react'; import { type SwitchProps as SwitchRadixProps } from '@radix-ui/react-switch'; import * as SwitchRadix from '@radix-ui/react-switch'; diff --git a/packages/frontend/src/components/shared/Tabs/Tabs.tsx b/packages/frontend/src/components/shared/Tabs/Tabs.tsx index af1c65db..5dc2c37e 100644 --- a/packages/frontend/src/components/shared/Tabs/Tabs.tsx +++ b/packages/frontend/src/components/shared/Tabs/Tabs.tsx @@ -1,4 +1,4 @@ -import React, { type ComponentPropsWithoutRef } from 'react'; +import { type ComponentPropsWithoutRef } from 'react'; import { Root as TabsRoot } from '@radix-ui/react-tabs'; import { tabsTheme } from './Tabs.theme'; diff --git a/packages/frontend/src/components/shared/Tabs/TabsContent/TabsContent.tsx b/packages/frontend/src/components/shared/Tabs/TabsContent/TabsContent.tsx index 21200991..53ea54fa 100644 --- a/packages/frontend/src/components/shared/Tabs/TabsContent/TabsContent.tsx +++ b/packages/frontend/src/components/shared/Tabs/TabsContent/TabsContent.tsx @@ -1,4 +1,4 @@ -import React, { +import { forwardRef, type ComponentPropsWithoutRef, type ElementRef, diff --git a/packages/frontend/src/components/shared/Tabs/TabsList/TabsList.tsx b/packages/frontend/src/components/shared/Tabs/TabsList/TabsList.tsx index f5eb1498..c12b276e 100644 --- a/packages/frontend/src/components/shared/Tabs/TabsList/TabsList.tsx +++ b/packages/frontend/src/components/shared/Tabs/TabsList/TabsList.tsx @@ -1,4 +1,4 @@ -import React, { +import { forwardRef, type ComponentPropsWithoutRef, type ElementRef, diff --git a/packages/frontend/src/components/shared/Tabs/TabsProvider.tsx b/packages/frontend/src/components/shared/Tabs/TabsProvider.tsx index b51c680b..7bcf12aa 100644 --- a/packages/frontend/src/components/shared/Tabs/TabsProvider.tsx +++ b/packages/frontend/src/components/shared/Tabs/TabsProvider.tsx @@ -1,4 +1,4 @@ -import React, { +import { createContext, useContext, type PropsWithChildren, diff --git a/packages/frontend/src/components/shared/Tabs/TabsTrigger/TabsTrigger.tsx b/packages/frontend/src/components/shared/Tabs/TabsTrigger/TabsTrigger.tsx index 6cd70939..0d5fc8ff 100644 --- a/packages/frontend/src/components/shared/Tabs/TabsTrigger/TabsTrigger.tsx +++ b/packages/frontend/src/components/shared/Tabs/TabsTrigger/TabsTrigger.tsx @@ -1,4 +1,4 @@ -import React, { +import { forwardRef, type ComponentPropsWithoutRef, type ElementRef, diff --git a/packages/frontend/src/components/shared/Tag/Tag.tsx b/packages/frontend/src/components/shared/Tag/Tag.tsx index 08fb665e..0b4c7f79 100644 --- a/packages/frontend/src/components/shared/Tag/Tag.tsx +++ b/packages/frontend/src/components/shared/Tag/Tag.tsx @@ -1,8 +1,4 @@ -import React, { - type ReactNode, - type ComponentPropsWithoutRef, - useMemo, -} from 'react'; +import { type ReactNode, type ComponentPropsWithoutRef, useMemo } from 'react'; import { tagTheme, type TagTheme } from './Tag.theme'; import { cloneIcon } from 'utils/cloneIcon'; diff --git a/packages/frontend/src/components/shared/Toast/SimpleToast.tsx b/packages/frontend/src/components/shared/Toast/SimpleToast.tsx index 7c10f855..807eee14 100644 --- a/packages/frontend/src/components/shared/Toast/SimpleToast.tsx +++ b/packages/frontend/src/components/shared/Toast/SimpleToast.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import { useMemo } from 'react'; import * as ToastPrimitive from '@radix-ui/react-toast'; import { ToastProps } from '@radix-ui/react-toast'; import { motion } from 'framer-motion'; diff --git a/packages/frontend/src/components/shared/Toast/ToastProvider.tsx b/packages/frontend/src/components/shared/Toast/ToastProvider.tsx index d45d6e89..dff5701f 100644 --- a/packages/frontend/src/components/shared/Toast/ToastProvider.tsx +++ b/packages/frontend/src/components/shared/Toast/ToastProvider.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Provider, Viewport, diff --git a/packages/frontend/src/components/shared/Toast/Toaster.tsx b/packages/frontend/src/components/shared/Toast/Toaster.tsx index 66556956..eeb8ea00 100644 --- a/packages/frontend/src/components/shared/Toast/Toaster.tsx +++ b/packages/frontend/src/components/shared/Toast/Toaster.tsx @@ -1,4 +1,4 @@ -import React, { ComponentPropsWithoutRef, useMemo } from 'react'; +import { ComponentPropsWithoutRef, useMemo } from 'react'; import { Provider, Viewport } from '@radix-ui/react-toast'; import { SimpleToast, SimpleToastProps } from './SimpleToast'; import { useToast } from './useToast'; diff --git a/packages/frontend/src/components/shared/Toast/useToast.tsx b/packages/frontend/src/components/shared/Toast/useToast.tsx index bd0be17e..c6b68054 100644 --- a/packages/frontend/src/components/shared/Toast/useToast.tsx +++ b/packages/frontend/src/components/shared/Toast/useToast.tsx @@ -1,5 +1,6 @@ -// Inspired by react-hot-toast library import React from 'react'; +// Inspired by react-hot-toast library + import { type ToastProps } from '@radix-ui/react-toast'; import { SimpleToastProps } from './SimpleToast'; diff --git a/packages/frontend/src/components/shared/Tooltip/Tooltip.tsx b/packages/frontend/src/components/shared/Tooltip/Tooltip.tsx index 75d73c78..99377e55 100644 --- a/packages/frontend/src/components/shared/Tooltip/Tooltip.tsx +++ b/packages/frontend/src/components/shared/Tooltip/Tooltip.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import type { TooltipContentProps, TooltipTriggerProps, diff --git a/packages/frontend/src/components/shared/Tooltip/TooltipBase.tsx b/packages/frontend/src/components/shared/Tooltip/TooltipBase.tsx index 273a9cbe..0a2a414d 100644 --- a/packages/frontend/src/components/shared/Tooltip/TooltipBase.tsx +++ b/packages/frontend/src/components/shared/Tooltip/TooltipBase.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Provider, TooltipProps as RadixTooltipProps, diff --git a/packages/frontend/src/components/shared/Tooltip/TooltipContent/TooltipContent.tsx b/packages/frontend/src/components/shared/Tooltip/TooltipContent/TooltipContent.tsx index 57678206..d51385a8 100644 --- a/packages/frontend/src/components/shared/Tooltip/TooltipContent/TooltipContent.tsx +++ b/packages/frontend/src/components/shared/Tooltip/TooltipContent/TooltipContent.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Arrow, Content, diff --git a/packages/frontend/src/components/shared/Tooltip/TooltipTrigger/TooltipTrigger.tsx b/packages/frontend/src/components/shared/Tooltip/TooltipTrigger/TooltipTrigger.tsx index c27993ed..279a481e 100644 --- a/packages/frontend/src/components/shared/Tooltip/TooltipTrigger/TooltipTrigger.tsx +++ b/packages/frontend/src/components/shared/Tooltip/TooltipTrigger/TooltipTrigger.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Trigger, type TooltipTriggerProps } from '@radix-ui/react-tooltip'; export type TriggerProps = TooltipTriggerProps; diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx index dfc9fcdb..139f6a17 100644 --- a/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx +++ b/packages/frontend/src/components/shared/UserSelect/UserSelect.tsx @@ -1,9 +1,4 @@ -import React, { - useState, - ComponentPropsWithoutRef, - useRef, - useEffect, -} from 'react'; +import { useState, ComponentPropsWithoutRef, useRef, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { useSelect } from 'downshift'; import { UserSelectTheme, userSelectTheme } from './UserSelect.theme'; diff --git a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx index 4885d6c2..c7859918 100644 --- a/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx +++ b/packages/frontend/src/components/shared/UserSelect/UserSelectItem/UserSelectItem.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, ComponentPropsWithoutRef } from 'react'; +import { forwardRef, ComponentPropsWithoutRef } from 'react'; import { Overwrite, UseComboboxGetItemPropsReturnValue } from 'downshift'; import { userSelectItemTheme, diff --git a/packages/frontend/src/components/shared/WavyBorder/WavyBorder.tsx b/packages/frontend/src/components/shared/WavyBorder/WavyBorder.tsx index 805272f1..6950b0c7 100644 --- a/packages/frontend/src/components/shared/WavyBorder/WavyBorder.tsx +++ b/packages/frontend/src/components/shared/WavyBorder/WavyBorder.tsx @@ -1,4 +1,4 @@ -import React, { ComponentPropsWithoutRef, useMemo } from 'react'; +import { ComponentPropsWithoutRef, useMemo } from 'react'; import { cn } from 'utils/classnames'; type WaveBorderVariant = 'stroke' | 'stroke-and-fill'; diff --git a/packages/frontend/src/context/GQLClientContext.tsx b/packages/frontend/src/context/GQLClientContext.tsx index d71db3dc..f635698f 100644 --- a/packages/frontend/src/context/GQLClientContext.tsx +++ b/packages/frontend/src/context/GQLClientContext.tsx @@ -1,4 +1,4 @@ -import React, { createContext, useContext, ReactNode } from 'react'; +import { createContext, useContext, ReactNode } from 'react'; import { GQLClient } from 'gql-client'; const GQLClientContext = createContext({} as GQLClient); diff --git a/packages/frontend/src/context/OctokitContext.tsx b/packages/frontend/src/context/OctokitContext.tsx index 4fd8f6c4..c1c23922 100644 --- a/packages/frontend/src/context/OctokitContext.tsx +++ b/packages/frontend/src/context/OctokitContext.tsx @@ -1,4 +1,4 @@ -import React, { +import { createContext, useContext, ReactNode, diff --git a/packages/frontend/src/context/Web3ModalProvider.tsx b/packages/frontend/src/context/Web3ModalProvider.tsx index 273fc82d..51512ca0 100644 --- a/packages/frontend/src/context/Web3ModalProvider.tsx +++ b/packages/frontend/src/context/Web3ModalProvider.tsx @@ -1,35 +1,35 @@ -import React, { ReactNode } from "react"; -import { SiweMessage } from "siwe"; -import { WagmiProvider } from "wagmi"; -import { arbitrum, mainnet } from "wagmi/chains"; -import axios from "axios"; +import { ReactNode } from 'react'; +import { SiweMessage } from 'siwe'; +import { WagmiProvider } from 'wagmi'; +import { arbitrum, mainnet } from 'wagmi/chains'; +import axios from 'axios'; -import { createWeb3Modal } from "@web3modal/wagmi/react"; -import { defaultWagmiConfig } from "@web3modal/wagmi/react/config"; -import { createSIWEConfig } from "@web3modal/siwe"; +import { createWeb3Modal } from '@web3modal/wagmi/react'; +import { defaultWagmiConfig } from '@web3modal/wagmi/react/config'; +import { createSIWEConfig } from '@web3modal/siwe'; import type { SIWECreateMessageArgs, SIWEVerifyMessageArgs, -} from "@web3modal/core"; -import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +} from '@web3modal/siwe'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; const queryClient = new QueryClient(); const axiosInstance = axios.create({ baseURL: import.meta.env.VITE_SERVER_URL, headers: { - "Content-Type": "application/json", - "Access-Control-Allow-Origin": "*", + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', }, withCredentials: true, }); const metadata = { - name: "Snowball Tools", - description: "Snowball Tools Dashboard", + name: 'Snowball Tools', + description: 'Snowball Tools Dashboard', url: window.location.origin, icons: [ - "https://raw.githubusercontent.com/snowball-tools/mediakit/main/assets/logo.svg", + 'https://raw.githubusercontent.com/snowball-tools/mediakit/main/assets/logo.svg', ], }; @@ -43,41 +43,41 @@ const config = defaultWagmiConfig({ const siweConfig = createSIWEConfig({ createMessage: ({ nonce, address, chainId }: SIWECreateMessageArgs) => new SiweMessage({ - version: "1", + version: '1', domain: window.location.host, uri: window.location.origin, address, chainId, nonce, // Human-readable ASCII assertion that the user will sign, and it must not contain `\n`. - statement: "Sign in With Ethereum.", + statement: 'Sign in With Ethereum.', }).prepareMessage(), getNonce: async () => { - const nonce = (await axiosInstance.get("/auth/nonce")).data; + const nonce = (await axiosInstance.get('/auth/nonce')).data; if (!nonce) { - throw new Error("Failed to get nonce!"); + throw new Error('Failed to get nonce!'); } return nonce; }, getSession: async () => { try { - const session = (await axiosInstance.get("/auth/session")).data; + const session = (await axiosInstance.get('/auth/session')).data; const { address, chainId } = session; return { address, chainId }; } catch (err) { - if (window.location.pathname !== "/login") { - window.location.href = "/login"; + if (window.location.pathname !== '/login') { + window.location.href = '/login'; } - throw new Error("Failed to get session!"); + throw new Error('Failed to get session!'); } }, verifyMessage: async ({ message, signature }: SIWEVerifyMessageArgs) => { try { const { success } = ( - await axiosInstance.post("/auth/validate", { + await axiosInstance.post('/auth/validate', { message, signature, }) @@ -90,22 +90,22 @@ const siweConfig = createSIWEConfig({ }, signOut: async () => { try { - const { success } = (await axiosInstance.post("/auth/logout")).data; + const { success } = (await axiosInstance.post('/auth/logout')).data; return success; } catch (error) { return false; } }, onSignOut: () => { - window.location.href = "/login"; + window.location.href = '/login'; }, onSignIn: () => { - window.location.href = "/"; + window.location.href = '/'; }, }); if (!import.meta.env.VITE_WALLET_CONNECT_ID) { - throw new Error("Error: REACT_APP_WALLET_CONNECT_ID env config is not set"); + throw new Error('Error: REACT_APP_WALLET_CONNECT_ID env config is not set'); } createWeb3Modal({ diff --git a/packages/frontend/src/index.tsx b/packages/frontend/src/index.tsx index 33cf2073..8dcaa1ce 100644 --- a/packages/frontend/src/index.tsx +++ b/packages/frontend/src/index.tsx @@ -1,26 +1,26 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import assert from "assert"; -import { GQLClient } from "gql-client"; +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import assert from 'assert'; +import { GQLClient } from 'gql-client'; -import { ThemeProvider } from "@material-tailwind/react"; +import { ThemeProvider } from '@snowballtools/material-tailwind-react-fork'; -import "./index.css"; -import "@fontsource/inter"; -import "@fontsource-variable/jetbrains-mono"; -import App from "./App"; -import reportWebVitals from "./reportWebVitals"; -import { GQLClientProvider } from "./context/GQLClientContext"; -import { SERVER_GQL_PATH } from "./constants"; -import { Toaster } from "components/shared/Toast"; -import Web3ModalProvider from "./context/Web3ModalProvider"; +import './index.css'; +import '@fontsource/inter'; +import '@fontsource-variable/jetbrains-mono'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; +import { GQLClientProvider } from './context/GQLClientContext'; +import { SERVER_GQL_PATH } from './constants'; +import { Toaster } from 'components/shared/Toast'; +import Web3ModalProvider from './context/Web3ModalProvider'; const root = ReactDOM.createRoot( - document.getElementById("root") as HTMLElement, + document.getElementById('root') as HTMLElement, ); assert( import.meta.env.VITE_SERVER_URL, - "REACT_APP_SERVER_URL is not set in env", + 'REACT_APP_SERVER_URL is not set in env', ); const gqlEndpoint = `${import.meta.env.VITE_SERVER_URL}/${SERVER_GQL_PATH}`; diff --git a/packages/frontend/src/layouts/ProjectSearch.tsx b/packages/frontend/src/layouts/ProjectSearch.tsx index 1343a5b0..bfc5b8ce 100644 --- a/packages/frontend/src/layouts/ProjectSearch.tsx +++ b/packages/frontend/src/layouts/ProjectSearch.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { Outlet, useNavigate } from 'react-router-dom'; import { User } from 'gql-client'; diff --git a/packages/frontend/src/pages/Login.tsx b/packages/frontend/src/pages/Login.tsx index 2fde7d77..69faf41b 100644 --- a/packages/frontend/src/pages/Login.tsx +++ b/packages/frontend/src/pages/Login.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import './Snow.css'; const Login = () => { diff --git a/packages/frontend/src/pages/Snow.css b/packages/frontend/src/pages/Snow.css index fa567429..8359e58d 100644 --- a/packages/frontend/src/pages/Snow.css +++ b/packages/frontend/src/pages/Snow.css @@ -1,25 +1,25 @@ .snow { - width: 100%; - height: 100vh; - border: 1px solid rgba(255, 255, 255, 0.1); - background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' style='enable-background:new 0 0 50 50%3B' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.st1%7Bopacity:0.3%3Bfill:%23FFFFFF%3B%7D.st3%7Bopacity:0.1%3Bfill:%23FFFFFF%3B%7D%3C/style%3E%3Ccircle class='st1' cx='5' cy='8' r='1'/%3E%3Ccircle class='st1' cx='38' cy='3' r='1'/%3E%3Ccircle class='st1' cx='12' cy='4' r='1'/%3E%3Ccircle class='st1' cx='16' cy='16' r='1'/%3E%3Ccircle class='st1' cx='47' cy='46' r='1'/%3E%3Ccircle class='st1' cx='32' cy='10' r='1'/%3E%3Ccircle class='st1' cx='3' cy='46' r='1'/%3E%3Ccircle class='st1' cx='45' cy='13' r='1'/%3E%3Ccircle class='st1' cx='10' cy='28' r='1'/%3E%3Ccircle class='st1' cx='22' cy='35' r='1'/%3E%3Ccircle class='st1' cx='3' cy='21' r='1'/%3E%3Ccircle class='st1' cx='26' cy='20' r='1'/%3E%3Ccircle class='st1' cx='30' cy='45' r='1'/%3E%3Ccircle class='st1' cx='15' cy='45' r='1'/%3E%3Ccircle class='st1' cx='34' cy='36' r='1'/%3E%3Ccircle class='st1' cx='41' cy='32' r='1'/%3E%3C/svg%3E"); - background-position: 0px 0px; - animation: animatedBackground 230s linear infinite; - } - + width: 100%; + height: 100vh; + border: 1px solid rgba(255, 255, 255, 0.1); + background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' style='enable-background:new 0 0 50 50%3B' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.st1%7Bopacity:0.3%3Bfill:%23FFFFFF%3B%7D.st3%7Bopacity:0.1%3Bfill:%23FFFFFF%3B%7D%3C/style%3E%3Ccircle class='st1' cx='5' cy='8' r='1'/%3E%3Ccircle class='st1' cx='38' cy='3' r='1'/%3E%3Ccircle class='st1' cx='12' cy='4' r='1'/%3E%3Ccircle class='st1' cx='16' cy='16' r='1'/%3E%3Ccircle class='st1' cx='47' cy='46' r='1'/%3E%3Ccircle class='st1' cx='32' cy='10' r='1'/%3E%3Ccircle class='st1' cx='3' cy='46' r='1'/%3E%3Ccircle class='st1' cx='45' cy='13' r='1'/%3E%3Ccircle class='st1' cx='10' cy='28' r='1'/%3E%3Ccircle class='st1' cx='22' cy='35' r='1'/%3E%3Ccircle class='st1' cx='3' cy='21' r='1'/%3E%3Ccircle class='st1' cx='26' cy='20' r='1'/%3E%3Ccircle class='st1' cx='30' cy='45' r='1'/%3E%3Ccircle class='st1' cx='15' cy='45' r='1'/%3E%3Ccircle class='st1' cx='34' cy='36' r='1'/%3E%3Ccircle class='st1' cx='41' cy='32' r='1'/%3E%3C/svg%3E"); + background-position: 0px 0px; + animation: animatedBackground 230s linear infinite; +} + .snow div { - width: 100%; - height: 100%; - background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' style='enable-background:new 0 0 50 50%3B' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.st1%7Bopacity:0.7%3Bfill:%23FFFFFF%3B%7D.st3%7Bopacity:0.1%3Bfill:%23FFFFFF%3B%7D%3C/style%3E%3Ccircle class='st3' cx='4' cy='14' r='1'/%3E%3Ccircle class='st3' cx='43' cy='3' r='1'/%3E%3Ccircle class='st3' cx='31' cy='30' r='2'/%3E%3Ccircle class='st3' cx='19' cy='23' r='1'/%3E%3Ccircle class='st3' cx='37' cy='22' r='1'/%3E%3Ccircle class='st3' cx='43' cy='16' r='1'/%3E%3Ccircle class='st3' cx='8' cy='45' r='1'/%3E%3Ccircle class='st3' cx='29' cy='39' r='1'/%3E%3Ccircle class='st3' cx='13' cy='37' r='1'/%3E%3Ccircle class='st3' cx='47' cy='32' r='1'/%3E%3Ccircle class='st3' cx='15' cy='4' r='2'/%3E%3Ccircle class='st3' cx='9' cy='27' r='1'/%3E%3Ccircle class='st3' cx='30' cy='9' r='1'/%3E%3Ccircle class='st3' cx='25' cy='15' r='1'/%3E%3Ccircle class='st3' cx='21' cy='45' r='2'/%3E%3Ccircle class='st3' cx='42' cy='45' r='1'/%3E%3C/svg%3E"); - background-position: 0px 0px; - animation: animatedBackground 260s linear infinite; + width: 100%; + height: 100%; + background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' style='enable-background:new 0 0 50 50%3B' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.st1%7Bopacity:0.7%3Bfill:%23FFFFFF%3B%7D.st3%7Bopacity:0.1%3Bfill:%23FFFFFF%3B%7D%3C/style%3E%3Ccircle class='st3' cx='4' cy='14' r='1'/%3E%3Ccircle class='st3' cx='43' cy='3' r='1'/%3E%3Ccircle class='st3' cx='31' cy='30' r='2'/%3E%3Ccircle class='st3' cx='19' cy='23' r='1'/%3E%3Ccircle class='st3' cx='37' cy='22' r='1'/%3E%3Ccircle class='st3' cx='43' cy='16' r='1'/%3E%3Ccircle class='st3' cx='8' cy='45' r='1'/%3E%3Ccircle class='st3' cx='29' cy='39' r='1'/%3E%3Ccircle class='st3' cx='13' cy='37' r='1'/%3E%3Ccircle class='st3' cx='47' cy='32' r='1'/%3E%3Ccircle class='st3' cx='15' cy='4' r='2'/%3E%3Ccircle class='st3' cx='9' cy='27' r='1'/%3E%3Ccircle class='st3' cx='30' cy='9' r='1'/%3E%3Ccircle class='st3' cx='25' cy='15' r='1'/%3E%3Ccircle class='st3' cx='21' cy='45' r='2'/%3E%3Ccircle class='st3' cx='42' cy='45' r='1'/%3E%3C/svg%3E"); + background-position: 0px 0px; + animation: animatedBackground 260s linear infinite; } @keyframes animatedBackground { - 0% { - background-position: 0 0; - } - 100% { - background-position: 0px 11600px; - } -} \ No newline at end of file + 0% { + background-position: 0 0; + } + 100% { + background-position: 0px 11600px; + } +} diff --git a/packages/frontend/src/pages/SnowballLogin.tsx b/packages/frontend/src/pages/SnowballLogin.tsx index 5fef4bec..c795cf74 100644 --- a/packages/frontend/src/pages/SnowballLogin.tsx +++ b/packages/frontend/src/pages/SnowballLogin.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { useSnowball } from 'utils/use-snowball'; export const SnowballLogin = () => { diff --git a/packages/frontend/src/pages/components/index.tsx b/packages/frontend/src/pages/components/index.tsx index 84e3e188..4697b3f7 100644 --- a/packages/frontend/src/pages/components/index.tsx +++ b/packages/frontend/src/pages/components/index.tsx @@ -1,11 +1,9 @@ -import React from 'react'; import { Calendar } from 'components/shared/Calendar'; import { DatePicker } from 'components/shared/DatePicker'; import { Radio } from 'components/shared/Radio'; import { SegmentedControls } from 'components/shared/SegmentedControls'; import { Switch } from 'components/shared/Switch'; import { useState } from 'react'; -import { Value } from 'react-calendar/dist/cjs/shared/types'; import { avatars, avatarsFallback } from './renders/avatar'; import { renderBadges } from './renders/badge'; import { @@ -37,6 +35,7 @@ import { renderToast, renderToastsWithCta } from './renders/toast'; import { renderTooltips } from './renders/tooltip'; import { Button } from 'components/shared/Button'; import { Modal } from 'components/shared/Modal'; +import { Value } from 'types/vendor'; const Page: React.FC = () => { const [singleDate, setSingleDate] = useState(); diff --git a/packages/frontend/src/pages/components/modals.tsx b/packages/frontend/src/pages/components/modals.tsx index 63d34e2a..98b0eae2 100644 --- a/packages/frontend/src/pages/components/modals.tsx +++ b/packages/frontend/src/pages/components/modals.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import { useState } from 'react'; import { Button } from 'components/shared/Button'; diff --git a/packages/frontend/src/pages/components/renders/avatar.tsx b/packages/frontend/src/pages/components/renders/avatar.tsx index 9ebaa03f..10650d0e 100644 --- a/packages/frontend/src/pages/components/renders/avatar.tsx +++ b/packages/frontend/src/pages/components/renders/avatar.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Avatar, AvatarVariants } from 'components/shared/Avatar'; const avatarSizes: AvatarVariants['size'][] = [18, 20, 24, 28, 32, 36, 40, 44]; diff --git a/packages/frontend/src/pages/components/renders/badge.tsx b/packages/frontend/src/pages/components/renders/badge.tsx index e4eb3114..de1ecdf9 100644 --- a/packages/frontend/src/pages/components/renders/badge.tsx +++ b/packages/frontend/src/pages/components/renders/badge.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import { Badge } from 'components/shared/Badge'; import { BadgeTheme } from 'components/shared/Badge/Badge.theme'; diff --git a/packages/frontend/src/pages/components/renders/button.tsx b/packages/frontend/src/pages/components/renders/button.tsx index 0b86aaaf..0aad9e47 100644 --- a/packages/frontend/src/pages/components/renders/button.tsx +++ b/packages/frontend/src/pages/components/renders/button.tsx @@ -1,6 +1,5 @@ import { Button, ButtonTheme } from 'components/shared/Button'; import { PlusIcon } from 'components/shared/CustomIcon'; -import React from 'react'; const buttonVariants = ['primary', 'secondary', 'tertiary', 'danger'] as const; const buttonSizes = ['lg', 'md', 'sm', 'xs'] as const; diff --git a/packages/frontend/src/pages/components/renders/checkbox.tsx b/packages/frontend/src/pages/components/renders/checkbox.tsx index 66c9eef5..11426eb2 100644 --- a/packages/frontend/src/pages/components/renders/checkbox.tsx +++ b/packages/frontend/src/pages/components/renders/checkbox.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Checkbox } from 'components/shared/Checkbox'; export const renderCheckbox = () => { diff --git a/packages/frontend/src/pages/components/renders/dropdown.tsx b/packages/frontend/src/pages/components/renders/dropdown.tsx index d4ccf26d..4da4a0bc 100644 --- a/packages/frontend/src/pages/components/renders/dropdown.tsx +++ b/packages/frontend/src/pages/components/renders/dropdown.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import { useState } from 'react'; import { PencilIcon } from 'components/shared/CustomIcon'; import { SelectOption, Select } from 'components/shared/Select'; diff --git a/packages/frontend/src/pages/components/renders/inlineNotifications.tsx b/packages/frontend/src/pages/components/renders/inlineNotifications.tsx index fc36b914..95c56ce3 100644 --- a/packages/frontend/src/pages/components/renders/inlineNotifications.tsx +++ b/packages/frontend/src/pages/components/renders/inlineNotifications.tsx @@ -1,6 +1,5 @@ import { InlineNotification } from 'components/shared/InlineNotification'; import { InlineNotificationTheme } from 'components/shared/InlineNotification/InlineNotification.theme'; -import React from 'react'; const inlineNotificationVariants = [ 'info', diff --git a/packages/frontend/src/pages/components/renders/input.tsx b/packages/frontend/src/pages/components/renders/input.tsx index bc0b79ff..dcb31d76 100644 --- a/packages/frontend/src/pages/components/renders/input.tsx +++ b/packages/frontend/src/pages/components/renders/input.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Input } from 'components/shared/Input'; import { SearchIcon, CrossIcon } from 'components/shared/CustomIcon'; diff --git a/packages/frontend/src/pages/components/renders/segmentedControls.tsx b/packages/frontend/src/pages/components/renders/segmentedControls.tsx index 8f4a019f..cdedd34f 100644 --- a/packages/frontend/src/pages/components/renders/segmentedControls.tsx +++ b/packages/frontend/src/pages/components/renders/segmentedControls.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Badge } from 'components/shared/Badge'; import { SegmentedControlsOption } from 'components/shared/SegmentedControls'; diff --git a/packages/frontend/src/pages/components/renders/steps.tsx b/packages/frontend/src/pages/components/renders/steps.tsx index 2d3f3da5..5615df82 100644 --- a/packages/frontend/src/pages/components/renders/steps.tsx +++ b/packages/frontend/src/pages/components/renders/steps.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Steps } from 'components/shared/Steps'; export const renderVerticalSteps = () => { diff --git a/packages/frontend/src/pages/components/renders/tabs.tsx b/packages/frontend/src/pages/components/renders/tabs.tsx index d344317e..a5c218fa 100644 --- a/packages/frontend/src/pages/components/renders/tabs.tsx +++ b/packages/frontend/src/pages/components/renders/tabs.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Tabs } from 'components/shared/Tabs'; import { Badge } from 'components/shared/Badge'; import { GlobeIcon } from 'components/shared/CustomIcon'; diff --git a/packages/frontend/src/pages/components/renders/tag.tsx b/packages/frontend/src/pages/components/renders/tag.tsx index f01c526b..e1a8a405 100644 --- a/packages/frontend/src/pages/components/renders/tag.tsx +++ b/packages/frontend/src/pages/components/renders/tag.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Tag } from 'components/shared/Tag'; import { PlusIcon } from 'components/shared/CustomIcon'; diff --git a/packages/frontend/src/pages/components/renders/toast.tsx b/packages/frontend/src/pages/components/renders/toast.tsx index fb19e33a..3ae02f92 100644 --- a/packages/frontend/src/pages/components/renders/toast.tsx +++ b/packages/frontend/src/pages/components/renders/toast.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Button } from 'components/shared/Button'; import { useToast } from 'components/shared/Toast'; diff --git a/packages/frontend/src/pages/components/renders/tooltip.tsx b/packages/frontend/src/pages/components/renders/tooltip.tsx index 7114f4db..89d92922 100644 --- a/packages/frontend/src/pages/components/renders/tooltip.tsx +++ b/packages/frontend/src/pages/components/renders/tooltip.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Button } from 'components/shared/Button'; import { Tooltip } from 'components/shared/Tooltip'; import { ContentProps } from 'components/shared/Tooltip/TooltipContent'; diff --git a/packages/frontend/src/pages/index.tsx b/packages/frontend/src/pages/index.tsx index 376cc518..a300e873 100644 --- a/packages/frontend/src/pages/index.tsx +++ b/packages/frontend/src/pages/index.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { Navigate } from 'react-router-dom'; import { useGQLClient } from '../context/GQLClientContext'; import { Organization } from 'gql-client'; diff --git a/packages/frontend/src/pages/org-slug/Settings.tsx b/packages/frontend/src/pages/org-slug/Settings.tsx index dccab0ce..818b0837 100644 --- a/packages/frontend/src/pages/org-slug/Settings.tsx +++ b/packages/frontend/src/pages/org-slug/Settings.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - const Settings = () => { return
    Settings page
    ; }; diff --git a/packages/frontend/src/pages/org-slug/index.tsx b/packages/frontend/src/pages/org-slug/index.tsx index e0e5af06..019cbf6f 100644 --- a/packages/frontend/src/pages/org-slug/index.tsx +++ b/packages/frontend/src/pages/org-slug/index.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { Link, useParams } from 'react-router-dom'; import { Project } from 'gql-client'; import { Button } from 'components/shared/Button'; diff --git a/packages/frontend/src/pages/org-slug/layout.tsx b/packages/frontend/src/pages/org-slug/layout.tsx index 62ec1aa1..b1bf2226 100644 --- a/packages/frontend/src/pages/org-slug/layout.tsx +++ b/packages/frontend/src/pages/org-slug/layout.tsx @@ -8,7 +8,7 @@ import { } from 'components/shared/CustomIcon'; import { Sidebar } from 'components/shared/Sidebar'; import { OctokitProvider } from 'context/OctokitContext'; -import React, { ComponentPropsWithoutRef, useEffect, useState } from 'react'; +import { ComponentPropsWithoutRef, useEffect, useState } from 'react'; import { Outlet, useParams } from 'react-router-dom'; import { AnimatePresence, motion } from 'framer-motion'; import { cn } from 'utils/classnames'; diff --git a/packages/frontend/src/pages/org-slug/projects/Id.tsx b/packages/frontend/src/pages/org-slug/projects/Id.tsx index e5b7604d..372b120a 100644 --- a/packages/frontend/src/pages/org-slug/projects/Id.tsx +++ b/packages/frontend/src/pages/org-slug/projects/Id.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { Link, Outlet, diff --git a/packages/frontend/src/pages/org-slug/projects/create/Import.tsx b/packages/frontend/src/pages/org-slug/projects/create/Import.tsx index 726135eb..f1ad400f 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/Import.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/Import.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; import assert from 'assert'; diff --git a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx index 682d1f48..51b6abfc 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/Template.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/Template.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import { useMemo } from 'react'; import { Outlet, useLocation, diff --git a/packages/frontend/src/pages/org-slug/projects/create/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/index.tsx index a01de914..6de2a7b5 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/index.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import templates from 'assets/templates'; import { RepositoryList } from 'components/projects/create/RepositoryList'; import ConnectAccount from 'components/projects/create/ConnectAccount'; diff --git a/packages/frontend/src/pages/org-slug/projects/create/layout.tsx b/packages/frontend/src/pages/org-slug/projects/create/layout.tsx index 906a6215..abdfa8c5 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/layout.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/layout.tsx @@ -1,4 +1,4 @@ -import React, { ComponentPropsWithoutRef } from 'react'; +import { ComponentPropsWithoutRef } from 'react'; import { Link, Outlet, useParams } from 'react-router-dom'; import { Heading } from 'components/shared/Heading'; diff --git a/packages/frontend/src/pages/org-slug/projects/create/routes.tsx b/packages/frontend/src/pages/org-slug/projects/create/routes.tsx index 5076a028..9894ca77 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/routes.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/routes.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import NewProject from './index'; import CreateWithTemplate from './Template'; import { templateRoutes } from './template/routes'; diff --git a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx index ae7779e8..b7f98c76 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/success/Id.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Link, useParams } from 'react-router-dom'; import Lottie from 'lottie-react'; diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/Deploy.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/Deploy.tsx index e767df0e..21da9fa1 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/Deploy.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/Deploy.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import DeployComponent from '../../../../../components/projects/create/Deploy'; const Deploy = () => { diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx index 47bd0eb9..0988af7a 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useForm, SubmitHandler, Controller } from 'react-hook-form'; import { useNavigate, useOutletContext, useParams } from 'react-router-dom'; import assert from 'assert'; @@ -7,7 +7,7 @@ import { RequestError } from 'octokit'; import { useOctokit } from '../../../../../context/OctokitContext'; import { useGQLClient } from '../../../../../context/GQLClientContext'; -import { Template } from '../../../../../types'; +import { Template } from '../../../../../types/types'; import { Heading } from 'components/shared/Heading'; import { Input } from 'components/shared/Input'; import { Select, SelectOption } from 'components/shared/Select'; diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/routes.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/routes.tsx index 81149f08..9570a6b0 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/routes.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/routes.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import CreateRepo from './index'; import Deploy from './Deploy'; diff --git a/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx b/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx index 1437754f..5284d02d 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { Deployment, Domain } from 'gql-client'; import { useOutletContext } from 'react-router-dom'; @@ -7,7 +7,7 @@ import FilterForm, { FilterValue, StatusOptions, } from 'components/projects/project/deployments/FilterForm'; -import { OutletContextType } from 'types'; +import { OutletContextType } from '../../../../types/types'; import { useGQLClient } from 'context/GQLClientContext'; import { Button } from 'components/shared/Button'; import { RefreshIcon } from 'components/shared/CustomIcon'; diff --git a/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx b/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx index d943de02..75e3153e 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx @@ -1,10 +1,13 @@ -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { Domain, DomainStatus } from 'gql-client'; import { Link, useNavigate, useOutletContext } from 'react-router-dom'; import { RequestError } from 'octokit'; import { useOctokit } from '../../../../context/OctokitContext'; -import { GitCommitWithBranch, OutletContextType } from '../../../../types'; +import { + GitCommitWithBranch, + OutletContextType, +} from '../../../../types/types'; import { useGQLClient } from '../../../../context/GQLClientContext'; import { Button } from 'components/shared/Button'; import { Heading } from 'components/shared/Heading'; diff --git a/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx b/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx index 7a53452c..2b334c36 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx @@ -1,9 +1,14 @@ -import React, { useMemo } from 'react'; +import { useMemo } from 'react'; import { Link, Outlet, useLocation, useOutletContext } from 'react-router-dom'; -import { Tabs, TabsHeader, TabsBody, Tab } from '@material-tailwind/react'; +import { + Tabs, + TabsHeader, + TabsBody, + Tab, +} from '@snowballtools/material-tailwind-react-fork'; -import { OutletContextType } from '../../../../types'; +import { OutletContextType } from '../../../../types/types'; const tabsData = [ { @@ -59,14 +64,12 @@ const SettingsTabPanel = () => { indicatorProps={{ className: 'bg-gray-900/10 shadow-none !text-gray-900', }} - placeholder={''} > {tabsData.map(({ label, value, icon }) => (
    {icon}
    @@ -76,7 +79,7 @@ const SettingsTabPanel = () => { ))} - + diff --git a/packages/frontend/src/pages/org-slug/projects/id/routes.tsx b/packages/frontend/src/pages/org-slug/projects/id/routes.tsx index 3c259946..78b15816 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/routes.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/routes.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import OverviewTabPanel from './Overview'; import DeploymentsTabPanel from './Deployments'; import SettingsTabPanel from './Settings'; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx index cf6b34b1..ff39baf4 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx @@ -1,13 +1,16 @@ import { RequestError } from 'octokit'; -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { Link, useOutletContext } from 'react-router-dom'; import { Domain } from 'gql-client'; -import { Button, Typography } from '@material-tailwind/react'; +import { + Button, + Typography, +} from '@snowballtools/material-tailwind-react-fork'; import DomainCard from '../../../../../components/projects/project/settings/DomainCard'; import { useGQLClient } from '../../../../../context/GQLClientContext'; -import { OutletContextType } from '../../../../../types'; +import { OutletContextType } from '../../../../../types/types'; import { useOctokit } from '../../../../../context/OctokitContext'; const Domains = () => { @@ -59,16 +62,9 @@ const Domains = () => { return ( <>
    - - Domain - + Domain - diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx index e9cc6741..2be3dcd7 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { useFieldArray, useForm } from 'react-hook-form'; import toast from 'react-hot-toast'; import { useParams } from 'react-router-dom'; @@ -11,13 +11,13 @@ import { Button, Checkbox, Chip, -} from '@material-tailwind/react'; +} from '@snowballtools/material-tailwind-react-fork'; import AddEnvironmentVariableRow from '../../../../../components/projects/project/settings/AddEnvironmentVariableRow'; import DisplayEnvironmentVariables from '../../../../../components/projects/project/settings/DisplayEnvironmentVariables'; import HorizontalLine from '../../../../../components/HorizontalLine'; import { useGQLClient } from '../../../../../context/GQLClientContext'; -import { EnvironmentVariablesFormValues } from '../../../../../types'; +import { EnvironmentVariablesFormValues } from '../../../../../types/types'; export const EnvironmentVariablesTabPanel = () => { const { id } = useParams(); @@ -133,14 +133,8 @@ export const EnvironmentVariablesTabPanel = () => { return ( <> - - Environment variables - - + Environment variables + A new deployment is required for your changes to take effect.
    @@ -151,7 +145,7 @@ export const EnvironmentVariablesTabPanel = () => { + Create new variable
    - + {fields.map((field, index) => { return ( @@ -174,12 +168,11 @@ export const EnvironmentVariablesTabPanel = () => { value: '', }) } - placeholder={''} > + Add variable {/* TODO: Implement import environment varible functionality */} -
    @@ -193,26 +186,23 @@ export const EnvironmentVariablesTabPanel = () => { )}
    -
    diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx index 8c1d0bd7..b819c7a0 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx @@ -1,15 +1,20 @@ -import React, { useState, useEffect, useCallback, useMemo } from 'react'; +import { useState, useEffect, useCallback, useMemo } from 'react'; import { Link, useOutletContext } from 'react-router-dom'; import { useForm, Controller } from 'react-hook-form'; import toast from 'react-hot-toast'; import { Organization } from 'gql-client'; -import { Button, Typography, Input, Option } from '@material-tailwind/react'; +import { + Button, + Typography, + Input, + Option, +} from '@snowballtools/material-tailwind-react-fork'; import DeleteProjectDialog from 'components/projects/project/settings/DeleteProjectDialog'; import { useGQLClient } from 'context/GQLClientContext'; import AsyncSelect from 'components/shared/AsyncSelect'; -import { OutletContextType } from 'types'; +import { OutletContextType } from '../../../../../types/types'; import { TransferProjectDialog } from 'components/projects/Dialog/TransferProjectDialog'; const CopyIcon = ({ value }: { value: string }) => { @@ -121,45 +126,25 @@ const GeneralTabPanel = () => { } })} > - - Project info - - + Project info + App name - + Description (Optional) - - + + Project ID { size="sm" className="mt-1" disabled={!updateProjectFormState.isDirty} - placeholder={''} > Save
    - - Transfer project - - + Transfer project + Transfer this app to your personal account or a team you are a member of. @@ -194,11 +176,7 @@ const GeneralTabPanel = () => { setOpenTransferDialog(!openTransferDialog); })} > - + Choose team { className="mt-1" disabled={!formState.isValid} type="submit" - placeholder={''} > Transfer @@ -240,10 +217,8 @@ const GeneralTabPanel = () => { />
    - - Delete project - - + Delete project + The project will be permanently deleted, including its deployments and domains. This action is irreversible and can not be undone. @@ -252,7 +227,6 @@ const GeneralTabPanel = () => { size="sm" color="red" onClick={handleDeleteProjectDialog} - placeholder={''} > ^ Delete project diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx index 3782410f..aa83bb65 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx @@ -1,13 +1,18 @@ -import React, { useCallback, useEffect } from 'react'; +import { useCallback, useEffect } from 'react'; import { useOutletContext } from 'react-router-dom'; import { SubmitHandler, useForm } from 'react-hook-form'; import toast from 'react-hot-toast'; -import { Button, Input, Switch, Typography } from '@material-tailwind/react'; +import { + Button, + Input, + Switch, + Typography, +} from '@snowballtools/material-tailwind-react-fork'; import WebhookCard from '../../../../../components/projects/project/settings/WebhookCard'; import { useGQLClient } from '../../../../../context/GQLClientContext'; -import { OutletContextType } from '../../../../../types'; +import { OutletContextType } from '../../../../../types/types'; type UpdateProdBranchValues = { prodBranch: string; @@ -100,52 +105,43 @@ const GitTabPanel = () => { return ( <>
    - + Git repository
    - - Pull request comments - + Pull request comments
    - +
    - - Commit comments - + Commit comments
    - +
    - + Production branch - + By default, each commit pushed to the{' '} {project.prodBranch} branch initiates a production deployment. You can opt for a different branch for deployment in the settings. - - Branch name - - -
    @@ -153,25 +149,20 @@ const GitTabPanel = () => {
    - + Deploy webhooks - + Webhooks configured to trigger when there is a change in a project's build or deployment status.
    - - Webhook URL - - + Webhook URL +
    -
    diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx index 14ced1c8..273ff23c 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx @@ -1,14 +1,18 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useOutletContext } from 'react-router-dom'; import toast from 'react-hot-toast'; import { Permission, AddProjectMemberInput, ProjectMember } from 'gql-client'; -import { Chip, Button, Typography } from '@material-tailwind/react'; +import { + Chip, + Button, + Typography, +} from '@snowballtools/material-tailwind-react-fork'; import MemberCard from '../../../../../components/projects/project/settings/MemberCard'; import AddMemberDialog from '../../../../../components/projects/project/settings/AddMemberDialog'; import { useGQLClient } from '../../../../../context/GQLClientContext'; -import { OutletContextType } from '../../../../../types'; +import { OutletContextType } from '../../../../../types/types'; const FIRST_MEMBER_CARD = 0; @@ -75,9 +79,7 @@ const MembersTabPanel = () => {
    - - Members - + Members
    { diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx index f09d98d0..e0b1edd2 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx @@ -1,8 +1,10 @@ -import React from 'react'; - import toast from 'react-hot-toast'; import { useNavigate, useParams, useSearchParams } from 'react-router-dom'; -import { Typography, Alert, Button } from '@material-tailwind/react'; +import { + Typography, + Alert, + Button, +} from '@snowballtools/material-tailwind-react-fork'; import { useGQLClient } from '../../../../../../../context/GQLClientContext'; @@ -39,10 +41,8 @@ const Config = () => { return (
    diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/index.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/index.tsx index 7c7c8388..e2b6708c 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/index.tsx @@ -1,6 +1,9 @@ -import React, { useMemo } from 'react'; +import { useMemo } from 'react'; import { useParams, useLocation, Outlet, Link } from 'react-router-dom'; -import { Typography, IconButton } from '@material-tailwind/react'; +import { + Typography, + IconButton, +} from '@snowballtools/material-tailwind-react-fork'; import Stepper from '../../../../../../../components/Stepper'; @@ -30,15 +33,9 @@ const AddDomain = () => { return (
    - - Add Domain - + Add Domain - + X @@ -48,7 +45,7 @@ const AddDomain = () => {
    ^ - + Project Name
    diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/routes.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/routes.tsx index 8a970a55..12d89245 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/routes.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/routes.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import Config from './Config'; import SetupDomain from '../../../../../../../components/projects/project/settings/SetupDomain'; diff --git a/packages/frontend/src/pages/org-slug/projects/routes.tsx b/packages/frontend/src/pages/org-slug/projects/routes.tsx index e4dd5756..21133181 100644 --- a/packages/frontend/src/pages/org-slug/projects/routes.tsx +++ b/packages/frontend/src/pages/org-slug/projects/routes.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import Id from './Id'; import AddDomain from './id/settings/domains/add'; import { createProjectRoutes } from './create/routes'; diff --git a/packages/frontend/src/types.ts b/packages/frontend/src/types/types.ts similarity index 100% rename from packages/frontend/src/types.ts rename to packages/frontend/src/types/types.ts diff --git a/packages/frontend/src/types/vendor.ts b/packages/frontend/src/types/vendor.ts new file mode 100644 index 00000000..f3c2e97a --- /dev/null +++ b/packages/frontend/src/types/vendor.ts @@ -0,0 +1,4 @@ +// Pulled from react-calendar/dist/cjs/shared/types +type ValuePiece = Date | null; +export type Range = [T, T]; +export type Value = ValuePiece | Range; diff --git a/packages/frontend/src/utils/cloneElement.tsx b/packages/frontend/src/utils/cloneElement.tsx index 202f9e45..880b5752 100644 --- a/packages/frontend/src/utils/cloneElement.tsx +++ b/packages/frontend/src/utils/cloneElement.tsx @@ -1,4 +1,4 @@ -import React, { +import { ReactElement, isValidElement, Children, diff --git a/packages/frontend/src/utils/snowball.ts b/packages/frontend/src/utils/snowball.ts index 0340583a..94ebc692 100644 --- a/packages/frontend/src/utils/snowball.ts +++ b/packages/frontend/src/utils/snowball.ts @@ -1,10 +1,10 @@ -import { LitGoogleAuth } from "@snowballtools/auth-lit"; -import { Snowball, SnowballChain } from "@snowballtools/js-sdk"; +import { LitGoogleAuth } from '@snowballtools/auth-lit'; +import { Snowball, SnowballChain } from '@snowballtools/js-sdk'; // import { LinkLitAlchemyLight } from '@snowballtools/link-lit-alchemy-light'; -export const DOMAIN = import.meta.env.VITE_DOMAIN || "localhost"; +export const DOMAIN = import.meta.env.VITE_DOMAIN || 'localhost'; export const ORIGIN = - import.meta.env.VITE_VERCEL_ENV === "production" + import.meta.env.VITE_VERCEL_ENV === 'production' ? `https://${DOMAIN}` : `http://${DOMAIN}:3000`; diff --git a/packages/frontend/tailwind.config.js b/packages/frontend/tailwind.config.js index b5fa02b0..608f5b6b 100644 --- a/packages/frontend/tailwind.config.js +++ b/packages/frontend/tailwind.config.js @@ -1,11 +1,11 @@ -import withMT from '@material-tailwind/react/utils/withMT'; +import withMT from '@snowballtools/material-tailwind-react-fork/utils/withMT'; /** @type {import('tailwindcss').Config} */ export default withMT({ content: [ './src/**/*.{js,jsx,ts,tsx}', - '../../node_modules/@material-tailwind/react/components/**/*.{js,ts,jsx,tsx}', - '../../node_modules/@material-tailwind/react/theme/components/**/*.{js,ts,jsx,tsx}', + '../../node_modules/@snowballtools/material-tailwind-react-fork/components/**/*.{js,ts,jsx,tsx}', + '../../node_modules/@snowballtools/material-tailwind-react-fork/theme/components/**/*.{js,ts,jsx,tsx}', ], theme: { extend: { diff --git a/packages/frontend/tsconfig.json b/packages/frontend/tsconfig.json index b5b93723..e0ae2860 100644 --- a/packages/frontend/tsconfig.json +++ b/packages/frontend/tsconfig.json @@ -6,6 +6,8 @@ "module": "ESNext", "skipLibCheck": true, + "types": ["vite/client"], + /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, @@ -21,6 +23,7 @@ "noFallthroughCasesInSwitch": true, "paths": { + "types/*": ["./src/types/*"], "utils/*": ["./src/utils/*"], "assets/*": ["./src/assets/*"], "context/*": ["./src/context/*"], diff --git a/packages/gql-client/package.json b/packages/gql-client/package.json index 29809d0a..f5937fcc 100644 --- a/packages/gql-client/package.json +++ b/packages/gql-client/package.json @@ -4,7 +4,8 @@ "main": "dist/index.js", "module": "./dist/index.mjs", "scripts": { - "build": "npx tsup src/index.ts --dts --format esm,cjs --sourcemap" + "build": "npx tsup src/index.ts --dts --format esm,cjs --sourcemap", + "lint": "tsc --noEmit" }, "devDependencies": { "@types/node": "^20.11.4", diff --git a/yarn.lock b/yarn.lock index c3fcd851..2ae4abc1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,11 +2,6 @@ # yarn lockfile v1 -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - "@adobe/css-tools@^4.0.1": version "4.3.3" resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" @@ -211,12 +206,12 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": +"@babel/compat-data@^7.23.5": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/core@^7.16.0", "@babel/core@^7.22.11", "@babel/core@^7.23.5": +"@babel/core@^7.23.5": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== @@ -237,15 +232,6 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.16.3", "@babel/eslint-parser@^7.22.11": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz#e27eee93ed1d271637165ef3a86e2b9332395c32" - integrity sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ== - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.1" - "@babel/generator@^7.24.1", "@babel/generator@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" @@ -256,21 +242,7 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": +"@babel/helper-compilation-targets@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== @@ -281,47 +253,12 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz#c806f73788a6800a5cfbbc04d2df7ee4d927cce3" - integrity sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz#fadc63f0c2ff3c8d02ed905dcea747c5b0fb74fd" - integrity sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": +"@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== @@ -336,14 +273,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== - dependencies: - "@babel/types" "^7.23.0" - -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== @@ -361,36 +291,11 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" - integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -398,13 +303,6 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -417,7 +315,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== -"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": +"@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== @@ -427,15 +325,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - "@babel/helpers@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" @@ -460,575 +349,6 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz#6125f0158543fb4edf1c22f322f3db67f21cb3e1" - integrity sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" - integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-proposal-class-properties@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-decorators@^7.16.4": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz#bab2b9e174a2680f0a80f341f3ec70f809f8bb4b" - integrity sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-decorators" "^7.24.1" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-optional-chaining@^7.16.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-private-methods@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz#71d9ad06063a6ac5430db126b5df48c70ee885fa" - integrity sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" - integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-import-assertions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-import-attributes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.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" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-async-generator-functions@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== - dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - -"@babel/plugin-transform-block-scoped-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-block-scoping@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz#28f5c010b66fbb8ccdeef853bef1935c434d7012" - integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-class-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-class-static-block@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" - integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz#5bc8fc160ed96378184bc10042af47f50884dcb1" - integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" - -"@babel/plugin-transform-destructuring@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz#b1e8243af4a0206841973786292b8c8dd8447345" - integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-dotall-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-duplicate-keys@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-dynamic-import@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-export-namespace-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-flow-strip-types@^7.16.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" - integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-flow" "^7.24.1" - -"@babel/plugin-transform-for-of@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== - dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-json-strings@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-logical-assignment-operators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-modules-amd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-modules-commonjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" - integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-systemjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-umd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-new-target@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz#5a3ce73caf0e7871a02e1c31e8b473093af241ff" - integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== - dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.1" - -"@babel/plugin-transform-object-super@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - -"@babel/plugin-transform-optional-catch-binding@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6" - integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510" - integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-private-methods@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-private-property-in-object@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz#756443d400274f8fb7896742962cc1b9f25c1f6a" - integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" - integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" - "@babel/plugin-transform-react-jsx-self@^7.23.3": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz#a21d866d8167e752c6a7c4555dba8afcdfce6268" @@ -1043,254 +363,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" - -"@babel/plugin-transform-react-pure-annotations@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" - integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-regenerator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-runtime@^7.16.4": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" - integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== - dependencies: - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-plugin-utils" "^7.24.0" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.1" - babel-plugin-polyfill-regenerator "^0.6.1" - semver "^6.3.1" - -"@babel/plugin-transform-shorthand-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-sticky-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-template-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-typeof-symbol@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz#6831f78647080dec044f7e9f68003d99424f94c7" - integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-typescript@^7.24.1": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz#03e0492537a4b953e491f53f2bc88245574ebd15" - integrity sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-typescript" "^7.24.1" - -"@babel/plugin-transform-unicode-escapes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-property-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-sets-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/preset-env@^7.16.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.4.tgz#46dbbcd608771373b88f956ffb67d471dce0d23b" - integrity sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A== - dependencies: - "@babel/compat-data" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.4" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@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.24.1" - "@babel/plugin-syntax-import-attributes" "^7.24.1" - "@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-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.1" - "@babel/plugin-transform-async-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.24.1" - "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.4" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.4" - "@babel/plugin-transform-classes" "^7.24.1" - "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.1" - "@babel/plugin-transform-dotall-regex" "^7.24.1" - "@babel/plugin-transform-duplicate-keys" "^7.24.1" - "@babel/plugin-transform-dynamic-import" "^7.24.1" - "@babel/plugin-transform-exponentiation-operator" "^7.24.1" - "@babel/plugin-transform-export-namespace-from" "^7.24.1" - "@babel/plugin-transform-for-of" "^7.24.1" - "@babel/plugin-transform-function-name" "^7.24.1" - "@babel/plugin-transform-json-strings" "^7.24.1" - "@babel/plugin-transform-literals" "^7.24.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-member-expression-literals" "^7.24.1" - "@babel/plugin-transform-modules-amd" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-modules-systemjs" "^7.24.1" - "@babel/plugin-transform-modules-umd" "^7.24.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.24.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.1" - "@babel/plugin-transform-object-super" "^7.24.1" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - "@babel/plugin-transform-parameters" "^7.24.1" - "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.1" - "@babel/plugin-transform-property-literals" "^7.24.1" - "@babel/plugin-transform-regenerator" "^7.24.1" - "@babel/plugin-transform-reserved-words" "^7.24.1" - "@babel/plugin-transform-shorthand-properties" "^7.24.1" - "@babel/plugin-transform-spread" "^7.24.1" - "@babel/plugin-transform-sticky-regex" "^7.24.1" - "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.1" - "@babel/plugin-transform-unicode-escapes" "^7.24.1" - "@babel/plugin-transform-unicode-property-regex" "^7.24.1" - "@babel/plugin-transform-unicode-regex" "^7.24.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.16.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" - integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-transform-react-display-name" "^7.24.1" - "@babel/plugin-transform-react-jsx" "^7.23.4" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.24.1" - -"@babel/preset-typescript@^7.16.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" - integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-syntax-jsx" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-typescript" "^7.24.1" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.9.2": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd" integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== @@ -1322,7 +395,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== @@ -1940,38 +1013,6 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - "@ethereumjs/common@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-3.2.0.tgz#b71df25845caf5456449163012074a55f048e0a0" @@ -2544,25 +1585,6 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - "@hutson/parse-repository-url@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" @@ -3295,21 +2317,6 @@ dependencies: "@lit-labs/ssr-dom-shim" "^1.2.0" -"@material-tailwind/react@^2.1.7": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@material-tailwind/react/-/react-2.1.9.tgz#d29bfa2f69a58708f85f22ce6ad798dbf1300c70" - integrity sha512-3uPlJE9yK4JF9DEQO4I1QbjR8o05+4fysLqoZ0v38TDOLE2tvDRhTBVhn6Mp9vSsq5CoJOKgemG7kbkOFAji4A== - dependencies: - "@floating-ui/react" "0.19.0" - classnames "2.3.2" - deepmerge "4.2.2" - framer-motion "6.5.1" - material-ripple-effects "2.0.1" - prop-types "15.8.1" - react "18.2.0" - react-dom "18.2.0" - tailwind-merge "1.8.1" - "@metamask/eth-json-rpc-provider@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.1.tgz#3fd5316c767847f4ca107518b611b15396a5a32c" @@ -3495,21 +2502,6 @@ superstruct "^1.0.3" uuid "^9.0.1" -"@microsoft/tsdoc-config@0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz#b786bb4ead00d54f53839a458ce626c8548d3adf" - integrity sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw== - dependencies: - "@microsoft/tsdoc" "0.14.2" - ajv "~6.12.6" - jju "~1.4.0" - resolve "~1.19.0" - -"@microsoft/tsdoc@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz#c3ec604a0b54b9a9b87e9735dfc59e1a5da6a5fb" - integrity sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug== - "@motionone/animation@^10.12.0", "@motionone/animation@^10.15.1", "@motionone/animation@^10.17.0": version "10.17.0" resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.17.0.tgz#7633c6f684b5fee2b61c405881b8c24662c68fca" @@ -3599,13 +2591,6 @@ multiformats "^13.0.0" murmurhash3js-revisited "^3.0.0" -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== - dependencies: - eslint-scope "5.1.1" - "@noble/curves@1.2.0", "@noble/curves@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -3665,7 +2650,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -4297,11 +3282,6 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -4813,11 +3793,6 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.1.tgz#299eee74b7d87e116083ac5b1ce8dd9434668294" integrity sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew== -"@rushstack/eslint-patch@^1.1.0", "@rushstack/eslint-patch@^1.3.3": - version "1.10.2" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz#053f1540703faa81dea2966b768ee5581c66aeda" - integrity sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw== - "@safe-global/safe-apps-provider@0.18.1": version "0.18.1" resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.1.tgz#287b5a1e2ef3be630dacde54279409df3ced8202" @@ -5025,6 +4000,21 @@ ethers "^6.11.1" viem "2.x" +"@snowballtools/material-tailwind-react-fork@^2.1.10": + version "2.1.10" + resolved "https://registry.yarnpkg.com/@snowballtools/material-tailwind-react-fork/-/material-tailwind-react-fork-2.1.10.tgz#7a3e582122505157cb033168e48d6c93d93336e8" + integrity sha512-cj0fBHV9miq+EcFfF73mRNXp4bKtKCgJzJaEUDclRypwu1E1q/29ddWEq0SiACaHaUWvwqykAtpheSiwoPqh+w== + dependencies: + "@floating-ui/react" "0.19.0" + classnames "2.3.2" + deepmerge "4.2.2" + framer-motion "6.5.1" + material-ripple-effects "2.0.1" + prop-types "15.8.1" + react "18.2.0" + react-dom "18.2.0" + tailwind-merge "1.8.1" + "@snowballtools/smartwallet-alchemy-light@*", "@snowballtools/smartwallet-alchemy-light@file:../snowball-ts-sdk/packages/smartwallet-alchemy-light": version "0.0.1" dependencies: @@ -5044,17 +4034,7 @@ "@snowballtools/types@file:../snowball-ts-sdk/packages/types": version "0.0.1" -"@snowballtools/utils@*": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@snowballtools/utils/-/utils-0.0.1.tgz#283e6ffb8677b0145aa158c37302187ec113ba4f" - integrity sha512-uD/zv3VnxvTz0OLFdUx3ydZps56eJBQwvMDvxlYDV6S551BE7Xv8aFkXuq27lY/+DlpChU7QZinkqW4LEscehQ== - dependencies: - "@alchemy/aa-core" "^3.6.1" - "@snowballtools/types" "*" - alchemy-sdk "^3.2.0" - viem "2.x" - -"@snowballtools/utils@file:../snowball-ts-sdk/packages/utils": +"@snowballtools/utils@*", "@snowballtools/utils@file:../snowball-ts-sdk/packages/utils": version "0.0.1" dependencies: "@alchemy/aa-core" "^3.6.1" @@ -5673,16 +4653,6 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - "@types/jsonfile@*": version "6.1.4" resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702" @@ -5810,7 +4780,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^18.2.42": +"@types/react@*": version "18.2.76" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.76.tgz#49bf63dac2ade25289d5be9c5af9adda2cb8a18e" integrity sha512-T6z/v7YxpswDM61Vq5KoSPTJqCkroJfsDIsvXCr4+qOY6gik5Ju4w0jf67cpC5z7ydOnp/E0V0W08pDRy8u9Xw== @@ -5818,6 +4788,14 @@ "@types/prop-types" "*" csstype "^3.0.2" +"@types/react@^18.2.77": + version "18.2.77" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.77.tgz#af2f857b6a6dfb6ca89ec102ebc147b1f1616880" + integrity sha512-CUT9KUUF+HytDM7WiXKLF9qUSg4tGImwy4FXTlfEDPEkkNUzJ7rVFolYweJ9fS1ljoIaP7M7Rdjc5eUm/Yu5AA== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/secp256k1@^4.0.1", "@types/secp256k1@^4.0.4": version "4.0.6" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" @@ -5825,7 +4803,7 @@ dependencies: "@types/node" "*" -"@types/semver@^7.3.12", "@types/semver@^7.5.0", "@types/semver@^7.5.8": +"@types/semver@^7.5.8": version "7.5.8" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== @@ -5886,299 +4864,6 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.5.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/eslint-plugin@^6.5.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/eslint-plugin@^7.1.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.6.0.tgz#1f5df5cda490a0bcb6fbdd3382e19f1241024242" - integrity sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.6.0" - "@typescript-eslint/type-utils" "7.6.0" - "@typescript-eslint/utils" "7.6.0" - "@typescript-eslint/visitor-keys" "7.6.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.3.1" - natural-compare "^1.4.0" - semver "^7.6.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/experimental-utils@^5.0.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" - integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== - dependencies: - "@typescript-eslint/utils" "5.62.0" - -"@typescript-eslint/parser@^5.5.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" - integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== - dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - debug "^4.3.4" - -"@typescript-eslint/parser@^6.5.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/parser@^7.1.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.6.0.tgz#0aca5de3045d68b36e88903d15addaf13d040a95" - integrity sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg== - dependencies: - "@typescript-eslint/scope-manager" "7.6.0" - "@typescript-eslint/types" "7.6.0" - "@typescript-eslint/typescript-estree" "7.6.0" - "@typescript-eslint/visitor-keys" "7.6.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/scope-manager@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.6.0.tgz#1e9972f654210bd7500b31feadb61a233f5b5e9d" - integrity sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w== - dependencies: - "@typescript-eslint/types" "7.6.0" - "@typescript-eslint/visitor-keys" "7.6.0" - -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== - dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== - dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/type-utils@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.6.0.tgz#644f75075f379827d25fe0713e252ccd4e4a428c" - integrity sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw== - dependencies: - "@typescript-eslint/typescript-estree" "7.6.0" - "@typescript-eslint/utils" "7.6.0" - debug "^4.3.4" - ts-api-utils "^1.3.0" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/types@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.6.0.tgz#53dba7c30c87e5f10a731054266dd905f1fbae38" - integrity sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/typescript-estree@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.6.0.tgz#112a3775563799fd3f011890ac8322f80830ac17" - integrity sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw== - dependencies: - "@typescript-eslint/types" "7.6.0" - "@typescript-eslint/visitor-keys" "7.6.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.58.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/utils@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.6.0.tgz#e400d782280b6f724c8a1204269d984c79202282" - integrity sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.15" - "@types/semver" "^7.5.8" - "@typescript-eslint/scope-manager" "7.6.0" - "@typescript-eslint/types" "7.6.0" - "@typescript-eslint/typescript-estree" "7.6.0" - semver "^7.6.0" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@typescript-eslint/visitor-keys@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.6.0.tgz#d1ce13145844379021e1f9bd102c1d78946f4e76" - integrity sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw== - dependencies: - "@typescript-eslint/types" "7.6.0" - eslint-visitor-keys "^3.4.3" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@vercel/style-guide@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@vercel/style-guide/-/style-guide-5.2.0.tgz#8e09fb48065bc6133add67ff2bc7a219d228fb46" - integrity sha512-fNSKEaZvSkiBoF6XEefs8CcgAV9K9e+MbcsDZjUsktHycKdA0jvjAzQi1W/FzLS+Nr5zZ6oejCwq/97dHUKe0g== - dependencies: - "@babel/core" "^7.22.11" - "@babel/eslint-parser" "^7.22.11" - "@rushstack/eslint-patch" "^1.3.3" - "@typescript-eslint/eslint-plugin" "^6.5.0" - "@typescript-eslint/parser" "^6.5.0" - eslint-config-prettier "^9.0.0" - eslint-import-resolver-alias "^1.1.2" - eslint-import-resolver-typescript "^3.6.0" - eslint-plugin-eslint-comments "^3.2.0" - eslint-plugin-import "^2.28.1" - eslint-plugin-jest "^27.2.3" - eslint-plugin-jsx-a11y "^6.7.1" - eslint-plugin-playwright "^0.16.0" - eslint-plugin-react "^7.33.2" - eslint-plugin-react-hooks "^4.6.0" - eslint-plugin-testing-library "^6.0.1" - eslint-plugin-tsdoc "^0.2.17" - eslint-plugin-unicorn "^48.0.1" - prettier-plugin-packagejson "^2.4.5" - "@vitejs/plugin-react@^4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" @@ -6949,17 +5634,12 @@ accepts@^1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - acorn-walk@^8.1.1: version "8.3.2" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.11.3, acorn@^8.4.1, acorn@^8.9.0: +acorn@^8.11.3, acorn@^8.4.1: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -7008,16 +5688,6 @@ aggregate-error@^3.0.0, aggregate-error@^3.1.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.12.4, ajv@~6.12.6: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - alchemy-sdk@^3.0.0, alchemy-sdk@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/alchemy-sdk/-/alchemy-sdk-3.2.1.tgz#23ced2b6f44ce4960ca0950b3b328c0d12b0098e" @@ -7251,14 +5921,14 @@ aria-query@5.1.3: dependencies: deep-equal "^2.0.5" -aria-query@^5.0.0, aria-query@^5.3.0: +aria-query@^5.0.0: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: dequal "^2.0.3" -array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: +array-buffer-byte-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== @@ -7281,102 +5951,11 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-includes@^3.1.6, array-includes@^3.1.7: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.findlast@^1.2.4: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" - integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" - -array.prototype.findlastindex@^1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" - integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" - -array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.toreversed@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" - integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" - integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.1.0" - es-shim-unscopables "^1.0.2" - -arraybuffer.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" - integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== - dependencies: - array-buffer-byte-length "^1.0.1" - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.2.1" - get-intrinsic "^1.2.3" - is-array-buffer "^3.0.4" - is-shared-array-buffer "^1.0.2" - arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -7398,11 +5977,6 @@ assert@^2.1.0: object.assign "^4.1.4" util "^0.12.5" -ast-types-flow@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" - integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== - async-mutex@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" @@ -7427,6 +6001,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atomic-sleep@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" @@ -7451,11 +6030,6 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axe-core@=4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== - axios@^0.21.2: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -7479,13 +6053,6 @@ axios@^1.6.0, axios@^1.6.5, axios@^1.6.7: form-data "^4.0.0" proxy-from-env "^1.1.0" -axobject-query@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== - dependencies: - dequal "^2.0.3" - babel-plugin-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -7495,57 +6062,6 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.10" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz#276f41710b03a64f6467433cab72cbc2653c38b1" - integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.1" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" - integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - core-js-compat "^3.36.1" - -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz#4f08ef4c62c7a7f66a35ed4c0d75e30506acc6be" - integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - -babel-plugin-transform-react-remove-prop-types@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" - integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== - -babel-preset-react-app@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" - integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== - dependencies: - "@babel/core" "^7.16.0" - "@babel/plugin-proposal-class-properties" "^7.16.0" - "@babel/plugin-proposal-decorators" "^7.16.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" - "@babel/plugin-proposal-numeric-separator" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-private-methods" "^7.16.0" - "@babel/plugin-transform-flow-strip-types" "^7.16.0" - "@babel/plugin-transform-react-display-name" "^7.16.0" - "@babel/plugin-transform-runtime" "^7.16.4" - "@babel/preset-env" "^7.16.4" - "@babel/preset-react" "^7.16.0" - "@babel/preset-typescript" "^7.16.0" - "@babel/runtime" "^7.16.3" - babel-plugin-macros "^3.1.0" - babel-plugin-transform-react-remove-prop-types "^0.4.24" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -7864,11 +6380,6 @@ bufferutil@^4.0.1, bufferutil@^4.0.8: dependencies: node-gyp-build "^4.3.0" -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" @@ -8092,7 +6603,7 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -ci-info@^3.2.0, ci-info@^3.6.1, ci-info@^3.8.0: +ci-info@^3.2.0, ci-info@^3.6.1, ci-info@^3.7.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== @@ -8122,13 +6633,6 @@ classnames@^2.2.3: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== -clean-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" - integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== - dependencies: - escape-string-regexp "^1.0.5" - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -8325,11 +6829,6 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -confusing-browser-globals@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - consola@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" @@ -8468,13 +6967,6 @@ copyfiles@^2.4.1: untildify "^4.0.0" yargs "^16.1.0" -core-js-compat@^3.31.0, core-js-compat@^3.36.1: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8" - integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== - dependencies: - browserslist "^4.23.0" - core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -8587,7 +7079,7 @@ cross-inspect@1.0.0: dependencies: tslib "^2.4.0" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -8669,43 +7161,11 @@ dag-jose@^1.0.0: "@ipld/dag-cbor" "^6.0.3" multiformats "^9.0.2" -damerau-levenshtein@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - date-and-time@^2.4.1: version "2.4.3" resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-2.4.3.tgz#116963998a8cecd478955ae053f31a6747a988df" @@ -8740,20 +7200,13 @@ debug@2.6.9, debug@^2.2.0: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" @@ -8813,11 +7266,6 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - deepmerge@4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" @@ -8844,7 +7292,7 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.1.3, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -8942,11 +7390,6 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== -detect-indent@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.1.tgz#cbb060a12842b9c4d333f1cac4aa4da1bb66bc25" - integrity sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g== - detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -8957,11 +7400,6 @@ detect-libc@^2.0.0: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== -detect-newline@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-4.0.1.tgz#fcefdb5713e1fb8cb2839b8b6ee22e6716ab8f23" - integrity sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog== - detect-node-es@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" @@ -9013,20 +7451,6 @@ dns-over-http-resolver@^1.2.3: native-fetch "^3.0.0" receptacle "^1.3.2" -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: version "0.5.16" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" @@ -9044,11 +7468,6 @@ dotenv-expand@~10.0.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== -dotenv@16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== - dotenv@^16.0.3: version "16.4.5" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" @@ -9211,14 +7630,6 @@ engine.io-parser@~5.2.1: resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== -enhanced-resolve@^5.12.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" - integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -9258,58 +7669,6 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== - dependencies: - array-buffer-byte-length "^1.0.1" - arraybuffer.prototype.slice "^1.0.3" - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" - es-define-property "^1.0.0" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.4" - get-symbol-description "^1.0.2" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - hasown "^2.0.2" - internal-slot "^1.0.7" - is-array-buffer "^3.0.4" - is-callable "^1.2.7" - is-data-view "^1.0.1" - is-negative-zero "^2.0.3" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.3" - is-string "^1.0.7" - is-typed-array "^1.1.13" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" - safe-array-concat "^1.1.2" - safe-regex-test "^1.0.3" - string.prototype.trim "^1.2.9" - string.prototype.trimend "^1.0.8" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.2" - typed-array-length "^1.0.6" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.15" - es-define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" @@ -9317,7 +7676,7 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" -es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: +es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== @@ -9337,58 +7696,6 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: - version "1.0.18" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz#4d3424f46b24df38d064af6fbbc89274e29ea69d" - integrity sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-errors "^1.3.0" - es-set-tostringtag "^2.0.3" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - globalthis "^1.0.3" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - iterator.prototype "^1.1.2" - safe-array-concat "^1.1.2" - -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== - dependencies: - get-intrinsic "^1.2.4" - has-tostringtag "^1.0.2" - hasown "^2.0.1" - -es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: version "0.10.64" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" @@ -9499,311 +7806,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@^9.0.0, eslint-config-prettier@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-config-react-app@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" - integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== - dependencies: - "@babel/core" "^7.16.0" - "@babel/eslint-parser" "^7.16.3" - "@rushstack/eslint-patch" "^1.1.0" - "@typescript-eslint/eslint-plugin" "^5.5.0" - "@typescript-eslint/parser" "^5.5.0" - babel-preset-react-app "^10.0.1" - confusing-browser-globals "^1.0.11" - eslint-plugin-flowtype "^8.0.3" - eslint-plugin-import "^2.25.3" - eslint-plugin-jest "^25.3.0" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.27.1" - eslint-plugin-react-hooks "^4.3.0" - eslint-plugin-testing-library "^5.0.1" - -eslint-config-turbo@^1.12.4: - version "1.13.2" - resolved "https://registry.yarnpkg.com/eslint-config-turbo/-/eslint-config-turbo-1.13.2.tgz#7f1893f7b26a5570091316c9df8097707b630a20" - integrity sha512-TzvsMwNJx/P4JYw79iFqbyQApnyT050gW7dBxnNeNVl3pVMnT2rwaFo9Q3Hc49Tp5NANxEwYN9RStF50P/IwGA== - dependencies: - eslint-plugin-turbo "1.13.2" - -eslint-import-resolver-alias@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-alias/-/eslint-import-resolver-alias-1.1.2.tgz#297062890e31e4d6651eb5eba9534e1f6e68fc97" - integrity sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w== - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-import-resolver-typescript@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" - integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== - dependencies: - debug "^4.3.4" - enhanced-resolve "^5.12.0" - eslint-module-utils "^2.7.4" - fast-glob "^3.3.1" - get-tsconfig "^4.5.0" - is-core-module "^2.11.0" - is-glob "^4.0.3" - -eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" - integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== - dependencies: - debug "^3.2.7" - -eslint-plugin-eslint-comments@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" - integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== - dependencies: - escape-string-regexp "^1.0.5" - ignore "^5.0.5" - -eslint-plugin-flowtype@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" - integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== - dependencies: - lodash "^4.17.21" - string-natural-compare "^3.0.1" - -eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.28.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" - semver "^6.3.1" - tsconfig-paths "^3.15.0" - -eslint-plugin-jest@^25.3.0: - version "25.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" - integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== - dependencies: - "@typescript-eslint/experimental-utils" "^5.0.0" - -eslint-plugin-jest@^27.2.3: - version "27.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" - integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.7.1: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" - integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== - dependencies: - "@babel/runtime" "^7.23.2" - aria-query "^5.3.0" - array-includes "^3.1.7" - array.prototype.flatmap "^1.3.2" - ast-types-flow "^0.0.8" - axe-core "=4.7.0" - axobject-query "^3.2.1" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.15" - hasown "^2.0.0" - jsx-ast-utils "^3.3.5" - language-tags "^1.0.9" - minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - -eslint-plugin-only-warn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-only-warn/-/eslint-plugin-only-warn-1.1.0.tgz#c6ddc37ddc4e72c121f07be565fcb7b6671fe78a" - integrity sha512-2tktqUAT+Q3hCAU0iSf4xAN1k9zOpjK5WO8104mB0rT/dGhOa09582HN5HlbxNbPRZ0THV7nLGvzugcNOSjzfA== - -eslint-plugin-playwright@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-playwright/-/eslint-plugin-playwright-0.16.0.tgz#083c601a0704a7615509e63ac475bf7f0052d226" - integrity sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw== - -eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react-refresh@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.6.tgz#e8e8accab681861baed00c5c12da70267db0936f" - integrity sha512-NjGXdm7zgcKRkKMua34qVO9doI7VOxZ6ancSvBELJSSoX97jyndXcSoa8XBh69JoB31dNz3EEzlMcizZl7LaMA== - -eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.33.2: - version "7.34.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" - integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlast "^1.2.4" - array.prototype.flatmap "^1.3.2" - array.prototype.toreversed "^1.1.2" - array.prototype.tosorted "^1.1.3" - doctrine "^2.1.0" - es-iterator-helpers "^1.0.17" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - object.hasown "^1.1.3" - object.values "^1.1.7" - prop-types "^15.8.1" - resolve "^2.0.0-next.5" - semver "^6.3.1" - string.prototype.matchall "^4.0.10" - -eslint-plugin-testing-library@^5.0.1: - version "5.11.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz#5b46cdae96d4a78918711c0b4792f90088e62d20" - integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== - dependencies: - "@typescript-eslint/utils" "^5.58.0" - -eslint-plugin-testing-library@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.2.0.tgz#af3340b783c881eb19ec5ac6b3a4bfe8ab4a1f74" - integrity sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw== - dependencies: - "@typescript-eslint/utils" "^5.58.0" - -eslint-plugin-tsdoc@^0.2.17: - version "0.2.17" - resolved "https://registry.yarnpkg.com/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz#27789495bbd8778abbf92db1707fec2ed3dfe281" - integrity sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA== - dependencies: - "@microsoft/tsdoc" "0.14.2" - "@microsoft/tsdoc-config" "0.16.2" - -eslint-plugin-turbo@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-turbo/-/eslint-plugin-turbo-1.13.2.tgz#bf3d532ba0e95965ce2a2e5523cf2d82d6edd3ba" - integrity sha512-QNaihF0hTRjfOBd1SLHrftm8V3pOU35CNS/C0/Z6qY1xxdL1PSv4IctEIldSMX7/A1jOPYwMPO7wYwPXgjgp/g== - dependencies: - dotenv "16.0.3" - -eslint-plugin-unicorn@^48.0.1: - version "48.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-48.0.1.tgz#a6573bc1687ae8db7121fdd8f92394b6549a6959" - integrity sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw== - dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - "@eslint-community/eslint-utils" "^4.4.0" - ci-info "^3.8.0" - clean-regexp "^1.0.0" - esquery "^1.5.0" - indent-string "^4.0.0" - is-builtin-module "^3.2.1" - jsesc "^3.0.2" - lodash "^4.17.21" - pluralize "^8.0.0" - read-pkg-up "^7.0.1" - regexp-tree "^0.1.27" - regjsparser "^0.10.0" - semver "^7.5.4" - strip-indent "^3.0.0" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.0.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - esniff@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" @@ -9814,54 +7816,16 @@ esniff@^2.0.1: event-emitter "^0.3.5" type "^2.7.2" -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2, esquery@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -10224,17 +8188,12 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - fast-fifo@^1.0.0: version "1.3.2" resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: +fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -10245,16 +8204,11 @@ fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - fast-redact@^3.0.0: version "3.5.0" resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4" @@ -10286,13 +8240,6 @@ figures@3.2.0, figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -10350,13 +8297,12 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" + micromatch "^4.0.2" findup-sync@^5.0.0: version "5.0.0" @@ -10368,25 +8314,11 @@ findup-sync@^5.0.0: micromatch "^4.0.4" resolve-dir "^1.0.1" -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - follow-redirects@^1.14.0, follow-redirects@^1.14.8, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" @@ -10487,6 +8419,16 @@ fs-extra@^11.1.0, fs-extra@^11.1.1, fs-extra@^11.2.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -10516,16 +8458,6 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" @@ -10560,7 +8492,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -10601,11 +8533,6 @@ get-port@5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-stdin@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" - integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== - get-stream@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" @@ -10621,22 +8548,6 @@ get-stream@^8.0.1: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== -get-symbol-description@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" - integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== - dependencies: - call-bind "^1.0.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - -get-tsconfig@^4.5.0: - version "4.7.3" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.3.tgz#0498163d98f7b58484dd4906999c0c9d5f103f83" - integrity sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg== - dependencies: - resolve-pkg-maps "^1.0.0" - get-user-locale@^2.2.1: version "2.3.1" resolved "https://registry.yarnpkg.com/get-user-locale/-/get-user-locale-2.3.1.tgz#fc7319429c8a70fac01b3b2a0b08b0c71c1d3fe2" @@ -10645,11 +8556,6 @@ get-user-locale@^2.2.1: "@types/lodash.memoize" "^4.1.7" lodash.memoize "^4.1.1" -git-hooks-list@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/git-hooks-list/-/git-hooks-list-3.1.0.tgz#386dc531dcc17474cf094743ff30987a3d3e70fc" - integrity sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA== - git-raw-commits@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-3.0.0.tgz#5432f053a9744f67e8db03dbc48add81252cfdeb" @@ -10785,21 +8691,14 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.1, globalthis@^1.0.3: +globalthis@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" -globby@11.1.0, globby@^11.0.3, globby@^11.1.0: +globby@11.1.0, globby@^11.0.3: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -10811,17 +8710,6 @@ globby@11.1.0, globby@^11.0.3, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^13.1.2: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" - ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" - goober@^2.1.10: version "2.1.14" resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.14.tgz#4a5c94fc34dc086a8e6035360ae1800005135acd" @@ -10839,16 +8727,11 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6, graceful-fs@^4.2.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== -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - graphql-tag@^2.11.0, graphql-tag@^2.12.6: version "2.12.6" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" @@ -10907,7 +8790,7 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-bigints@^1.0.1, has-bigints@^1.0.2: +has-bigints@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== @@ -10929,7 +8812,7 @@ has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: dependencies: es-define-property "^1.0.0" -has-proto@^1.0.1, has-proto@^1.0.3: +has-proto@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== @@ -10968,7 +8851,7 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: +hasown@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== @@ -11192,7 +9075,7 @@ ignore-walk@^6.0.4: dependencies: minimatch "^9.0.0" -ignore@^5.0.4, ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: +ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== @@ -11307,7 +9190,7 @@ interface-store@^3.0.0: resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== -internal-slot@^1.0.4, internal-slot@^1.0.7: +internal-slot@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== @@ -11505,13 +9388,6 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== - dependencies: - has-tostringtag "^1.0.0" - is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -11534,14 +9410,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: +is-callable@^1.1.3: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== @@ -11553,21 +9422,14 @@ is-ci@3.0.1: dependencies: ci-info "^3.2.0" -is-core-module@^2.1.0, is-core-module@^2.11.0, is-core-module@^2.12.0, is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0, is-core-module@^2.8.1: +is-core-module@^2.12.0, is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: version "2.13.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" -is-data-view@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" - integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== - dependencies: - is-typed-array "^1.1.13" - -is-date-object@^1.0.1, is-date-object@^1.0.5: +is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -11599,26 +9461,19 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== - dependencies: - call-bind "^1.0.2" - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-generator-function@^1.0.10, is-generator-function@^1.0.7: +is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -11672,11 +9527,6 @@ is-nan@^1.3.2: call-bind "^1.0.0" define-properties "^1.1.3" -is-negative-zero@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" - integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - is-number-object@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" @@ -11694,11 +9544,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -11709,11 +9554,6 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-obj@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" - integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== - is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -11739,7 +9579,7 @@ is-set@^2.0.2, is-set@^2.0.3: resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== -is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: +is-shared-array-buffer@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== @@ -11775,7 +9615,7 @@ is-string@^1.0.5, is-string@^1.0.7: dependencies: has-tostringtag "^1.0.0" -is-symbol@^1.0.2, is-symbol@^1.0.3: +is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== @@ -11789,7 +9629,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.13, is-typed-array@^1.1.3: +is-typed-array@^1.1.3: version "1.1.13" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== @@ -11811,13 +9651,6 @@ is-weakmap@^2.0.2: resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - is-weakset@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" @@ -11831,7 +9664,7 @@ is-windows@^1.0.1: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.2.0: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -11987,17 +9820,6 @@ it-to-stream@^1.0.0: p-fifo "^1.0.0" readable-stream "^3.6.0" -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== - dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" - jackspeak@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" @@ -12099,11 +9921,6 @@ jiti@^1.21.0: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== -jju@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" - integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== - jose@^4.14.4: version "4.15.5" resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.5.tgz#6475d0f467ecd3c630a1b5dadd2735a7288df706" @@ -12154,21 +9971,6 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -jsesc@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -12206,28 +10008,21 @@ json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json-stable-stringify@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" + integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg== + dependencies: + call-bind "^1.0.5" + isarray "^2.0.5" + jsonify "^0.0.1" + object-keys "^1.1.1" json-stringify-safe@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -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== - dependencies: - minimist "^1.2.0" - json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -12252,6 +10047,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -12278,16 +10078,6 @@ jsonwebtoken@^9.0.2: ms "^2.1.1" semver "^7.5.4" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: - version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - jszip@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" @@ -12329,13 +10119,6 @@ keccak@^3.0.0, keccak@^3.0.3: node-gyp-build "^4.2.0" readable-stream "^3.6.0" -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - keyvaluestorage-interface@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" @@ -12346,17 +10129,12 @@ kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -language-subtag-registry@^0.3.20: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== - -language-tags@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" - integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== dependencies: - language-subtag-registry "^0.3.20" + graceful-fs "^4.1.11" lerna@^8.0.0: version "8.1.2" @@ -12438,14 +10216,6 @@ lerna@^8.0.0: yargs "17.7.2" yargs-parser "21.1.1" -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - libnpmaccess@7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-7.0.2.tgz#7f056c8c933dd9c8ba771fa6493556b53c5aac52" @@ -12646,13 +10416,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - lodash-clean@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/lodash-clean/-/lodash-clean-2.2.3.tgz#eb72801ba9ebfb2771bed3cc971d9e7835a78611" @@ -12710,11 +10473,6 @@ lodash.memoize@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -12962,7 +10720,7 @@ micro-ftch@^0.3.1: resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== -micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -13036,7 +10794,7 @@ minimatch@9.0.3: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -13064,7 +10822,7 @@ minimatch@^8.0.2: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.3, minimatch@^9.0.4: +minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.3: version "9.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== @@ -13352,16 +11110,6 @@ native-fetch@^3.0.0: resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -13759,7 +11507,7 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.4, object.assign@^4.1.5: +object.assign@^4.1.4: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== @@ -13769,52 +11517,6 @@ object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" - integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -object.fromentries@^2.0.7: - version "2.0.8" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" - integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.groupby@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" - integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - -object.hasown@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" - integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== - dependencies: - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.values@^1.1.6, object.values@^1.1.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" - integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - octokit@^3.1.2: version "3.2.0" resolved "https://registry.yarnpkg.com/octokit/-/octokit-3.2.0.tgz#2e75bb0a5f0511aa37ee20c2714206ed0d09e2bf" @@ -13883,6 +11585,14 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + open@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -13902,18 +11612,6 @@ optimism@^0.18.0: "@wry/trie" "^0.4.3" tslib "^2.3.0" -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - ora@5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" @@ -13980,13 +11678,6 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -14001,13 +11692,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - p-map-series@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" @@ -14179,6 +11863,27 @@ parseurl@^1.3.3, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +patch-package@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" + integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^2.2.2" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -14204,7 +11909,7 @@ path-key@^4.0.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -14338,11 +12043,6 @@ please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - pngjs@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" @@ -14453,19 +12153,6 @@ prebuild-install@^7.1.1: tar-fs "^2.0.0" tunnel-agent "^0.6.0" -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-plugin-packagejson@^2.4.5: - version "2.5.0" - resolved "https://registry.yarnpkg.com/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.0.tgz#23d2cb8b1f7840702d35e3a5078e564ea0bc63e0" - integrity sha512-6XkH3rpin5QEQodBSVNg+rBo4r91g/1mCaRwS1YGdQJZ6jwqrg2UchBsIG9tpS1yK1kNBvOt84OILsX8uHzBGg== - dependencies: - sort-package-json "2.10.0" - synckit "0.9.0" - prettier@^3.1.0, prettier@^3.1.1: version "3.2.5" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" @@ -15094,19 +12781,6 @@ reflect-metadata@^0.2.1: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b" integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q== -reflect.getprototypeof@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" - integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.1" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" - refractor@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" @@ -15116,36 +12790,12 @@ refractor@^3.6.0: parse-entities "^2.0.0" prismjs "~1.27.0" -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexp-tree@^0.1.27: - version "0.1.27" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" - integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== - -regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: +regexp.prototype.flags@^1.5.1: version "1.5.2" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== @@ -15155,32 +12805,6 @@ regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: es-errors "^1.3.0" set-function-name "^2.0.1" -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regjsparser@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892" - integrity sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA== - dependencies: - jsesc "~0.5.0" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - rehackt@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/rehackt/-/rehackt-0.0.6.tgz#7a0a2247f2295e7548915417e44fbbf03bf004f4" @@ -15226,12 +12850,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.3, resolve@^1.22.4: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.3: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -15240,23 +12859,6 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19. path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.5: - version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@~1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - response-iterator@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" @@ -15290,10 +12892,10 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" @@ -15377,16 +12979,6 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" -safe-array-concat@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" - integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - has-symbols "^1.0.3" - isarray "^2.0.5" - safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -15397,15 +12989,6 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" - integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-regex "^1.1.4" - safe-stable-stringify@^2.1.0: version "2.4.3" resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" @@ -15514,7 +13097,7 @@ set-function-length@^1.2.1: gopd "^1.0.1" has-property-descriptors "^1.0.2" -set-function-name@^2.0.1, set-function-name@^2.0.2: +set-function-name@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== @@ -15595,7 +13178,7 @@ shx@^0.3.4: minimist "^1.2.3" shelljs "^0.8.5" -side-channel@^1.0.4, side-channel@^1.0.6: +side-channel@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== @@ -15676,10 +13259,10 @@ slash@3.0.0, slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== smart-buffer@^4.2.0: version "4.2.0" @@ -15744,25 +13327,6 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -sort-object-keys@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" - integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== - -sort-package-json@2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-2.10.0.tgz#6be07424bf3b7db9fbb1bdd69e7945f301026d8a" - integrity sha512-MYecfvObMwJjjJskhxYfuOADkXp1ZMMnCFC8yhp+9HDsk7HhR336hd7eiBs96lTXfiqmUNI+WQCeCMRBhl251g== - dependencies: - detect-indent "^7.0.1" - detect-newline "^4.0.0" - get-stdin "^9.0.0" - git-hooks-list "^3.0.0" - globby "^13.1.2" - is-plain-obj "^4.1.0" - semver "^7.6.0" - sort-object-keys "^1.1.3" - source-map-js@^1.0.2, source-map-js@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" @@ -15915,11 +13479,6 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== -string-natural-compare@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" - integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== - "string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -15938,52 +13497,6 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.10: - version "4.0.11" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" - integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - regexp.prototype.flags "^1.5.2" - set-function-name "^2.0.2" - side-channel "^1.0.6" - -string.prototype.trim@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" - integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-object-atoms "^1.0.0" - -string.prototype.trimend@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" - integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string.prototype.trimstart@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" - integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -16058,11 +13571,6 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -16162,14 +13670,6 @@ symbol-observable@^4.0.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== -synckit@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.0.tgz#5b33b458b3775e4466a5b377fba69c63572ae449" - integrity sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - system-architecture@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d" @@ -16227,11 +13727,6 @@ tailwindcss@^3.4.3: resolve "^1.22.2" sucrase "^3.32.0" -tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -16287,11 +13782,6 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -16400,11 +13890,6 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -ts-api-utils@^1.0.1, ts-api-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== - ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -16436,16 +13921,6 @@ ts-node@^10.9.2: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - tsconfig-paths@^4.1.2: version "4.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" @@ -16455,7 +13930,7 @@ tsconfig-paths@^4.1.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@1.14.1, tslib@^1.8.1: +tslib@1.14.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -16495,13 +13970,6 @@ tsup@^8.0.2: sucrase "^3.20.3" tree-kill "^1.2.2" -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - tuf-js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" @@ -16542,23 +14010,11 @@ tweetnacl@^1.0.3: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -16592,50 +14048,6 @@ type@^2.7.2: resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== -typed-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" - integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-typed-array "^1.1.13" - -typed-array-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" - integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - possible-typed-array-names "^1.0.0" - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -16724,16 +14136,6 @@ uint8arrays@^5.0.1: dependencies: multiformats "^13.0.0" -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - uncrypto@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" @@ -16760,29 +14162,6 @@ unfetch@^4.2.0: resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.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== - unique-filename@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" @@ -16868,7 +14247,7 @@ uqr@^0.1.2: resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== -uri-js@^4.2.2, uri-js@^4.4.1: +uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -17185,24 +14564,6 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== - dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" - is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" - is-generator-function "^1.0.10" - is-regex "^1.1.4" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - which-collection@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" @@ -17218,7 +14579,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2, which-typed-array@^1.1.9: +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.2: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== @@ -17425,7 +14786,7 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.3.4: +yaml@^2.2.2, yaml@^2.3.4: version "2.4.1" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.1.tgz#2e57e0b5e995292c25c75d2658f0664765210eed" integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== @@ -17496,11 +14857,6 @@ yn@3.1.1: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - zen-observable-ts@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" From 6316aa852ba6f935f6f0ba0bf0b5553b6ade9a5c Mon Sep 17 00:00:00 2001 From: Gilbert Date: Thu, 11 Apr 2024 21:55:25 -0500 Subject: [PATCH 151/251] Add back .env.example --- packages/frontend/.env.example | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 packages/frontend/.env.example diff --git a/packages/frontend/.env.example b/packages/frontend/.env.example new file mode 100644 index 00000000..c1424c02 --- /dev/null +++ b/packages/frontend/.env.example @@ -0,0 +1,11 @@ +VITE_SERVER_URL='http://localhost:8000' + +VITE_GITHUB_CLIENT_ID= +VITE_GITHUB_PWA_TEMPLATE_REPO="snowball-tools/test-progressive-web-app" +VITE_GITHUB_IMAGE_UPLOAD_PWA_TEMPLATE_REPO="snowball-tools/image-upload-pwa-example" + +VITE_WALLET_CONNECT_ID= + +VITE_LIT_RELAY_API_KEY= + +LOCAL_SNOWBALL_SDK_DIR= From baadc507e71e2c3b7d3db473c30eaad29b13e95b Mon Sep 17 00:00:00 2001 From: Gilbert Date: Thu, 11 Apr 2024 21:59:33 -0500 Subject: [PATCH 152/251] Not yet --- packages/frontend/package.json | 9 +- packages/frontend/src/pages/SnowballLogin.tsx | 32 +- packages/frontend/src/utils/snowball.ts | 32 +- packages/frontend/src/utils/use-snowball.ts | 20 +- yarn.lock | 2016 +---------------- 5 files changed, 85 insertions(+), 2024 deletions(-) diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 2ab1eb7e..65eb6fec 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -21,14 +21,7 @@ "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-toast": "^1.1.5", "@radix-ui/react-tooltip": "^1.0.7", - "@snowballtools/auth": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/auth", - "@snowballtools/auth-lit": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/auth-lit", - "@snowballtools/js-sdk": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/js-sdk", - "@snowballtools/link-lit-alchemy-light": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/link-lit-alchemy-light", "@snowballtools/material-tailwind-react-fork": "^2.1.10", - "@snowballtools/smartwallet-alchemy-light": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/smartwallet-alchemy-light", - "@snowballtools/types": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/types", - "@snowballtools/utils": "/Users/rabbit-m2/p/snowball/snowball-ts-sdk/packages/utils", "@tanstack/react-query": "^5.22.2", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", @@ -80,4 +73,4 @@ "typescript": "^5.3.3", "vite": "^5.2.0" } -} +} \ No newline at end of file diff --git a/packages/frontend/src/pages/SnowballLogin.tsx b/packages/frontend/src/pages/SnowballLogin.tsx index c795cf74..828f9fc4 100644 --- a/packages/frontend/src/pages/SnowballLogin.tsx +++ b/packages/frontend/src/pages/SnowballLogin.tsx @@ -1,17 +1,17 @@ -import { useSnowball } from 'utils/use-snowball'; +// import { useSnowball } from 'utils/use-snowball'; -export const SnowballLogin = () => { - const snowball = useSnowball(); - console.log(snowball); - return ( -
    -
    - snowball logo -
    -
    - ); -}; +// export const SnowballLogin = () => { +// const snowball = useSnowball(); +// console.log(snowball); +// return ( +//
    +//
    +// snowball logo +//
    +//
    +// ); +// }; diff --git a/packages/frontend/src/utils/snowball.ts b/packages/frontend/src/utils/snowball.ts index 94ebc692..c17731f8 100644 --- a/packages/frontend/src/utils/snowball.ts +++ b/packages/frontend/src/utils/snowball.ts @@ -1,19 +1,19 @@ -import { LitGoogleAuth } from '@snowballtools/auth-lit'; -import { Snowball, SnowballChain } from '@snowballtools/js-sdk'; -// import { LinkLitAlchemyLight } from '@snowballtools/link-lit-alchemy-light'; +// import { LitGoogleAuth } from '@snowballtools/auth-lit'; +// import { Snowball, SnowballChain } from '@snowballtools/js-sdk'; +// // import { LinkLitAlchemyLight } from '@snowballtools/link-lit-alchemy-light'; -export const DOMAIN = import.meta.env.VITE_DOMAIN || 'localhost'; -export const ORIGIN = - import.meta.env.VITE_VERCEL_ENV === 'production' - ? `https://${DOMAIN}` - : `http://${DOMAIN}:3000`; +// export const DOMAIN = import.meta.env.VITE_DOMAIN || 'localhost'; +// export const ORIGIN = +// import.meta.env.VITE_VERCEL_ENV === 'production' +// ? `https://${DOMAIN}` +// : `http://${DOMAIN}:3000`; -// prettier-ignore +// // prettier-ignore -export const snowball = Snowball.withAuth( - LitGoogleAuth.configure({ - litReplayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, - }), -).create({ - initialChain: SnowballChain.sepolia, -}); +// export const snowball = Snowball.withAuth( +// LitGoogleAuth.configure({ +// litReplayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, +// }), +// ).create({ +// initialChain: SnowballChain.sepolia, +// }); diff --git a/packages/frontend/src/utils/use-snowball.ts b/packages/frontend/src/utils/use-snowball.ts index 955aa3fb..6657a3b2 100644 --- a/packages/frontend/src/utils/use-snowball.ts +++ b/packages/frontend/src/utils/use-snowball.ts @@ -1,13 +1,13 @@ -import { useEffect, useState } from 'react'; -import { snowball } from './snowball'; +// import { useEffect, useState } from 'react'; +// import { snowball } from './snowball'; -export function useSnowball() { - const [state, setState] = useState(100); +// export function useSnowball() { +// const [state, setState] = useState(100); - useEffect(() => { - // Subscribe and directly return the unsubscribe function - return snowball.subscribe(() => setState(state + 1)); - }, [snowball]); +// useEffect(() => { +// // Subscribe and directly return the unsubscribe function +// return snowball.subscribe(() => setState(state + 1)); +// }, [snowball]); - return snowball; -} +// return snowball; +// } diff --git a/yarn.lock b/yarn.lock index 2ae4abc1..069d780c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,46 +12,6 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== -"@adraffy/ens-normalize@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" - integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== - -"@alchemy/aa-accounts@^3.6.1", "@alchemy/aa-accounts@^3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@alchemy/aa-accounts/-/aa-accounts-3.8.0.tgz#29821225f9b547fdddc1fa0f34184173a7f245aa" - integrity sha512-TrXu1UPUhV9FW8OZ9b+i9fD9/sjIcxSK+fEujKqc6yZbch6yEdK7y5aVUt5vGsb3fOiT2zhKPb8w0CA0isiN8w== - dependencies: - "@alchemy/aa-core" "^3.8.0" - viem "2.8.6" - -"@alchemy/aa-alchemy@^3.6.1": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@alchemy/aa-alchemy/-/aa-alchemy-3.8.0.tgz#6cfae5edc2203d5ea772f233605fab7df441baa6" - integrity sha512-O6vRc7u3aohf9XeAS9r0zqiQdI5MME7jNdlg3Q0jh3G5HsCLFXhQGa+C0lGJhPdNb1i4qJ2frvqYs1eYdVmTmQ== - dependencies: - "@alchemy/aa-core" "^3.8.0" - "@turnkey/http" "^2.6.2" - "@turnkey/iframe-stamper" "^1.0.0" - "@turnkey/viem" "^0.4.8" - "@turnkey/webauthn-stamper" "^0.4.3" - eventemitter3 "^5.0.1" - viem "2.8.6" - zustand "^4.5.2" - optionalDependencies: - "@alchemy/aa-accounts" "^3.8.0" - alchemy-sdk "^3.0.0" - -"@alchemy/aa-core@^3.6.1", "@alchemy/aa-core@^3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@alchemy/aa-core/-/aa-core-3.8.0.tgz#0db37dd333143609cfefe5ddb9b2f360b45c8ec2" - integrity sha512-/Z1Jo6d54GmTrIbx1oI4e9yc2L3FBnj6SHaryEn/sJpwhFL3piJGpNrzlrLDhwvkdjxYIXy5rn9c8vkvogSYTg== - dependencies: - abitype "^0.8.3" - eventemitter3 "^5.0.1" - viem "2.8.6" - zod "^3.22.4" - "@alloc/quick-lru@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" @@ -193,11 +153,6 @@ dependencies: xss "^1.0.8" -"@assemblyscript/loader@^0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" - integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" @@ -464,14 +419,6 @@ preact "^10.16.0" sha.js "^2.4.11" -"@confio/ics23@^0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d" - integrity sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w== - dependencies: - "@noble/hashes" "^1.0.0" - protobufjs "^6.8.8" - "@cosmjs/amino@0.28.13", "@cosmjs/amino@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.28.13.tgz#b51417a23c1ff8ef8b85a6862eba8492c6c44f38" @@ -482,16 +429,6 @@ "@cosmjs/math" "0.28.13" "@cosmjs/utils" "0.28.13" -"@cosmjs/amino@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.30.1.tgz#7c18c14627361ba6c88e3495700ceea1f76baace" - integrity sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w== - dependencies: - "@cosmjs/crypto" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - "@cosmjs/crypto@0.28.13", "@cosmjs/crypto@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.28.13.tgz#541b6a36f616b2da5a568ead46d4e83841ceb412" @@ -505,19 +442,6 @@ elliptic "^6.5.3" libsodium-wrappers "^0.7.6" -"@cosmjs/crypto@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.30.1.tgz#21e94d5ca8f8ded16eee1389d2639cb5c43c3eb5" - integrity sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ== - dependencies: - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - "@noble/hashes" "^1" - bn.js "^5.2.0" - elliptic "^6.5.4" - libsodium-wrappers "^0.7.6" - "@cosmjs/encoding@0.28.13", "@cosmjs/encoding@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.28.13.tgz#7994e8e2c435beaf0690296ffb0f7f3eaec8150b" @@ -527,23 +451,6 @@ bech32 "^1.1.4" readonly-date "^1.0.0" -"@cosmjs/encoding@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.30.1.tgz#b5c4e0ef7ceb1f2753688eb96400ed70f35c6058" - integrity sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ== - dependencies: - base64-js "^1.3.0" - bech32 "^1.1.4" - readonly-date "^1.0.0" - -"@cosmjs/json-rpc@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz#16f21305fc167598c8a23a45549b85106b2372bc" - integrity sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ== - dependencies: - "@cosmjs/stream" "^0.30.1" - xstream "^11.14.0" - "@cosmjs/math@0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.28.13.tgz#50c05bc67007a04216f7f5e0c93f57270f8cc077" @@ -551,13 +458,6 @@ dependencies: bn.js "^5.2.0" -"@cosmjs/math@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.30.1.tgz#8b816ef4de5d3afa66cb9fdfb5df2357a7845b8a" - integrity sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q== - dependencies: - bn.js "^5.2.0" - "@cosmjs/proto-signing@^0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.28.13.tgz#95ac12f0da0f0814f348f5ae996c3e96d015df61" @@ -571,80 +471,11 @@ cosmjs-types "^0.4.0" long "^4.0.0" -"@cosmjs/proto-signing@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz#f0dda372488df9cd2677150b89b3e9c72b3cb713" - integrity sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ== - dependencies: - "@cosmjs/amino" "^0.30.1" - "@cosmjs/crypto" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - cosmjs-types "^0.7.1" - long "^4.0.0" - -"@cosmjs/socket@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.30.1.tgz#00b22f4b5e2ab01f4d82ccdb7b2e59536bfe5ce0" - integrity sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow== - dependencies: - "@cosmjs/stream" "^0.30.1" - isomorphic-ws "^4.0.1" - ws "^7" - xstream "^11.14.0" - -"@cosmjs/stargate@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.30.1.tgz#e1b22e1226cffc6e93914a410755f1f61057ba04" - integrity sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog== - dependencies: - "@confio/ics23" "^0.6.8" - "@cosmjs/amino" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stream" "^0.30.1" - "@cosmjs/tendermint-rpc" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - cosmjs-types "^0.7.1" - long "^4.0.0" - protobufjs "~6.11.3" - xstream "^11.14.0" - -"@cosmjs/stream@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.30.1.tgz#ba038a2aaf41343696b1e6e759d8e03a9516ec1a" - integrity sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ== - dependencies: - xstream "^11.14.0" - -"@cosmjs/tendermint-rpc@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz#c16378892ba1ac63f72803fdf7567eab9d4f0aa0" - integrity sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ== - dependencies: - "@cosmjs/crypto" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/json-rpc" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/socket" "^0.30.1" - "@cosmjs/stream" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - axios "^0.21.2" - readonly-date "^1.0.0" - xstream "^11.14.0" - "@cosmjs/utils@0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.28.13.tgz#2fd2844ec832d7833811e2ae1691305d09791a08" integrity sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg== -"@cosmjs/utils@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.30.1.tgz#6d92582341be3c2ec8d82090253cfa4b7f959edb" - integrity sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g== - "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -1036,7 +867,7 @@ "@ethereumjs/util" "^8.1.0" ethereum-cryptography "^2.0.0" -"@ethereumjs/util@^8.0.0", "@ethereumjs/util@^8.1.0": +"@ethereumjs/util@^8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== @@ -1133,7 +964,7 @@ dependencies: "@ethersproject/bignumber" "^5.7.0" -"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0": +"@ethersproject/contracts@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== @@ -1236,7 +1067,7 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.0": +"@ethersproject/providers@5.7.2": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== @@ -1335,7 +1166,7 @@ "@ethersproject/rlp" "^5.7.0" "@ethersproject/signing-key" "^5.7.0" -"@ethersproject/units@5.7.0", "@ethersproject/units@^5.7.0": +"@ethersproject/units@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== @@ -1344,7 +1175,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.7.0": +"@ethersproject/wallet@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== @@ -1590,15 +1421,7 @@ resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== -"@ipld/dag-cbor@^6.0.3": - version "6.0.15" - resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-6.0.15.tgz#aebe7a26c391cae98c32faedb681b1519e3d2372" - integrity sha512-Vm3VTSTwlmGV92a3C5aeY+r2A18zbH2amehNhsX8PBa3muXICaWrN8Uri85A5hLH7D7ElhE8PdjxD6kNqUmTZA== - dependencies: - cborg "^1.5.4" - multiformats "^9.5.4" - -"@ipld/dag-cbor@^7.0.0", "@ipld/dag-cbor@^7.0.1": +"@ipld/dag-cbor@^7.0.1": version "7.0.3" resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== @@ -1606,7 +1429,7 @@ cborg "^1.6.0" multiformats "^9.5.4" -"@ipld/dag-json@^8.0.1", "@ipld/dag-json@^8.0.9": +"@ipld/dag-json@^8.0.9": version "8.0.11" resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-8.0.11.tgz#8d30cc2dfacb0aef04d327465d3df91e79e8b6ce" integrity sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA== @@ -1614,20 +1437,6 @@ cborg "^1.5.4" multiformats "^9.5.4" -"@ipld/dag-pb@^2.1.3": - version "2.1.18" - resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-2.1.18.tgz#12d63e21580e87c75fd1a2c62e375a78e355c16f" - integrity sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg== - dependencies: - multiformats "^9.5.4" - -"@ipld/dag-pb@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.1.0.tgz#4ebec92eeb9e8f317b8ef971221c6dac7b12b302" - integrity sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg== - dependencies: - multiformats "^13.1.0" - "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1786,523 +1595,6 @@ resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz#353ce4a76c83fadec272ea5674ede767650762fd" integrity sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g== -"@lit-protocol/access-control-conditions@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/access-control-conditions/-/access-control-conditions-3.0.32.tgz#e21c4e55327adcd2c7537ae30e733c0db30b5e33" - integrity sha512-m8xKM7Nh8WkXq7dWsJsjUEkMnbEo/iPDAX3kvZkPRoeo3RZ9abOBedfMsBIjx9R4hj/poyfC7TSGhstvoesGGQ== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/auth-browser@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/auth-browser/-/auth-browser-3.0.32.tgz#8c03645394fab27afd9fbe93a3adab70bed43a50" - integrity sha512-aY2BYZJJZQLZczM/WRcUbB5J54SXh4wn+P2+L9VpQTlKkshjgNLLeYOv705Y0uVaK1r9b2wTVjaMzZJPMZ4qXw== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - "@walletconnect/ethereum-provider" "2.9.2" - "@walletconnect/modal" "2.6.1" - ethers "^5.7.1" - jszip "^3.10.1" - lit-siwe "^1.1.8" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.13.3" - uint8arrays "^4.0.3" - util "^0.12.4" - web-vitals "^3.0.4" - -"@lit-protocol/auth-helpers@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/auth-helpers/-/auth-helpers-3.0.32.tgz#1879796afee55e8c23950c9a10f2ca8bed5e1a89" - integrity sha512-QSnApvcDMkxSpRy6P46RSeCJcOJ05JC8WW++VeFkQbzRKcYU8lfkF39Xi6/I1h9sv2LFHrfbT7fY7ijPF7IjWA== - dependencies: - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - -"@lit-protocol/bls-sdk@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/bls-sdk/-/bls-sdk-3.0.32.tgz#53fee54b2d17363b92cc5f901a473c07f35ad58e" - integrity sha512-8wDcmMmeFA6YuxGn4wNCTrkTPyEBJ8qSXsXJCMHkuglwVgrI2rOK26PK/k++0mf1+i4C2TzKeF9V8GJagb/o3w== - dependencies: - pako "^2.1.0" - tslib "^2.3.0" - -"@lit-protocol/constants@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/constants/-/constants-3.0.32.tgz#c41bd2bc0b583bed747fcf518a9c712fde7174a3" - integrity sha512-hSna3+qRGuS9Hg6VrUnBUrLH+PZQINBQAEIwq2xQzWR234H1za1g9PNMibgjCfwcV2j9f6tiJgYoPAp4n0O21w== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/types" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - -"@lit-protocol/contracts-sdk@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/contracts-sdk/-/contracts-sdk-3.0.32.tgz#3254b128feb67e75f61ff180f66131ba12e47511" - integrity sha512-uqmTXQeele9HOWvu7ozQb7RvFjJxpDiQJOtqie17AR5O3J9DR6uASsr80uDP5zdlPnoouXnk22KNmsBsgvNo8g== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/types" "3.0.32" - bitcoinjs-lib "^6.1.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - jose "^4.14.4" - jszip "^3.10.1" - multiformats "^9.7.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/core@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/core/-/core-3.0.32.tgz#55a5834fa8c3dd3c5c03d3468146989d90c2edd2" - integrity sha512-YrtOJhTr7amaPE2CX5n7zgrKTF0opjS432YKQ8gyAwXUmlEyoNOBiGIa+HFLPgmw/AntQYV89zomjzx3hVgM7g== - dependencies: - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - bitcoinjs-lib "^6.1.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - jose "^4.14.4" - jszip "^3.10.1" - multiformats "^10.0.2" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/crypto@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/crypto/-/crypto-3.0.32.tgz#5febca628798fd49a002d5e4a43c8acb8f9e127d" - integrity sha512-Me7I2VVMg+dL0Q0x2Cqw6KTnYotRqGGNBuS/pay2kooI4UkheCz6ZnTt9eCtN7JF2pBIe0o/IFAzh1SFzSEZBQ== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/ecdsa-sdk@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/ecdsa-sdk/-/ecdsa-sdk-3.0.32.tgz#9ebac8ecfc275a6f2149fd56b1e13b3e8ed3bb7e" - integrity sha512-zuyE8ui+rIpM0MyoY5cPq9I+wQfxEouaRmbDplybaJc12UKWmnLDQCSQ4mPnZTs8FC5785Qfxj5VAe5CLQ+yEw== - dependencies: - pako "^2.1.0" - tslib "^2.3.0" - -"@lit-protocol/encryption@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/encryption/-/encryption-3.0.32.tgz#b167df877bd8e0778104c1767998a4c8491fa731" - integrity sha512-YMx3MQotn0cr26LcVNTLIPdl5xENP97TcsPsoXCaH7ArIOKXvmhqH3PbxfhyU9i/TTzCshDE18b0P9Od6oAwDQ== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - jszip "^3.10.1" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/lit-auth-client@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-auth-client/-/lit-auth-client-3.0.32.tgz#223a498c4b109558583f4ffa1dadf418a3fbd89a" - integrity sha512-McEMljGVEHsiMSI2hzqjrv3B4vX4VSEcTPwMKzKC1k6w43Hi/0GsU1Q0RGtaqIkNyvs/m+BeMR43lOKWn9LDAg== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-browser" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/core" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/encryption" "3.0.32" - "@lit-protocol/lit-node-client" "3.0.32" - "@lit-protocol/lit-node-client-nodejs" "3.0.32" - "@lit-protocol/lit-third-party-libs" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - "@simplewebauthn/browser" "^7.2.0" - "@simplewebauthn/typescript-types" "^7.0.0" - "@walletconnect/ethereum-provider" "2.9.2" - "@walletconnect/modal" "2.6.1" - base64url "^3.0.1" - bitcoinjs-lib "^6.1.0" - blockstore-core "^3.0.0" - bs58 "^5.0.0" - cbor-web "^9.0.1" - date-and-time "^2.4.1" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jose "^4.14.4" - jszip "^3.10.1" - lit-siwe "^1.1.8" - multiformats "^10.0.2" - nanoid "3.3.4" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - uint8arrays "^4.0.3" - -"@lit-protocol/lit-node-client-nodejs@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client-nodejs/-/lit-node-client-nodejs-3.0.32.tgz#0627b094d1d7de8370da4ade0bd5ecab7894feae" - integrity sha512-vivyz7SFHBpWk0j0teTEy+lxGYEftHecJRNPcEagBW2pmyMCQBL4XrwFBNH+k9aaCo1Zx4Q9WnVH0H78otcuLg== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/core" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/encryption" "3.0.32" - "@lit-protocol/lit-third-party-libs" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - bitcoinjs-lib "^6.1.0" - blockstore-core "^3.0.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jose "^4.14.4" - jszip "^3.10.1" - lit-siwe "^1.1.8" - multiformats "^10.0.2" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/lit-node-client@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client/-/lit-node-client-3.0.32.tgz#84e8f1da5f10a8ba5a377d1421a045fd5830a1c4" - integrity sha512-YAlMvhHq2d1vdHNVbqho8pqzEWY2MtsFOMGHVG11711oLal1fyFDr4iGJ5KnxxvK6+In2Amv65jQVSr1wlkdVQ== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-browser" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/core" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/encryption" "3.0.32" - "@lit-protocol/lit-node-client-nodejs" "3.0.32" - "@lit-protocol/lit-third-party-libs" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - "@walletconnect/ethereum-provider" "2.9.2" - "@walletconnect/modal" "2.6.1" - bitcoinjs-lib "^6.1.0" - blockstore-core "^3.0.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jose "^4.14.4" - jszip "^3.10.1" - lit-siwe "^1.1.8" - multiformats "^10.0.2" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - uint8arrays "^4.0.3" - -"@lit-protocol/lit-third-party-libs@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-third-party-libs/-/lit-third-party-libs-3.0.32.tgz#6813976bdf245df24431cd55065389fb739efe09" - integrity sha512-FtxJtuYLSKV6sesRA+GthEa/VrrEQag+oFM26mWu569SCBnsbMxaz2IJ3telpXKR8FXkaiIYXgsdkyEPj9KyNQ== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - blockstore-core "^3.0.0" - ipfs-unixfs-importer "^12.0.0" - tslib "^2.3.0" - -"@lit-protocol/logger@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/logger/-/logger-3.0.32.tgz#081ff6ac421cd3ab3bc993bb1c4b3c75b6deac50" - integrity sha512-18Vi6vbbenDMRhDGQTJolVG4rnhl5NQzplC327XYEkNN8lGR8bxbx9ajSC71anB5/XYtHy57yotMtvZTPK0uWg== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/types" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/misc-browser@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/misc-browser/-/misc-browser-3.0.32.tgz#3b38d2caf2286372ccce5a52d493c20b1579c652" - integrity sha512-r7YsHO+HOA1pvpMHJ3mptTDYSGizNyitqRSgk1vGoufk4jAsnXkGQS3HGfhcP0PADEWhiIo/tGVa9DSPlN58Sw== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - -"@lit-protocol/misc@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/misc/-/misc-3.0.32.tgz#80eb73665c80e7eae88bc3e8519a0c6a7e5d2c26" - integrity sha512-zH7Xr729/k6Yr8PqR0LWMro++C3guidvL1ukseht98gymVMwavKVmQg0+USDkXugzY6fKBIMzonOF4j5TK7zuw== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/types" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/nacl@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/nacl/-/nacl-3.0.32.tgz#3b936c5bc8c45cc81f10d58e5a5aa69b271b66c2" - integrity sha512-LqIbqWlDVwqrhSpTdb60rvLQ1p3P5PI96N+8WfXPtdTVIOJLJFvKsqbwv5Atzkn3PaUURCWkmpIafEHxEmGIqg== - dependencies: - tslib "^2.3.0" - -"@lit-protocol/pkp-base@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/pkp-base/-/pkp-base-3.0.32.tgz#e89d8cb73de5dfb1ea11aae9d7def9f8350f339e" - integrity sha512-oBEs4mfYnRdsoctT+YOMGjU+07VvPM6C0XBnM1/w7XHnVcGWXv5Q0HVp/+mVNmqH8pDhYAA9R64IUEpsP8UcNQ== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-browser" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/core" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/encryption" "3.0.32" - "@lit-protocol/lit-node-client" "3.0.32" - "@lit-protocol/lit-node-client-nodejs" "3.0.32" - "@lit-protocol/lit-third-party-libs" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - "@walletconnect/ethereum-provider" "2.9.2" - "@walletconnect/modal" "2.6.1" - bitcoinjs-lib "^6.1.0" - blockstore-core "^3.0.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jose "^4.14.4" - jszip "^3.10.1" - lit-siwe "^1.1.8" - multiformats "^10.0.2" - node-fetch "^2.6.1" - secp256k1 "^5.0.0" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - uint8arrays "^4.0.3" - -"@lit-protocol/pkp-ethers@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/pkp-ethers/-/pkp-ethers-3.0.32.tgz#6dbbf6637a3a56c3749131443ad7fb0e377d314f" - integrity sha512-1CNwPZzv9RWkpjbElOJ/FNECO/6T2/rL9wPO3uCXPnpqvfWCe3gY+mB2agjm2goCIIFOfscOVdyP2aQOmyoJ4w== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-browser" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/core" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/encryption" "3.0.32" - "@lit-protocol/lit-node-client" "3.0.32" - "@lit-protocol/lit-node-client-nodejs" "3.0.32" - "@lit-protocol/lit-third-party-libs" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/pkp-base" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - "@metamask/eth-sig-util" "5.0.2" - "@walletconnect/ethereum-provider" "2.9.2" - "@walletconnect/modal" "2.6.1" - bitcoinjs-lib "^6.1.0" - blockstore-core "^3.0.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jose "^4.14.4" - jszip "^3.10.1" - lit-siwe "^1.1.8" - multiformats "^10.0.2" - node-fetch "^2.6.1" - secp256k1 "^5.0.0" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - uint8arrays "^4.0.3" - -"@lit-protocol/sev-snp-utils-sdk@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/sev-snp-utils-sdk/-/sev-snp-utils-sdk-3.0.32.tgz#c0e2a2f117b03170bd264408a7b892e14e31ec0f" - integrity sha512-H+DiTpWxgmcNqJuVKY3Ldy29J+42/+OwseIgOt21KldRk4Rymaa9O6hHaqEFSmjjJevMGzxJ+m0KzxWoM90GDg== - dependencies: - "@lit-protocol/uint8arrays" "3.0.32" - node-fetch "^2.6.1" - pako "^2.1.0" - tslib "^2.3.0" - -"@lit-protocol/types@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/types/-/types-3.0.32.tgz#6c0971a21dff6cb1a72ad5e70ab40f9a6caa92b6" - integrity sha512-rizsbqNzA+g8uP/Tfc3GPf+3ZCinYY886iTQbSY2wY7pj70ws3rmM9g/d5CS1laQvAhNlV6ak8uO9P0MVrppmg== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - -"@lit-protocol/uint8arrays@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/uint8arrays/-/uint8arrays-3.0.32.tgz#2962c3b1ef2dad9da03212c38f9de183ec401730" - integrity sha512-sZavZXFj9xSwMBnUp1xRii5n12LwpaxmYiDdIspo9yHCDTq60XNHgd2J+llk2Hge0H17MTnoPbICLwZlQ9YJmA== - dependencies: - tslib "^2.3.0" - "@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": version "1.6.3" resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.3.tgz#25b4eece2592132845d303e091bad9b04cdcfe03" @@ -2326,18 +1618,6 @@ "@metamask/safe-event-emitter" "^3.0.0" "@metamask/utils" "^5.0.1" -"@metamask/eth-sig-util@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz#c518279a6e17a88135a13d53a0b970f145ff8bce" - integrity sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q== - dependencies: - "@ethereumjs/util" "^8.0.0" - bn.js "^4.11.8" - ethereum-cryptography "^1.1.2" - ethjs-util "^0.1.6" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - "@metamask/eth-sig-util@^4.0.0", "@metamask/eth-sig-util@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" @@ -2583,14 +1863,6 @@ "@motionone/dom" "^10.16.4" tslib "^2.3.1" -"@multiformats/murmur3@^2.0.0": - version "2.1.8" - resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-2.1.8.tgz#81c1c15b6391109f3febfca4b3205196615a04e9" - integrity sha512-6vId1C46ra3R1sbJUOFCZnsUIveR9oF20yhPmAFxPm0JfrX3/ZRCgP3YDrBzlGoEppOXnA9czHeYc0T9mB6hbA== - dependencies: - multiformats "^13.0.0" - murmurhash3js-revisited "^3.0.0" - "@noble/curves@1.2.0", "@noble/curves@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -2605,18 +1877,6 @@ dependencies: "@noble/hashes" "1.3.3" -"@noble/curves@^1.3.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" - integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== - dependencies: - "@noble/hashes" "1.4.0" - -"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" - integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== - "@noble/hashes@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" @@ -2627,16 +1887,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== -"@noble/hashes@1.4.0", "@noble/hashes@^1", "@noble/hashes@^1.0.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2": +"@noble/hashes@^1", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== -"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" - integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -3819,15 +3074,6 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== -"@scure/bip32@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" - integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== - dependencies: - "@noble/hashes" "~1.2.0" - "@noble/secp256k1" "~1.7.0" - "@scure/base" "~1.1.0" - "@scure/bip32@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8" @@ -3846,14 +3092,6 @@ "@noble/hashes" "~1.3.2" "@scure/base" "~1.1.4" -"@scure/bip39@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" - integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== - dependencies: - "@noble/hashes" "~1.2.0" - "@scure/base" "~1.1.0" - "@scure/bip39@1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" @@ -3943,63 +3181,11 @@ "@sigstore/core" "^1.1.0" "@sigstore/protobuf-specs" "^0.3.1" -"@simplewebauthn/browser@^7.2.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@simplewebauthn/browser/-/browser-7.4.0.tgz#3e25b5e9f45d03eb60d3e4f8812d8d2acfd7dba6" - integrity sha512-qqCZ99lFWjtyza8NCtCpRm3GU5u8/QFeBfMgW5+U/E8Qyc4lvUcuJ8JTbrhksVQLZWSY1c/6Xw11QZ5e+D1hNw== - dependencies: - "@simplewebauthn/typescript-types" "^7.4.0" - -"@simplewebauthn/typescript-types@^7.0.0", "@simplewebauthn/typescript-types@^7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-7.4.0.tgz#1f5d55e187cbd30727a75543caf1bade747625ce" - integrity sha512-8/ZjHeUPe210Bt5oyaOIGx4h8lHdsQs19BiOT44gi/jBEgK7uBGA0Fy7NRsyh777al3m6WM0mBf0UR7xd4R7WQ== - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@snowballtools/auth-lit@file:../snowball-ts-sdk/packages/auth-lit": - version "0.0.1" - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/lit-auth-client" "3.0.32" - "@lit-protocol/lit-node-client" "3.0.32" - "@lit-protocol/pkp-ethers" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@snowballtools/auth" "*" - "@snowballtools/types" "*" - "@snowballtools/utils" "*" - -"@snowballtools/auth@*", "@snowballtools/auth@file:../snowball-ts-sdk/packages/auth": - version "0.0.1" - dependencies: - "@lit-protocol/pkp-ethers" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@snowballtools/types" "*" - "@snowballtools/utils" "*" - -"@snowballtools/js-sdk@file:../snowball-ts-sdk/packages/js-sdk": - version "0.0.1" - dependencies: - "@snowballtools/auth" "*" - "@snowballtools/types" "*" - "@snowballtools/utils" "*" - -"@snowballtools/link-lit-alchemy-light@file:../snowball-ts-sdk/packages/link-lit-alchemy-light": - version "0.0.1" - dependencies: - "@alchemy/aa-alchemy" "^3.6.1" - "@alchemy/aa-core" "^3.6.1" - "@lit-protocol/pkp-ethers" "3.0.32" - "@snowballtools/smartwallet-alchemy-light" "*" - "@snowballtools/types" "*" - "@snowballtools/utils" "*" - ethers "^6.11.1" - viem "2.x" - "@snowballtools/material-tailwind-react-fork@^2.1.10": version "2.1.10" resolved "https://registry.yarnpkg.com/@snowballtools/material-tailwind-react-fork/-/material-tailwind-react-fork-2.1.10.tgz#7a3e582122505157cb033168e48d6c93d93336e8" @@ -4015,45 +3201,11 @@ react-dom "18.2.0" tailwind-merge "1.8.1" -"@snowballtools/smartwallet-alchemy-light@*", "@snowballtools/smartwallet-alchemy-light@file:../snowball-ts-sdk/packages/smartwallet-alchemy-light": - version "0.0.1" - dependencies: - "@alchemy/aa-accounts" "^3.6.1" - "@alchemy/aa-alchemy" "^3.6.1" - "@alchemy/aa-core" "^3.6.1" - "@lit-protocol/pkp-ethers" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@snowballtools/types" "*" - "@snowballtools/utils" "*" - -"@snowballtools/types@*": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@snowballtools/types/-/types-0.0.1.tgz#c50184ccc0dd4f85804bf639df590d66c6f5f088" - integrity sha512-z3cThkIS7CYLLBJggE5GtkRl+LL74TCvdk3RHZMBkhcmy1M0a0ucSH+qpj4fM47E4vp9hQYdR5T2XGD/8xzIhA== - -"@snowballtools/types@file:../snowball-ts-sdk/packages/types": - version "0.0.1" - -"@snowballtools/utils@*", "@snowballtools/utils@file:../snowball-ts-sdk/packages/utils": - version "0.0.1" - dependencies: - "@alchemy/aa-core" "^3.6.1" - "@snowballtools/types" "*" - alchemy-sdk "^3.2.0" - viem "2.x" - "@socket.io/component-emitter@~3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz#621270c02c0a5d4f4669eb1caa9723c91cf201de" integrity sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg== -"@spruceid/siwe-parser@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-1.1.3.tgz#0eebe8bbd63c6de89cb44c06b6329b00b305df65" - integrity sha512-oQ8PcwDqjGWJvLmvAF2yzd6iniiWxK0Qtz+Dw+gLD/W5zOQJiKIUXwslHOm8VB8OOOKW9vfR3dnPBhHaZDvRsw== - dependencies: - apg-js "^4.1.1" - "@spruceid/siwe-parser@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-2.1.0.tgz#59859ccfd02403179bcf115d9e02a7dc953a0820" @@ -4361,60 +3513,6 @@ "@tufjs/canonical-json" "2.0.0" minimatch "^9.0.3" -"@turnkey/api-key-stamper@0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@turnkey/api-key-stamper/-/api-key-stamper-0.4.0.tgz#03844adb9d08f4d0463e8d6e8dc9167a662b68e9" - integrity sha512-LyIiAXRuSL5UBa/Y95gHuh7j4uHzVMkI2+sHWM4/UWZat3nCoveU66h6SFXwF1BThA0poGgsKjWjsKNCJ89NPg== - dependencies: - "@noble/curves" "^1.3.0" - "@turnkey/encoding" "0.1.0" - sha256-uint8array "^0.10.7" - -"@turnkey/encoding@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@turnkey/encoding/-/encoding-0.1.0.tgz#85461c3aa11c70882cc2b0853f5db40f576c3ac9" - integrity sha512-aLmLrWtvV1k9UyGzuzMpBFdwleCH8VpzXIriusVMrFLiQp+4uHCS9cwrEG1glg3207ewWFDtvgj31qLoJS29pg== - -"@turnkey/http@2.10.0", "@turnkey/http@^2.6.2": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@turnkey/http/-/http-2.10.0.tgz#9e8d0dc6279719e3efaf5ae1df7dc9fd5a111ecf" - integrity sha512-5I2VwOzxYGxmSy8UOZn8rsV23gmK8v93KqNZ/mjf4GrFQ69q8LCaAFmrH1Zo+/J7eq0/GQdxNqBHfJKLp5iihw== - dependencies: - "@turnkey/api-key-stamper" "0.4.0" - "@turnkey/encoding" "0.1.0" - "@turnkey/webauthn-stamper" "0.5.0" - cross-fetch "^3.1.5" - -"@turnkey/iframe-stamper@^1.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@turnkey/iframe-stamper/-/iframe-stamper-1.2.0.tgz#bba478e391a266833f1a5960b9f1df9de5934fb8" - integrity sha512-OXbCVVzypa0AXa6dcNpfu8Q0xY/sq2nGXwhesrUQmE7V5I5nYYHZE3sQv54lErToX6H6YyDR9Z1DuPzEUkYTjw== - -"@turnkey/viem@^0.4.8": - version "0.4.14" - resolved "https://registry.yarnpkg.com/@turnkey/viem/-/viem-0.4.14.tgz#bbc60bd8ce478401e9e7900357de7edc792acd14" - integrity sha512-YMREwb7QBBuge8wxdpFGKAl48e4W/rX84XR1E5GsD5HnypNPnfMu/AI7Np0cbQBA6IRuwY9HWu3HbDPU9kicDg== - dependencies: - "@turnkey/api-key-stamper" "0.4.0" - "@turnkey/http" "2.10.0" - cross-fetch "^4.0.0" - typescript "^5.1" - -"@turnkey/webauthn-stamper@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@turnkey/webauthn-stamper/-/webauthn-stamper-0.5.0.tgz#014b8c20b1732af49dacb04f396edf010d3b7f47" - integrity sha512-iUbTUwD4f4ibdLy5PWWb7ITEz4S4VAP9/mNjFhoRY3cKVVTDfmykrVTKjPOIHWzDgAmLtgrLvySIIC9ZBVENBw== - dependencies: - sha256-uint8array "^0.10.7" - -"@turnkey/webauthn-stamper@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@turnkey/webauthn-stamper/-/webauthn-stamper-0.4.3.tgz#843499f0cf751c0421cb7630ea128b6f034a9446" - integrity sha512-hJuIpwny44TOrkFJiK8uA29RRO1A9xJK3KbN4PWqBxTLh1r7ntkl3zslc/qAkgnw6f+OREQbhQGoYkTdIX+7QA== - dependencies: - "@noble/hashes" "^1.3.2" - buffer "^6.0.3" - "@types/accepts@^1.3.5": version "1.3.7" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.7.tgz#3b98b1889d2b2386604c2bbbe62e4fb51e95b265" @@ -4694,7 +3792,7 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/minimatch@^3.0.3", "@types/minimatch@^3.0.4": +"@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -4721,11 +3819,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== -"@types/node@18.15.13": - version "18.15.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" - integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== - "@types/node@^10.1.0": version "10.17.60" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" @@ -4989,28 +4082,6 @@ lodash.isequal "4.5.0" uint8arrays "^3.1.0" -"@walletconnect/core@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.9.2.tgz#c46734ca63771b28fd77606fd521930b7ecfc5e1" - integrity sha512-VARMPAx8sIgodeyngDHbealP3B621PQqjqKsByFUTOep8ZI1/R/20zU+cmq6j9RCrL+kLKZcrZqeVzs8Z7OlqQ== - dependencies: - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-provider" "1.0.13" - "@walletconnect/jsonrpc-types" "1.0.3" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/jsonrpc-ws-connection" "1.0.13" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/relay-auth" "^1.0.4" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.9.2" - "@walletconnect/utils" "2.9.2" - events "^3.3.0" - lodash.isequal "4.5.0" - uint8arrays "^3.1.0" - "@walletconnect/environment@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" @@ -5034,21 +4105,6 @@ "@walletconnect/utils" "2.11.2" events "^3.3.0" -"@walletconnect/ethereum-provider@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.9.2.tgz#fb3a6fca279bb4e98e75baa2fb9730545d41bb99" - integrity sha512-eO1dkhZffV1g7vpG19XUJTw09M/bwGUwwhy1mJ3AOPbOSbMPvwiCuRz2Kbtm1g9B0Jv15Dl+TvJ9vTgYF8zoZg== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.7" - "@walletconnect/jsonrpc-provider" "^1.0.13" - "@walletconnect/jsonrpc-types" "^1.0.3" - "@walletconnect/jsonrpc-utils" "^1.0.8" - "@walletconnect/sign-client" "2.9.2" - "@walletconnect/types" "2.9.2" - "@walletconnect/universal-provider" "2.9.2" - "@walletconnect/utils" "2.9.2" - events "^3.3.0" - "@walletconnect/ethereum-provider@^2.12.2": version "2.12.2" resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.12.2.tgz#43195a14cd43f928b2fcbba6b1a08e17e7838c4f" @@ -5118,17 +4174,6 @@ "@walletconnect/jsonrpc-types" "^1.0.3" tslib "1.14.1" -"@walletconnect/jsonrpc-ws-connection@1.0.13": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.13.tgz#23b0cdd899801bfbb44a6556936ec2b93ef2adf4" - integrity sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.6" - "@walletconnect/safe-json" "^1.0.2" - events "^3.3.0" - tslib "1.14.1" - ws "^7.5.1" - "@walletconnect/jsonrpc-ws-connection@1.0.14": version "1.0.14" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz#eec700e74766c7887de2bd76c91a0206628732aa" @@ -5139,7 +4184,7 @@ events "^3.3.0" ws "^7.5.1" -"@walletconnect/keyvaluestorage@^1.0.2", "@walletconnect/keyvaluestorage@^1.1.1": +"@walletconnect/keyvaluestorage@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== @@ -5156,13 +4201,6 @@ "@walletconnect/safe-json" "^1.0.2" pino "7.11.0" -"@walletconnect/modal-core@2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.1.tgz#bc76055d0b644a2d4b98024324825c108a700905" - integrity sha512-f2hYlJ5pwzGvjyaZ6BoGR5uiMgXzWXt6w6ktt1N8lmY6PiYp8whZgqx2hTxVWwVlsGnaIfh6UHp1hGnANx0eTQ== - dependencies: - valtio "1.11.0" - "@walletconnect/modal-core@2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.2.tgz#d73e45d96668764e0c8668ea07a45bb8b81119e9" @@ -5170,16 +4208,6 @@ dependencies: valtio "1.11.2" -"@walletconnect/modal-ui@2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.1.tgz#200c54c8dfe3c71321abb2724e18bb357dfd6371" - integrity sha512-RFUOwDAMijSK8B7W3+KoLKaa1l+KEUG0LCrtHqaB0H0cLnhEGdLR+kdTdygw+W8+yYZbkM5tXBm7MlFbcuyitA== - dependencies: - "@walletconnect/modal-core" "2.6.1" - lit "2.7.6" - motion "10.16.2" - qrcode "1.5.3" - "@walletconnect/modal-ui@2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz#fa57c087c57b7f76aaae93deab0f84bb68b59cf9" @@ -5190,14 +4218,6 @@ motion "10.16.2" qrcode "1.5.3" -"@walletconnect/modal@2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.1.tgz#066fdbfcff83b58c8a9da66ab4af0eb93e3626de" - integrity sha512-G84tSzdPKAFk1zimgV7JzIUFT5olZUVtI3GcOk77OeLYjlMfnDT23RVRHm5EyCrjkptnvpD0wQScXePOFd2Xcw== - dependencies: - "@walletconnect/modal-core" "2.6.1" - "@walletconnect/modal-ui" "2.6.1" - "@walletconnect/modal@2.6.2", "@walletconnect/modal@^2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" @@ -5263,21 +4283,6 @@ "@walletconnect/utils" "2.12.2" events "^3.3.0" -"@walletconnect/sign-client@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.9.2.tgz#ff4c81c082c2078878367d07f24bcb20b1f7ab9e" - integrity sha512-anRwnXKlR08lYllFMEarS01hp1gr6Q9XUgvacr749hoaC/AwGVlxYFdM8+MyYr3ozlA+2i599kjbK/mAebqdXg== - dependencies: - "@walletconnect/core" "2.9.2" - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.9.2" - "@walletconnect/utils" "2.9.2" - events "^3.3.0" - "@walletconnect/time@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" @@ -5309,18 +4314,6 @@ "@walletconnect/logger" "^2.0.1" events "^3.3.0" -"@walletconnect/types@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.9.2.tgz#d5fd5a61dc0f41cbdca59d1885b85207ac7bf8c5" - integrity sha512-7Rdn30amnJEEal4hk83cdwHUuxI1SWQ+K7fFFHBMqkuHLGi3tpMY6kpyfDxnUScYEZXqgRps4Jo5qQgnRqVM7A== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-types" "1.0.3" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - events "^3.3.0" - "@walletconnect/universal-provider@2.11.2": version "2.11.2" resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.11.2.tgz#bec3038f51445d707bbec75f0cb8af0a1f1e04db" @@ -5351,21 +4344,6 @@ "@walletconnect/utils" "2.12.2" events "^3.3.0" -"@walletconnect/universal-provider@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.9.2.tgz#40e54e98bc48b1f2f5f77eb5b7f05462093a8506" - integrity sha512-JmaolkO8D31UdRaQCHwlr8uIFUI5BYhBzqYFt54Mc6gbIa1tijGOmdyr6YhhFO70LPmS6gHIjljwOuEllmlrxw== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.7" - "@walletconnect/jsonrpc-provider" "1.0.13" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.7" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/sign-client" "2.9.2" - "@walletconnect/types" "2.9.2" - "@walletconnect/utils" "2.9.2" - events "^3.3.0" - "@walletconnect/utils@2.11.2": version "2.11.2" resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.11.2.tgz#dee0f19adf5e38543612cbe9fa4de7ed28eb7e85" @@ -5406,26 +4384,6 @@ query-string "7.1.3" uint8arrays "^3.1.0" -"@walletconnect/utils@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.9.2.tgz#035bdb859ee81a4bcc6420f56114cc5ec3e30afb" - integrity sha512-D44hwXET/8JhhIjqljY6qxSu7xXnlPrf63UN/Qfl98vDjWlYVcDl2+JIQRxD9GPastw0S8XZXdRq59XDXLuZBg== - dependencies: - "@stablelib/chacha20poly1305" "1.0.1" - "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "^1.0.2" - "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "^1.0.3" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.9.2" - "@walletconnect/window-getters" "^1.0.1" - "@walletconnect/window-metadata" "^1.0.1" - detect-browser "5.3.0" - query-string "7.1.3" - uint8arrays "^3.1.0" - "@walletconnect/window-getters@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" @@ -5621,11 +4579,6 @@ abitype@1.0.0: resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97" integrity sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ== -abitype@^0.8.3: - version "0.8.11" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.11.tgz#66e1cf2cbf46f48d0e57132d7c1c392447536cc1" - integrity sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A== - accepts@^1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -5654,11 +4607,6 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== -aes-js@4.0.0-beta.5: - version "4.0.0-beta.5" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" - integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== - agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -5688,26 +4636,6 @@ aggregate-error@^3.0.0, aggregate-error@^3.1.0: clean-stack "^2.0.0" indent-string "^4.0.0" -alchemy-sdk@^3.0.0, alchemy-sdk@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/alchemy-sdk/-/alchemy-sdk-3.2.1.tgz#23ced2b6f44ce4960ca0950b3b328c0d12b0098e" - integrity sha512-ytCllr0E3TZxlYT2o/+i8AVEFJwRS7msXYvS3f/L47VEemkv0Hpz09XTqbjOcfur2PooEMcD8rn5oKrbwLyFrQ== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/contracts" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/providers" "^5.7.0" - "@ethersproject/units" "^5.7.0" - "@ethersproject/wallet" "^5.7.0" - "@ethersproject/web" "^5.7.0" - axios "^1.6.5" - sturdy-websocket "^0.2.1" - websocket "^1.0.34" - ansi-colors@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -5759,11 +4687,6 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== -any-signal@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" - integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== - anymatch@^3.1.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -6030,13 +4953,6 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axios@^0.21.2: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - axios@^0.26.1: version "0.26.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" @@ -6044,7 +4960,7 @@ axios@^0.26.1: dependencies: follow-redirects "^1.14.8" -axios@^1.6.0, axios@^1.6.5, axios@^1.6.7: +axios@^1.6.0, axios@^1.6.7: version "1.6.8" resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== @@ -6074,21 +4990,11 @@ base-x@^3.0.2, base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" -base-x@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" - integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== - base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64url@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" - integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== - bech32@1.1.4, bech32@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" @@ -6134,11 +5040,6 @@ bindings@^1.3.0, bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bip174@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.1.1.tgz#ef3e968cf76de234a546962bcf572cc150982f9f" - integrity sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ== - bip32@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/bip32/-/bip32-3.0.1.tgz#1d1121469cce6e910e0ec3a5a1990dd62687e2a3" @@ -6158,18 +5059,6 @@ bip39@^3.0.4: dependencies: "@noble/hashes" "^1.2.0" -bitcoinjs-lib@^6.1.0: - version "6.1.5" - resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.5.tgz#3b03509ae7ddd80a440f10fc38c4a97f0a028d8c" - integrity sha512-yuf6xs9QX/E8LWE2aMJPNd0IxGofwfuVOiYdNUESkc+2bHHVKjhJd8qewqapeoolh9fihzHGoDCB5Vkr57RZCQ== - dependencies: - "@noble/hashes" "^1.2.0" - bech32 "^2.0.0" - bip174 "^2.1.1" - bs58check "^3.0.1" - typeforce "^1.11.3" - varuint-bitcoin "^1.1.2" - bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -6179,41 +5068,11 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -bl@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" - integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== - dependencies: - buffer "^6.0.3" - inherits "^2.0.4" - readable-stream "^3.4.0" - blakejs@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== -blob-to-it@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.4.tgz#f6caf7a4e90b7bb9215fa6a318ed6bd8ad9898cb" - integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== - dependencies: - browser-readablestream-to-it "^1.0.3" - -blockstore-core@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/blockstore-core/-/blockstore-core-3.0.0.tgz#08f52d954fe079d2735b745d218e737071badd97" - integrity sha512-5ZZB5nh6kErcjZ/CTK6lCwTIGlPdkTXbD8+2xLC4Fm0WGh7g2e2lW2bfURw7mvnPtSX1xV+sN4V2ndowSgIiHQ== - dependencies: - err-code "^3.0.1" - interface-blockstore "^4.0.0" - interface-store "^3.0.0" - it-all "^2.0.0" - it-drain "^2.0.0" - it-filter "^2.0.0" - it-take "^2.0.0" - multiformats "^11.0.0" - bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -6279,11 +5138,6 @@ brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" - integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== - browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -6313,13 +5167,6 @@ bs58@^4.0.0, bs58@^4.0.1: dependencies: base-x "^3.0.2" -bs58@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" - integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== - dependencies: - base-x "^4.0.0" - bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" @@ -6329,14 +5176,6 @@ bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" -bs58check@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" - integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== - dependencies: - "@noble/hashes" "^1.2.0" - bs58 "^5.0.0" - btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" @@ -6357,7 +5196,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3: +buffer@6.0.3, buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -6373,7 +5212,7 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -bufferutil@^4.0.1, bufferutil@^4.0.8: +bufferutil@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== @@ -6510,16 +5349,6 @@ canonical-json@^0.0.4: resolved "https://registry.yarnpkg.com/canonical-json/-/canonical-json-0.0.4.tgz#6579c072c3db5c477ec41dc978fbf2b8f41074a3" integrity sha512-2sW7x0m/P7dqEnO0O87U7RTVQAaa7MELcd+Jd9FA6CYgYtwJ1TlDWIYMD8nuMkH1KoThsJogqgLyklrt9d/Azw== -canonicalize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.0.0.tgz#32be2cef4446d67fd5348027a384cae28f17226a" - integrity sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w== - -cbor-web@^9.0.1: - version "9.0.2" - resolved "https://registry.yarnpkg.com/cbor-web/-/cbor-web-9.0.2.tgz#1915f1ef1a72ea905db07480f71cf12ff601c661" - integrity sha512-N6gU2GsJS8RR5gy1d9wQcSPgn9FGJFY7KNvdDRlwHfz6kCxrQr2TDnrjXHmr6TFSl6Fd0FC4zRnityEldjRGvQ== - cborg@^1.5.4, cborg@^1.6.0: version "1.10.2" resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" @@ -7017,14 +5846,6 @@ cosmjs-types@^0.5.1: long "^4.0.0" protobufjs "~6.11.2" -cosmjs-types@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.7.2.tgz#a757371abd340949c5bd5d49c6f8379ae1ffd7e2" - integrity sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA== - dependencies: - long "^4.0.0" - protobufjs "~6.11.2" - crc-32@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" @@ -7145,32 +5966,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -d@1, d@^1.0.1, d@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" - integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== - dependencies: - es5-ext "^0.10.64" - type "^2.7.2" - -dag-jose@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-1.0.0.tgz#52e42d70cb5bee31ae4e8e3ab860615568d7ad73" - integrity sha512-U0b/YsIPBp6YZNTFrVjwLZAlY3qGRxZTIEcM/CcQmrVrCWq9MWQq9pheXVSPLIhF4SNwzp2SikPva4/BIrJY+g== - dependencies: - "@ipld/dag-cbor" "^6.0.3" - multiformats "^9.0.2" - dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -date-and-time@^2.4.1: - version "2.4.3" - resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-2.4.3.tgz#116963998a8cecd478955ae053f31a6747a988df" - integrity sha512-xkS/imTmsyEdpp9ie5oV5UWolg3XkYWNySbT2W4ESWr6v4V8YrsHbhpk9fIeQcr0NFTnYbQJLXlgU1zrLItysA== - date-fns@^2.29.3: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" @@ -7193,14 +5993,14 @@ dayjs@1.11.10, dayjs@^1.11.9: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== -debug@2.6.9, debug@^2.2.0: +debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: +debug@4, debug@^4.1.0, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -7442,15 +6242,6 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -dns-over-http-resolver@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" - integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== - dependencies: - debug "^4.3.1" - native-fetch "^3.0.0" - receptacle "^1.3.2" - dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: version "0.5.16" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" @@ -7542,13 +6333,6 @@ ejs@^3.1.7: dependencies: jake "^10.8.5" -electron-fetch@^1.7.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" - integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== - dependencies: - encoding "^0.1.13" - electron-to-chromium@^1.4.668: version "1.4.733" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.733.tgz#708d51ce01a7ed3b401d5ced85e9f5d504fd4217" @@ -7657,11 +6441,6 @@ err-code@^2.0.2: resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -err-code@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" - integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -7696,33 +6475,6 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: - version "0.10.64" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" - integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - esniff "^2.0.1" - next-tick "^1.1.0" - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" - integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== - dependencies: - d "^1.0.2" - ext "^1.7.0" - esbuild@^0.19.2: version "0.19.12" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" @@ -7806,16 +6558,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -esniff@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" - integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== - dependencies: - d "^1.0.1" - es5-ext "^0.10.62" - event-emitter "^0.3.5" - type "^2.7.2" - esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -7889,16 +6631,6 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -ethereum-cryptography@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" - integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== - dependencies: - "@noble/hashes" "1.2.0" - "@noble/secp256k1" "1.7.1" - "@scure/bip32" "1.1.5" - "@scure/bip39" "1.1.1" - ethereum-cryptography@^2.0.0: version "2.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" @@ -7930,7 +6662,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: ethjs-util "0.1.6" rlp "^2.2.3" -ethers@^5.6.2, ethers@^5.7.1: +ethers@^5.6.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -7966,19 +6698,6 @@ ethers@^5.6.2, ethers@^5.7.1: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -ethers@^6.11.1: - version "6.11.1" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.11.1.tgz#96aae00b627c2e35f9b0a4d65c7ab658259ee6af" - integrity sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg== - dependencies: - "@adraffy/ens-normalize" "1.10.1" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@types/node" "18.15.13" - aes-js "4.0.0-beta.5" - tslib "2.4.0" - ws "8.5.0" - ethjs-util@0.1.6, ethjs-util@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" @@ -7987,14 +6706,6 @@ ethjs-util@0.1.6, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== - dependencies: - d "1" - es5-ext "~0.10.14" - eventemitter2@^6.4.5, eventemitter2@^6.4.7: version "6.4.9" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" @@ -8160,13 +6871,6 @@ express@^4.18.2: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" - integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== - dependencies: - type "^2.7.2" - extension-port-stream@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/extension-port-stream/-/extension-port-stream-2.1.1.tgz#ec11f2a5ed95655d8c40805d7cb0c39939ee9ef4" @@ -8188,11 +6892,6 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== -fast-fifo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" - integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== - fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" @@ -8319,7 +7018,7 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -follow-redirects@^1.14.0, follow-redirects@^1.14.8, follow-redirects@^1.15.6: +follow-redirects@^1.14.8, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== @@ -8503,11 +7202,6 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" -get-iterator@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" - integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== - get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" @@ -8691,13 +7385,6 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globalthis@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - globby@11.1.0, globby@^11.0.3: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -8765,14 +7452,6 @@ h3@^1.10.2, h3@^1.11.1: uncrypto "^0.1.3" unenv "^1.9.0" -hamt-sharding@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-3.0.6.tgz#3643107a3021af66ac95684aec87b196add5ba57" - integrity sha512-nZeamxfymIWLpVcAN0CRrb7uVq3hCOGj9IcL6NMA6VVCVWqj+h9Jo/SmaWuS92AEDf1thmHsM5D5c70hM3j2Tg== - dependencies: - sparse-array "^1.3.1" - uint8arrays "^5.0.1" - handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" @@ -9080,11 +7759,6 @@ ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== - import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -9163,33 +7837,6 @@ inquirer@^8.2.4: through "^2.3.6" wrap-ansi "^6.0.1" -interface-blockstore@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-4.0.1.tgz#0dda1774d72ca7e990dc1921cfc524b3e9d1b9ca" - integrity sha512-ROWKGJls7vLeFaQtI3hZVCJOkUoZ05xAi2t2qysM4d7dwVKrfm5jUOqWh8JgLL7Iup3XqJ0mKXXZuwJ3s03RSw== - dependencies: - interface-store "^3.0.0" - multiformats "^11.0.0" - -interface-datastore@^6.0.2: - version "6.1.1" - resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-6.1.1.tgz#5150a00de2e7513eaadba58bcafd059cb50004c1" - integrity sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg== - dependencies: - interface-store "^2.0.2" - nanoid "^3.0.2" - uint8arrays "^3.0.0" - -interface-store@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" - integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== - -interface-store@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" - integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== - internal-slot@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" @@ -9219,136 +7866,11 @@ ip-address@^9.0.5: jsbn "1.1.0" sprintf-js "^1.1.3" -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipfs-core-types@^0.10.0, ipfs-core-types@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.10.3.tgz#89ebe98199d4d829f2b20104bfa3299f808c80fe" - integrity sha512-GNid2lRBjR5qgScCglgk7w9Hk3TZAwPHQXxOLQx72wgyc0jF2U5NXRoKW0GRvX8NPbHmsrFszForIqxd23I1Gw== - dependencies: - "@ipld/dag-pb" "^2.1.3" - interface-datastore "^6.0.2" - ipfs-unixfs "^6.0.3" - multiaddr "^10.0.0" - multiformats "^9.5.1" - -ipfs-core-utils@^0.14.0: - version "0.14.3" - resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.14.3.tgz#d04c631c472507bdefc58d4e8d1d9109efbb411c" - integrity sha512-aBkewVhgAj3NWXPwu6imj0wADGiGVZmJzqKzODOJsibDjkx6FGdMv8kvvqtLnK8LS/dvSk9yk32IDtuDyYoV7Q== - dependencies: - any-signal "^3.0.0" - blob-to-it "^1.0.1" - browser-readablestream-to-it "^1.0.1" - debug "^4.1.1" - err-code "^3.0.1" - ipfs-core-types "^0.10.3" - ipfs-unixfs "^6.0.3" - ipfs-utils "^9.0.6" - it-all "^1.0.4" - it-map "^1.0.4" - it-peekable "^1.0.2" - it-to-stream "^1.0.0" - merge-options "^3.0.4" - multiaddr "^10.0.0" - multiaddr-to-uri "^8.0.0" - multiformats "^9.5.1" - nanoid "^3.1.23" - parse-duration "^1.0.0" - timeout-abort-controller "^3.0.0" - uint8arrays "^3.0.0" - -ipfs-http-client@56.0.0: - version "56.0.0" - resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-56.0.0.tgz#f42fa2bbf987bfa128ce0025de5d668586f4a815" - integrity sha512-JF3on9c0hB9XHk/UCxbyC6rSpERuj8F/0QcN/HImZoHNUKZ0/T8DpgVopocKdmGi1gr3Izlop7poaXomSt8Nug== - dependencies: - "@ipld/dag-cbor" "^7.0.0" - "@ipld/dag-json" "^8.0.1" - "@ipld/dag-pb" "^2.1.3" - any-signal "^3.0.0" - dag-jose "^1.0.0" - debug "^4.1.1" - err-code "^3.0.1" - ipfs-core-types "^0.10.0" - ipfs-core-utils "^0.14.0" - ipfs-utils "^9.0.2" - it-first "^1.0.6" - it-last "^1.0.4" - merge-options "^3.0.4" - multiaddr "^10.0.0" - multiformats "^9.4.13" - parse-duration "^1.0.0" - stream-to-it "^0.2.2" - uint8arrays "^3.0.0" - -ipfs-unixfs-importer@^12.0.0: - version "12.0.1" - resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-12.0.1.tgz#316a52d8a793e9e006b1ee43edc50b83e00ef306" - integrity sha512-//VPZOqbONtc1HNtb+sBrw+nIGijHEloSm1O3LVR5orSlhHQ8X7+OCkeqceFBhu40tPMe/TwgAPrkvh+fXL+bA== - dependencies: - "@ipld/dag-pb" "^4.0.0" - "@multiformats/murmur3" "^2.0.0" - err-code "^3.0.1" - hamt-sharding "^3.0.0" - interface-blockstore "^4.0.0" - ipfs-unixfs "^9.0.0" - it-all "^2.0.0" - it-batch "^2.0.0" - it-first "^2.0.0" - it-parallel-batch "^2.0.0" - merge-options "^3.0.4" - multiformats "^11.0.0" - rabin-wasm "^0.1.4" - uint8arraylist "^2.3.3" - uint8arrays "^4.0.2" - -ipfs-unixfs@^6.0.3: - version "6.0.9" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz#f6613b8e081d83faa43ed96e016a694c615a9374" - integrity sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ== - dependencies: - err-code "^3.0.1" - protobufjs "^6.10.2" - -ipfs-unixfs@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-9.0.1.tgz#d06e688e07ef4ce08d610337ba2fe8c143c386e7" - integrity sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg== - dependencies: - err-code "^3.0.1" - protobufjs "^7.0.0" - -ipfs-utils@^9.0.2, ipfs-utils@^9.0.6: - version "9.0.14" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" - integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== - dependencies: - any-signal "^3.0.0" - browser-readablestream-to-it "^1.0.0" - buffer "^6.0.1" - electron-fetch "^1.7.2" - err-code "^3.0.1" - is-electron "^2.2.0" - iso-url "^1.1.5" - it-all "^1.0.4" - it-glob "^1.0.1" - it-to-stream "^1.0.0" - merge-options "^3.0.4" - nanoid "^3.1.20" - native-fetch "^3.0.0" - node-fetch "^2.6.8" - react-native-fetch-api "^3.0.0" - stream-to-it "^0.2.2" - iron-webcrypto@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.1.0.tgz#f902f0cdbd77554b2195ecbb65558c311b01edfd" @@ -9451,11 +7973,6 @@ is-docker@^3.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== -is-electron@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" - integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -9502,13 +8019,6 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" @@ -9636,11 +8146,6 @@ is-typed-array@^1.1.3: dependencies: which-typed-array "^1.1.14" -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -9710,11 +8215,6 @@ isexe@^3.1.1: resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== -iso-url@^1.1.5: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" - integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== - isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" @@ -9728,98 +8228,11 @@ isomorphic-unfetch@3.1.0: node-fetch "^2.6.1" unfetch "^4.2.0" -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - isows@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== -it-all@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" - integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== - -it-all@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" - integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== - -it-batch@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-2.0.1.tgz#a0822be9b18743c41d8525835f788a7f297ba41f" - integrity sha512-2gWFuPzamh9Dh3pW+OKjc7UwJ41W4Eu2AinVAfXDMfrC5gXfm3b1TF+1UzsygBUgKBugnxnGP+/fFRyn+9y1mQ== - -it-drain@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-2.0.1.tgz#f50f6ce5cb8592a9d6337c9b5e780348877b152d" - integrity sha512-ESuHV6MLUNxuSy0vGZpKhSRjW0ixczN1FhbVy7eGJHjX6U2qiiXTyMvDc0z/w+nifOOwPyI5DT9Rc3o9IaGqEQ== - -it-filter@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-2.0.2.tgz#c849b3de4a12a2de3cc45be734ee55f69a0ed284" - integrity sha512-gocw1F3siqupegsOzZ78rAc9C+sYlQbI2af/TmzgdrR613MyEJHbvfwBf12XRekGG907kqXSOGKPlxzJa6XV1Q== - -it-first@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" - integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== - -it-first@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" - integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== - -it-glob@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" - integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== - dependencies: - "@types/minimatch" "^3.0.4" - minimatch "^3.0.4" - -it-last@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" - integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== - -it-map@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" - integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== - -it-parallel-batch@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-2.0.1.tgz#23eb07bbeb73521253d7c8a1566b53137103077c" - integrity sha512-tXh567/JfDGJ90Zi//H9HkL7kY27ARp0jf2vu2jUI6PUVBWfsoT+gC4eT41/b4+wkJXSGgT8ZHnivAOlMfcNjA== - dependencies: - it-batch "^2.0.0" - -it-peekable@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" - integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== - -it-take@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-take/-/it-take-2.0.1.tgz#f9e5ddf0b73a18ba00e62fb532d9d3cde3fe4ce6" - integrity sha512-DL7kpZNjuoeSTnB9dMAJ0Z3m2T29LRRAU+HIgkiQM+1jH3m8l9e/1xpWs8JHTlbKivbqSFrQMTc8KVcaQNmsaA== - -it-to-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" - integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== - dependencies: - buffer "^6.0.3" - fast-fifo "^1.0.0" - get-iterator "^1.0.2" - p-defer "^3.0.0" - p-fifo "^1.0.0" - readable-stream "^3.6.0" - jackspeak@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" @@ -9921,11 +8334,6 @@ jiti@^1.21.0: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== -jose@^4.14.4: - version "4.15.5" - resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.5.tgz#6475d0f467ecd3c630a1b5dadd2735a7288df706" - integrity sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg== - joycon@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -10078,16 +8486,6 @@ jsonwebtoken@^9.0.2: ms "^2.1.1" semver "^7.5.4" -jszip@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" - integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - setimmediate "^1.0.5" - junk@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" @@ -10250,13 +8648,6 @@ libsodium@^0.7.13: resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.13.tgz#230712ec0b7447c57b39489c48a4af01985fb393" integrity sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw== -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -10326,7 +8717,7 @@ lit-element@^4.0.0: "@lit/reactive-element" "^2.0.4" lit-html "^3.1.2" -lit-html@^2.7.0, lit-html@^2.8.0: +lit-html@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.8.0.tgz#96456a4bb4ee717b9a7d2f94562a16509d39bffa" integrity sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q== @@ -10340,24 +8731,6 @@ lit-html@^3.1.0, lit-html@^3.1.2: dependencies: "@types/trusted-types" "^2.0.2" -lit-siwe@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/lit-siwe/-/lit-siwe-1.1.8.tgz#6a393069012816d629c518bb8aa410f1e4a78bd7" - integrity sha512-gXI8GG0GAClw6G7T9p4p6Kn9ywDo8j2d90ShaYArJdsqqO9gwXfzxF84SMeY+bpsNqqQ3FahrhEwTCHd6w7wNw== - dependencies: - "@spruceid/siwe-parser" "1.1.3" - "@stablelib/random" "^1.0.1" - apg-js "^4.1.1" - -lit@2.7.6: - version "2.7.6" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.6.tgz#810007b876ed43e0c70124de91831921598b1665" - integrity sha512-1amFHA7t4VaaDe+vdQejSVBklwtH9svGoG6/dZi9JhxtJBBlqY5D1RV7iLUYY0trCqQc4NfhYYZilZiVHt7Hxg== - dependencies: - "@lit/reactive-element" "^1.6.0" - lit-element "^3.3.0" - lit-html "^2.7.0" - lit@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/lit/-/lit-2.8.0.tgz#4d838ae03059bf9cafa06e5c61d8acc0081e974e" @@ -10506,7 +8879,7 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -long@^5.0.0, long@^5.2.0: +long@^5.2.0: version "5.2.3" resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== @@ -10996,46 +9369,7 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multiaddr-to-uri@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz#65efe4b1f9de5f6b681aa42ff36a7c8db7625e58" - integrity sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA== - dependencies: - multiaddr "^10.0.0" - -multiaddr@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-10.0.1.tgz#0d15848871370860a4d266bb44d93b3dac5d90ef" - integrity sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg== - dependencies: - dns-over-http-resolver "^1.2.3" - err-code "^3.0.1" - is-ip "^3.1.0" - multiformats "^9.4.5" - uint8arrays "^3.0.0" - varint "^6.0.0" - -multiformats@^10.0.2: - version "10.0.3" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-10.0.3.tgz#d4147d01f9a31271c6fb5d24adf9b01f9e656bba" - integrity sha512-K2yGSmstS/oEmYiEIieHb53jJCaqp4ERPDQAYrm5sV3UUrVDZeshJQCK6GHAKyIGufU1vAcbS0PdAAZmC7Tzcw== - -multiformats@^11.0.0, multiformats@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" - integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== - -multiformats@^12.0.1: - version "12.1.3" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.3.tgz#cbf7a9861e11e74f8228b21376088cb43ba8754e" - integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== - -multiformats@^13.0.0, multiformats@^13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.0.tgz#5aa9d2175108a448fc3bdb54ba8a3d0b6cab3ac3" - integrity sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ== - -multiformats@^9.0.2, multiformats@^9.4.13, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.5.1, multiformats@^9.5.4, multiformats@^9.7.1: +multiformats@^9.4.2, multiformats@^9.5.4: version "9.9.0" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== @@ -11051,11 +9385,6 @@ multimatch@5.0.0, multimatch@^5.0.0: arrify "^2.0.1" minimatch "^3.0.4" -murmurhash3js-revisited@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" - integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== - mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -11085,16 +9414,11 @@ nanoid-dictionary@^5.0.0-beta.1: resolved "https://registry.yarnpkg.com/nanoid-dictionary/-/nanoid-dictionary-5.0.0-beta.1.tgz#f2a2aa05b04f7ac6a9327c62a96146e8aa1b025d" integrity sha512-xBkL9zzkNjzJ/UnmWyiOUDVX/COoi05eS0oU28RYKFFQhdnzO5dTOPbVZ/fCFgIOGr1zNinDHJ68mm/KQfcgcw== -nanoid@3, nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23, nanoid@^3.3.6, nanoid@^3.3.7: +nanoid@3, nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== -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== - napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" @@ -11105,11 +9429,6 @@ napi-wasm@^1.1.0: resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== -native-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" - integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== - negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -11120,11 +9439,6 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - node-abi@^3.3.0: version "3.57.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.57.0.tgz#d772cb899236c0aa46778d0d25256917cf15eb15" @@ -11164,7 +9478,7 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.8: +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -11646,19 +9960,6 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -p-defer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" - integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== - -p-fifo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" - integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== - dependencies: - fast-fifo "^1.0.0" - p-defer "^3.0.0" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -11770,16 +10071,6 @@ pacote@^17.0.5: ssri "^10.0.0" tar "^6.1.11" -pako@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - -pako@~1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -11787,11 +10078,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-duration@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" - integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== - parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -12249,7 +10535,7 @@ property-information@^5.0.0: dependencies: xtend "^4.0.0" -protobufjs@^6.10.2, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: +protobufjs@~6.11.2: version "6.11.4" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== @@ -12268,24 +10554,6 @@ protobufjs@^6.10.2, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: "@types/node" ">=13.7.0" long "^4.0.0" -protobufjs@^7.0.0: - version "7.2.6" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" - integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - protocols@^2.0.0, protocols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" @@ -12381,18 +10649,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -rabin-wasm@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" - integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== - dependencies: - "@assemblyscript/loader" "^0.9.4" - bl "^5.0.0" - debug "^4.3.1" - minimist "^1.2.5" - node-fetch "^2.6.1" - readable-stream "^3.6.0" - radix3@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" @@ -12511,13 +10767,6 @@ react-is@^18.0.0, react-is@^18.2.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-native-fetch-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" - integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== - dependencies: - p-defer "^3.0.0" - react-native-webview@^11.26.0: version "11.26.1" resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da" @@ -12754,13 +11003,6 @@ real-require@^0.1.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== -receptacle@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" - integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== - dependencies: - ms "^2.1.1" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -12872,11 +11114,6 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -retimer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" - integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== - retry@0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -13125,11 +11362,6 @@ sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -sha256-uint8array@^0.10.7: - version "0.10.7" - resolved "https://registry.yarnpkg.com/sha256-uint8array/-/sha256-uint8array-0.10.7.tgz#c751fc914f4227b26d996980562065fa4eadcf99" - integrity sha512-1Q6JQU4tX9NqsDGodej6pkrUVQVNapLZnvkwIhddH/JqzBZF1fSaxSWNY6sziXBE8aEa2twtGkXUrwzGeZCMpQ== - sha3@^2.1.1, sha3@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" @@ -13235,16 +11467,7 @@ simple-get@^4.0.0: once "^1.3.1" simple-concat "^1.0.0" -siwe-recap@0.0.2-alpha.0: - version "0.0.2-alpha.0" - resolved "https://registry.yarnpkg.com/siwe-recap/-/siwe-recap-0.0.2-alpha.0.tgz#75a0902c10a8ba5b4471f40e4eafb0afb2f8db59" - integrity sha512-xqFUnvrACWW/Q4s5HQ02avg8IyH2RcgkUzfvN4scYaaHErotLVtTGDZkSS0sn/oNK4MXRt83lTqredsvXgt8iA== - dependencies: - canonicalize "^2.0.0" - multiformats "^11.0.2" - siwe "^2.1.4" - -siwe@^2.0.5, siwe@^2.1.4: +siwe@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/siwe/-/siwe-2.2.0.tgz#dc025007acb210179396f5f099e618f9d941cfd2" integrity sha512-P8It3ztpGJM4pum3larVVXpR6KeP7G1wnul4EEmuT3LSPVcab+kkX9reoFcErHRPcBt+eVyrEJkAYD50vVRJ0A== @@ -13359,11 +11582,6 @@ space-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== -sparse-array@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" - integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== - spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" @@ -13467,13 +11685,6 @@ stream-shift@^1.0.2: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== -stream-to-it@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" - integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== - dependencies: - get-iterator "^1.0.2" - strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -13585,11 +11796,6 @@ strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" -sturdy-websocket@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.2.1.tgz#20a58fd53372ef96eaa08f3c61c91a10b07c7c05" - integrity sha512-NnzSOEKyv4I83qbuKw9ROtJrrT6Z/Xt7I0HiP/e6H6GnpeTDvzwGIGeJ8slai+VwODSHQDooW2CAilJwT9SpRg== - style-value-types@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.0.0.tgz#76c35f0e579843d523187989da866729411fc8ad" @@ -13660,11 +11866,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -symbol-observable@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" - integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== - symbol-observable@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" @@ -13816,13 +12017,6 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -timeout-abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" - integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== - dependencies: - retimer "^3.0.0" - tiny-secp256k1@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" @@ -13935,11 +12129,6 @@ tslib@1.14.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - tslib@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" @@ -13995,11 +12184,6 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tweetnacl-util@^0.13.3: - version "0.13.5" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.13.5.tgz#e39cd5d99709ee7125a18b03895b45a1299e475f" - integrity sha512-/4Q3hpPFAnbBjNLLOmdTdyvInBfZcQBTWy+LWbypmWxAKwOpSQOyyv4ZZts4CoiYtS8Skyix5CkOWytf7XNK9A== - tweetnacl-util@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" @@ -14043,24 +12227,12 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" - integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typeforce@^1.11.3, typeforce@^1.11.5: +typeforce@^1.11.5: version "1.18.0" resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== @@ -14086,7 +12258,7 @@ typeorm@^0.3.19: uuid "^9.0.0" yargs "^17.6.2" -"typescript@>=3 < 6", typescript@^5.1, typescript@^5.3.3: +"typescript@>=3 < 6", typescript@^5.3.3: version "5.4.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== @@ -14108,13 +12280,6 @@ uid-safe@~2.1.5: dependencies: random-bytes "~1.0.0" -uint8arraylist@^2.3.3: - version "2.4.8" - resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" - integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== - dependencies: - uint8arrays "^5.0.1" - uint8arrays@^3.0.0, uint8arrays@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" @@ -14122,20 +12287,6 @@ uint8arrays@^3.0.0, uint8arrays@^3.1.0: dependencies: multiformats "^9.4.2" -uint8arrays@^4.0.2, uint8arrays@^4.0.3: - version "4.0.10" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" - integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== - dependencies: - multiformats "^12.0.1" - -uint8arrays@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.0.3.tgz#92b894d9c4269ba97c51544d6e1f279fe6f80d1f" - integrity sha512-6LBuKji28kHjgPJMkQ6GDaBb1lRwIhyOYq6pDGwYMoDPfImE9SkuYENVmR0yu9yGgs2clHUSY9fKDukR+AXfqQ== - dependencies: - multiformats "^13.0.0" - uncrypto@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" @@ -14281,13 +12432,6 @@ usehooks-ts@^2.15.1: dependencies: lodash.debounce "^4.0.8" -utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== - dependencies: - node-gyp-build "^4.3.0" - utf-8-validate@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-6.0.3.tgz#7d8c936d854e86b24d1d655f138ee27d2636d777" @@ -14358,14 +12502,6 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" -valtio@1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.0.tgz#c029dcd17a0f99d2fbec933721fe64cfd32a31ed" - integrity sha512-65Yd0yU5qs86b5lN1eu/nzcTgQ9/6YnD6iO+DDaDbQLn1Zv2w12Gwk43WkPlUBxk5wL/6cD5YMFf7kj6HZ1Kpg== - dependencies: - proxy-compare "2.5.1" - use-sync-external-store "1.2.0" - valtio@1.11.2: version "1.11.2" resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" @@ -14384,51 +12520,11 @@ value-or-promise@^1.0.12: resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== - -varuint-bitcoin@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" - integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== - dependencies: - safe-buffer "^5.1.1" - vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -viem@2.8.6: - version "2.8.6" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.8.6.tgz#7467a0f113b4b13dd53fde4797aec1e686672f03" - integrity sha512-LqxLOSFtXfbC3tsiZ8Km8jKR4ktTOLfigL2dR9IN28He2+QrNhYvvwGPz3P4hbfU12Wvuxo6mWGZ2L1lpNtvrA== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "1.0.0" - isows "1.0.3" - ws "8.13.0" - -viem@2.x, viem@^2.7.11: - version "2.9.16" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.16.tgz#2127871db1908a70798eddb820024b5f0ddc9152" - integrity sha512-FQRfN4G7uKEUs5DYvVrH/kZmTkwcSDpTBxnadpwG1EEP8nHm57WDpSaGN7PwSPVgJ6rMo5MENT5hgnqaNTlb2w== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "1.0.0" - isows "1.0.3" - ws "8.13.0" - viem@^1.0.0, viem@^1.1.4: version "1.21.4" resolved "https://registry.yarnpkg.com/viem/-/viem-1.21.4.tgz#883760e9222540a5a7e0339809202b45fe6a842d" @@ -14443,6 +12539,20 @@ viem@^1.0.0, viem@^1.1.4: isows "1.0.3" ws "8.13.0" +viem@^2.7.11: + version "2.9.16" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.16.tgz#2127871db1908a70798eddb820024b5f0ddc9152" + integrity sha512-FQRfN4G7uKEUs5DYvVrH/kZmTkwcSDpTBxnadpwG1EEP8nHm57WDpSaGN7PwSPVgJ6rMo5MENT5hgnqaNTlb2w== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "1.0.0" + isows "1.0.3" + ws "8.13.0" + vite@^5.2.0: version "5.2.8" resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.8.tgz#a99e09939f1a502992381395ce93efa40a2844aa" @@ -14487,11 +12597,6 @@ web-vitals@^2.1.4: resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== -web-vitals@^3.0.4: - version "3.5.2" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-3.5.2.tgz#5bb58461bbc173c3f00c2ddff8bfe6e680999ca9" - integrity sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg== - webextension-polyfill-ts@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/webextension-polyfill-ts/-/webextension-polyfill-ts-0.25.0.tgz#fff041626365dbd0e29c40b197e989a55ec221ca" @@ -14519,18 +12624,6 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -websocket@^1.0.34: - version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" - integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - whatwg-mimetype@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" @@ -14715,12 +12808,7 @@ ws@8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -ws@8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== - -ws@^7, ws@^7.5.1: +ws@^7.5.1: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== @@ -14743,14 +12831,6 @@ xss@^1.0.8: commander "^2.20.3" cssfilter "0.0.10" -xstream@^11.14.0: - version "11.14.0" - resolved "https://registry.yarnpkg.com/xstream/-/xstream-11.14.0.tgz#2c071d26b18310523b6877e86b4e54df068a9ae5" - integrity sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw== - dependencies: - globalthis "^1.0.1" - symbol-observable "^2.0.3" - xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -14766,11 +12846,6 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== - yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -14869,7 +12944,7 @@ zen-observable@0.8.15: resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== -zod@3.22.4, zod@^3.22.4: +zod@3.22.4: version "3.22.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== @@ -14880,10 +12955,3 @@ zustand@4.4.1: integrity sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw== dependencies: use-sync-external-store "1.2.0" - -zustand@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848" - integrity sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g== - dependencies: - use-sync-external-store "1.2.0" From 7ad02d27bf43df7887fde7a5ce80c8a7ecf9b768 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Fri, 12 Apr 2024 16:32:09 -0500 Subject: [PATCH 153/251] Add build step to lint action --- .github/workflows/lint.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 7cc4f608..c3c3d7ac 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -19,5 +19,7 @@ jobs: with: node-version: ${{ matrix.node-version }} - run: yarn + - name: Build libs + run: yarn workspace gql-client run build - name: Linter check run: yarn lint From 72f1abcdf6778b06dad01dea2af2f154c41b6cbc Mon Sep 17 00:00:00 2001 From: Nabarun Gogoi Date: Mon, 15 Apr 2024 14:10:59 +0530 Subject: [PATCH 154/251] Add CI to test web app deployment and undeployment (#174) * Add a script to deploy test records * Add checks for ApplicationDeploymentRecord and the deployment URL * Add a CI workflow to run the app deployment test * Update test deployment request record config * Add test for deployment removal * Update test deployment request record * Increase max retries * Add retries when checking if URL is up or down * Rename test script * Run webapp deployment test CI on PR * Remove unnecessary jq installation step from CI * Revert "Run webapp deployment test CI on PR" This reverts commit 01f373501a95b95cf0abc1dee8fed639ec62daf5. * Add a step for Slack alerts on a CI failure * Add a workflow dispatch for manual trigger * Update workflow title and remove trigger on main * Document deployment test setup --------- Co-authored-by: Prathamesh Musale --- .github/workflows/test-app-deployment.yaml | 39 +++ packages/deployer/test/README.md | 23 ++ ...application-deployment-removal-request.yml | 4 + .../application-deployment-request.yml | 15 ++ .../test/records/application-record.yml | 8 + .../test-webapp-deployment-undeployment.sh | 225 ++++++++++++++++++ 6 files changed, 314 insertions(+) create mode 100644 .github/workflows/test-app-deployment.yaml create mode 100644 packages/deployer/test/README.md create mode 100644 packages/deployer/test/records/application-deployment-removal-request.yml create mode 100644 packages/deployer/test/records/application-deployment-request.yml create mode 100644 packages/deployer/test/records/application-record.yml create mode 100755 packages/deployer/test/test-webapp-deployment-undeployment.sh diff --git a/.github/workflows/test-app-deployment.yaml b/.github/workflows/test-app-deployment.yaml new file mode 100644 index 00000000..d1c736a8 --- /dev/null +++ b/.github/workflows/test-app-deployment.yaml @@ -0,0 +1,39 @@ +name: Test webapp deployment + +on: + schedule: + - cron: '0 3 * * *' + workflow_dispatch: + +jobs: + test_app_deployment: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20.x] + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - name: Install dependencies + run: yarn + - name: Test webapp deployment + run: ./packages/deployer/test/test-webapp-deployment-undeployment.sh + - name: Notify Vulcanize Slack on CI failure + if: ${{ always() && github.ref_name == 'main' }} + uses: ravsamhq/notify-slack-action@v2 + with: + status: ${{ job.status }} + notify_when: 'failure' + env: + SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS_WEBHOOK }} + - name: Notify DeepStack Slack on CI failure + if: ${{ always() && github.ref_name == 'main' }} + uses: ravsamhq/notify-slack-action@v2 + with: + status: ${{ job.status }} + notify_when: 'failure' + env: + SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS_WEBHOOK }} diff --git a/packages/deployer/test/README.md b/packages/deployer/test/README.md new file mode 100644 index 00000000..88c43cfb --- /dev/null +++ b/packages/deployer/test/README.md @@ -0,0 +1,23 @@ +# deployer test + +Check if the live web app deployer is in a working state + +- Web app repo used: https://github.com/snowball-tools-platform/test-progressive-web-app (main branch) +- Config used: [../config.yml](../config.yml) +- The script [test-webapp-deployment-undeployment.sh](./test-webapp-deployment-undeployment.sh) performs the following: + - Create / update [`ApplicationRecord`](./records/application-record.yml) and [`ApplicationDeploymentRequest`](./records/application-deployment-request.yml) records with latest meta data from the repo + - Fetch the latest version of `deployment-test-app` from registry and increment `ApplicationRecord` version + - Publish the resulting `ApplicationRecord` record + - Set names to the record and check name resolution + - Publish the `ApplicationDeploymentRequest` record + - Check that the deployment occurs + - Check that a `ApplicationDeploymentRecord` is created + - Check that the deployment record has correct `ApplicationRecord` id + - Check that the URL present in deployment record is active + - Create and publish a [`ApplicationDeploymentRemovalRequest`](./records/application-deployment-removal-request.yml) record + - Check that the deployment is removed + - Check that a `ApplicationDeploymentRemovalRecord` is created + - Check that the deployment URL goes down +- The test script is run in a GitHub CI [workflow](../../../.github/workflows/test-app-deployment.yaml) that: + - Is scheduled to run everyday on the default (`main`) branch or can be triggered manually + - Sends Slack alerts to configured channels on failure diff --git a/packages/deployer/test/records/application-deployment-removal-request.yml b/packages/deployer/test/records/application-deployment-removal-request.yml new file mode 100644 index 00000000..b0082da8 --- /dev/null +++ b/packages/deployer/test/records/application-deployment-removal-request.yml @@ -0,0 +1,4 @@ +record: + deployment: + type: ApplicationDeploymentRemovalRequest + version: 1.0.0 diff --git a/packages/deployer/test/records/application-deployment-request.yml b/packages/deployer/test/records/application-deployment-request.yml new file mode 100644 index 00000000..17fee5fa --- /dev/null +++ b/packages/deployer/test/records/application-deployment-request.yml @@ -0,0 +1,15 @@ +record: + type: ApplicationDeploymentRequest + version: '1.0.0' + name: deployment-test-app@0.1.24 + application: crn://snowballtools/applications/deployment-test-app@0.1.24 + dns: deployment-ci-test + config: + env: + CERC_TEST_WEBAPP_CONFIG1: "deployment test config 1" + CERC_TEST_WEBAPP_CONFIG2: "deployment test config 2" + CERC_WEBAPP_DEBUG: 0 + meta: + note: Deployment test @ Thu 11 Apr 2024 07:29:19 AM UTC + repository: "https://github.com/snowball-tools-platform/test-progressive-web-app" + repository_ref: 05819619487a0d2dbc5453b6d1ccff3044c0dd26 diff --git a/packages/deployer/test/records/application-record.yml b/packages/deployer/test/records/application-record.yml new file mode 100644 index 00000000..f6c24d39 --- /dev/null +++ b/packages/deployer/test/records/application-record.yml @@ -0,0 +1,8 @@ +record: + type: ApplicationRecord + version: 0.0.1 + repository_ref: 05819619487a0d2dbc5453b6d1ccff3044c0dd26 + repository: ["https://github.com/snowball-tools-platform/test-progressive-web-app"] + app_type: webapp + name: deployment-test-app + app_version: 0.1.24 diff --git a/packages/deployer/test/test-webapp-deployment-undeployment.sh b/packages/deployer/test/test-webapp-deployment-undeployment.sh new file mode 100755 index 00000000..4817fb9b --- /dev/null +++ b/packages/deployer/test/test-webapp-deployment-undeployment.sh @@ -0,0 +1,225 @@ +#!/bin/bash + +# Repository URL +REPO_URL="https://github.com/snowball-tools-platform/test-progressive-web-app" + +# Get the latest commit hash from the repository +LATEST_HASH=$(git ls-remote $REPO_URL HEAD | awk '{print $1}') + +# Fetch the package.json file content +# Extract version from package.json content +package_json=$(wget -qO- "$REPO_URL/raw/$LATEST_HASH/package.json") +PACKAGE_VERSION=$(echo "$package_json" | jq -r '.version') + +# Current date and time for note +CURRENT_DATE_TIME=$(date -u) + +CONFIG_FILE=packages/deployer/config.yml +REGISTRY_BOND_ID="99c0e9aec0ac1b8187faa579be3b54f93fafb6060ac1fd29170b860df605be32" + +# Reference: https://git.vdb.to/cerc-io/test-progressive-web-app/src/branch/main/scripts + +APP_NAME=deployment-test-app + +# Get latest version from registry and increment application-record version +NEW_APPLICATION_VERSION=$(yarn --silent laconic -c $CONFIG_FILE cns record list --type ApplicationRecord --all --name "$APP_NAME" 2>/dev/null | jq -r -s ".[] | sort_by(.createTime) | reverse | [ .[] | select(.bondId == \"$REGISTRY_BOND_ID\") ] | .[0].attributes.version" | awk -F. -v OFS=. '{$NF += 1 ; print}') + +if [ -z "$NEW_APPLICATION_VERSION" ] || [ "1" == "$NEW_APPLICATION_VERSION" ]; then + # Set application-record version if no previous records were found + NEW_APPLICATION_VERSION=0.0.1 +fi + +# Generate application-record.yml with incremented version +RECORD_FILE=packages/deployer/test/records/application-record.yml + +cat > $RECORD_FILE < $REQUEST_RECORD_FILE < $REMOVAL_REQUEST_RECORD_FILE < Date: Wed, 17 Apr 2024 17:11:43 -0400 Subject: [PATCH 155/251] fix: default deployment filter status --- .../frontend/src/pages/org-slug/projects/id/Deployments.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx b/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx index 5284d02d..1775576e 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx @@ -14,7 +14,7 @@ import { RefreshIcon } from 'components/shared/CustomIcon'; const DEFAULT_FILTER_VALUE: FilterValue = { searchedBranch: '', - status: '', + status: StatusOptions.ALL_STATUS, }; const FETCH_DEPLOYMENTS_INTERVAL = 5000; From bace4a6ce6180c1b79a62d8dc6eb6ece0adb9754 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Sun, 21 Apr 2024 18:02:42 -0500 Subject: [PATCH 156/251] Signup with sdk --- packages/backend/package.json | 2 + packages/backend/src/index.ts | 9 +- packages/backend/src/routes/auth.ts | 8 +- packages/backend/src/server.ts | 51 +- packages/backend/src/utils.ts | 18 +- packages/frontend/.env.example | 2 + packages/frontend/package.json | 15 +- packages/frontend/public/dot-border-line.svg | 3 + packages/frontend/reload-dev.sh | 9 + packages/frontend/src/App.tsx | 34 +- .../frontend/src/components/CloudyFlow.tsx | 218 ++ .../shared/CustomIcon/AppleIcon.tsx | 29 + .../CustomIcon/ArrowRightCircleFilledIcon.tsx | 2 +- .../shared/CustomIcon/GoogleIcon.tsx | 38 + .../components/shared/CustomIcon/KeyIcon.tsx | 80 + .../components/shared/DotBorder/DotBorder.tsx | 19 + .../src/components/shared/DotBorder/index.ts | 1 + .../InlineNotification/InlineNotification.tsx | 3 +- .../src/components/shared/Sidebar/Sidebar.tsx | 7 +- .../src/context/Web3ModalProvider.tsx | 127 - .../frontend/src/context/Web3Provider.tsx | 36 + packages/frontend/src/index.css | 2 + packages/frontend/src/index.tsx | 5 +- packages/frontend/src/layouts/global.css | 6 + packages/frontend/src/pages/AuthPage.tsx | 28 + packages/frontend/src/pages/Login.tsx | 18 - packages/frontend/src/pages/Snow.css | 25 - packages/frontend/src/pages/SnowballLogin.tsx | 17 - .../frontend/src/pages/auth/CreatePasskey.tsx | 83 + packages/frontend/src/pages/auth/Done.tsx | 41 + packages/frontend/src/pages/auth/Login.tsx | 194 ++ packages/frontend/src/pages/auth/SignUp.tsx | 187 ++ .../frontend/src/pages/auth/SnowballAuth.tsx | 52 + packages/frontend/src/utils/siwe.ts | 37 + packages/frontend/src/utils/snowball.ts | 19 - packages/frontend/src/utils/use-snowball.ts | 32 +- packages/frontend/tailwind.config.js | 12 +- yarn.lock | 2099 ++++++++++++++++- 38 files changed, 3240 insertions(+), 328 deletions(-) create mode 100644 packages/frontend/public/dot-border-line.svg create mode 100755 packages/frontend/reload-dev.sh create mode 100644 packages/frontend/src/components/CloudyFlow.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/GoogleIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx create mode 100644 packages/frontend/src/components/shared/DotBorder/DotBorder.tsx create mode 100644 packages/frontend/src/components/shared/DotBorder/index.ts delete mode 100644 packages/frontend/src/context/Web3ModalProvider.tsx create mode 100644 packages/frontend/src/context/Web3Provider.tsx create mode 100644 packages/frontend/src/layouts/global.css create mode 100644 packages/frontend/src/pages/AuthPage.tsx delete mode 100644 packages/frontend/src/pages/Login.tsx delete mode 100644 packages/frontend/src/pages/Snow.css delete mode 100644 packages/frontend/src/pages/SnowballLogin.tsx create mode 100644 packages/frontend/src/pages/auth/CreatePasskey.tsx create mode 100644 packages/frontend/src/pages/auth/Done.tsx create mode 100644 packages/frontend/src/pages/auth/Login.tsx create mode 100644 packages/frontend/src/pages/auth/SignUp.tsx create mode 100644 packages/frontend/src/pages/auth/SnowballAuth.tsx create mode 100644 packages/frontend/src/utils/siwe.ts delete mode 100644 packages/frontend/src/utils/snowball.ts diff --git a/packages/backend/package.json b/packages/backend/package.json index be7f3372..9aace9c7 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -13,6 +13,7 @@ "@types/semver": "^7.5.8", "apollo-server-core": "^3.13.0", "apollo-server-express": "^3.13.0", + "cookie-session": "^2.1.0", "cors": "^2.8.5", "debug": "^4.3.1", "express": "^4.18.2", @@ -45,6 +46,7 @@ "test:db:delete": "DEBUG=snowball:* ts-node ./test/delete-db.ts" }, "devDependencies": { + "@types/cookie-session": "^2.0.49", "@types/express-session": "^1.17.10", "@types/fs-extra": "^11.0.4", "better-sqlite3": "^9.2.2", diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 30785d2f..c74cb6e7 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -9,8 +9,6 @@ import { Database } from './database'; import { createAndStartServer } from './server'; import { createResolvers } from './resolvers'; import { getConfig } from './utils'; -import { Config } from './config'; -import { DEFAULT_CONFIG_FILE_PATH } from './constants'; import { Service } from './service'; import { Registry } from './registry'; @@ -18,13 +16,12 @@ const log = debug('snowball:server'); const OAUTH_CLIENT_TYPE = 'oauth-app'; export const main = async (): Promise => { - // TODO: get config path using cli - const { server, database, gitHub, registryConfig, misc } = await getConfig(DEFAULT_CONFIG_FILE_PATH); + const { server, database, gitHub, registryConfig, misc } = await getConfig(); const app = new OAuthApp({ clientType: OAUTH_CLIENT_TYPE, clientId: gitHub.oAuth.clientId, - clientSecret: gitHub.oAuth.clientSecret + clientSecret: gitHub.oAuth.clientSecret, }); const db = new Database(database, misc); @@ -35,7 +32,7 @@ export const main = async (): Promise => { { gitHubConfig: gitHub, registryConfig }, db, app, - registry + registry, ); const typeDefs = fs diff --git a/packages/backend/src/routes/auth.ts b/packages/backend/src/routes/auth.ts index ab326f18..4d2da019 100644 --- a/packages/backend/src/routes/auth.ts +++ b/packages/backend/src/routes/auth.ts @@ -1,16 +1,12 @@ import { Router } from 'express'; -import { SiweMessage, generateNonce } from 'siwe'; +import { SiweMessage } from 'siwe'; const router = Router(); -router.get('/nonce', async (_, res) => { - res.send(generateNonce()); -}); - router.post('/validate', async (req, res) => { const { message, signature } = req.body; const { success, data } = await new SiweMessage(message).verify({ - signature + signature, }); if (success) { diff --git a/packages/backend/src/server.ts b/packages/backend/src/server.ts index 7a4df019..f89aa979 100644 --- a/packages/backend/src/server.ts +++ b/packages/backend/src/server.ts @@ -6,9 +6,9 @@ import { createServer } from 'http'; import { ApolloServerPluginDrainHttpServer, ApolloServerPluginLandingPageLocalDefault, - AuthenticationError + AuthenticationError, } from 'apollo-server-core'; -import session from 'express-session'; +import cookieSession from 'cookie-session'; import { TypeSource } from '@graphql-tools/utils'; import { makeExecutableSchema } from '@graphql-tools/schema'; @@ -32,7 +32,7 @@ export const createAndStartServer = async ( serverConfig: ServerConfig, typeDefs: TypeSource, resolvers: any, - service: Service + service: Service, ): Promise => { const { host, port, gqlPath = DEFAULT_GQL_PATH } = serverConfig; const { appOriginUrl, secret, domain, trustProxy } = serverConfig.session; @@ -45,7 +45,7 @@ export const createAndStartServer = async ( // Create the schema const schema = makeExecutableSchema({ typeDefs, - resolvers + resolvers, }); const server = new ApolloServer({ @@ -68,32 +68,18 @@ export const createAndStartServer = async ( plugins: [ // Proper shutdown for the HTTP server ApolloServerPluginDrainHttpServer({ httpServer }), - ApolloServerPluginLandingPageLocalDefault({ embed: true }) - ] + ApolloServerPluginLandingPageLocalDefault({ embed: true }), + ], }); await server.start(); - app.use(cors({ - origin: appOriginUrl, - credentials: true - })); - - const sessionOptions: session.SessionOptions = { - secret: secret, - resave: false, - saveUninitialized: true, - cookie: { - secure: new URL(appOriginUrl).protocol === 'https:', - // TODO: Set cookie maxAge and handle cookie expiry in frontend - // maxAge: SESSION_COOKIE_MAX_AGE, - sameSite: new URL(appOriginUrl).protocol === 'https:' ? 'none' : 'lax' - } - }; - - if (domain) { - sessionOptions.cookie!.domain = domain; - } + app.use( + cors({ + origin: appOriginUrl, + credentials: true, + }), + ); if (trustProxy) { // trust first proxy @@ -101,7 +87,14 @@ export const createAndStartServer = async ( } app.use( - session(sessionOptions) + cookieSession({ + secret: secret, + secure: new URL(appOriginUrl).protocol === 'https:', + // 23 hours (less than 24 hours to avoid sessionSigs expiration issues) + maxAge: 23 * 60 * 60 * 1000, + sameSite: new URL(appOriginUrl).protocol === 'https:' ? 'none' : 'lax', + domain: domain || undefined, + }), ); server.applyMiddleware({ @@ -109,8 +102,8 @@ export const createAndStartServer = async ( path: gqlPath, cors: { origin: [appOriginUrl], - credentials: true - } + credentials: true, + }, }); app.use(express.json()); diff --git a/packages/backend/src/utils.ts b/packages/backend/src/utils.ts index 8d2a8e8b..eafc698b 100644 --- a/packages/backend/src/utils.ts +++ b/packages/backend/src/utils.ts @@ -3,11 +3,18 @@ import path from 'path'; import toml from 'toml'; import debug from 'debug'; import { DataSource, DeepPartial, EntityTarget, ObjectLiteral } from 'typeorm'; +import { Config } from './config'; +import { DEFAULT_CONFIG_FILE_PATH } from './constants'; const log = debug('snowball:utils'); -export const getConfig = async ( - configFile: string +export async function getConfig() { + // TODO: get config path using cli + return await _getConfig(DEFAULT_CONFIG_FILE_PATH); +} + +const _getConfig = async ( + configFile: string, ): Promise => { const configFilePath = path.resolve(configFile); const fileExists = await fs.pathExists(configFilePath); @@ -41,7 +48,7 @@ export const loadAndSaveData = async ( entityType: EntityTarget, dataSource: DataSource, entities: any, - relations?: any | undefined + relations?: any | undefined, ): Promise => { const entityRepository = dataSource.getRepository(entityType); @@ -56,7 +63,7 @@ export const loadAndSaveData = async ( entity = { ...entity, - [field]: relations[field][entityData[valueIndex]] + [field]: relations[field][entityData[valueIndex]], }; } } @@ -67,4 +74,5 @@ export const loadAndSaveData = async ( return savedEntity; }; -export const sleep = async (ms: number): Promise => new Promise(resolve => setTimeout(resolve, ms)); +export const sleep = async (ms: number): Promise => + new Promise((resolve) => setTimeout(resolve, ms)); diff --git a/packages/frontend/.env.example b/packages/frontend/.env.example index c1424c02..e733834a 100644 --- a/packages/frontend/.env.example +++ b/packages/frontend/.env.example @@ -8,4 +8,6 @@ VITE_WALLET_CONNECT_ID= VITE_LIT_RELAY_API_KEY= +VITE_ALCHEMY_API_KEY= + LOCAL_SNOWBALL_SDK_DIR= diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 65eb6fec..84bca501 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -21,15 +21,18 @@ "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-toast": "^1.1.5", "@radix-ui/react-tooltip": "^1.0.7", + "@snowballtools/auth": "0.1.0", + "@snowballtools/auth-lit": "0.1.0", + "@snowballtools/js-sdk": "0.1.0", + "@snowballtools/link-lit-alchemy-light": "0.1.0", "@snowballtools/material-tailwind-react-fork": "^2.1.10", + "@snowballtools/smartwallet-alchemy-light": "0.1.0", + "@snowballtools/types": "0.1.0", + "@snowballtools/utils": "0.1.0", "@tanstack/react-query": "^5.22.2", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/node": "^16.18.68", - "@types/react": "^18.2.77", - "@types/react-dom": "^18.2.17", "@walletconnect/ethereum-provider": "^2.12.2", "@web3modal/siwe": "^4.0.5", "@web3modal/wagmi": "^4.0.5", @@ -57,14 +60,18 @@ "siwe": "^2.1.4", "tailwind-variants": "^0.2.0", "usehooks-ts": "^2.15.1", + "uuid": "^9.0.1", "viem": "^2.7.11", "wagmi": "^2.5.7", "web-vitals": "^2.1.4" }, "devDependencies": { + "@types/jest": "^27.5.2", "@types/luxon": "^3.3.7", + "@types/node": "^16.18.68", "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", + "@types/uuid": "^9.0.8", "@vitejs/plugin-react": "^4.2.1", "autoprefixer": "^10.4.19", "postcss": "^8.4.38", diff --git a/packages/frontend/public/dot-border-line.svg b/packages/frontend/public/dot-border-line.svg new file mode 100644 index 00000000..a028e284 --- /dev/null +++ b/packages/frontend/public/dot-border-line.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/frontend/reload-dev.sh b/packages/frontend/reload-dev.sh new file mode 100755 index 00000000..95bfa440 --- /dev/null +++ b/packages/frontend/reload-dev.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +(cd /Users/rabbit-m2/p/snowball/snowball-ts-sdk && NO_CLEAN=1 turbo build) + +(cd ../.. && ./scripts/yarn-file-for-local-dev.sh) + +rm -rf node_modules/.vite + +yarn dev diff --git a/packages/frontend/src/App.tsx b/packages/frontend/src/App.tsx index ed427bcb..50533798 100644 --- a/packages/frontend/src/App.tsx +++ b/packages/frontend/src/App.tsx @@ -8,8 +8,10 @@ import { } from './pages/org-slug/projects/routes'; import ProjectSearchLayout from './layouts/ProjectSearch'; import Index from './pages'; -import Login from './pages/Login'; +import AuthPage from './pages/AuthPage'; import { DashboardLayout } from './pages/org-slug/layout'; +import { useEffect } from 'react'; +import Web3Provider from 'context/Web3Provider'; const router = createBrowserRouter([ { @@ -45,12 +47,38 @@ const router = createBrowserRouter([ }, { path: '/login', - element: , + element: , + }, + { + path: '/signup', + element: , }, ]); function App() { - return ; + // Hacky way of checking session + // TODO: Handle redirect backs + useEffect(() => { + fetch(`${import.meta.env.VITE_SERVER_URL}/auth/session`, { + credentials: 'include', + }).then((res) => { + if (res.status !== 200) { + localStorage.clear(); + if ( + window.location.pathname !== '/login' && + window.location.pathname !== '/signup' + ) { + window.location.pathname = '/login'; + } + } + }); + }, []); + + return ( + + ; + + ); } export default App; diff --git a/packages/frontend/src/components/CloudyFlow.tsx b/packages/frontend/src/components/CloudyFlow.tsx new file mode 100644 index 00000000..fb34990a --- /dev/null +++ b/packages/frontend/src/components/CloudyFlow.tsx @@ -0,0 +1,218 @@ +import React from 'react'; +type Props = React.PropsWithChildren<{ + className?: string; + snowZIndex?: number; +}>; + +export const CloudyFlow = ({ className, children, snowZIndex }: Props) => { + return ( +
    + {children} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx new file mode 100644 index 00000000..edbcf430 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx @@ -0,0 +1,29 @@ +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const AppleIcon: React.FC = (props) => { + return ( + + + + + + + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx index 842f2f3b..3782a9d2 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx @@ -3,11 +3,11 @@ import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ArrowRightCircleFilledIcon = (props: CustomIconProps) => { return ( = (props) => { + return ( + + + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx new file mode 100644 index 00000000..eceb71db --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx @@ -0,0 +1,80 @@ +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const KeyIcon = (props: CustomIconProps) => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/DotBorder/DotBorder.tsx b/packages/frontend/src/components/shared/DotBorder/DotBorder.tsx new file mode 100644 index 00000000..cb8922cb --- /dev/null +++ b/packages/frontend/src/components/shared/DotBorder/DotBorder.tsx @@ -0,0 +1,19 @@ +import { ComponentPropsWithoutRef } from 'react'; +import { cn } from 'utils/classnames'; + +export interface DotBorderProps extends ComponentPropsWithoutRef<'div'> {} + +export const DotBorder = ({ className, ...props }: DotBorderProps) => { + const imageSrc = '/dot-border-line.svg'; + + return ( +
    +
    +
    + ); +}; diff --git a/packages/frontend/src/components/shared/DotBorder/index.ts b/packages/frontend/src/components/shared/DotBorder/index.ts new file mode 100644 index 00000000..fdef3775 --- /dev/null +++ b/packages/frontend/src/components/shared/DotBorder/index.ts @@ -0,0 +1 @@ +export * from './DotBorder'; diff --git a/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx b/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx index f24a4cfc..f331d342 100644 --- a/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx +++ b/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx @@ -52,7 +52,8 @@ export const InlineNotification = ({ // Render custom icon or default icon const renderIcon = useCallback(() => { - if (!icon) return ; + if (!icon) + return ; return cloneIcon(icon, { className: iconClass() }); }, [icon]); diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index 63c47f8a..d7dc4aaa 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -85,8 +85,13 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { )); }, [orgSlug]); - const handleLogOut = useCallback(() => { + const handleLogOut = useCallback(async () => { + await fetch(`${import.meta.env.VITE_SERVER_URL}/auth/logout`, { + method: 'POST', + credentials: 'include', + }); disconnect(); + localStorage.clear(); navigate('/login'); }, [disconnect, navigate]); diff --git a/packages/frontend/src/context/Web3ModalProvider.tsx b/packages/frontend/src/context/Web3ModalProvider.tsx deleted file mode 100644 index 51512ca0..00000000 --- a/packages/frontend/src/context/Web3ModalProvider.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import { ReactNode } from 'react'; -import { SiweMessage } from 'siwe'; -import { WagmiProvider } from 'wagmi'; -import { arbitrum, mainnet } from 'wagmi/chains'; -import axios from 'axios'; - -import { createWeb3Modal } from '@web3modal/wagmi/react'; -import { defaultWagmiConfig } from '@web3modal/wagmi/react/config'; -import { createSIWEConfig } from '@web3modal/siwe'; -import type { - SIWECreateMessageArgs, - SIWEVerifyMessageArgs, -} from '@web3modal/siwe'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; - -const queryClient = new QueryClient(); - -const axiosInstance = axios.create({ - baseURL: import.meta.env.VITE_SERVER_URL, - headers: { - 'Content-Type': 'application/json', - 'Access-Control-Allow-Origin': '*', - }, - withCredentials: true, -}); - -const metadata = { - name: 'Snowball Tools', - description: 'Snowball Tools Dashboard', - url: window.location.origin, - icons: [ - 'https://raw.githubusercontent.com/snowball-tools/mediakit/main/assets/logo.svg', - ], -}; - -const chains = [mainnet, arbitrum] as const; -const config = defaultWagmiConfig({ - chains, - projectId: import.meta.env.VITE_WALLET_CONNECT_ID, - metadata, -}); - -const siweConfig = createSIWEConfig({ - createMessage: ({ nonce, address, chainId }: SIWECreateMessageArgs) => - new SiweMessage({ - version: '1', - domain: window.location.host, - uri: window.location.origin, - address, - chainId, - nonce, - // Human-readable ASCII assertion that the user will sign, and it must not contain `\n`. - statement: 'Sign in With Ethereum.', - }).prepareMessage(), - getNonce: async () => { - const nonce = (await axiosInstance.get('/auth/nonce')).data; - if (!nonce) { - throw new Error('Failed to get nonce!'); - } - - return nonce; - }, - getSession: async () => { - try { - const session = (await axiosInstance.get('/auth/session')).data; - const { address, chainId } = session; - - return { address, chainId }; - } catch (err) { - if (window.location.pathname !== '/login') { - window.location.href = '/login'; - } - - throw new Error('Failed to get session!'); - } - }, - verifyMessage: async ({ message, signature }: SIWEVerifyMessageArgs) => { - try { - const { success } = ( - await axiosInstance.post('/auth/validate', { - message, - signature, - }) - ).data; - - return success; - } catch (error) { - return false; - } - }, - signOut: async () => { - try { - const { success } = (await axiosInstance.post('/auth/logout')).data; - return success; - } catch (error) { - return false; - } - }, - onSignOut: () => { - window.location.href = '/login'; - }, - onSignIn: () => { - window.location.href = '/'; - }, -}); - -if (!import.meta.env.VITE_WALLET_CONNECT_ID) { - throw new Error('Error: REACT_APP_WALLET_CONNECT_ID env config is not set'); -} - -createWeb3Modal({ - siweConfig, - wagmiConfig: config, - projectId: import.meta.env.VITE_WALLET_CONNECT_ID, -}); - -export default function Web3ModalProvider({ - children, -}: { - children: ReactNode; -}) { - return ( - - {children} - - ); -} diff --git a/packages/frontend/src/context/Web3Provider.tsx b/packages/frontend/src/context/Web3Provider.tsx new file mode 100644 index 00000000..bfe7eed8 --- /dev/null +++ b/packages/frontend/src/context/Web3Provider.tsx @@ -0,0 +1,36 @@ +import { ReactNode } from 'react'; +import { WagmiProvider } from 'wagmi'; +import { arbitrum, mainnet } from 'wagmi/chains'; + +import { defaultWagmiConfig } from '@web3modal/wagmi/react/config'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; + +const queryClient = new QueryClient(); + +const metadata = { + name: 'Snowball Tools', + description: 'Snowball Tools Dashboard', + url: window.location.origin, + icons: [ + 'https://raw.githubusercontent.com/snowball-tools/mediakit/main/assets/logo.svg', + ], +}; + +const chains = [mainnet, arbitrum] as const; +const config = defaultWagmiConfig({ + chains, + projectId: import.meta.env.VITE_WALLET_CONNECT_ID, + metadata, +}); + +if (!import.meta.env.VITE_WALLET_CONNECT_ID) { + throw new Error('Error: REACT_APP_WALLET_CONNECT_ID env config is not set'); +} + +export default function Web3Provider({ children }: { children: ReactNode }) { + return ( + + {children} + + ); +} diff --git a/packages/frontend/src/index.css b/packages/frontend/src/index.css index 541fb61e..d2bf535e 100644 --- a/packages/frontend/src/index.css +++ b/packages/frontend/src/index.css @@ -1,7 +1,9 @@ +@import 'layouts/global.css'; @tailwind base; @tailwind components; @tailwind utilities; + @layer base { @font-face { font-family: 'Inter Display'; diff --git a/packages/frontend/src/index.tsx b/packages/frontend/src/index.tsx index 8dcaa1ce..43d476b5 100644 --- a/packages/frontend/src/index.tsx +++ b/packages/frontend/src/index.tsx @@ -13,7 +13,6 @@ import reportWebVitals from './reportWebVitals'; import { GQLClientProvider } from './context/GQLClientContext'; import { SERVER_GQL_PATH } from './constants'; import { Toaster } from 'components/shared/Toast'; -import Web3ModalProvider from './context/Web3ModalProvider'; const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement, ); @@ -30,9 +29,7 @@ root.render( - - - + diff --git a/packages/frontend/src/layouts/global.css b/packages/frontend/src/layouts/global.css new file mode 100644 index 00000000..1075299b --- /dev/null +++ b/packages/frontend/src/layouts/global.css @@ -0,0 +1,6 @@ +.flex-center { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} diff --git a/packages/frontend/src/pages/AuthPage.tsx b/packages/frontend/src/pages/AuthPage.tsx new file mode 100644 index 00000000..68bb3a4b --- /dev/null +++ b/packages/frontend/src/pages/AuthPage.tsx @@ -0,0 +1,28 @@ +import { CloudyFlow } from 'components/CloudyFlow'; +import { SnowballAuth } from './auth/SnowballAuth'; + +const AuthPage = () => { + return ( + +
    +
    + snowball logo +
    + Snowball +
    +
    +
    +
    +
    + +
    +
    +
    + ); +}; + +export default AuthPage; diff --git a/packages/frontend/src/pages/Login.tsx b/packages/frontend/src/pages/Login.tsx deleted file mode 100644 index 69faf41b..00000000 --- a/packages/frontend/src/pages/Login.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import './Snow.css'; - -const Login = () => { - return ( -
    -
    - snowball logo - -
    -
    - ); -}; - -export default Login; diff --git a/packages/frontend/src/pages/Snow.css b/packages/frontend/src/pages/Snow.css deleted file mode 100644 index 8359e58d..00000000 --- a/packages/frontend/src/pages/Snow.css +++ /dev/null @@ -1,25 +0,0 @@ -.snow { - width: 100%; - height: 100vh; - border: 1px solid rgba(255, 255, 255, 0.1); - background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' style='enable-background:new 0 0 50 50%3B' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.st1%7Bopacity:0.3%3Bfill:%23FFFFFF%3B%7D.st3%7Bopacity:0.1%3Bfill:%23FFFFFF%3B%7D%3C/style%3E%3Ccircle class='st1' cx='5' cy='8' r='1'/%3E%3Ccircle class='st1' cx='38' cy='3' r='1'/%3E%3Ccircle class='st1' cx='12' cy='4' r='1'/%3E%3Ccircle class='st1' cx='16' cy='16' r='1'/%3E%3Ccircle class='st1' cx='47' cy='46' r='1'/%3E%3Ccircle class='st1' cx='32' cy='10' r='1'/%3E%3Ccircle class='st1' cx='3' cy='46' r='1'/%3E%3Ccircle class='st1' cx='45' cy='13' r='1'/%3E%3Ccircle class='st1' cx='10' cy='28' r='1'/%3E%3Ccircle class='st1' cx='22' cy='35' r='1'/%3E%3Ccircle class='st1' cx='3' cy='21' r='1'/%3E%3Ccircle class='st1' cx='26' cy='20' r='1'/%3E%3Ccircle class='st1' cx='30' cy='45' r='1'/%3E%3Ccircle class='st1' cx='15' cy='45' r='1'/%3E%3Ccircle class='st1' cx='34' cy='36' r='1'/%3E%3Ccircle class='st1' cx='41' cy='32' r='1'/%3E%3C/svg%3E"); - background-position: 0px 0px; - animation: animatedBackground 230s linear infinite; -} - -.snow div { - width: 100%; - height: 100%; - background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' style='enable-background:new 0 0 50 50%3B' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.st1%7Bopacity:0.7%3Bfill:%23FFFFFF%3B%7D.st3%7Bopacity:0.1%3Bfill:%23FFFFFF%3B%7D%3C/style%3E%3Ccircle class='st3' cx='4' cy='14' r='1'/%3E%3Ccircle class='st3' cx='43' cy='3' r='1'/%3E%3Ccircle class='st3' cx='31' cy='30' r='2'/%3E%3Ccircle class='st3' cx='19' cy='23' r='1'/%3E%3Ccircle class='st3' cx='37' cy='22' r='1'/%3E%3Ccircle class='st3' cx='43' cy='16' r='1'/%3E%3Ccircle class='st3' cx='8' cy='45' r='1'/%3E%3Ccircle class='st3' cx='29' cy='39' r='1'/%3E%3Ccircle class='st3' cx='13' cy='37' r='1'/%3E%3Ccircle class='st3' cx='47' cy='32' r='1'/%3E%3Ccircle class='st3' cx='15' cy='4' r='2'/%3E%3Ccircle class='st3' cx='9' cy='27' r='1'/%3E%3Ccircle class='st3' cx='30' cy='9' r='1'/%3E%3Ccircle class='st3' cx='25' cy='15' r='1'/%3E%3Ccircle class='st3' cx='21' cy='45' r='2'/%3E%3Ccircle class='st3' cx='42' cy='45' r='1'/%3E%3C/svg%3E"); - background-position: 0px 0px; - animation: animatedBackground 260s linear infinite; -} - -@keyframes animatedBackground { - 0% { - background-position: 0 0; - } - 100% { - background-position: 0px 11600px; - } -} diff --git a/packages/frontend/src/pages/SnowballLogin.tsx b/packages/frontend/src/pages/SnowballLogin.tsx deleted file mode 100644 index 828f9fc4..00000000 --- a/packages/frontend/src/pages/SnowballLogin.tsx +++ /dev/null @@ -1,17 +0,0 @@ -// import { useSnowball } from 'utils/use-snowball'; - -// export const SnowballLogin = () => { -// const snowball = useSnowball(); -// console.log(snowball); -// return ( -//
    -//
    -// snowball logo -//
    -//
    -// ); -// }; diff --git a/packages/frontend/src/pages/auth/CreatePasskey.tsx b/packages/frontend/src/pages/auth/CreatePasskey.tsx new file mode 100644 index 00000000..b976f973 --- /dev/null +++ b/packages/frontend/src/pages/auth/CreatePasskey.tsx @@ -0,0 +1,83 @@ +import { Button } from 'components/shared/Button'; +import { LoaderIcon } from 'components/shared/CustomIcon'; +import { KeyIcon } from 'components/shared/CustomIcon/KeyIcon'; +import { InlineNotification } from 'components/shared/InlineNotification'; +import { Input } from 'components/shared/Input'; +import { WavyBorder } from 'components/shared/WavyBorder'; +import { useState } from 'react'; +import { IconRight } from 'react-day-picker'; +import { useSnowball } from 'utils/use-snowball'; + +type Props = { + onDone: () => void; +}; + +export const CreatePasskey = ({}: Props) => { + const snowball = useSnowball(); + const [name, setName] = useState(''); + + const auth = snowball.auth.passkey; + const loading = !!auth.state.loading; + + async function createPasskey() { + await auth.register(name); + } + + return ( +
    +
    +
    + +
    +
    +
    + Create a passkey +
    +
    + Passkeys allow you to sign in securely without using passwords. +
    +
    +
    + +
    +
    +
    +
    +
    + Give it a name +
    +
    + { + setName(e.target.value); + }} + /> +
    + + {auth.state.error ? ( + + ) : ( + + )} +
    + +
    +
    + ); +}; diff --git a/packages/frontend/src/pages/auth/Done.tsx b/packages/frontend/src/pages/auth/Done.tsx new file mode 100644 index 00000000..ab63b12f --- /dev/null +++ b/packages/frontend/src/pages/auth/Done.tsx @@ -0,0 +1,41 @@ +import { Button } from 'components/shared/Button'; +import { + ArrowRightCircleFilledIcon, + CheckRoundFilledIcon, +} from 'components/shared/CustomIcon'; +import { WavyBorder } from 'components/shared/WavyBorder'; + +type Props = { + continueTo: string; +}; +export const Done = ({ continueTo }: Props) => { + return ( +
    +
    +
    + +
    +
    +
    + You're in! +
    +
    + It's time to get your next project rolling! +
    +
    +
    + +
    + +
    +
    + ); +}; diff --git a/packages/frontend/src/pages/auth/Login.tsx b/packages/frontend/src/pages/auth/Login.tsx new file mode 100644 index 00000000..8b95143d --- /dev/null +++ b/packages/frontend/src/pages/auth/Login.tsx @@ -0,0 +1,194 @@ +import { Button } from 'components/shared/Button'; +import { + ArrowRightCircleFilledIcon, + GithubIcon, + LinkIcon, + LoaderIcon, + QuestionMarkRoundFilledIcon, +} from 'components/shared/CustomIcon'; +import { GoogleIcon } from 'components/shared/CustomIcon/GoogleIcon'; +import { DotBorder } from 'components/shared/DotBorder'; +import { WavyBorder } from 'components/shared/WavyBorder'; +import { useState } from 'react'; +import { CreatePasskey } from './CreatePasskey'; +import { AppleIcon } from 'components/shared/CustomIcon/AppleIcon'; +import { KeyIcon } from 'components/shared/CustomIcon/KeyIcon'; +import { useToast } from 'components/shared/Toast'; +import { Link } from 'react-router-dom'; + +type Provider = 'google' | 'github' | 'apple' | 'email' | 'passkey'; + +type Props = { + onDone: () => void; +}; + +export const Login = ({ onDone }: Props) => { + const [provider, setProvider] = useState(false); + + // const loading = snowball.auth.state.loading && provider; + const loading = provider; + const { toast } = useToast(); + + if (provider === 'email') { + return ; + } + + return ( +
    +
    +
    + Sign in to Snowball +
    +
    + + +
    +
    +
    + +
    +
    + Got a Passkey? +
    +
    + Use it to sign in securely without using a password. +
    +
    +
    +
    + + +
    + +
    +
    + Lost your passkey? +
    +
    + + +
    +
    +
    + +
    + +
    + OR +
    + +
    + +
    + + + + + +
    +
    +
    + Don't have an account? +
    +
    + + Sign up now + +
    +
    +
    +
    + ); +}; diff --git a/packages/frontend/src/pages/auth/SignUp.tsx b/packages/frontend/src/pages/auth/SignUp.tsx new file mode 100644 index 00000000..a9ac9588 --- /dev/null +++ b/packages/frontend/src/pages/auth/SignUp.tsx @@ -0,0 +1,187 @@ +import { Button } from 'components/shared/Button'; +import { + ArrowRightCircleFilledIcon, + GithubIcon, + LoaderIcon, +} from 'components/shared/CustomIcon'; +import { GoogleIcon } from 'components/shared/CustomIcon/GoogleIcon'; +import { DotBorder } from 'components/shared/DotBorder'; +import { WavyBorder } from 'components/shared/WavyBorder'; +import { useEffect, useState } from 'react'; +import { useSnowball } from 'utils/use-snowball'; +import { CreatePasskey } from './CreatePasskey'; +import { Input } from 'components/shared/Input'; +import { AppleIcon } from 'components/shared/CustomIcon/AppleIcon'; +import { Link } from 'react-router-dom'; +import { useToast } from 'components/shared/Toast'; +import { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; +import { signInWithEthereum } from 'utils/siwe'; + +type Provider = 'google' | 'github' | 'apple' | 'email'; + +type Props = { + onDone: () => void; +}; + +export const SignUp = ({ onDone }: Props) => { + const [email, setEmail] = useState(''); + const [provider, setProvider] = useState(false); + + const { toast } = useToast(); + const snowball = useSnowball(); + + async function handleSignupRedirect() { + let wallet: PKPEthersWallet | undefined; + const google = snowball.auth.google; + if (google.canHandleOAuthRedirectBack()) { + setProvider('google'); + await google.handleOAuthRedirectBack(); + wallet = await google.getEthersWallet(); + await signInWithEthereum(wallet); + } + + if (wallet) { + onDone(); + } + } + + useEffect(() => { + handleSignupRedirect(); + }, []); + + const loading = provider; + const emailValid = /.@./.test(email); + + if (provider === 'email') { + return ; + } + + return ( +
    +
    +
    + Sign up to Snowball +
    +
    + +
    +
    + + + + + +
    + +
    + +
    + OR +
    + +
    + +
    +
    +
    + Email +
    + setEmail(e.target.value)} + disabled={!!loading} + /> +
    + + +
    +
    + Already an user? +
    +
    + + Sign in now + +
    +
    +
    +
    +
    + ); +}; diff --git a/packages/frontend/src/pages/auth/SnowballAuth.tsx b/packages/frontend/src/pages/auth/SnowballAuth.tsx new file mode 100644 index 00000000..69cb7987 --- /dev/null +++ b/packages/frontend/src/pages/auth/SnowballAuth.tsx @@ -0,0 +1,52 @@ +import { snowball } from 'utils/use-snowball'; +import { Login } from './Login'; +import { SignUp } from './SignUp'; +import { useEffect, useState } from 'react'; +import { Done } from './Done'; + +type Screen = 'login' | 'signup' | 'success'; + +const DASHBOARD_URL = '/'; + +export const SnowballAuth = () => { + const path = window.location.pathname; + const [screen, setScreen] = useState( + path === '/login' ? 'login' : 'signup', + ); + + useEffect(() => { + if (snowball.session) { + window.location.href = DASHBOARD_URL; + } + }, []); + + useEffect(() => { + if (path === '/login') { + setScreen('login'); + } else if (path === '/signup') { + setScreen('signup'); + } + }, [path]); + + if (screen === 'signup') { + return ( + { + setScreen('success'); + }} + /> + ); + } + if (screen === 'login') { + return ( + { + setScreen('success'); + }} + /> + ); + } + if (screen === 'success') { + return ; + } +}; diff --git a/packages/frontend/src/utils/siwe.ts b/packages/frontend/src/utils/siwe.ts new file mode 100644 index 00000000..b66e436c --- /dev/null +++ b/packages/frontend/src/utils/siwe.ts @@ -0,0 +1,37 @@ +import { SiweMessage } from 'siwe'; +import { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; +import { v4 as uuid } from 'uuid'; + +const domain = window.location.host; +const origin = window.location.origin; + +export async function signInWithEthereum(wallet: PKPEthersWallet) { + const message = await createSiweMessage( + await wallet.getAddress(), + 'Sign in with Ethereum to the app.', + ); + const signature = await wallet.signMessage(message); + + const res = await fetch(`${import.meta.env.VITE_SERVER_URL}/auth/validate`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ message, signature }), + credentials: 'include', + }); + console.log(await res.text()); +} + +async function createSiweMessage(address: string, statement: string) { + const message = new SiweMessage({ + domain, + address, + statement, + uri: origin, + version: '1', + chainId: 1, + nonce: uuid().replace(/[^a-z0-9]/g, ''), + }); + return message.prepareMessage(); +} diff --git a/packages/frontend/src/utils/snowball.ts b/packages/frontend/src/utils/snowball.ts deleted file mode 100644 index c17731f8..00000000 --- a/packages/frontend/src/utils/snowball.ts +++ /dev/null @@ -1,19 +0,0 @@ -// import { LitGoogleAuth } from '@snowballtools/auth-lit'; -// import { Snowball, SnowballChain } from '@snowballtools/js-sdk'; -// // import { LinkLitAlchemyLight } from '@snowballtools/link-lit-alchemy-light'; - -// export const DOMAIN = import.meta.env.VITE_DOMAIN || 'localhost'; -// export const ORIGIN = -// import.meta.env.VITE_VERCEL_ENV === 'production' -// ? `https://${DOMAIN}` -// : `http://${DOMAIN}:3000`; - -// // prettier-ignore - -// export const snowball = Snowball.withAuth( -// LitGoogleAuth.configure({ -// litReplayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, -// }), -// ).create({ -// initialChain: SnowballChain.sepolia, -// }); diff --git a/packages/frontend/src/utils/use-snowball.ts b/packages/frontend/src/utils/use-snowball.ts index 6657a3b2..45e174b7 100644 --- a/packages/frontend/src/utils/use-snowball.ts +++ b/packages/frontend/src/utils/use-snowball.ts @@ -1,13 +1,25 @@ -// import { useEffect, useState } from 'react'; -// import { snowball } from './snowball'; +import { useEffect, useState } from 'react'; +import { Snowball, SnowballChain } from '@snowballtools/js-sdk'; +import { LitGoogleAuth, LitPasskeyAuth } from '@snowballtools/auth-lit'; -// export function useSnowball() { -// const [state, setState] = useState(100); +export const snowball = Snowball.withAuth({ + google: LitGoogleAuth.configure({ + litRelayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, + }), + passkey: LitPasskeyAuth.configure({ + litRelayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, + }), +}).create({ + initialChain: SnowballChain.sepolia, +}); -// useEffect(() => { -// // Subscribe and directly return the unsubscribe function -// return snowball.subscribe(() => setState(state + 1)); -// }, [snowball]); +export function useSnowball() { + const [state, setState] = useState(100); -// return snowball; -// } + useEffect(() => { + // Subscribe and directly return the unsubscribe function + return snowball.subscribe(() => setState(state + 1)); + }, [state]); + + return snowball; +} diff --git a/packages/frontend/tailwind.config.js b/packages/frontend/tailwind.config.js index 608f5b6b..15e99e8a 100644 --- a/packages/frontend/tailwind.config.js +++ b/packages/frontend/tailwind.config.js @@ -1,4 +1,5 @@ import withMT from '@snowballtools/material-tailwind-react-fork/utils/withMT'; +import colors from 'tailwindcss/colors' /** @type {import('tailwindcss').Config} */ export default withMT({ @@ -9,7 +10,11 @@ export default withMT({ ], theme: { extend: { - zIndex: { + screens: { + xxs: '400px', + xs: '480px', + }, + zIndex: { tooltip: '52', }, letterSpacing: { @@ -25,6 +30,8 @@ export default withMT({ '3xs': '0.5rem', }, colors: { + sky: colors.sky, // TODO: WHy is this necessary? We're already using tailwind v3 + slate: colors.slate, // TODO: WHy is this necessary? We're already using tailwind v3 emerald: { 100: '#d1fae5', 200: '#a9f1d0', @@ -173,6 +180,9 @@ export default withMT({ zIndex: { toast: '9999', }, + animation: { + 'spin': 'spin 3s linear infinite', + } }, }, plugins: [], diff --git a/yarn.lock b/yarn.lock index 069d780c..baa23f4b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,6 +12,46 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@alchemy/aa-accounts@^3.6.1", "@alchemy/aa-accounts@^3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@alchemy/aa-accounts/-/aa-accounts-3.8.1.tgz#290e290b7047d8d29deb2b5959abaf839786f553" + integrity sha512-MoBbn+LTNBZIQTWlx0HIbXROJ9AcWhG0EOcbRMq0B+714/GogliJ5R/rUwQktxy+SfQa9K4Sh7q3kXFUgmFIdA== + dependencies: + "@alchemy/aa-core" "^3.8.1" + viem "2.8.6" + +"@alchemy/aa-alchemy@^3.6.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@alchemy/aa-alchemy/-/aa-alchemy-3.8.1.tgz#05b76657d871d98f426fe3eb365f5e0b349eed37" + integrity sha512-EmE3g7nN74v6+u8EUonHDJDDRbI6XsPpXYaSBNJsf9erjnw001z1+2GnUZdqa4NFJlJGdCboxX1sM5RJFO2IXA== + dependencies: + "@alchemy/aa-core" "^3.8.1" + "@turnkey/http" "^2.6.2" + "@turnkey/iframe-stamper" "^1.0.0" + "@turnkey/viem" "^0.4.8" + "@turnkey/webauthn-stamper" "^0.4.3" + eventemitter3 "^5.0.1" + viem "2.8.6" + zustand "^4.5.2" + optionalDependencies: + "@alchemy/aa-accounts" "^3.8.1" + alchemy-sdk "^3.0.0" + +"@alchemy/aa-core@^3.6.1", "@alchemy/aa-core@^3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@alchemy/aa-core/-/aa-core-3.8.1.tgz#5c961fbb0f342ed54a1af0329b81172144e52530" + integrity sha512-ilcIAG3OheJ3pm+0djZRcYXgNebZw8w/VBo0gcfu2B6V5cUnF0PPUYmj1ORR1ZxwQrP1Gnnl9TM3Bv+c4U25GQ== + dependencies: + abitype "^0.8.3" + eventemitter3 "^5.0.1" + viem "2.8.6" + zod "^3.22.4" + "@alloc/quick-lru@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" @@ -153,6 +193,11 @@ dependencies: xss "^1.0.8" +"@assemblyscript/loader@^0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" + integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" @@ -419,6 +464,14 @@ preact "^10.16.0" sha.js "^2.4.11" +"@confio/ics23@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d" + integrity sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w== + dependencies: + "@noble/hashes" "^1.0.0" + protobufjs "^6.8.8" + "@cosmjs/amino@0.28.13", "@cosmjs/amino@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.28.13.tgz#b51417a23c1ff8ef8b85a6862eba8492c6c44f38" @@ -429,6 +482,16 @@ "@cosmjs/math" "0.28.13" "@cosmjs/utils" "0.28.13" +"@cosmjs/amino@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.30.1.tgz#7c18c14627361ba6c88e3495700ceea1f76baace" + integrity sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w== + dependencies: + "@cosmjs/crypto" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + "@cosmjs/crypto@0.28.13", "@cosmjs/crypto@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.28.13.tgz#541b6a36f616b2da5a568ead46d4e83841ceb412" @@ -442,6 +505,19 @@ elliptic "^6.5.3" libsodium-wrappers "^0.7.6" +"@cosmjs/crypto@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.30.1.tgz#21e94d5ca8f8ded16eee1389d2639cb5c43c3eb5" + integrity sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ== + dependencies: + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + "@noble/hashes" "^1" + bn.js "^5.2.0" + elliptic "^6.5.4" + libsodium-wrappers "^0.7.6" + "@cosmjs/encoding@0.28.13", "@cosmjs/encoding@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.28.13.tgz#7994e8e2c435beaf0690296ffb0f7f3eaec8150b" @@ -451,6 +527,23 @@ bech32 "^1.1.4" readonly-date "^1.0.0" +"@cosmjs/encoding@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.30.1.tgz#b5c4e0ef7ceb1f2753688eb96400ed70f35c6058" + integrity sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ== + dependencies: + base64-js "^1.3.0" + bech32 "^1.1.4" + readonly-date "^1.0.0" + +"@cosmjs/json-rpc@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz#16f21305fc167598c8a23a45549b85106b2372bc" + integrity sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ== + dependencies: + "@cosmjs/stream" "^0.30.1" + xstream "^11.14.0" + "@cosmjs/math@0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.28.13.tgz#50c05bc67007a04216f7f5e0c93f57270f8cc077" @@ -458,6 +551,13 @@ dependencies: bn.js "^5.2.0" +"@cosmjs/math@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.30.1.tgz#8b816ef4de5d3afa66cb9fdfb5df2357a7845b8a" + integrity sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q== + dependencies: + bn.js "^5.2.0" + "@cosmjs/proto-signing@^0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.28.13.tgz#95ac12f0da0f0814f348f5ae996c3e96d015df61" @@ -471,11 +571,80 @@ cosmjs-types "^0.4.0" long "^4.0.0" +"@cosmjs/proto-signing@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz#f0dda372488df9cd2677150b89b3e9c72b3cb713" + integrity sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ== + dependencies: + "@cosmjs/amino" "^0.30.1" + "@cosmjs/crypto" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + cosmjs-types "^0.7.1" + long "^4.0.0" + +"@cosmjs/socket@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.30.1.tgz#00b22f4b5e2ab01f4d82ccdb7b2e59536bfe5ce0" + integrity sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow== + dependencies: + "@cosmjs/stream" "^0.30.1" + isomorphic-ws "^4.0.1" + ws "^7" + xstream "^11.14.0" + +"@cosmjs/stargate@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.30.1.tgz#e1b22e1226cffc6e93914a410755f1f61057ba04" + integrity sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog== + dependencies: + "@confio/ics23" "^0.6.8" + "@cosmjs/amino" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stream" "^0.30.1" + "@cosmjs/tendermint-rpc" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + cosmjs-types "^0.7.1" + long "^4.0.0" + protobufjs "~6.11.3" + xstream "^11.14.0" + +"@cosmjs/stream@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.30.1.tgz#ba038a2aaf41343696b1e6e759d8e03a9516ec1a" + integrity sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ== + dependencies: + xstream "^11.14.0" + +"@cosmjs/tendermint-rpc@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz#c16378892ba1ac63f72803fdf7567eab9d4f0aa0" + integrity sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ== + dependencies: + "@cosmjs/crypto" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/json-rpc" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/socket" "^0.30.1" + "@cosmjs/stream" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + axios "^0.21.2" + readonly-date "^1.0.0" + xstream "^11.14.0" + "@cosmjs/utils@0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.28.13.tgz#2fd2844ec832d7833811e2ae1691305d09791a08" integrity sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg== +"@cosmjs/utils@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.30.1.tgz#6d92582341be3c2ec8d82090253cfa4b7f959edb" + integrity sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g== + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -867,7 +1036,7 @@ "@ethereumjs/util" "^8.1.0" ethereum-cryptography "^2.0.0" -"@ethereumjs/util@^8.1.0": +"@ethereumjs/util@^8.0.0", "@ethereumjs/util@^8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== @@ -964,7 +1133,7 @@ dependencies: "@ethersproject/bignumber" "^5.7.0" -"@ethersproject/contracts@5.7.0": +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== @@ -1067,7 +1236,7 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/providers@5.7.2": +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.0": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== @@ -1166,7 +1335,7 @@ "@ethersproject/rlp" "^5.7.0" "@ethersproject/signing-key" "^5.7.0" -"@ethersproject/units@5.7.0": +"@ethersproject/units@5.7.0", "@ethersproject/units@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== @@ -1175,7 +1344,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/wallet@5.7.0": +"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== @@ -1421,7 +1590,15 @@ resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== -"@ipld/dag-cbor@^7.0.1": +"@ipld/dag-cbor@^6.0.3": + version "6.0.15" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-6.0.15.tgz#aebe7a26c391cae98c32faedb681b1519e3d2372" + integrity sha512-Vm3VTSTwlmGV92a3C5aeY+r2A18zbH2amehNhsX8PBa3muXICaWrN8Uri85A5hLH7D7ElhE8PdjxD6kNqUmTZA== + dependencies: + cborg "^1.5.4" + multiformats "^9.5.4" + +"@ipld/dag-cbor@^7.0.0", "@ipld/dag-cbor@^7.0.1": version "7.0.3" resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== @@ -1429,7 +1606,7 @@ cborg "^1.6.0" multiformats "^9.5.4" -"@ipld/dag-json@^8.0.9": +"@ipld/dag-json@^8.0.1", "@ipld/dag-json@^8.0.9": version "8.0.11" resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-8.0.11.tgz#8d30cc2dfacb0aef04d327465d3df91e79e8b6ce" integrity sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA== @@ -1437,6 +1614,20 @@ cborg "^1.5.4" multiformats "^9.5.4" +"@ipld/dag-pb@^2.1.3": + version "2.1.18" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-2.1.18.tgz#12d63e21580e87c75fd1a2c62e375a78e355c16f" + integrity sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg== + dependencies: + multiformats "^9.5.4" + +"@ipld/dag-pb@^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.1.0.tgz#4ebec92eeb9e8f317b8ef971221c6dac7b12b302" + integrity sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg== + dependencies: + multiformats "^13.1.0" + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1595,6 +1786,523 @@ resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz#353ce4a76c83fadec272ea5674ede767650762fd" integrity sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g== +"@lit-protocol/access-control-conditions@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/access-control-conditions/-/access-control-conditions-3.0.32.tgz#e21c4e55327adcd2c7537ae30e733c0db30b5e33" + integrity sha512-m8xKM7Nh8WkXq7dWsJsjUEkMnbEo/iPDAX3kvZkPRoeo3RZ9abOBedfMsBIjx9R4hj/poyfC7TSGhstvoesGGQ== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/auth-browser@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/auth-browser/-/auth-browser-3.0.32.tgz#8c03645394fab27afd9fbe93a3adab70bed43a50" + integrity sha512-aY2BYZJJZQLZczM/WRcUbB5J54SXh4wn+P2+L9VpQTlKkshjgNLLeYOv705Y0uVaK1r9b2wTVjaMzZJPMZ4qXw== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + "@walletconnect/ethereum-provider" "2.9.2" + "@walletconnect/modal" "2.6.1" + ethers "^5.7.1" + jszip "^3.10.1" + lit-siwe "^1.1.8" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.13.3" + uint8arrays "^4.0.3" + util "^0.12.4" + web-vitals "^3.0.4" + +"@lit-protocol/auth-helpers@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/auth-helpers/-/auth-helpers-3.0.32.tgz#1879796afee55e8c23950c9a10f2ca8bed5e1a89" + integrity sha512-QSnApvcDMkxSpRy6P46RSeCJcOJ05JC8WW++VeFkQbzRKcYU8lfkF39Xi6/I1h9sv2LFHrfbT7fY7ijPF7IjWA== + dependencies: + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + +"@lit-protocol/bls-sdk@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/bls-sdk/-/bls-sdk-3.0.32.tgz#53fee54b2d17363b92cc5f901a473c07f35ad58e" + integrity sha512-8wDcmMmeFA6YuxGn4wNCTrkTPyEBJ8qSXsXJCMHkuglwVgrI2rOK26PK/k++0mf1+i4C2TzKeF9V8GJagb/o3w== + dependencies: + pako "^2.1.0" + tslib "^2.3.0" + +"@lit-protocol/constants@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/constants/-/constants-3.0.32.tgz#c41bd2bc0b583bed747fcf518a9c712fde7174a3" + integrity sha512-hSna3+qRGuS9Hg6VrUnBUrLH+PZQINBQAEIwq2xQzWR234H1za1g9PNMibgjCfwcV2j9f6tiJgYoPAp4n0O21w== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/types" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + +"@lit-protocol/contracts-sdk@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/contracts-sdk/-/contracts-sdk-3.0.32.tgz#3254b128feb67e75f61ff180f66131ba12e47511" + integrity sha512-uqmTXQeele9HOWvu7ozQb7RvFjJxpDiQJOtqie17AR5O3J9DR6uASsr80uDP5zdlPnoouXnk22KNmsBsgvNo8g== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/types" "3.0.32" + bitcoinjs-lib "^6.1.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + jose "^4.14.4" + jszip "^3.10.1" + multiformats "^9.7.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/core@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/core/-/core-3.0.32.tgz#55a5834fa8c3dd3c5c03d3468146989d90c2edd2" + integrity sha512-YrtOJhTr7amaPE2CX5n7zgrKTF0opjS432YKQ8gyAwXUmlEyoNOBiGIa+HFLPgmw/AntQYV89zomjzx3hVgM7g== + dependencies: + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + bitcoinjs-lib "^6.1.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + jose "^4.14.4" + jszip "^3.10.1" + multiformats "^10.0.2" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/crypto@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/crypto/-/crypto-3.0.32.tgz#5febca628798fd49a002d5e4a43c8acb8f9e127d" + integrity sha512-Me7I2VVMg+dL0Q0x2Cqw6KTnYotRqGGNBuS/pay2kooI4UkheCz6ZnTt9eCtN7JF2pBIe0o/IFAzh1SFzSEZBQ== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/ecdsa-sdk@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/ecdsa-sdk/-/ecdsa-sdk-3.0.32.tgz#9ebac8ecfc275a6f2149fd56b1e13b3e8ed3bb7e" + integrity sha512-zuyE8ui+rIpM0MyoY5cPq9I+wQfxEouaRmbDplybaJc12UKWmnLDQCSQ4mPnZTs8FC5785Qfxj5VAe5CLQ+yEw== + dependencies: + pako "^2.1.0" + tslib "^2.3.0" + +"@lit-protocol/encryption@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/encryption/-/encryption-3.0.32.tgz#b167df877bd8e0778104c1767998a4c8491fa731" + integrity sha512-YMx3MQotn0cr26LcVNTLIPdl5xENP97TcsPsoXCaH7ArIOKXvmhqH3PbxfhyU9i/TTzCshDE18b0P9Od6oAwDQ== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + jszip "^3.10.1" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/lit-auth-client@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/lit-auth-client/-/lit-auth-client-3.0.32.tgz#223a498c4b109558583f4ffa1dadf418a3fbd89a" + integrity sha512-McEMljGVEHsiMSI2hzqjrv3B4vX4VSEcTPwMKzKC1k6w43Hi/0GsU1Q0RGtaqIkNyvs/m+BeMR43lOKWn9LDAg== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-browser" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/core" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/encryption" "3.0.32" + "@lit-protocol/lit-node-client" "3.0.32" + "@lit-protocol/lit-node-client-nodejs" "3.0.32" + "@lit-protocol/lit-third-party-libs" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + "@simplewebauthn/browser" "^7.2.0" + "@simplewebauthn/typescript-types" "^7.0.0" + "@walletconnect/ethereum-provider" "2.9.2" + "@walletconnect/modal" "2.6.1" + base64url "^3.0.1" + bitcoinjs-lib "^6.1.0" + blockstore-core "^3.0.0" + bs58 "^5.0.0" + cbor-web "^9.0.1" + date-and-time "^2.4.1" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + ipfs-unixfs-importer "^12.0.0" + jose "^4.14.4" + jszip "^3.10.1" + lit-siwe "^1.1.8" + multiformats "^10.0.2" + nanoid "3.3.4" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + uint8arrays "^4.0.3" + +"@lit-protocol/lit-node-client-nodejs@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client-nodejs/-/lit-node-client-nodejs-3.0.32.tgz#0627b094d1d7de8370da4ade0bd5ecab7894feae" + integrity sha512-vivyz7SFHBpWk0j0teTEy+lxGYEftHecJRNPcEagBW2pmyMCQBL4XrwFBNH+k9aaCo1Zx4Q9WnVH0H78otcuLg== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/core" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/encryption" "3.0.32" + "@lit-protocol/lit-third-party-libs" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + bitcoinjs-lib "^6.1.0" + blockstore-core "^3.0.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + ipfs-unixfs-importer "^12.0.0" + jose "^4.14.4" + jszip "^3.10.1" + lit-siwe "^1.1.8" + multiformats "^10.0.2" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/lit-node-client@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client/-/lit-node-client-3.0.32.tgz#84e8f1da5f10a8ba5a377d1421a045fd5830a1c4" + integrity sha512-YAlMvhHq2d1vdHNVbqho8pqzEWY2MtsFOMGHVG11711oLal1fyFDr4iGJ5KnxxvK6+In2Amv65jQVSr1wlkdVQ== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-browser" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/core" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/encryption" "3.0.32" + "@lit-protocol/lit-node-client-nodejs" "3.0.32" + "@lit-protocol/lit-third-party-libs" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + "@walletconnect/ethereum-provider" "2.9.2" + "@walletconnect/modal" "2.6.1" + bitcoinjs-lib "^6.1.0" + blockstore-core "^3.0.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + ipfs-unixfs-importer "^12.0.0" + jose "^4.14.4" + jszip "^3.10.1" + lit-siwe "^1.1.8" + multiformats "^10.0.2" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + uint8arrays "^4.0.3" + +"@lit-protocol/lit-third-party-libs@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/lit-third-party-libs/-/lit-third-party-libs-3.0.32.tgz#6813976bdf245df24431cd55065389fb739efe09" + integrity sha512-FtxJtuYLSKV6sesRA+GthEa/VrrEQag+oFM26mWu569SCBnsbMxaz2IJ3telpXKR8FXkaiIYXgsdkyEPj9KyNQ== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + blockstore-core "^3.0.0" + ipfs-unixfs-importer "^12.0.0" + tslib "^2.3.0" + +"@lit-protocol/logger@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/logger/-/logger-3.0.32.tgz#081ff6ac421cd3ab3bc993bb1c4b3c75b6deac50" + integrity sha512-18Vi6vbbenDMRhDGQTJolVG4rnhl5NQzplC327XYEkNN8lGR8bxbx9ajSC71anB5/XYtHy57yotMtvZTPK0uWg== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/types" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/misc-browser@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/misc-browser/-/misc-browser-3.0.32.tgz#3b38d2caf2286372ccce5a52d493c20b1579c652" + integrity sha512-r7YsHO+HOA1pvpMHJ3mptTDYSGizNyitqRSgk1vGoufk4jAsnXkGQS3HGfhcP0PADEWhiIo/tGVa9DSPlN58Sw== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + +"@lit-protocol/misc@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/misc/-/misc-3.0.32.tgz#80eb73665c80e7eae88bc3e8519a0c6a7e5d2c26" + integrity sha512-zH7Xr729/k6Yr8PqR0LWMro++C3guidvL1ukseht98gymVMwavKVmQg0+USDkXugzY6fKBIMzonOF4j5TK7zuw== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/types" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/nacl@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/nacl/-/nacl-3.0.32.tgz#3b936c5bc8c45cc81f10d58e5a5aa69b271b66c2" + integrity sha512-LqIbqWlDVwqrhSpTdb60rvLQ1p3P5PI96N+8WfXPtdTVIOJLJFvKsqbwv5Atzkn3PaUURCWkmpIafEHxEmGIqg== + dependencies: + tslib "^2.3.0" + +"@lit-protocol/pkp-base@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/pkp-base/-/pkp-base-3.0.32.tgz#e89d8cb73de5dfb1ea11aae9d7def9f8350f339e" + integrity sha512-oBEs4mfYnRdsoctT+YOMGjU+07VvPM6C0XBnM1/w7XHnVcGWXv5Q0HVp/+mVNmqH8pDhYAA9R64IUEpsP8UcNQ== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-browser" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/core" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/encryption" "3.0.32" + "@lit-protocol/lit-node-client" "3.0.32" + "@lit-protocol/lit-node-client-nodejs" "3.0.32" + "@lit-protocol/lit-third-party-libs" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + "@walletconnect/ethereum-provider" "2.9.2" + "@walletconnect/modal" "2.6.1" + bitcoinjs-lib "^6.1.0" + blockstore-core "^3.0.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + ipfs-unixfs-importer "^12.0.0" + jose "^4.14.4" + jszip "^3.10.1" + lit-siwe "^1.1.8" + multiformats "^10.0.2" + node-fetch "^2.6.1" + secp256k1 "^5.0.0" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + uint8arrays "^4.0.3" + +"@lit-protocol/pkp-ethers@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/pkp-ethers/-/pkp-ethers-3.0.32.tgz#6dbbf6637a3a56c3749131443ad7fb0e377d314f" + integrity sha512-1CNwPZzv9RWkpjbElOJ/FNECO/6T2/rL9wPO3uCXPnpqvfWCe3gY+mB2agjm2goCIIFOfscOVdyP2aQOmyoJ4w== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-browser" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/core" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/encryption" "3.0.32" + "@lit-protocol/lit-node-client" "3.0.32" + "@lit-protocol/lit-node-client-nodejs" "3.0.32" + "@lit-protocol/lit-third-party-libs" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/pkp-base" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + "@metamask/eth-sig-util" "5.0.2" + "@walletconnect/ethereum-provider" "2.9.2" + "@walletconnect/modal" "2.6.1" + bitcoinjs-lib "^6.1.0" + blockstore-core "^3.0.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + ipfs-unixfs-importer "^12.0.0" + jose "^4.14.4" + jszip "^3.10.1" + lit-siwe "^1.1.8" + multiformats "^10.0.2" + node-fetch "^2.6.1" + secp256k1 "^5.0.0" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + uint8arrays "^4.0.3" + +"@lit-protocol/sev-snp-utils-sdk@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/sev-snp-utils-sdk/-/sev-snp-utils-sdk-3.0.32.tgz#c0e2a2f117b03170bd264408a7b892e14e31ec0f" + integrity sha512-H+DiTpWxgmcNqJuVKY3Ldy29J+42/+OwseIgOt21KldRk4Rymaa9O6hHaqEFSmjjJevMGzxJ+m0KzxWoM90GDg== + dependencies: + "@lit-protocol/uint8arrays" "3.0.32" + node-fetch "^2.6.1" + pako "^2.1.0" + tslib "^2.3.0" + +"@lit-protocol/types@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/types/-/types-3.0.32.tgz#6c0971a21dff6cb1a72ad5e70ab40f9a6caa92b6" + integrity sha512-rizsbqNzA+g8uP/Tfc3GPf+3ZCinYY886iTQbSY2wY7pj70ws3rmM9g/d5CS1laQvAhNlV6ak8uO9P0MVrppmg== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + +"@lit-protocol/uint8arrays@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/uint8arrays/-/uint8arrays-3.0.32.tgz#2962c3b1ef2dad9da03212c38f9de183ec401730" + integrity sha512-sZavZXFj9xSwMBnUp1xRii5n12LwpaxmYiDdIspo9yHCDTq60XNHgd2J+llk2Hge0H17MTnoPbICLwZlQ9YJmA== + dependencies: + tslib "^2.3.0" + "@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": version "1.6.3" resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.3.tgz#25b4eece2592132845d303e091bad9b04cdcfe03" @@ -1618,6 +2326,18 @@ "@metamask/safe-event-emitter" "^3.0.0" "@metamask/utils" "^5.0.1" +"@metamask/eth-sig-util@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz#c518279a6e17a88135a13d53a0b970f145ff8bce" + integrity sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q== + dependencies: + "@ethereumjs/util" "^8.0.0" + bn.js "^4.11.8" + ethereum-cryptography "^1.1.2" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + "@metamask/eth-sig-util@^4.0.0", "@metamask/eth-sig-util@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" @@ -1863,6 +2583,14 @@ "@motionone/dom" "^10.16.4" tslib "^2.3.1" +"@multiformats/murmur3@^2.0.0": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-2.1.8.tgz#81c1c15b6391109f3febfca4b3205196615a04e9" + integrity sha512-6vId1C46ra3R1sbJUOFCZnsUIveR9oF20yhPmAFxPm0JfrX3/ZRCgP3YDrBzlGoEppOXnA9czHeYc0T9mB6hbA== + dependencies: + multiformats "^13.0.0" + murmurhash3js-revisited "^3.0.0" + "@noble/curves@1.2.0", "@noble/curves@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -1877,6 +2605,18 @@ dependencies: "@noble/hashes" "1.3.3" +"@noble/curves@^1.3.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" + integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== + dependencies: + "@noble/hashes" "1.4.0" + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + "@noble/hashes@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" @@ -1887,11 +2627,16 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== -"@noble/hashes@^1", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1": +"@noble/hashes@1.4.0", "@noble/hashes@^1", "@noble/hashes@^1.0.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -3074,6 +3819,15 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + "@scure/bip32@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8" @@ -3092,6 +3846,14 @@ "@noble/hashes" "~1.3.2" "@scure/base" "~1.1.4" +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + "@scure/bip39@1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" @@ -3181,11 +3943,72 @@ "@sigstore/core" "^1.1.0" "@sigstore/protobuf-specs" "^0.3.1" +"@simplewebauthn/browser@^7.2.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@simplewebauthn/browser/-/browser-7.4.0.tgz#3e25b5e9f45d03eb60d3e4f8812d8d2acfd7dba6" + integrity sha512-qqCZ99lFWjtyza8NCtCpRm3GU5u8/QFeBfMgW5+U/E8Qyc4lvUcuJ8JTbrhksVQLZWSY1c/6Xw11QZ5e+D1hNw== + dependencies: + "@simplewebauthn/typescript-types" "^7.4.0" + +"@simplewebauthn/typescript-types@^7.0.0", "@simplewebauthn/typescript-types@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-7.4.0.tgz#1f5d55e187cbd30727a75543caf1bade747625ce" + integrity sha512-8/ZjHeUPe210Bt5oyaOIGx4h8lHdsQs19BiOT44gi/jBEgK7uBGA0Fy7NRsyh777al3m6WM0mBf0UR7xd4R7WQ== + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@snowballtools/auth-lit@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/auth-lit/-/auth-lit-0.1.0.tgz#1ed97cf55dd20c29b46ee3e5ad053662e17fdc41" + integrity sha512-WfGbdqd34I5wDcviSn9f8I1aTpY0ExJYGvkrwy/l0aeEotRBXoMDFNAM23RQN/aYzaewCOYGTPl1DJ1/hBYDyw== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/lit-auth-client" "3.0.32" + "@lit-protocol/lit-node-client" "3.0.32" + "@lit-protocol/pkp-ethers" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@snowballtools/auth" "*" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + +"@snowballtools/auth@*", "@snowballtools/auth@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/auth/-/auth-0.1.0.tgz#f6bca8e631d754b524525153769bf28fa956cfa8" + integrity sha512-jsviORyBcDporAFDCKGNHK4WCNBD68DdMJJ4wcnIa5DNXHjYLU4YYLqcbpccgnL1l+02o2nC/FyIwwDNcxWtjw== + dependencies: + "@lit-protocol/pkp-ethers" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + debug "*" + +"@snowballtools/js-sdk@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/js-sdk/-/js-sdk-0.1.0.tgz#69835d4c0fdb1023a2ff3e75d916eb23e98084e1" + integrity sha512-ejyzeRjUiffaWZiBwLhCi9vVyJp+eNBlTYQIwfTipAQlr1q0yCfCHJic2z2CIt2w6Vzayfgi2KRmNyQpRd3img== + dependencies: + "@snowballtools/auth" "*" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + +"@snowballtools/link-lit-alchemy-light@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/link-lit-alchemy-light/-/link-lit-alchemy-light-0.1.0.tgz#3198bd75ad8002f76481680b1c792a7a13b84111" + integrity sha512-f6CEaol7qunra+1Tnk0Yb/M7l/EmYg40dlA7C+lYr0TQcGmIBQhT3rWtuluAlIsmKDPm1Ri7CCGfAYD7ioR/JQ== + dependencies: + "@alchemy/aa-alchemy" "^3.6.1" + "@alchemy/aa-core" "^3.6.1" + "@lit-protocol/pkp-ethers" "3.0.32" + "@snowballtools/smartwallet-alchemy-light" "*" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + ethers "^6.11.1" + viem "2.x" + "@snowballtools/material-tailwind-react-fork@^2.1.10": version "2.1.10" resolved "https://registry.yarnpkg.com/@snowballtools/material-tailwind-react-fork/-/material-tailwind-react-fork-2.1.10.tgz#7a3e582122505157cb033168e48d6c93d93336e8" @@ -3201,11 +4024,46 @@ react-dom "18.2.0" tailwind-merge "1.8.1" +"@snowballtools/smartwallet-alchemy-light@*", "@snowballtools/smartwallet-alchemy-light@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/smartwallet-alchemy-light/-/smartwallet-alchemy-light-0.1.0.tgz#659be4924c15c015b56453c508ee78cd3d64f837" + integrity sha512-gR69Kq3Bl8qxmMqBjac5lINRlABH25U+oUmrzUsul9TtUdfJMtA/96jR48v6upliKyncGoSIf+KJQ8opA5DqHw== + dependencies: + "@alchemy/aa-accounts" "^3.6.1" + "@alchemy/aa-alchemy" "^3.6.1" + "@alchemy/aa-core" "^3.6.1" + "@lit-protocol/pkp-ethers" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + +"@snowballtools/types@*", "@snowballtools/types@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/types/-/types-0.1.0.tgz#b76b20f76cc4192b250712d148991f04d68bade6" + integrity sha512-lYLtUGjTO2BDqpM/KA83ojRB9sKw7IPQ9IVrd0FWJlyHtmQ5MvDRIcXJXO85lIUUe4SIkxXdrJMvda0GMDMV0A== + +"@snowballtools/utils@*", "@snowballtools/utils@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/utils/-/utils-0.1.0.tgz#1f0c69f357a899301d0716e0b30121242617c464" + integrity sha512-0dx3ct6pSbMdhSi/Yg3unM3sPuDIk+lv57YNvqRhv8e+wz+5IfRj0Bm12BB10Dav1PMJAXkLMYKJ5OYJJn6ALA== + dependencies: + "@alchemy/aa-core" "^3.6.1" + "@snowballtools/types" "*" + alchemy-sdk "^3.2.0" + viem "2.x" + "@socket.io/component-emitter@~3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz#621270c02c0a5d4f4669eb1caa9723c91cf201de" integrity sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg== +"@spruceid/siwe-parser@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-1.1.3.tgz#0eebe8bbd63c6de89cb44c06b6329b00b305df65" + integrity sha512-oQ8PcwDqjGWJvLmvAF2yzd6iniiWxK0Qtz+Dw+gLD/W5zOQJiKIUXwslHOm8VB8OOOKW9vfR3dnPBhHaZDvRsw== + dependencies: + apg-js "^4.1.1" + "@spruceid/siwe-parser@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-2.1.0.tgz#59859ccfd02403179bcf115d9e02a7dc953a0820" @@ -3513,6 +4371,60 @@ "@tufjs/canonical-json" "2.0.0" minimatch "^9.0.3" +"@turnkey/api-key-stamper@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@turnkey/api-key-stamper/-/api-key-stamper-0.4.0.tgz#03844adb9d08f4d0463e8d6e8dc9167a662b68e9" + integrity sha512-LyIiAXRuSL5UBa/Y95gHuh7j4uHzVMkI2+sHWM4/UWZat3nCoveU66h6SFXwF1BThA0poGgsKjWjsKNCJ89NPg== + dependencies: + "@noble/curves" "^1.3.0" + "@turnkey/encoding" "0.1.0" + sha256-uint8array "^0.10.7" + +"@turnkey/encoding@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@turnkey/encoding/-/encoding-0.1.0.tgz#85461c3aa11c70882cc2b0853f5db40f576c3ac9" + integrity sha512-aLmLrWtvV1k9UyGzuzMpBFdwleCH8VpzXIriusVMrFLiQp+4uHCS9cwrEG1glg3207ewWFDtvgj31qLoJS29pg== + +"@turnkey/http@2.10.0", "@turnkey/http@^2.6.2": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@turnkey/http/-/http-2.10.0.tgz#9e8d0dc6279719e3efaf5ae1df7dc9fd5a111ecf" + integrity sha512-5I2VwOzxYGxmSy8UOZn8rsV23gmK8v93KqNZ/mjf4GrFQ69q8LCaAFmrH1Zo+/J7eq0/GQdxNqBHfJKLp5iihw== + dependencies: + "@turnkey/api-key-stamper" "0.4.0" + "@turnkey/encoding" "0.1.0" + "@turnkey/webauthn-stamper" "0.5.0" + cross-fetch "^3.1.5" + +"@turnkey/iframe-stamper@^1.0.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@turnkey/iframe-stamper/-/iframe-stamper-1.2.0.tgz#bba478e391a266833f1a5960b9f1df9de5934fb8" + integrity sha512-OXbCVVzypa0AXa6dcNpfu8Q0xY/sq2nGXwhesrUQmE7V5I5nYYHZE3sQv54lErToX6H6YyDR9Z1DuPzEUkYTjw== + +"@turnkey/viem@^0.4.8": + version "0.4.14" + resolved "https://registry.yarnpkg.com/@turnkey/viem/-/viem-0.4.14.tgz#bbc60bd8ce478401e9e7900357de7edc792acd14" + integrity sha512-YMREwb7QBBuge8wxdpFGKAl48e4W/rX84XR1E5GsD5HnypNPnfMu/AI7Np0cbQBA6IRuwY9HWu3HbDPU9kicDg== + dependencies: + "@turnkey/api-key-stamper" "0.4.0" + "@turnkey/http" "2.10.0" + cross-fetch "^4.0.0" + typescript "^5.1" + +"@turnkey/webauthn-stamper@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@turnkey/webauthn-stamper/-/webauthn-stamper-0.5.0.tgz#014b8c20b1732af49dacb04f396edf010d3b7f47" + integrity sha512-iUbTUwD4f4ibdLy5PWWb7ITEz4S4VAP9/mNjFhoRY3cKVVTDfmykrVTKjPOIHWzDgAmLtgrLvySIIC9ZBVENBw== + dependencies: + sha256-uint8array "^0.10.7" + +"@turnkey/webauthn-stamper@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@turnkey/webauthn-stamper/-/webauthn-stamper-0.4.3.tgz#843499f0cf751c0421cb7630ea128b6f034a9446" + integrity sha512-hJuIpwny44TOrkFJiK8uA29RRO1A9xJK3KbN4PWqBxTLh1r7ntkl3zslc/qAkgnw6f+OREQbhQGoYkTdIX+7QA== + dependencies: + "@noble/hashes" "^1.3.2" + buffer "^6.0.3" + "@types/accepts@^1.3.5": version "1.3.7" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.7.tgz#3b98b1889d2b2386604c2bbbe62e4fb51e95b265" @@ -3606,6 +4518,14 @@ dependencies: "@types/node" "*" +"@types/cookie-session@^2.0.49": + version "2.0.49" + resolved "https://registry.yarnpkg.com/@types/cookie-session/-/cookie-session-2.0.49.tgz#44ae62bd1d1506fbb3cc14470cdf6f74decea04b" + integrity sha512-4E/bBjlqLhU5l4iGPR+NkVJH593hpNsT4dC3DJDr+ODm6Qpe13kZQVkezRIb+TYDXaBMemS3yLQ+0leba3jlkQ== + dependencies: + "@types/express" "*" + "@types/keygrip" "*" + "@types/cors@2.8.12": version "2.8.12" resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" @@ -3765,6 +4685,11 @@ dependencies: "@types/node" "*" +"@types/keygrip@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.6.tgz#1749535181a2a9b02ac04a797550a8787345b740" + integrity sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ== + "@types/lodash.memoize@^4.1.7": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/lodash.memoize/-/lodash.memoize-4.1.9.tgz#9f8912d39b6e450c0d342a2b74c99d331bf2016b" @@ -3792,7 +4717,7 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/minimatch@^3.0.3": +"@types/minimatch@^3.0.3", "@types/minimatch@^3.0.4": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -3819,6 +4744,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== +"@types/node@18.15.13": + version "18.15.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== + "@types/node@^10.1.0": version "10.17.60" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" @@ -3866,7 +4796,7 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.17": +"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.22": version "18.2.25" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.25.tgz#2946a30081f53e7c8d585eb138277245caedc521" integrity sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA== @@ -3881,10 +4811,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/react@^18.2.77": - version "18.2.77" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.77.tgz#af2f857b6a6dfb6ca89ec102ebc147b1f1616880" - integrity sha512-CUT9KUUF+HytDM7WiXKLF9qUSg4tGImwy4FXTlfEDPEkkNUzJ7rVFolYweJ9fS1ljoIaP7M7Rdjc5eUm/Yu5AA== +"@types/react@^18.2.66": + version "18.2.79" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.79.tgz#c40efb4f255711f554d47b449f796d1c7756d865" + integrity sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -3945,6 +4875,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== +"@types/uuid@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" + integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== + "@types/yargs-parser@*": version "21.0.3" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" @@ -4082,6 +5017,28 @@ lodash.isequal "4.5.0" uint8arrays "^3.1.0" +"@walletconnect/core@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.9.2.tgz#c46734ca63771b28fd77606fd521930b7ecfc5e1" + integrity sha512-VARMPAx8sIgodeyngDHbealP3B621PQqjqKsByFUTOep8ZI1/R/20zU+cmq6j9RCrL+kLKZcrZqeVzs8Z7OlqQ== + dependencies: + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/jsonrpc-ws-connection" "1.0.13" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/relay-auth" "^1.0.4" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.9.2" + "@walletconnect/utils" "2.9.2" + events "^3.3.0" + lodash.isequal "4.5.0" + uint8arrays "^3.1.0" + "@walletconnect/environment@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" @@ -4105,6 +5062,21 @@ "@walletconnect/utils" "2.11.2" events "^3.3.0" +"@walletconnect/ethereum-provider@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.9.2.tgz#fb3a6fca279bb4e98e75baa2fb9730545d41bb99" + integrity sha512-eO1dkhZffV1g7vpG19XUJTw09M/bwGUwwhy1mJ3AOPbOSbMPvwiCuRz2Kbtm1g9B0Jv15Dl+TvJ9vTgYF8zoZg== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.7" + "@walletconnect/jsonrpc-provider" "^1.0.13" + "@walletconnect/jsonrpc-types" "^1.0.3" + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/sign-client" "2.9.2" + "@walletconnect/types" "2.9.2" + "@walletconnect/universal-provider" "2.9.2" + "@walletconnect/utils" "2.9.2" + events "^3.3.0" + "@walletconnect/ethereum-provider@^2.12.2": version "2.12.2" resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.12.2.tgz#43195a14cd43f928b2fcbba6b1a08e17e7838c4f" @@ -4174,6 +5146,17 @@ "@walletconnect/jsonrpc-types" "^1.0.3" tslib "1.14.1" +"@walletconnect/jsonrpc-ws-connection@1.0.13": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.13.tgz#23b0cdd899801bfbb44a6556936ec2b93ef2adf4" + integrity sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + tslib "1.14.1" + ws "^7.5.1" + "@walletconnect/jsonrpc-ws-connection@1.0.14": version "1.0.14" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz#eec700e74766c7887de2bd76c91a0206628732aa" @@ -4184,7 +5167,7 @@ events "^3.3.0" ws "^7.5.1" -"@walletconnect/keyvaluestorage@^1.1.1": +"@walletconnect/keyvaluestorage@^1.0.2", "@walletconnect/keyvaluestorage@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== @@ -4201,6 +5184,13 @@ "@walletconnect/safe-json" "^1.0.2" pino "7.11.0" +"@walletconnect/modal-core@2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.1.tgz#bc76055d0b644a2d4b98024324825c108a700905" + integrity sha512-f2hYlJ5pwzGvjyaZ6BoGR5uiMgXzWXt6w6ktt1N8lmY6PiYp8whZgqx2hTxVWwVlsGnaIfh6UHp1hGnANx0eTQ== + dependencies: + valtio "1.11.0" + "@walletconnect/modal-core@2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.2.tgz#d73e45d96668764e0c8668ea07a45bb8b81119e9" @@ -4208,6 +5198,16 @@ dependencies: valtio "1.11.2" +"@walletconnect/modal-ui@2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.1.tgz#200c54c8dfe3c71321abb2724e18bb357dfd6371" + integrity sha512-RFUOwDAMijSK8B7W3+KoLKaa1l+KEUG0LCrtHqaB0H0cLnhEGdLR+kdTdygw+W8+yYZbkM5tXBm7MlFbcuyitA== + dependencies: + "@walletconnect/modal-core" "2.6.1" + lit "2.7.6" + motion "10.16.2" + qrcode "1.5.3" + "@walletconnect/modal-ui@2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz#fa57c087c57b7f76aaae93deab0f84bb68b59cf9" @@ -4218,6 +5218,14 @@ motion "10.16.2" qrcode "1.5.3" +"@walletconnect/modal@2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.1.tgz#066fdbfcff83b58c8a9da66ab4af0eb93e3626de" + integrity sha512-G84tSzdPKAFk1zimgV7JzIUFT5olZUVtI3GcOk77OeLYjlMfnDT23RVRHm5EyCrjkptnvpD0wQScXePOFd2Xcw== + dependencies: + "@walletconnect/modal-core" "2.6.1" + "@walletconnect/modal-ui" "2.6.1" + "@walletconnect/modal@2.6.2", "@walletconnect/modal@^2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" @@ -4283,6 +5291,21 @@ "@walletconnect/utils" "2.12.2" events "^3.3.0" +"@walletconnect/sign-client@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.9.2.tgz#ff4c81c082c2078878367d07f24bcb20b1f7ab9e" + integrity sha512-anRwnXKlR08lYllFMEarS01hp1gr6Q9XUgvacr749hoaC/AwGVlxYFdM8+MyYr3ozlA+2i599kjbK/mAebqdXg== + dependencies: + "@walletconnect/core" "2.9.2" + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.9.2" + "@walletconnect/utils" "2.9.2" + events "^3.3.0" + "@walletconnect/time@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" @@ -4314,6 +5337,18 @@ "@walletconnect/logger" "^2.0.1" events "^3.3.0" +"@walletconnect/types@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.9.2.tgz#d5fd5a61dc0f41cbdca59d1885b85207ac7bf8c5" + integrity sha512-7Rdn30amnJEEal4hk83cdwHUuxI1SWQ+K7fFFHBMqkuHLGi3tpMY6kpyfDxnUScYEZXqgRps4Jo5qQgnRqVM7A== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + events "^3.3.0" + "@walletconnect/universal-provider@2.11.2": version "2.11.2" resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.11.2.tgz#bec3038f51445d707bbec75f0cb8af0a1f1e04db" @@ -4344,6 +5379,21 @@ "@walletconnect/utils" "2.12.2" events "^3.3.0" +"@walletconnect/universal-provider@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.9.2.tgz#40e54e98bc48b1f2f5f77eb5b7f05462093a8506" + integrity sha512-JmaolkO8D31UdRaQCHwlr8uIFUI5BYhBzqYFt54Mc6gbIa1tijGOmdyr6YhhFO70LPmS6gHIjljwOuEllmlrxw== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.7" + "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/sign-client" "2.9.2" + "@walletconnect/types" "2.9.2" + "@walletconnect/utils" "2.9.2" + events "^3.3.0" + "@walletconnect/utils@2.11.2": version "2.11.2" resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.11.2.tgz#dee0f19adf5e38543612cbe9fa4de7ed28eb7e85" @@ -4384,6 +5434,26 @@ query-string "7.1.3" uint8arrays "^3.1.0" +"@walletconnect/utils@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.9.2.tgz#035bdb859ee81a4bcc6420f56114cc5ec3e30afb" + integrity sha512-D44hwXET/8JhhIjqljY6qxSu7xXnlPrf63UN/Qfl98vDjWlYVcDl2+JIQRxD9GPastw0S8XZXdRq59XDXLuZBg== + dependencies: + "@stablelib/chacha20poly1305" "1.0.1" + "@stablelib/hkdf" "1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/sha256" "1.0.1" + "@stablelib/x25519" "^1.0.3" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.9.2" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" + detect-browser "5.3.0" + query-string "7.1.3" + uint8arrays "^3.1.0" + "@walletconnect/window-getters@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" @@ -4579,6 +5649,11 @@ abitype@1.0.0: resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97" integrity sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ== +abitype@^0.8.3: + version "0.8.11" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.11.tgz#66e1cf2cbf46f48d0e57132d7c1c392447536cc1" + integrity sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A== + accepts@^1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -4607,6 +5682,11 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -4636,6 +5716,26 @@ aggregate-error@^3.0.0, aggregate-error@^3.1.0: clean-stack "^2.0.0" indent-string "^4.0.0" +alchemy-sdk@^3.0.0, alchemy-sdk@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/alchemy-sdk/-/alchemy-sdk-3.2.1.tgz#23ced2b6f44ce4960ca0950b3b328c0d12b0098e" + integrity sha512-ytCllr0E3TZxlYT2o/+i8AVEFJwRS7msXYvS3f/L47VEemkv0Hpz09XTqbjOcfur2PooEMcD8rn5oKrbwLyFrQ== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/providers" "^5.7.0" + "@ethersproject/units" "^5.7.0" + "@ethersproject/wallet" "^5.7.0" + "@ethersproject/web" "^5.7.0" + axios "^1.6.5" + sturdy-websocket "^0.2.1" + websocket "^1.0.34" + ansi-colors@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -4687,6 +5787,11 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== +any-signal@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" + integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== + anymatch@^3.1.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -4953,6 +6058,13 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +axios@^0.21.2: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + axios@^0.26.1: version "0.26.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" @@ -4960,7 +6072,7 @@ axios@^0.26.1: dependencies: follow-redirects "^1.14.8" -axios@^1.6.0, axios@^1.6.7: +axios@^1.6.0, axios@^1.6.5, axios@^1.6.7: version "1.6.8" resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== @@ -4990,11 +6102,21 @@ base-x@^3.0.2, base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +base64url@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== + bech32@1.1.4, bech32@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" @@ -5040,6 +6162,11 @@ bindings@^1.3.0, bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +bip174@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.1.1.tgz#ef3e968cf76de234a546962bcf572cc150982f9f" + integrity sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ== + bip32@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/bip32/-/bip32-3.0.1.tgz#1d1121469cce6e910e0ec3a5a1990dd62687e2a3" @@ -5059,6 +6186,18 @@ bip39@^3.0.4: dependencies: "@noble/hashes" "^1.2.0" +bitcoinjs-lib@^6.1.0: + version "6.1.5" + resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.5.tgz#3b03509ae7ddd80a440f10fc38c4a97f0a028d8c" + integrity sha512-yuf6xs9QX/E8LWE2aMJPNd0IxGofwfuVOiYdNUESkc+2bHHVKjhJd8qewqapeoolh9fihzHGoDCB5Vkr57RZCQ== + dependencies: + "@noble/hashes" "^1.2.0" + bech32 "^2.0.0" + bip174 "^2.1.1" + bs58check "^3.0.1" + typeforce "^1.11.3" + varuint-bitcoin "^1.1.2" + bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -5068,11 +6207,41 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +bl@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + blakejs@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== +blob-to-it@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.4.tgz#f6caf7a4e90b7bb9215fa6a318ed6bd8ad9898cb" + integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== + dependencies: + browser-readablestream-to-it "^1.0.3" + +blockstore-core@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/blockstore-core/-/blockstore-core-3.0.0.tgz#08f52d954fe079d2735b745d218e737071badd97" + integrity sha512-5ZZB5nh6kErcjZ/CTK6lCwTIGlPdkTXbD8+2xLC4Fm0WGh7g2e2lW2bfURw7mvnPtSX1xV+sN4V2ndowSgIiHQ== + dependencies: + err-code "^3.0.1" + interface-blockstore "^4.0.0" + interface-store "^3.0.0" + it-all "^2.0.0" + it-drain "^2.0.0" + it-filter "^2.0.0" + it-take "^2.0.0" + multiformats "^11.0.0" + bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -5138,6 +6307,11 @@ brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== +browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" + integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== + browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -5167,6 +6341,13 @@ bs58@^4.0.0, bs58@^4.0.1: dependencies: base-x "^3.0.2" +bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" @@ -5176,6 +6357,14 @@ bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" +bs58check@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" + integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== + dependencies: + "@noble/hashes" "^1.2.0" + bs58 "^5.0.0" + btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" @@ -5196,7 +6385,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -buffer@6.0.3, buffer@^6.0.3: +buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -5212,7 +6401,7 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -bufferutil@^4.0.8: +bufferutil@^4.0.1, bufferutil@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== @@ -5349,6 +6538,16 @@ canonical-json@^0.0.4: resolved "https://registry.yarnpkg.com/canonical-json/-/canonical-json-0.0.4.tgz#6579c072c3db5c477ec41dc978fbf2b8f41074a3" integrity sha512-2sW7x0m/P7dqEnO0O87U7RTVQAaa7MELcd+Jd9FA6CYgYtwJ1TlDWIYMD8nuMkH1KoThsJogqgLyklrt9d/Azw== +canonicalize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.0.0.tgz#32be2cef4446d67fd5348027a384cae28f17226a" + integrity sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w== + +cbor-web@^9.0.1: + version "9.0.2" + resolved "https://registry.yarnpkg.com/cbor-web/-/cbor-web-9.0.2.tgz#1915f1ef1a72ea905db07480f71cf12ff601c661" + integrity sha512-N6gU2GsJS8RR5gy1d9wQcSPgn9FGJFY7KNvdDRlwHfz6kCxrQr2TDnrjXHmr6TFSl6Fd0FC4zRnityEldjRGvQ== + cborg@^1.5.4, cborg@^1.6.0: version "1.10.2" resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" @@ -5768,6 +6967,16 @@ cookie-es@^1.0.0: resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.1.0.tgz#68f8d9f48aeb5a534f3896f80e792760d3d20def" integrity sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw== +cookie-session@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cookie-session/-/cookie-session-2.1.0.tgz#ae30b566b2f9f2d8ca2c4936513e6bf181830558" + integrity sha512-u73BDmR8QLGcs+Lprs0cfbcAPKl2HnPcjpwRXT41sEV4DRJ2+W0vJEEZkG31ofkx+HZflA70siRIjiTdIodmOQ== + dependencies: + cookies "0.9.1" + debug "3.2.7" + on-headers "~1.0.2" + safe-buffer "5.2.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -5783,6 +6992,14 @@ cookie@0.6.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookies@0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" + integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + copyfiles@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" @@ -5846,6 +7063,14 @@ cosmjs-types@^0.5.1: long "^4.0.0" protobufjs "~6.11.2" +cosmjs-types@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.7.2.tgz#a757371abd340949c5bd5d49c6f8379ae1ffd7e2" + integrity sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA== + dependencies: + long "^4.0.0" + protobufjs "~6.11.2" + crc-32@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" @@ -5966,11 +7191,32 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +d@1, d@^1.0.1, d@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" + integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== + dependencies: + es5-ext "^0.10.64" + type "^2.7.2" + +dag-jose@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-1.0.0.tgz#52e42d70cb5bee31ae4e8e3ab860615568d7ad73" + integrity sha512-U0b/YsIPBp6YZNTFrVjwLZAlY3qGRxZTIEcM/CcQmrVrCWq9MWQq9pheXVSPLIhF4SNwzp2SikPva4/BIrJY+g== + dependencies: + "@ipld/dag-cbor" "^6.0.3" + multiformats "^9.0.2" + dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== +date-and-time@^2.4.1: + version "2.4.3" + resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-2.4.3.tgz#116963998a8cecd478955ae053f31a6747a988df" + integrity sha512-xkS/imTmsyEdpp9ie5oV5UWolg3XkYWNySbT2W4ESWr6v4V8YrsHbhpk9fIeQcr0NFTnYbQJLXlgU1zrLItysA== + date-fns@^2.29.3: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" @@ -5993,19 +7239,26 @@ dayjs@1.11.10, dayjs@^1.11.9: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== -debug@2.6.9: +debug@*, debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@2.6.9, debug@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== +debug@3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - ms "2.1.2" + ms "^2.1.1" decamelize-keys@^1.1.0: version "1.1.1" @@ -6242,6 +7495,15 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== +dns-over-http-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" + integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== + dependencies: + debug "^4.3.1" + native-fetch "^3.0.0" + receptacle "^1.3.2" + dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: version "0.5.16" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" @@ -6333,6 +7595,13 @@ ejs@^3.1.7: dependencies: jake "^10.8.5" +electron-fetch@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" + integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== + dependencies: + encoding "^0.1.13" + electron-to-chromium@^1.4.668: version "1.4.733" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.733.tgz#708d51ce01a7ed3b401d5ced85e9f5d504fd4217" @@ -6441,6 +7710,11 @@ err-code@^2.0.2: resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== +err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -6475,6 +7749,33 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" +es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: + version "0.10.64" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" + integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" + integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== + dependencies: + d "^1.0.2" + ext "^1.7.0" + esbuild@^0.19.2: version "0.19.12" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" @@ -6558,6 +7859,16 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -6631,6 +7942,16 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" +ethereum-cryptography@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + ethereum-cryptography@^2.0.0: version "2.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" @@ -6662,7 +7983,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: ethjs-util "0.1.6" rlp "^2.2.3" -ethers@^5.6.2: +ethers@^5.6.2, ethers@^5.7.1: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -6698,6 +8019,19 @@ ethers@^5.6.2: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" +ethers@^6.11.1: + version "6.11.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.11.1.tgz#96aae00b627c2e35f9b0a4d65c7ab658259ee6af" + integrity sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.5.0" + ethjs-util@0.1.6, ethjs-util@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" @@ -6706,6 +8040,14 @@ ethjs-util@0.1.6, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + eventemitter2@^6.4.5, eventemitter2@^6.4.7: version "6.4.9" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" @@ -6871,6 +8213,13 @@ express@^4.18.2: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + extension-port-stream@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/extension-port-stream/-/extension-port-stream-2.1.1.tgz#ec11f2a5ed95655d8c40805d7cb0c39939ee9ef4" @@ -6892,6 +8241,11 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== +fast-fifo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" @@ -7018,7 +8372,7 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -follow-redirects@^1.14.8, follow-redirects@^1.15.6: +follow-redirects@^1.14.0, follow-redirects@^1.14.8, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== @@ -7202,6 +8556,11 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" @@ -7385,6 +8744,13 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globalthis@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@11.1.0, globby@^11.0.3: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -7452,6 +8818,14 @@ h3@^1.10.2, h3@^1.11.1: uncrypto "^0.1.3" unenv "^1.9.0" +hamt-sharding@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-3.0.6.tgz#3643107a3021af66ac95684aec87b196add5ba57" + integrity sha512-nZeamxfymIWLpVcAN0CRrb7uVq3hCOGj9IcL6NMA6VVCVWqj+h9Jo/SmaWuS92AEDf1thmHsM5D5c70hM3j2Tg== + dependencies: + sparse-array "^1.3.1" + uint8arrays "^5.0.1" + handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" @@ -7759,6 +9133,11 @@ ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -7837,6 +9216,33 @@ inquirer@^8.2.4: through "^2.3.6" wrap-ansi "^6.0.1" +interface-blockstore@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-4.0.1.tgz#0dda1774d72ca7e990dc1921cfc524b3e9d1b9ca" + integrity sha512-ROWKGJls7vLeFaQtI3hZVCJOkUoZ05xAi2t2qysM4d7dwVKrfm5jUOqWh8JgLL7Iup3XqJ0mKXXZuwJ3s03RSw== + dependencies: + interface-store "^3.0.0" + multiformats "^11.0.0" + +interface-datastore@^6.0.2: + version "6.1.1" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-6.1.1.tgz#5150a00de2e7513eaadba58bcafd059cb50004c1" + integrity sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg== + dependencies: + interface-store "^2.0.2" + nanoid "^3.0.2" + uint8arrays "^3.0.0" + +interface-store@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" + integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== + +interface-store@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" + integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== + internal-slot@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" @@ -7866,11 +9272,136 @@ ip-address@^9.0.5: jsbn "1.1.0" sprintf-js "^1.1.3" +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipfs-core-types@^0.10.0, ipfs-core-types@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.10.3.tgz#89ebe98199d4d829f2b20104bfa3299f808c80fe" + integrity sha512-GNid2lRBjR5qgScCglgk7w9Hk3TZAwPHQXxOLQx72wgyc0jF2U5NXRoKW0GRvX8NPbHmsrFszForIqxd23I1Gw== + dependencies: + "@ipld/dag-pb" "^2.1.3" + interface-datastore "^6.0.2" + ipfs-unixfs "^6.0.3" + multiaddr "^10.0.0" + multiformats "^9.5.1" + +ipfs-core-utils@^0.14.0: + version "0.14.3" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.14.3.tgz#d04c631c472507bdefc58d4e8d1d9109efbb411c" + integrity sha512-aBkewVhgAj3NWXPwu6imj0wADGiGVZmJzqKzODOJsibDjkx6FGdMv8kvvqtLnK8LS/dvSk9yk32IDtuDyYoV7Q== + dependencies: + any-signal "^3.0.0" + blob-to-it "^1.0.1" + browser-readablestream-to-it "^1.0.1" + debug "^4.1.1" + err-code "^3.0.1" + ipfs-core-types "^0.10.3" + ipfs-unixfs "^6.0.3" + ipfs-utils "^9.0.6" + it-all "^1.0.4" + it-map "^1.0.4" + it-peekable "^1.0.2" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + multiaddr "^10.0.0" + multiaddr-to-uri "^8.0.0" + multiformats "^9.5.1" + nanoid "^3.1.23" + parse-duration "^1.0.0" + timeout-abort-controller "^3.0.0" + uint8arrays "^3.0.0" + +ipfs-http-client@56.0.0: + version "56.0.0" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-56.0.0.tgz#f42fa2bbf987bfa128ce0025de5d668586f4a815" + integrity sha512-JF3on9c0hB9XHk/UCxbyC6rSpERuj8F/0QcN/HImZoHNUKZ0/T8DpgVopocKdmGi1gr3Izlop7poaXomSt8Nug== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + "@ipld/dag-json" "^8.0.1" + "@ipld/dag-pb" "^2.1.3" + any-signal "^3.0.0" + dag-jose "^1.0.0" + debug "^4.1.1" + err-code "^3.0.1" + ipfs-core-types "^0.10.0" + ipfs-core-utils "^0.14.0" + ipfs-utils "^9.0.2" + it-first "^1.0.6" + it-last "^1.0.4" + merge-options "^3.0.4" + multiaddr "^10.0.0" + multiformats "^9.4.13" + parse-duration "^1.0.0" + stream-to-it "^0.2.2" + uint8arrays "^3.0.0" + +ipfs-unixfs-importer@^12.0.0: + version "12.0.1" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-12.0.1.tgz#316a52d8a793e9e006b1ee43edc50b83e00ef306" + integrity sha512-//VPZOqbONtc1HNtb+sBrw+nIGijHEloSm1O3LVR5orSlhHQ8X7+OCkeqceFBhu40tPMe/TwgAPrkvh+fXL+bA== + dependencies: + "@ipld/dag-pb" "^4.0.0" + "@multiformats/murmur3" "^2.0.0" + err-code "^3.0.1" + hamt-sharding "^3.0.0" + interface-blockstore "^4.0.0" + ipfs-unixfs "^9.0.0" + it-all "^2.0.0" + it-batch "^2.0.0" + it-first "^2.0.0" + it-parallel-batch "^2.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + rabin-wasm "^0.1.4" + uint8arraylist "^2.3.3" + uint8arrays "^4.0.2" + +ipfs-unixfs@^6.0.3: + version "6.0.9" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz#f6613b8e081d83faa43ed96e016a694c615a9374" + integrity sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ== + dependencies: + err-code "^3.0.1" + protobufjs "^6.10.2" + +ipfs-unixfs@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-9.0.1.tgz#d06e688e07ef4ce08d610337ba2fe8c143c386e7" + integrity sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg== + dependencies: + err-code "^3.0.1" + protobufjs "^7.0.0" + +ipfs-utils@^9.0.2, ipfs-utils@^9.0.6: + version "9.0.14" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" + integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== + dependencies: + any-signal "^3.0.0" + browser-readablestream-to-it "^1.0.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^3.0.1" + is-electron "^2.2.0" + iso-url "^1.1.5" + it-all "^1.0.4" + it-glob "^1.0.1" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + nanoid "^3.1.20" + native-fetch "^3.0.0" + node-fetch "^2.6.8" + react-native-fetch-api "^3.0.0" + stream-to-it "^0.2.2" + iron-webcrypto@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.1.0.tgz#f902f0cdbd77554b2195ecbb65558c311b01edfd" @@ -7973,6 +9504,11 @@ is-docker@^3.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== +is-electron@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" + integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -8019,6 +9555,13 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" @@ -8146,6 +9689,11 @@ is-typed-array@^1.1.3: dependencies: which-typed-array "^1.1.14" +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -8215,6 +9763,11 @@ isexe@^3.1.1: resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== +iso-url@^1.1.5: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" + integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== + isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" @@ -8228,11 +9781,98 @@ isomorphic-unfetch@3.1.0: node-fetch "^2.6.1" unfetch "^4.2.0" +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + isows@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== +it-all@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-all@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" + integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== + +it-batch@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-2.0.1.tgz#a0822be9b18743c41d8525835f788a7f297ba41f" + integrity sha512-2gWFuPzamh9Dh3pW+OKjc7UwJ41W4Eu2AinVAfXDMfrC5gXfm3b1TF+1UzsygBUgKBugnxnGP+/fFRyn+9y1mQ== + +it-drain@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-2.0.1.tgz#f50f6ce5cb8592a9d6337c9b5e780348877b152d" + integrity sha512-ESuHV6MLUNxuSy0vGZpKhSRjW0ixczN1FhbVy7eGJHjX6U2qiiXTyMvDc0z/w+nifOOwPyI5DT9Rc3o9IaGqEQ== + +it-filter@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-2.0.2.tgz#c849b3de4a12a2de3cc45be734ee55f69a0ed284" + integrity sha512-gocw1F3siqupegsOzZ78rAc9C+sYlQbI2af/TmzgdrR613MyEJHbvfwBf12XRekGG907kqXSOGKPlxzJa6XV1Q== + +it-first@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" + integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== + +it-first@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" + integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== + +it-glob@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" + integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== + dependencies: + "@types/minimatch" "^3.0.4" + minimatch "^3.0.4" + +it-last@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" + integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== + +it-map@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" + integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== + +it-parallel-batch@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-2.0.1.tgz#23eb07bbeb73521253d7c8a1566b53137103077c" + integrity sha512-tXh567/JfDGJ90Zi//H9HkL7kY27ARp0jf2vu2jUI6PUVBWfsoT+gC4eT41/b4+wkJXSGgT8ZHnivAOlMfcNjA== + dependencies: + it-batch "^2.0.0" + +it-peekable@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" + integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== + +it-take@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-take/-/it-take-2.0.1.tgz#f9e5ddf0b73a18ba00e62fb532d9d3cde3fe4ce6" + integrity sha512-DL7kpZNjuoeSTnB9dMAJ0Z3m2T29LRRAU+HIgkiQM+1jH3m8l9e/1xpWs8JHTlbKivbqSFrQMTc8KVcaQNmsaA== + +it-to-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" + integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== + dependencies: + buffer "^6.0.3" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + jackspeak@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" @@ -8334,6 +9974,11 @@ jiti@^1.21.0: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== +jose@^4.14.4: + version "4.15.5" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.5.tgz#6475d0f467ecd3c630a1b5dadd2735a7288df706" + integrity sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg== + joycon@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -8486,6 +10131,16 @@ jsonwebtoken@^9.0.2: ms "^2.1.1" semver "^7.5.4" +jszip@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + junk@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" @@ -8517,6 +10172,13 @@ keccak@^3.0.0, keccak@^3.0.3: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + dependencies: + tsscmp "1.0.6" + keyvaluestorage-interface@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" @@ -8648,6 +10310,13 @@ libsodium@^0.7.13: resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.13.tgz#230712ec0b7447c57b39489c48a4af01985fb393" integrity sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw== +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -8717,7 +10386,7 @@ lit-element@^4.0.0: "@lit/reactive-element" "^2.0.4" lit-html "^3.1.2" -lit-html@^2.8.0: +lit-html@^2.7.0, lit-html@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.8.0.tgz#96456a4bb4ee717b9a7d2f94562a16509d39bffa" integrity sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q== @@ -8731,6 +10400,24 @@ lit-html@^3.1.0, lit-html@^3.1.2: dependencies: "@types/trusted-types" "^2.0.2" +lit-siwe@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/lit-siwe/-/lit-siwe-1.1.8.tgz#6a393069012816d629c518bb8aa410f1e4a78bd7" + integrity sha512-gXI8GG0GAClw6G7T9p4p6Kn9ywDo8j2d90ShaYArJdsqqO9gwXfzxF84SMeY+bpsNqqQ3FahrhEwTCHd6w7wNw== + dependencies: + "@spruceid/siwe-parser" "1.1.3" + "@stablelib/random" "^1.0.1" + apg-js "^4.1.1" + +lit@2.7.6: + version "2.7.6" + resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.6.tgz#810007b876ed43e0c70124de91831921598b1665" + integrity sha512-1amFHA7t4VaaDe+vdQejSVBklwtH9svGoG6/dZi9JhxtJBBlqY5D1RV7iLUYY0trCqQc4NfhYYZilZiVHt7Hxg== + dependencies: + "@lit/reactive-element" "^1.6.0" + lit-element "^3.3.0" + lit-html "^2.7.0" + lit@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/lit/-/lit-2.8.0.tgz#4d838ae03059bf9cafa06e5c61d8acc0081e974e" @@ -8879,7 +10566,7 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -long@^5.2.0: +long@^5.0.0, long@^5.2.0: version "5.2.3" resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== @@ -9369,7 +11056,46 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multiformats@^9.4.2, multiformats@^9.5.4: +multiaddr-to-uri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz#65efe4b1f9de5f6b681aa42ff36a7c8db7625e58" + integrity sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA== + dependencies: + multiaddr "^10.0.0" + +multiaddr@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-10.0.1.tgz#0d15848871370860a4d266bb44d93b3dac5d90ef" + integrity sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg== + dependencies: + dns-over-http-resolver "^1.2.3" + err-code "^3.0.1" + is-ip "^3.1.0" + multiformats "^9.4.5" + uint8arrays "^3.0.0" + varint "^6.0.0" + +multiformats@^10.0.2: + version "10.0.3" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-10.0.3.tgz#d4147d01f9a31271c6fb5d24adf9b01f9e656bba" + integrity sha512-K2yGSmstS/oEmYiEIieHb53jJCaqp4ERPDQAYrm5sV3UUrVDZeshJQCK6GHAKyIGufU1vAcbS0PdAAZmC7Tzcw== + +multiformats@^11.0.0, multiformats@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" + integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== + +multiformats@^12.0.1: + version "12.1.3" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.3.tgz#cbf7a9861e11e74f8228b21376088cb43ba8754e" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^13.0.0, multiformats@^13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.0.tgz#5aa9d2175108a448fc3bdb54ba8a3d0b6cab3ac3" + integrity sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ== + +multiformats@^9.0.2, multiformats@^9.4.13, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.5.1, multiformats@^9.5.4, multiformats@^9.7.1: version "9.9.0" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== @@ -9385,6 +11111,11 @@ multimatch@5.0.0, multimatch@^5.0.0: arrify "^2.0.1" minimatch "^3.0.4" +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -9414,11 +11145,16 @@ nanoid-dictionary@^5.0.0-beta.1: resolved "https://registry.yarnpkg.com/nanoid-dictionary/-/nanoid-dictionary-5.0.0-beta.1.tgz#f2a2aa05b04f7ac6a9327c62a96146e8aa1b025d" integrity sha512-xBkL9zzkNjzJ/UnmWyiOUDVX/COoi05eS0oU28RYKFFQhdnzO5dTOPbVZ/fCFgIOGr1zNinDHJ68mm/KQfcgcw== -nanoid@3, nanoid@^3.3.6, nanoid@^3.3.7: +nanoid@3, nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23, nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== +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== + napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" @@ -9429,6 +11165,11 @@ napi-wasm@^1.1.0: resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== +native-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" + integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== + negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -9439,6 +11180,11 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + node-abi@^3.3.0: version "3.57.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.57.0.tgz#d772cb899236c0aa46778d0d25256917cf15eb15" @@ -9478,7 +11224,7 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.8: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -9960,6 +11706,19 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" + integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== + dependencies: + fast-fifo "^1.0.0" + p-defer "^3.0.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -10071,6 +11830,16 @@ pacote@^17.0.5: ssri "^10.0.0" tar "^6.1.11" +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -10078,6 +11847,11 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-duration@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" + integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== + parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -10535,7 +12309,7 @@ property-information@^5.0.0: dependencies: xtend "^4.0.0" -protobufjs@~6.11.2: +protobufjs@^6.10.2, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: version "6.11.4" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== @@ -10554,6 +12328,24 @@ protobufjs@~6.11.2: "@types/node" ">=13.7.0" long "^4.0.0" +protobufjs@^7.0.0: + version "7.2.6" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" + integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + protocols@^2.0.0, protocols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" @@ -10649,6 +12441,18 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +rabin-wasm@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" + integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== + dependencies: + "@assemblyscript/loader" "^0.9.4" + bl "^5.0.0" + debug "^4.3.1" + minimist "^1.2.5" + node-fetch "^2.6.1" + readable-stream "^3.6.0" + radix3@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" @@ -10767,6 +12571,13 @@ react-is@^18.0.0, react-is@^18.2.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +react-native-fetch-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" + integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== + dependencies: + p-defer "^3.0.0" + react-native-webview@^11.26.0: version "11.26.1" resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da" @@ -11003,6 +12814,13 @@ real-require@^0.1.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -11114,6 +12932,11 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" +retimer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" + integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== + retry@0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -11362,6 +13185,11 @@ sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +sha256-uint8array@^0.10.7: + version "0.10.7" + resolved "https://registry.yarnpkg.com/sha256-uint8array/-/sha256-uint8array-0.10.7.tgz#c751fc914f4227b26d996980562065fa4eadcf99" + integrity sha512-1Q6JQU4tX9NqsDGodej6pkrUVQVNapLZnvkwIhddH/JqzBZF1fSaxSWNY6sziXBE8aEa2twtGkXUrwzGeZCMpQ== + sha3@^2.1.1, sha3@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" @@ -11467,7 +13295,16 @@ simple-get@^4.0.0: once "^1.3.1" simple-concat "^1.0.0" -siwe@^2.1.4: +siwe-recap@0.0.2-alpha.0: + version "0.0.2-alpha.0" + resolved "https://registry.yarnpkg.com/siwe-recap/-/siwe-recap-0.0.2-alpha.0.tgz#75a0902c10a8ba5b4471f40e4eafb0afb2f8db59" + integrity sha512-xqFUnvrACWW/Q4s5HQ02avg8IyH2RcgkUzfvN4scYaaHErotLVtTGDZkSS0sn/oNK4MXRt83lTqredsvXgt8iA== + dependencies: + canonicalize "^2.0.0" + multiformats "^11.0.2" + siwe "^2.1.4" + +siwe@^2.0.5, siwe@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/siwe/-/siwe-2.2.0.tgz#dc025007acb210179396f5f099e618f9d941cfd2" integrity sha512-P8It3ztpGJM4pum3larVVXpR6KeP7G1wnul4EEmuT3LSPVcab+kkX9reoFcErHRPcBt+eVyrEJkAYD50vVRJ0A== @@ -11582,6 +13419,11 @@ space-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +sparse-array@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" + integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== + spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" @@ -11685,6 +13527,13 @@ stream-shift@^1.0.2: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== +stream-to-it@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -11796,6 +13645,11 @@ strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" +sturdy-websocket@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.2.1.tgz#20a58fd53372ef96eaa08f3c61c91a10b07c7c05" + integrity sha512-NnzSOEKyv4I83qbuKw9ROtJrrT6Z/Xt7I0HiP/e6H6GnpeTDvzwGIGeJ8slai+VwODSHQDooW2CAilJwT9SpRg== + style-value-types@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.0.0.tgz#76c35f0e579843d523187989da866729411fc8ad" @@ -11866,6 +13720,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +symbol-observable@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" + integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== + symbol-observable@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" @@ -12017,6 +13876,13 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +timeout-abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" + integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== + dependencies: + retimer "^3.0.0" + tiny-secp256k1@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" @@ -12129,6 +13995,11 @@ tslib@1.14.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tslib@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" @@ -12139,6 +14010,11 @@ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + tsup@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/tsup/-/tsup-8.0.2.tgz#c63192a08386515103e2c44ac5a23bdff75c5fa1" @@ -12184,6 +14060,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tweetnacl-util@^0.13.3: + version "0.13.5" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.13.5.tgz#e39cd5d99709ee7125a18b03895b45a1299e475f" + integrity sha512-/4Q3hpPFAnbBjNLLOmdTdyvInBfZcQBTWy+LWbypmWxAKwOpSQOyyv4ZZts4CoiYtS8Skyix5CkOWytf7XNK9A== + tweetnacl-util@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" @@ -12227,12 +14108,24 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typeforce@^1.11.5: +typeforce@^1.11.3, typeforce@^1.11.5: version "1.18.0" resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== @@ -12258,7 +14151,7 @@ typeorm@^0.3.19: uuid "^9.0.0" yargs "^17.6.2" -"typescript@>=3 < 6", typescript@^5.3.3: +"typescript@>=3 < 6", typescript@^5.1, typescript@^5.3.3: version "5.4.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== @@ -12280,6 +14173,13 @@ uid-safe@~2.1.5: dependencies: random-bytes "~1.0.0" +uint8arraylist@^2.3.3: + version "2.4.8" + resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" + integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== + dependencies: + uint8arrays "^5.0.1" + uint8arrays@^3.0.0, uint8arrays@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" @@ -12287,6 +14187,20 @@ uint8arrays@^3.0.0, uint8arrays@^3.1.0: dependencies: multiformats "^9.4.2" +uint8arrays@^4.0.2, uint8arrays@^4.0.3: + version "4.0.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" + integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== + dependencies: + multiformats "^12.0.1" + +uint8arrays@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.0.3.tgz#92b894d9c4269ba97c51544d6e1f279fe6f80d1f" + integrity sha512-6LBuKji28kHjgPJMkQ6GDaBb1lRwIhyOYq6pDGwYMoDPfImE9SkuYENVmR0yu9yGgs2clHUSY9fKDukR+AXfqQ== + dependencies: + multiformats "^13.0.0" + uncrypto@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" @@ -12432,6 +14346,13 @@ usehooks-ts@^2.15.1: dependencies: lodash.debounce "^4.0.8" +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + utf-8-validate@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-6.0.3.tgz#7d8c936d854e86b24d1d655f138ee27d2636d777" @@ -12502,6 +14423,14 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" +valtio@1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.0.tgz#c029dcd17a0f99d2fbec933721fe64cfd32a31ed" + integrity sha512-65Yd0yU5qs86b5lN1eu/nzcTgQ9/6YnD6iO+DDaDbQLn1Zv2w12Gwk43WkPlUBxk5wL/6cD5YMFf7kj6HZ1Kpg== + dependencies: + proxy-compare "2.5.1" + use-sync-external-store "1.2.0" + valtio@1.11.2: version "1.11.2" resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" @@ -12520,11 +14449,51 @@ value-or-promise@^1.0.12: resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +varuint-bitcoin@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +viem@2.8.6: + version "2.8.6" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.8.6.tgz#7467a0f113b4b13dd53fde4797aec1e686672f03" + integrity sha512-LqxLOSFtXfbC3tsiZ8Km8jKR4ktTOLfigL2dR9IN28He2+QrNhYvvwGPz3P4hbfU12Wvuxo6mWGZ2L1lpNtvrA== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "1.0.0" + isows "1.0.3" + ws "8.13.0" + +viem@2.x, viem@^2.7.11: + version "2.9.16" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.16.tgz#2127871db1908a70798eddb820024b5f0ddc9152" + integrity sha512-FQRfN4G7uKEUs5DYvVrH/kZmTkwcSDpTBxnadpwG1EEP8nHm57WDpSaGN7PwSPVgJ6rMo5MENT5hgnqaNTlb2w== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "1.0.0" + isows "1.0.3" + ws "8.13.0" + viem@^1.0.0, viem@^1.1.4: version "1.21.4" resolved "https://registry.yarnpkg.com/viem/-/viem-1.21.4.tgz#883760e9222540a5a7e0339809202b45fe6a842d" @@ -12539,20 +14508,6 @@ viem@^1.0.0, viem@^1.1.4: isows "1.0.3" ws "8.13.0" -viem@^2.7.11: - version "2.9.16" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.16.tgz#2127871db1908a70798eddb820024b5f0ddc9152" - integrity sha512-FQRfN4G7uKEUs5DYvVrH/kZmTkwcSDpTBxnadpwG1EEP8nHm57WDpSaGN7PwSPVgJ6rMo5MENT5hgnqaNTlb2w== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "1.0.0" - isows "1.0.3" - ws "8.13.0" - vite@^5.2.0: version "5.2.8" resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.8.tgz#a99e09939f1a502992381395ce93efa40a2844aa" @@ -12597,6 +14552,11 @@ web-vitals@^2.1.4: resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== +web-vitals@^3.0.4: + version "3.5.2" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-3.5.2.tgz#5bb58461bbc173c3f00c2ddff8bfe6e680999ca9" + integrity sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg== + webextension-polyfill-ts@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/webextension-polyfill-ts/-/webextension-polyfill-ts-0.25.0.tgz#fff041626365dbd0e29c40b197e989a55ec221ca" @@ -12624,6 +14584,18 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +websocket@^1.0.34: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + whatwg-mimetype@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" @@ -12808,7 +14780,12 @@ ws@8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -ws@^7.5.1: +ws@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +ws@^7, ws@^7.5.1: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== @@ -12831,6 +14808,14 @@ xss@^1.0.8: commander "^2.20.3" cssfilter "0.0.10" +xstream@^11.14.0: + version "11.14.0" + resolved "https://registry.yarnpkg.com/xstream/-/xstream-11.14.0.tgz#2c071d26b18310523b6877e86b4e54df068a9ae5" + integrity sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw== + dependencies: + globalthis "^1.0.1" + symbol-observable "^2.0.3" + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -12846,6 +14831,11 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -12944,7 +14934,7 @@ zen-observable@0.8.15: resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== -zod@3.22.4: +zod@3.22.4, zod@^3.22.4: version "3.22.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== @@ -12955,3 +14945,10 @@ zustand@4.4.1: integrity sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw== dependencies: use-sync-external-store "1.2.0" + +zustand@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848" + integrity sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g== + dependencies: + use-sync-external-store "1.2.0" From bc210fdb0f8638f5648fada8314d7e318fe8cf03 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Sun, 21 Apr 2024 21:47:11 -0500 Subject: [PATCH 157/251] Revert "Signup with sdk" until we get everything working (will submit pr) This reverts commit bace4a6ce6180c1b79a62d8dc6eb6ece0adb9754. --- packages/backend/package.json | 2 - packages/backend/src/index.ts | 9 +- packages/backend/src/routes/auth.ts | 8 +- packages/backend/src/server.ts | 51 +- packages/backend/src/utils.ts | 18 +- packages/frontend/.env.example | 2 - packages/frontend/package.json | 15 +- packages/frontend/public/dot-border-line.svg | 3 - packages/frontend/reload-dev.sh | 9 - packages/frontend/src/App.tsx | 34 +- .../frontend/src/components/CloudyFlow.tsx | 218 -- .../shared/CustomIcon/AppleIcon.tsx | 29 - .../CustomIcon/ArrowRightCircleFilledIcon.tsx | 2 +- .../shared/CustomIcon/GoogleIcon.tsx | 38 - .../components/shared/CustomIcon/KeyIcon.tsx | 80 - .../components/shared/DotBorder/DotBorder.tsx | 19 - .../src/components/shared/DotBorder/index.ts | 1 - .../InlineNotification/InlineNotification.tsx | 3 +- .../src/components/shared/Sidebar/Sidebar.tsx | 7 +- .../src/context/Web3ModalProvider.tsx | 127 + .../frontend/src/context/Web3Provider.tsx | 36 - packages/frontend/src/index.css | 2 - packages/frontend/src/index.tsx | 5 +- packages/frontend/src/layouts/global.css | 6 - packages/frontend/src/pages/AuthPage.tsx | 28 - packages/frontend/src/pages/Login.tsx | 18 + packages/frontend/src/pages/Snow.css | 25 + packages/frontend/src/pages/SnowballLogin.tsx | 17 + .../frontend/src/pages/auth/CreatePasskey.tsx | 83 - packages/frontend/src/pages/auth/Done.tsx | 41 - packages/frontend/src/pages/auth/Login.tsx | 194 -- packages/frontend/src/pages/auth/SignUp.tsx | 187 -- .../frontend/src/pages/auth/SnowballAuth.tsx | 52 - packages/frontend/src/utils/siwe.ts | 37 - packages/frontend/src/utils/snowball.ts | 19 + packages/frontend/src/utils/use-snowball.ts | 32 +- packages/frontend/tailwind.config.js | 12 +- yarn.lock | 2099 +---------------- 38 files changed, 328 insertions(+), 3240 deletions(-) delete mode 100644 packages/frontend/public/dot-border-line.svg delete mode 100755 packages/frontend/reload-dev.sh delete mode 100644 packages/frontend/src/components/CloudyFlow.tsx delete mode 100644 packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx delete mode 100644 packages/frontend/src/components/shared/CustomIcon/GoogleIcon.tsx delete mode 100644 packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx delete mode 100644 packages/frontend/src/components/shared/DotBorder/DotBorder.tsx delete mode 100644 packages/frontend/src/components/shared/DotBorder/index.ts create mode 100644 packages/frontend/src/context/Web3ModalProvider.tsx delete mode 100644 packages/frontend/src/context/Web3Provider.tsx delete mode 100644 packages/frontend/src/layouts/global.css delete mode 100644 packages/frontend/src/pages/AuthPage.tsx create mode 100644 packages/frontend/src/pages/Login.tsx create mode 100644 packages/frontend/src/pages/Snow.css create mode 100644 packages/frontend/src/pages/SnowballLogin.tsx delete mode 100644 packages/frontend/src/pages/auth/CreatePasskey.tsx delete mode 100644 packages/frontend/src/pages/auth/Done.tsx delete mode 100644 packages/frontend/src/pages/auth/Login.tsx delete mode 100644 packages/frontend/src/pages/auth/SignUp.tsx delete mode 100644 packages/frontend/src/pages/auth/SnowballAuth.tsx delete mode 100644 packages/frontend/src/utils/siwe.ts create mode 100644 packages/frontend/src/utils/snowball.ts diff --git a/packages/backend/package.json b/packages/backend/package.json index 9aace9c7..be7f3372 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -13,7 +13,6 @@ "@types/semver": "^7.5.8", "apollo-server-core": "^3.13.0", "apollo-server-express": "^3.13.0", - "cookie-session": "^2.1.0", "cors": "^2.8.5", "debug": "^4.3.1", "express": "^4.18.2", @@ -46,7 +45,6 @@ "test:db:delete": "DEBUG=snowball:* ts-node ./test/delete-db.ts" }, "devDependencies": { - "@types/cookie-session": "^2.0.49", "@types/express-session": "^1.17.10", "@types/fs-extra": "^11.0.4", "better-sqlite3": "^9.2.2", diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index c74cb6e7..30785d2f 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -9,6 +9,8 @@ import { Database } from './database'; import { createAndStartServer } from './server'; import { createResolvers } from './resolvers'; import { getConfig } from './utils'; +import { Config } from './config'; +import { DEFAULT_CONFIG_FILE_PATH } from './constants'; import { Service } from './service'; import { Registry } from './registry'; @@ -16,12 +18,13 @@ const log = debug('snowball:server'); const OAUTH_CLIENT_TYPE = 'oauth-app'; export const main = async (): Promise => { - const { server, database, gitHub, registryConfig, misc } = await getConfig(); + // TODO: get config path using cli + const { server, database, gitHub, registryConfig, misc } = await getConfig(DEFAULT_CONFIG_FILE_PATH); const app = new OAuthApp({ clientType: OAUTH_CLIENT_TYPE, clientId: gitHub.oAuth.clientId, - clientSecret: gitHub.oAuth.clientSecret, + clientSecret: gitHub.oAuth.clientSecret }); const db = new Database(database, misc); @@ -32,7 +35,7 @@ export const main = async (): Promise => { { gitHubConfig: gitHub, registryConfig }, db, app, - registry, + registry ); const typeDefs = fs diff --git a/packages/backend/src/routes/auth.ts b/packages/backend/src/routes/auth.ts index 4d2da019..ab326f18 100644 --- a/packages/backend/src/routes/auth.ts +++ b/packages/backend/src/routes/auth.ts @@ -1,12 +1,16 @@ import { Router } from 'express'; -import { SiweMessage } from 'siwe'; +import { SiweMessage, generateNonce } from 'siwe'; const router = Router(); +router.get('/nonce', async (_, res) => { + res.send(generateNonce()); +}); + router.post('/validate', async (req, res) => { const { message, signature } = req.body; const { success, data } = await new SiweMessage(message).verify({ - signature, + signature }); if (success) { diff --git a/packages/backend/src/server.ts b/packages/backend/src/server.ts index f89aa979..7a4df019 100644 --- a/packages/backend/src/server.ts +++ b/packages/backend/src/server.ts @@ -6,9 +6,9 @@ import { createServer } from 'http'; import { ApolloServerPluginDrainHttpServer, ApolloServerPluginLandingPageLocalDefault, - AuthenticationError, + AuthenticationError } from 'apollo-server-core'; -import cookieSession from 'cookie-session'; +import session from 'express-session'; import { TypeSource } from '@graphql-tools/utils'; import { makeExecutableSchema } from '@graphql-tools/schema'; @@ -32,7 +32,7 @@ export const createAndStartServer = async ( serverConfig: ServerConfig, typeDefs: TypeSource, resolvers: any, - service: Service, + service: Service ): Promise => { const { host, port, gqlPath = DEFAULT_GQL_PATH } = serverConfig; const { appOriginUrl, secret, domain, trustProxy } = serverConfig.session; @@ -45,7 +45,7 @@ export const createAndStartServer = async ( // Create the schema const schema = makeExecutableSchema({ typeDefs, - resolvers, + resolvers }); const server = new ApolloServer({ @@ -68,18 +68,32 @@ export const createAndStartServer = async ( plugins: [ // Proper shutdown for the HTTP server ApolloServerPluginDrainHttpServer({ httpServer }), - ApolloServerPluginLandingPageLocalDefault({ embed: true }), - ], + ApolloServerPluginLandingPageLocalDefault({ embed: true }) + ] }); await server.start(); - app.use( - cors({ - origin: appOriginUrl, - credentials: true, - }), - ); + app.use(cors({ + origin: appOriginUrl, + credentials: true + })); + + const sessionOptions: session.SessionOptions = { + secret: secret, + resave: false, + saveUninitialized: true, + cookie: { + secure: new URL(appOriginUrl).protocol === 'https:', + // TODO: Set cookie maxAge and handle cookie expiry in frontend + // maxAge: SESSION_COOKIE_MAX_AGE, + sameSite: new URL(appOriginUrl).protocol === 'https:' ? 'none' : 'lax' + } + }; + + if (domain) { + sessionOptions.cookie!.domain = domain; + } if (trustProxy) { // trust first proxy @@ -87,14 +101,7 @@ export const createAndStartServer = async ( } app.use( - cookieSession({ - secret: secret, - secure: new URL(appOriginUrl).protocol === 'https:', - // 23 hours (less than 24 hours to avoid sessionSigs expiration issues) - maxAge: 23 * 60 * 60 * 1000, - sameSite: new URL(appOriginUrl).protocol === 'https:' ? 'none' : 'lax', - domain: domain || undefined, - }), + session(sessionOptions) ); server.applyMiddleware({ @@ -102,8 +109,8 @@ export const createAndStartServer = async ( path: gqlPath, cors: { origin: [appOriginUrl], - credentials: true, - }, + credentials: true + } }); app.use(express.json()); diff --git a/packages/backend/src/utils.ts b/packages/backend/src/utils.ts index eafc698b..8d2a8e8b 100644 --- a/packages/backend/src/utils.ts +++ b/packages/backend/src/utils.ts @@ -3,18 +3,11 @@ import path from 'path'; import toml from 'toml'; import debug from 'debug'; import { DataSource, DeepPartial, EntityTarget, ObjectLiteral } from 'typeorm'; -import { Config } from './config'; -import { DEFAULT_CONFIG_FILE_PATH } from './constants'; const log = debug('snowball:utils'); -export async function getConfig() { - // TODO: get config path using cli - return await _getConfig(DEFAULT_CONFIG_FILE_PATH); -} - -const _getConfig = async ( - configFile: string, +export const getConfig = async ( + configFile: string ): Promise => { const configFilePath = path.resolve(configFile); const fileExists = await fs.pathExists(configFilePath); @@ -48,7 +41,7 @@ export const loadAndSaveData = async ( entityType: EntityTarget, dataSource: DataSource, entities: any, - relations?: any | undefined, + relations?: any | undefined ): Promise => { const entityRepository = dataSource.getRepository(entityType); @@ -63,7 +56,7 @@ export const loadAndSaveData = async ( entity = { ...entity, - [field]: relations[field][entityData[valueIndex]], + [field]: relations[field][entityData[valueIndex]] }; } } @@ -74,5 +67,4 @@ export const loadAndSaveData = async ( return savedEntity; }; -export const sleep = async (ms: number): Promise => - new Promise((resolve) => setTimeout(resolve, ms)); +export const sleep = async (ms: number): Promise => new Promise(resolve => setTimeout(resolve, ms)); diff --git a/packages/frontend/.env.example b/packages/frontend/.env.example index e733834a..c1424c02 100644 --- a/packages/frontend/.env.example +++ b/packages/frontend/.env.example @@ -8,6 +8,4 @@ VITE_WALLET_CONNECT_ID= VITE_LIT_RELAY_API_KEY= -VITE_ALCHEMY_API_KEY= - LOCAL_SNOWBALL_SDK_DIR= diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 84bca501..65eb6fec 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -21,18 +21,15 @@ "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-toast": "^1.1.5", "@radix-ui/react-tooltip": "^1.0.7", - "@snowballtools/auth": "0.1.0", - "@snowballtools/auth-lit": "0.1.0", - "@snowballtools/js-sdk": "0.1.0", - "@snowballtools/link-lit-alchemy-light": "0.1.0", "@snowballtools/material-tailwind-react-fork": "^2.1.10", - "@snowballtools/smartwallet-alchemy-light": "0.1.0", - "@snowballtools/types": "0.1.0", - "@snowballtools/utils": "0.1.0", "@tanstack/react-query": "^5.22.2", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "@types/jest": "^27.5.2", + "@types/node": "^16.18.68", + "@types/react": "^18.2.77", + "@types/react-dom": "^18.2.17", "@walletconnect/ethereum-provider": "^2.12.2", "@web3modal/siwe": "^4.0.5", "@web3modal/wagmi": "^4.0.5", @@ -60,18 +57,14 @@ "siwe": "^2.1.4", "tailwind-variants": "^0.2.0", "usehooks-ts": "^2.15.1", - "uuid": "^9.0.1", "viem": "^2.7.11", "wagmi": "^2.5.7", "web-vitals": "^2.1.4" }, "devDependencies": { - "@types/jest": "^27.5.2", "@types/luxon": "^3.3.7", - "@types/node": "^16.18.68", "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", - "@types/uuid": "^9.0.8", "@vitejs/plugin-react": "^4.2.1", "autoprefixer": "^10.4.19", "postcss": "^8.4.38", diff --git a/packages/frontend/public/dot-border-line.svg b/packages/frontend/public/dot-border-line.svg deleted file mode 100644 index a028e284..00000000 --- a/packages/frontend/public/dot-border-line.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/frontend/reload-dev.sh b/packages/frontend/reload-dev.sh deleted file mode 100755 index 95bfa440..00000000 --- a/packages/frontend/reload-dev.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -(cd /Users/rabbit-m2/p/snowball/snowball-ts-sdk && NO_CLEAN=1 turbo build) - -(cd ../.. && ./scripts/yarn-file-for-local-dev.sh) - -rm -rf node_modules/.vite - -yarn dev diff --git a/packages/frontend/src/App.tsx b/packages/frontend/src/App.tsx index 50533798..ed427bcb 100644 --- a/packages/frontend/src/App.tsx +++ b/packages/frontend/src/App.tsx @@ -8,10 +8,8 @@ import { } from './pages/org-slug/projects/routes'; import ProjectSearchLayout from './layouts/ProjectSearch'; import Index from './pages'; -import AuthPage from './pages/AuthPage'; +import Login from './pages/Login'; import { DashboardLayout } from './pages/org-slug/layout'; -import { useEffect } from 'react'; -import Web3Provider from 'context/Web3Provider'; const router = createBrowserRouter([ { @@ -47,38 +45,12 @@ const router = createBrowserRouter([ }, { path: '/login', - element: , - }, - { - path: '/signup', - element: , + element: , }, ]); function App() { - // Hacky way of checking session - // TODO: Handle redirect backs - useEffect(() => { - fetch(`${import.meta.env.VITE_SERVER_URL}/auth/session`, { - credentials: 'include', - }).then((res) => { - if (res.status !== 200) { - localStorage.clear(); - if ( - window.location.pathname !== '/login' && - window.location.pathname !== '/signup' - ) { - window.location.pathname = '/login'; - } - } - }); - }, []); - - return ( - - ; - - ); + return ; } export default App; diff --git a/packages/frontend/src/components/CloudyFlow.tsx b/packages/frontend/src/components/CloudyFlow.tsx deleted file mode 100644 index fb34990a..00000000 --- a/packages/frontend/src/components/CloudyFlow.tsx +++ /dev/null @@ -1,218 +0,0 @@ -import React from 'react'; -type Props = React.PropsWithChildren<{ - className?: string; - snowZIndex?: number; -}>; - -export const CloudyFlow = ({ className, children, snowZIndex }: Props) => { - return ( -
    - {children} -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - ); -}; diff --git a/packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx deleted file mode 100644 index edbcf430..00000000 --- a/packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { CustomIcon, CustomIconProps } from './CustomIcon'; - -export const AppleIcon: React.FC = (props) => { - return ( - - - - - - - - - - - ); -}; diff --git a/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx index 3782a9d2..842f2f3b 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx @@ -3,11 +3,11 @@ import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ArrowRightCircleFilledIcon = (props: CustomIconProps) => { return ( = (props) => { - return ( - - - - - - - ); -}; diff --git a/packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx deleted file mode 100644 index eceb71db..00000000 --- a/packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { CustomIcon, CustomIconProps } from './CustomIcon'; - -export const KeyIcon = (props: CustomIconProps) => { - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - ); -}; diff --git a/packages/frontend/src/components/shared/DotBorder/DotBorder.tsx b/packages/frontend/src/components/shared/DotBorder/DotBorder.tsx deleted file mode 100644 index cb8922cb..00000000 --- a/packages/frontend/src/components/shared/DotBorder/DotBorder.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { ComponentPropsWithoutRef } from 'react'; -import { cn } from 'utils/classnames'; - -export interface DotBorderProps extends ComponentPropsWithoutRef<'div'> {} - -export const DotBorder = ({ className, ...props }: DotBorderProps) => { - const imageSrc = '/dot-border-line.svg'; - - return ( -
    -
    -
    - ); -}; diff --git a/packages/frontend/src/components/shared/DotBorder/index.ts b/packages/frontend/src/components/shared/DotBorder/index.ts deleted file mode 100644 index fdef3775..00000000 --- a/packages/frontend/src/components/shared/DotBorder/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './DotBorder'; diff --git a/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx b/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx index f331d342..f24a4cfc 100644 --- a/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx +++ b/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx @@ -52,8 +52,7 @@ export const InlineNotification = ({ // Render custom icon or default icon const renderIcon = useCallback(() => { - if (!icon) - return ; + if (!icon) return ; return cloneIcon(icon, { className: iconClass() }); }, [icon]); diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index d7dc4aaa..63c47f8a 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -85,13 +85,8 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { )); }, [orgSlug]); - const handleLogOut = useCallback(async () => { - await fetch(`${import.meta.env.VITE_SERVER_URL}/auth/logout`, { - method: 'POST', - credentials: 'include', - }); + const handleLogOut = useCallback(() => { disconnect(); - localStorage.clear(); navigate('/login'); }, [disconnect, navigate]); diff --git a/packages/frontend/src/context/Web3ModalProvider.tsx b/packages/frontend/src/context/Web3ModalProvider.tsx new file mode 100644 index 00000000..51512ca0 --- /dev/null +++ b/packages/frontend/src/context/Web3ModalProvider.tsx @@ -0,0 +1,127 @@ +import { ReactNode } from 'react'; +import { SiweMessage } from 'siwe'; +import { WagmiProvider } from 'wagmi'; +import { arbitrum, mainnet } from 'wagmi/chains'; +import axios from 'axios'; + +import { createWeb3Modal } from '@web3modal/wagmi/react'; +import { defaultWagmiConfig } from '@web3modal/wagmi/react/config'; +import { createSIWEConfig } from '@web3modal/siwe'; +import type { + SIWECreateMessageArgs, + SIWEVerifyMessageArgs, +} from '@web3modal/siwe'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; + +const queryClient = new QueryClient(); + +const axiosInstance = axios.create({ + baseURL: import.meta.env.VITE_SERVER_URL, + headers: { + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + }, + withCredentials: true, +}); + +const metadata = { + name: 'Snowball Tools', + description: 'Snowball Tools Dashboard', + url: window.location.origin, + icons: [ + 'https://raw.githubusercontent.com/snowball-tools/mediakit/main/assets/logo.svg', + ], +}; + +const chains = [mainnet, arbitrum] as const; +const config = defaultWagmiConfig({ + chains, + projectId: import.meta.env.VITE_WALLET_CONNECT_ID, + metadata, +}); + +const siweConfig = createSIWEConfig({ + createMessage: ({ nonce, address, chainId }: SIWECreateMessageArgs) => + new SiweMessage({ + version: '1', + domain: window.location.host, + uri: window.location.origin, + address, + chainId, + nonce, + // Human-readable ASCII assertion that the user will sign, and it must not contain `\n`. + statement: 'Sign in With Ethereum.', + }).prepareMessage(), + getNonce: async () => { + const nonce = (await axiosInstance.get('/auth/nonce')).data; + if (!nonce) { + throw new Error('Failed to get nonce!'); + } + + return nonce; + }, + getSession: async () => { + try { + const session = (await axiosInstance.get('/auth/session')).data; + const { address, chainId } = session; + + return { address, chainId }; + } catch (err) { + if (window.location.pathname !== '/login') { + window.location.href = '/login'; + } + + throw new Error('Failed to get session!'); + } + }, + verifyMessage: async ({ message, signature }: SIWEVerifyMessageArgs) => { + try { + const { success } = ( + await axiosInstance.post('/auth/validate', { + message, + signature, + }) + ).data; + + return success; + } catch (error) { + return false; + } + }, + signOut: async () => { + try { + const { success } = (await axiosInstance.post('/auth/logout')).data; + return success; + } catch (error) { + return false; + } + }, + onSignOut: () => { + window.location.href = '/login'; + }, + onSignIn: () => { + window.location.href = '/'; + }, +}); + +if (!import.meta.env.VITE_WALLET_CONNECT_ID) { + throw new Error('Error: REACT_APP_WALLET_CONNECT_ID env config is not set'); +} + +createWeb3Modal({ + siweConfig, + wagmiConfig: config, + projectId: import.meta.env.VITE_WALLET_CONNECT_ID, +}); + +export default function Web3ModalProvider({ + children, +}: { + children: ReactNode; +}) { + return ( + + {children} + + ); +} diff --git a/packages/frontend/src/context/Web3Provider.tsx b/packages/frontend/src/context/Web3Provider.tsx deleted file mode 100644 index bfe7eed8..00000000 --- a/packages/frontend/src/context/Web3Provider.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { ReactNode } from 'react'; -import { WagmiProvider } from 'wagmi'; -import { arbitrum, mainnet } from 'wagmi/chains'; - -import { defaultWagmiConfig } from '@web3modal/wagmi/react/config'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; - -const queryClient = new QueryClient(); - -const metadata = { - name: 'Snowball Tools', - description: 'Snowball Tools Dashboard', - url: window.location.origin, - icons: [ - 'https://raw.githubusercontent.com/snowball-tools/mediakit/main/assets/logo.svg', - ], -}; - -const chains = [mainnet, arbitrum] as const; -const config = defaultWagmiConfig({ - chains, - projectId: import.meta.env.VITE_WALLET_CONNECT_ID, - metadata, -}); - -if (!import.meta.env.VITE_WALLET_CONNECT_ID) { - throw new Error('Error: REACT_APP_WALLET_CONNECT_ID env config is not set'); -} - -export default function Web3Provider({ children }: { children: ReactNode }) { - return ( - - {children} - - ); -} diff --git a/packages/frontend/src/index.css b/packages/frontend/src/index.css index d2bf535e..541fb61e 100644 --- a/packages/frontend/src/index.css +++ b/packages/frontend/src/index.css @@ -1,9 +1,7 @@ -@import 'layouts/global.css'; @tailwind base; @tailwind components; @tailwind utilities; - @layer base { @font-face { font-family: 'Inter Display'; diff --git a/packages/frontend/src/index.tsx b/packages/frontend/src/index.tsx index 43d476b5..8dcaa1ce 100644 --- a/packages/frontend/src/index.tsx +++ b/packages/frontend/src/index.tsx @@ -13,6 +13,7 @@ import reportWebVitals from './reportWebVitals'; import { GQLClientProvider } from './context/GQLClientContext'; import { SERVER_GQL_PATH } from './constants'; import { Toaster } from 'components/shared/Toast'; +import Web3ModalProvider from './context/Web3ModalProvider'; const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement, ); @@ -29,7 +30,9 @@ root.render( - + + + diff --git a/packages/frontend/src/layouts/global.css b/packages/frontend/src/layouts/global.css deleted file mode 100644 index 1075299b..00000000 --- a/packages/frontend/src/layouts/global.css +++ /dev/null @@ -1,6 +0,0 @@ -.flex-center { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} diff --git a/packages/frontend/src/pages/AuthPage.tsx b/packages/frontend/src/pages/AuthPage.tsx deleted file mode 100644 index 68bb3a4b..00000000 --- a/packages/frontend/src/pages/AuthPage.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { CloudyFlow } from 'components/CloudyFlow'; -import { SnowballAuth } from './auth/SnowballAuth'; - -const AuthPage = () => { - return ( - -
    -
    - snowball logo -
    - Snowball -
    -
    -
    -
    -
    - -
    -
    -
    - ); -}; - -export default AuthPage; diff --git a/packages/frontend/src/pages/Login.tsx b/packages/frontend/src/pages/Login.tsx new file mode 100644 index 00000000..69faf41b --- /dev/null +++ b/packages/frontend/src/pages/Login.tsx @@ -0,0 +1,18 @@ +import './Snow.css'; + +const Login = () => { + return ( +
    +
    + snowball logo + +
    +
    + ); +}; + +export default Login; diff --git a/packages/frontend/src/pages/Snow.css b/packages/frontend/src/pages/Snow.css new file mode 100644 index 00000000..8359e58d --- /dev/null +++ b/packages/frontend/src/pages/Snow.css @@ -0,0 +1,25 @@ +.snow { + width: 100%; + height: 100vh; + border: 1px solid rgba(255, 255, 255, 0.1); + background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' style='enable-background:new 0 0 50 50%3B' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.st1%7Bopacity:0.3%3Bfill:%23FFFFFF%3B%7D.st3%7Bopacity:0.1%3Bfill:%23FFFFFF%3B%7D%3C/style%3E%3Ccircle class='st1' cx='5' cy='8' r='1'/%3E%3Ccircle class='st1' cx='38' cy='3' r='1'/%3E%3Ccircle class='st1' cx='12' cy='4' r='1'/%3E%3Ccircle class='st1' cx='16' cy='16' r='1'/%3E%3Ccircle class='st1' cx='47' cy='46' r='1'/%3E%3Ccircle class='st1' cx='32' cy='10' r='1'/%3E%3Ccircle class='st1' cx='3' cy='46' r='1'/%3E%3Ccircle class='st1' cx='45' cy='13' r='1'/%3E%3Ccircle class='st1' cx='10' cy='28' r='1'/%3E%3Ccircle class='st1' cx='22' cy='35' r='1'/%3E%3Ccircle class='st1' cx='3' cy='21' r='1'/%3E%3Ccircle class='st1' cx='26' cy='20' r='1'/%3E%3Ccircle class='st1' cx='30' cy='45' r='1'/%3E%3Ccircle class='st1' cx='15' cy='45' r='1'/%3E%3Ccircle class='st1' cx='34' cy='36' r='1'/%3E%3Ccircle class='st1' cx='41' cy='32' r='1'/%3E%3C/svg%3E"); + background-position: 0px 0px; + animation: animatedBackground 230s linear infinite; +} + +.snow div { + width: 100%; + height: 100%; + background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' style='enable-background:new 0 0 50 50%3B' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.st1%7Bopacity:0.7%3Bfill:%23FFFFFF%3B%7D.st3%7Bopacity:0.1%3Bfill:%23FFFFFF%3B%7D%3C/style%3E%3Ccircle class='st3' cx='4' cy='14' r='1'/%3E%3Ccircle class='st3' cx='43' cy='3' r='1'/%3E%3Ccircle class='st3' cx='31' cy='30' r='2'/%3E%3Ccircle class='st3' cx='19' cy='23' r='1'/%3E%3Ccircle class='st3' cx='37' cy='22' r='1'/%3E%3Ccircle class='st3' cx='43' cy='16' r='1'/%3E%3Ccircle class='st3' cx='8' cy='45' r='1'/%3E%3Ccircle class='st3' cx='29' cy='39' r='1'/%3E%3Ccircle class='st3' cx='13' cy='37' r='1'/%3E%3Ccircle class='st3' cx='47' cy='32' r='1'/%3E%3Ccircle class='st3' cx='15' cy='4' r='2'/%3E%3Ccircle class='st3' cx='9' cy='27' r='1'/%3E%3Ccircle class='st3' cx='30' cy='9' r='1'/%3E%3Ccircle class='st3' cx='25' cy='15' r='1'/%3E%3Ccircle class='st3' cx='21' cy='45' r='2'/%3E%3Ccircle class='st3' cx='42' cy='45' r='1'/%3E%3C/svg%3E"); + background-position: 0px 0px; + animation: animatedBackground 260s linear infinite; +} + +@keyframes animatedBackground { + 0% { + background-position: 0 0; + } + 100% { + background-position: 0px 11600px; + } +} diff --git a/packages/frontend/src/pages/SnowballLogin.tsx b/packages/frontend/src/pages/SnowballLogin.tsx new file mode 100644 index 00000000..828f9fc4 --- /dev/null +++ b/packages/frontend/src/pages/SnowballLogin.tsx @@ -0,0 +1,17 @@ +// import { useSnowball } from 'utils/use-snowball'; + +// export const SnowballLogin = () => { +// const snowball = useSnowball(); +// console.log(snowball); +// return ( +//
    +//
    +// snowball logo +//
    +//
    +// ); +// }; diff --git a/packages/frontend/src/pages/auth/CreatePasskey.tsx b/packages/frontend/src/pages/auth/CreatePasskey.tsx deleted file mode 100644 index b976f973..00000000 --- a/packages/frontend/src/pages/auth/CreatePasskey.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { Button } from 'components/shared/Button'; -import { LoaderIcon } from 'components/shared/CustomIcon'; -import { KeyIcon } from 'components/shared/CustomIcon/KeyIcon'; -import { InlineNotification } from 'components/shared/InlineNotification'; -import { Input } from 'components/shared/Input'; -import { WavyBorder } from 'components/shared/WavyBorder'; -import { useState } from 'react'; -import { IconRight } from 'react-day-picker'; -import { useSnowball } from 'utils/use-snowball'; - -type Props = { - onDone: () => void; -}; - -export const CreatePasskey = ({}: Props) => { - const snowball = useSnowball(); - const [name, setName] = useState(''); - - const auth = snowball.auth.passkey; - const loading = !!auth.state.loading; - - async function createPasskey() { - await auth.register(name); - } - - return ( -
    -
    -
    - -
    -
    -
    - Create a passkey -
    -
    - Passkeys allow you to sign in securely without using passwords. -
    -
    -
    - -
    -
    -
    -
    -
    - Give it a name -
    -
    - { - setName(e.target.value); - }} - /> -
    - - {auth.state.error ? ( - - ) : ( - - )} -
    - -
    -
    - ); -}; diff --git a/packages/frontend/src/pages/auth/Done.tsx b/packages/frontend/src/pages/auth/Done.tsx deleted file mode 100644 index ab63b12f..00000000 --- a/packages/frontend/src/pages/auth/Done.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { Button } from 'components/shared/Button'; -import { - ArrowRightCircleFilledIcon, - CheckRoundFilledIcon, -} from 'components/shared/CustomIcon'; -import { WavyBorder } from 'components/shared/WavyBorder'; - -type Props = { - continueTo: string; -}; -export const Done = ({ continueTo }: Props) => { - return ( -
    -
    -
    - -
    -
    -
    - You're in! -
    -
    - It's time to get your next project rolling! -
    -
    -
    - -
    - -
    -
    - ); -}; diff --git a/packages/frontend/src/pages/auth/Login.tsx b/packages/frontend/src/pages/auth/Login.tsx deleted file mode 100644 index 8b95143d..00000000 --- a/packages/frontend/src/pages/auth/Login.tsx +++ /dev/null @@ -1,194 +0,0 @@ -import { Button } from 'components/shared/Button'; -import { - ArrowRightCircleFilledIcon, - GithubIcon, - LinkIcon, - LoaderIcon, - QuestionMarkRoundFilledIcon, -} from 'components/shared/CustomIcon'; -import { GoogleIcon } from 'components/shared/CustomIcon/GoogleIcon'; -import { DotBorder } from 'components/shared/DotBorder'; -import { WavyBorder } from 'components/shared/WavyBorder'; -import { useState } from 'react'; -import { CreatePasskey } from './CreatePasskey'; -import { AppleIcon } from 'components/shared/CustomIcon/AppleIcon'; -import { KeyIcon } from 'components/shared/CustomIcon/KeyIcon'; -import { useToast } from 'components/shared/Toast'; -import { Link } from 'react-router-dom'; - -type Provider = 'google' | 'github' | 'apple' | 'email' | 'passkey'; - -type Props = { - onDone: () => void; -}; - -export const Login = ({ onDone }: Props) => { - const [provider, setProvider] = useState(false); - - // const loading = snowball.auth.state.loading && provider; - const loading = provider; - const { toast } = useToast(); - - if (provider === 'email') { - return ; - } - - return ( -
    -
    -
    - Sign in to Snowball -
    -
    - - -
    -
    -
    - -
    -
    - Got a Passkey? -
    -
    - Use it to sign in securely without using a password. -
    -
    -
    -
    - - -
    - -
    -
    - Lost your passkey? -
    -
    - - -
    -
    -
    - -
    - -
    - OR -
    - -
    - -
    - - - - - -
    -
    -
    - Don't have an account? -
    -
    - - Sign up now - -
    -
    -
    -
    - ); -}; diff --git a/packages/frontend/src/pages/auth/SignUp.tsx b/packages/frontend/src/pages/auth/SignUp.tsx deleted file mode 100644 index a9ac9588..00000000 --- a/packages/frontend/src/pages/auth/SignUp.tsx +++ /dev/null @@ -1,187 +0,0 @@ -import { Button } from 'components/shared/Button'; -import { - ArrowRightCircleFilledIcon, - GithubIcon, - LoaderIcon, -} from 'components/shared/CustomIcon'; -import { GoogleIcon } from 'components/shared/CustomIcon/GoogleIcon'; -import { DotBorder } from 'components/shared/DotBorder'; -import { WavyBorder } from 'components/shared/WavyBorder'; -import { useEffect, useState } from 'react'; -import { useSnowball } from 'utils/use-snowball'; -import { CreatePasskey } from './CreatePasskey'; -import { Input } from 'components/shared/Input'; -import { AppleIcon } from 'components/shared/CustomIcon/AppleIcon'; -import { Link } from 'react-router-dom'; -import { useToast } from 'components/shared/Toast'; -import { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; -import { signInWithEthereum } from 'utils/siwe'; - -type Provider = 'google' | 'github' | 'apple' | 'email'; - -type Props = { - onDone: () => void; -}; - -export const SignUp = ({ onDone }: Props) => { - const [email, setEmail] = useState(''); - const [provider, setProvider] = useState(false); - - const { toast } = useToast(); - const snowball = useSnowball(); - - async function handleSignupRedirect() { - let wallet: PKPEthersWallet | undefined; - const google = snowball.auth.google; - if (google.canHandleOAuthRedirectBack()) { - setProvider('google'); - await google.handleOAuthRedirectBack(); - wallet = await google.getEthersWallet(); - await signInWithEthereum(wallet); - } - - if (wallet) { - onDone(); - } - } - - useEffect(() => { - handleSignupRedirect(); - }, []); - - const loading = provider; - const emailValid = /.@./.test(email); - - if (provider === 'email') { - return ; - } - - return ( -
    -
    -
    - Sign up to Snowball -
    -
    - -
    -
    - - - - - -
    - -
    - -
    - OR -
    - -
    - -
    -
    -
    - Email -
    - setEmail(e.target.value)} - disabled={!!loading} - /> -
    - - -
    -
    - Already an user? -
    -
    - - Sign in now - -
    -
    -
    -
    -
    - ); -}; diff --git a/packages/frontend/src/pages/auth/SnowballAuth.tsx b/packages/frontend/src/pages/auth/SnowballAuth.tsx deleted file mode 100644 index 69cb7987..00000000 --- a/packages/frontend/src/pages/auth/SnowballAuth.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { snowball } from 'utils/use-snowball'; -import { Login } from './Login'; -import { SignUp } from './SignUp'; -import { useEffect, useState } from 'react'; -import { Done } from './Done'; - -type Screen = 'login' | 'signup' | 'success'; - -const DASHBOARD_URL = '/'; - -export const SnowballAuth = () => { - const path = window.location.pathname; - const [screen, setScreen] = useState( - path === '/login' ? 'login' : 'signup', - ); - - useEffect(() => { - if (snowball.session) { - window.location.href = DASHBOARD_URL; - } - }, []); - - useEffect(() => { - if (path === '/login') { - setScreen('login'); - } else if (path === '/signup') { - setScreen('signup'); - } - }, [path]); - - if (screen === 'signup') { - return ( - { - setScreen('success'); - }} - /> - ); - } - if (screen === 'login') { - return ( - { - setScreen('success'); - }} - /> - ); - } - if (screen === 'success') { - return ; - } -}; diff --git a/packages/frontend/src/utils/siwe.ts b/packages/frontend/src/utils/siwe.ts deleted file mode 100644 index b66e436c..00000000 --- a/packages/frontend/src/utils/siwe.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { SiweMessage } from 'siwe'; -import { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; -import { v4 as uuid } from 'uuid'; - -const domain = window.location.host; -const origin = window.location.origin; - -export async function signInWithEthereum(wallet: PKPEthersWallet) { - const message = await createSiweMessage( - await wallet.getAddress(), - 'Sign in with Ethereum to the app.', - ); - const signature = await wallet.signMessage(message); - - const res = await fetch(`${import.meta.env.VITE_SERVER_URL}/auth/validate`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ message, signature }), - credentials: 'include', - }); - console.log(await res.text()); -} - -async function createSiweMessage(address: string, statement: string) { - const message = new SiweMessage({ - domain, - address, - statement, - uri: origin, - version: '1', - chainId: 1, - nonce: uuid().replace(/[^a-z0-9]/g, ''), - }); - return message.prepareMessage(); -} diff --git a/packages/frontend/src/utils/snowball.ts b/packages/frontend/src/utils/snowball.ts new file mode 100644 index 00000000..c17731f8 --- /dev/null +++ b/packages/frontend/src/utils/snowball.ts @@ -0,0 +1,19 @@ +// import { LitGoogleAuth } from '@snowballtools/auth-lit'; +// import { Snowball, SnowballChain } from '@snowballtools/js-sdk'; +// // import { LinkLitAlchemyLight } from '@snowballtools/link-lit-alchemy-light'; + +// export const DOMAIN = import.meta.env.VITE_DOMAIN || 'localhost'; +// export const ORIGIN = +// import.meta.env.VITE_VERCEL_ENV === 'production' +// ? `https://${DOMAIN}` +// : `http://${DOMAIN}:3000`; + +// // prettier-ignore + +// export const snowball = Snowball.withAuth( +// LitGoogleAuth.configure({ +// litReplayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, +// }), +// ).create({ +// initialChain: SnowballChain.sepolia, +// }); diff --git a/packages/frontend/src/utils/use-snowball.ts b/packages/frontend/src/utils/use-snowball.ts index 45e174b7..6657a3b2 100644 --- a/packages/frontend/src/utils/use-snowball.ts +++ b/packages/frontend/src/utils/use-snowball.ts @@ -1,25 +1,13 @@ -import { useEffect, useState } from 'react'; -import { Snowball, SnowballChain } from '@snowballtools/js-sdk'; -import { LitGoogleAuth, LitPasskeyAuth } from '@snowballtools/auth-lit'; +// import { useEffect, useState } from 'react'; +// import { snowball } from './snowball'; -export const snowball = Snowball.withAuth({ - google: LitGoogleAuth.configure({ - litRelayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, - }), - passkey: LitPasskeyAuth.configure({ - litRelayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, - }), -}).create({ - initialChain: SnowballChain.sepolia, -}); +// export function useSnowball() { +// const [state, setState] = useState(100); -export function useSnowball() { - const [state, setState] = useState(100); +// useEffect(() => { +// // Subscribe and directly return the unsubscribe function +// return snowball.subscribe(() => setState(state + 1)); +// }, [snowball]); - useEffect(() => { - // Subscribe and directly return the unsubscribe function - return snowball.subscribe(() => setState(state + 1)); - }, [state]); - - return snowball; -} +// return snowball; +// } diff --git a/packages/frontend/tailwind.config.js b/packages/frontend/tailwind.config.js index 15e99e8a..608f5b6b 100644 --- a/packages/frontend/tailwind.config.js +++ b/packages/frontend/tailwind.config.js @@ -1,5 +1,4 @@ import withMT from '@snowballtools/material-tailwind-react-fork/utils/withMT'; -import colors from 'tailwindcss/colors' /** @type {import('tailwindcss').Config} */ export default withMT({ @@ -10,11 +9,7 @@ export default withMT({ ], theme: { extend: { - screens: { - xxs: '400px', - xs: '480px', - }, - zIndex: { + zIndex: { tooltip: '52', }, letterSpacing: { @@ -30,8 +25,6 @@ export default withMT({ '3xs': '0.5rem', }, colors: { - sky: colors.sky, // TODO: WHy is this necessary? We're already using tailwind v3 - slate: colors.slate, // TODO: WHy is this necessary? We're already using tailwind v3 emerald: { 100: '#d1fae5', 200: '#a9f1d0', @@ -180,9 +173,6 @@ export default withMT({ zIndex: { toast: '9999', }, - animation: { - 'spin': 'spin 3s linear infinite', - } }, }, plugins: [], diff --git a/yarn.lock b/yarn.lock index baa23f4b..069d780c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,46 +12,6 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== -"@adraffy/ens-normalize@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" - integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== - -"@alchemy/aa-accounts@^3.6.1", "@alchemy/aa-accounts@^3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@alchemy/aa-accounts/-/aa-accounts-3.8.1.tgz#290e290b7047d8d29deb2b5959abaf839786f553" - integrity sha512-MoBbn+LTNBZIQTWlx0HIbXROJ9AcWhG0EOcbRMq0B+714/GogliJ5R/rUwQktxy+SfQa9K4Sh7q3kXFUgmFIdA== - dependencies: - "@alchemy/aa-core" "^3.8.1" - viem "2.8.6" - -"@alchemy/aa-alchemy@^3.6.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@alchemy/aa-alchemy/-/aa-alchemy-3.8.1.tgz#05b76657d871d98f426fe3eb365f5e0b349eed37" - integrity sha512-EmE3g7nN74v6+u8EUonHDJDDRbI6XsPpXYaSBNJsf9erjnw001z1+2GnUZdqa4NFJlJGdCboxX1sM5RJFO2IXA== - dependencies: - "@alchemy/aa-core" "^3.8.1" - "@turnkey/http" "^2.6.2" - "@turnkey/iframe-stamper" "^1.0.0" - "@turnkey/viem" "^0.4.8" - "@turnkey/webauthn-stamper" "^0.4.3" - eventemitter3 "^5.0.1" - viem "2.8.6" - zustand "^4.5.2" - optionalDependencies: - "@alchemy/aa-accounts" "^3.8.1" - alchemy-sdk "^3.0.0" - -"@alchemy/aa-core@^3.6.1", "@alchemy/aa-core@^3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@alchemy/aa-core/-/aa-core-3.8.1.tgz#5c961fbb0f342ed54a1af0329b81172144e52530" - integrity sha512-ilcIAG3OheJ3pm+0djZRcYXgNebZw8w/VBo0gcfu2B6V5cUnF0PPUYmj1ORR1ZxwQrP1Gnnl9TM3Bv+c4U25GQ== - dependencies: - abitype "^0.8.3" - eventemitter3 "^5.0.1" - viem "2.8.6" - zod "^3.22.4" - "@alloc/quick-lru@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" @@ -193,11 +153,6 @@ dependencies: xss "^1.0.8" -"@assemblyscript/loader@^0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" - integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" @@ -464,14 +419,6 @@ preact "^10.16.0" sha.js "^2.4.11" -"@confio/ics23@^0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d" - integrity sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w== - dependencies: - "@noble/hashes" "^1.0.0" - protobufjs "^6.8.8" - "@cosmjs/amino@0.28.13", "@cosmjs/amino@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.28.13.tgz#b51417a23c1ff8ef8b85a6862eba8492c6c44f38" @@ -482,16 +429,6 @@ "@cosmjs/math" "0.28.13" "@cosmjs/utils" "0.28.13" -"@cosmjs/amino@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.30.1.tgz#7c18c14627361ba6c88e3495700ceea1f76baace" - integrity sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w== - dependencies: - "@cosmjs/crypto" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - "@cosmjs/crypto@0.28.13", "@cosmjs/crypto@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.28.13.tgz#541b6a36f616b2da5a568ead46d4e83841ceb412" @@ -505,19 +442,6 @@ elliptic "^6.5.3" libsodium-wrappers "^0.7.6" -"@cosmjs/crypto@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.30.1.tgz#21e94d5ca8f8ded16eee1389d2639cb5c43c3eb5" - integrity sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ== - dependencies: - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - "@noble/hashes" "^1" - bn.js "^5.2.0" - elliptic "^6.5.4" - libsodium-wrappers "^0.7.6" - "@cosmjs/encoding@0.28.13", "@cosmjs/encoding@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.28.13.tgz#7994e8e2c435beaf0690296ffb0f7f3eaec8150b" @@ -527,23 +451,6 @@ bech32 "^1.1.4" readonly-date "^1.0.0" -"@cosmjs/encoding@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.30.1.tgz#b5c4e0ef7ceb1f2753688eb96400ed70f35c6058" - integrity sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ== - dependencies: - base64-js "^1.3.0" - bech32 "^1.1.4" - readonly-date "^1.0.0" - -"@cosmjs/json-rpc@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz#16f21305fc167598c8a23a45549b85106b2372bc" - integrity sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ== - dependencies: - "@cosmjs/stream" "^0.30.1" - xstream "^11.14.0" - "@cosmjs/math@0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.28.13.tgz#50c05bc67007a04216f7f5e0c93f57270f8cc077" @@ -551,13 +458,6 @@ dependencies: bn.js "^5.2.0" -"@cosmjs/math@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.30.1.tgz#8b816ef4de5d3afa66cb9fdfb5df2357a7845b8a" - integrity sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q== - dependencies: - bn.js "^5.2.0" - "@cosmjs/proto-signing@^0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.28.13.tgz#95ac12f0da0f0814f348f5ae996c3e96d015df61" @@ -571,80 +471,11 @@ cosmjs-types "^0.4.0" long "^4.0.0" -"@cosmjs/proto-signing@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz#f0dda372488df9cd2677150b89b3e9c72b3cb713" - integrity sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ== - dependencies: - "@cosmjs/amino" "^0.30.1" - "@cosmjs/crypto" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - cosmjs-types "^0.7.1" - long "^4.0.0" - -"@cosmjs/socket@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.30.1.tgz#00b22f4b5e2ab01f4d82ccdb7b2e59536bfe5ce0" - integrity sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow== - dependencies: - "@cosmjs/stream" "^0.30.1" - isomorphic-ws "^4.0.1" - ws "^7" - xstream "^11.14.0" - -"@cosmjs/stargate@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.30.1.tgz#e1b22e1226cffc6e93914a410755f1f61057ba04" - integrity sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog== - dependencies: - "@confio/ics23" "^0.6.8" - "@cosmjs/amino" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stream" "^0.30.1" - "@cosmjs/tendermint-rpc" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - cosmjs-types "^0.7.1" - long "^4.0.0" - protobufjs "~6.11.3" - xstream "^11.14.0" - -"@cosmjs/stream@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.30.1.tgz#ba038a2aaf41343696b1e6e759d8e03a9516ec1a" - integrity sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ== - dependencies: - xstream "^11.14.0" - -"@cosmjs/tendermint-rpc@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz#c16378892ba1ac63f72803fdf7567eab9d4f0aa0" - integrity sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ== - dependencies: - "@cosmjs/crypto" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/json-rpc" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/socket" "^0.30.1" - "@cosmjs/stream" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - axios "^0.21.2" - readonly-date "^1.0.0" - xstream "^11.14.0" - "@cosmjs/utils@0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.28.13.tgz#2fd2844ec832d7833811e2ae1691305d09791a08" integrity sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg== -"@cosmjs/utils@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.30.1.tgz#6d92582341be3c2ec8d82090253cfa4b7f959edb" - integrity sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g== - "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -1036,7 +867,7 @@ "@ethereumjs/util" "^8.1.0" ethereum-cryptography "^2.0.0" -"@ethereumjs/util@^8.0.0", "@ethereumjs/util@^8.1.0": +"@ethereumjs/util@^8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== @@ -1133,7 +964,7 @@ dependencies: "@ethersproject/bignumber" "^5.7.0" -"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0": +"@ethersproject/contracts@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== @@ -1236,7 +1067,7 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.0": +"@ethersproject/providers@5.7.2": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== @@ -1335,7 +1166,7 @@ "@ethersproject/rlp" "^5.7.0" "@ethersproject/signing-key" "^5.7.0" -"@ethersproject/units@5.7.0", "@ethersproject/units@^5.7.0": +"@ethersproject/units@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== @@ -1344,7 +1175,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.7.0": +"@ethersproject/wallet@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== @@ -1590,15 +1421,7 @@ resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== -"@ipld/dag-cbor@^6.0.3": - version "6.0.15" - resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-6.0.15.tgz#aebe7a26c391cae98c32faedb681b1519e3d2372" - integrity sha512-Vm3VTSTwlmGV92a3C5aeY+r2A18zbH2amehNhsX8PBa3muXICaWrN8Uri85A5hLH7D7ElhE8PdjxD6kNqUmTZA== - dependencies: - cborg "^1.5.4" - multiformats "^9.5.4" - -"@ipld/dag-cbor@^7.0.0", "@ipld/dag-cbor@^7.0.1": +"@ipld/dag-cbor@^7.0.1": version "7.0.3" resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== @@ -1606,7 +1429,7 @@ cborg "^1.6.0" multiformats "^9.5.4" -"@ipld/dag-json@^8.0.1", "@ipld/dag-json@^8.0.9": +"@ipld/dag-json@^8.0.9": version "8.0.11" resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-8.0.11.tgz#8d30cc2dfacb0aef04d327465d3df91e79e8b6ce" integrity sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA== @@ -1614,20 +1437,6 @@ cborg "^1.5.4" multiformats "^9.5.4" -"@ipld/dag-pb@^2.1.3": - version "2.1.18" - resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-2.1.18.tgz#12d63e21580e87c75fd1a2c62e375a78e355c16f" - integrity sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg== - dependencies: - multiformats "^9.5.4" - -"@ipld/dag-pb@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.1.0.tgz#4ebec92eeb9e8f317b8ef971221c6dac7b12b302" - integrity sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg== - dependencies: - multiformats "^13.1.0" - "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1786,523 +1595,6 @@ resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz#353ce4a76c83fadec272ea5674ede767650762fd" integrity sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g== -"@lit-protocol/access-control-conditions@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/access-control-conditions/-/access-control-conditions-3.0.32.tgz#e21c4e55327adcd2c7537ae30e733c0db30b5e33" - integrity sha512-m8xKM7Nh8WkXq7dWsJsjUEkMnbEo/iPDAX3kvZkPRoeo3RZ9abOBedfMsBIjx9R4hj/poyfC7TSGhstvoesGGQ== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/auth-browser@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/auth-browser/-/auth-browser-3.0.32.tgz#8c03645394fab27afd9fbe93a3adab70bed43a50" - integrity sha512-aY2BYZJJZQLZczM/WRcUbB5J54SXh4wn+P2+L9VpQTlKkshjgNLLeYOv705Y0uVaK1r9b2wTVjaMzZJPMZ4qXw== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - "@walletconnect/ethereum-provider" "2.9.2" - "@walletconnect/modal" "2.6.1" - ethers "^5.7.1" - jszip "^3.10.1" - lit-siwe "^1.1.8" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.13.3" - uint8arrays "^4.0.3" - util "^0.12.4" - web-vitals "^3.0.4" - -"@lit-protocol/auth-helpers@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/auth-helpers/-/auth-helpers-3.0.32.tgz#1879796afee55e8c23950c9a10f2ca8bed5e1a89" - integrity sha512-QSnApvcDMkxSpRy6P46RSeCJcOJ05JC8WW++VeFkQbzRKcYU8lfkF39Xi6/I1h9sv2LFHrfbT7fY7ijPF7IjWA== - dependencies: - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - -"@lit-protocol/bls-sdk@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/bls-sdk/-/bls-sdk-3.0.32.tgz#53fee54b2d17363b92cc5f901a473c07f35ad58e" - integrity sha512-8wDcmMmeFA6YuxGn4wNCTrkTPyEBJ8qSXsXJCMHkuglwVgrI2rOK26PK/k++0mf1+i4C2TzKeF9V8GJagb/o3w== - dependencies: - pako "^2.1.0" - tslib "^2.3.0" - -"@lit-protocol/constants@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/constants/-/constants-3.0.32.tgz#c41bd2bc0b583bed747fcf518a9c712fde7174a3" - integrity sha512-hSna3+qRGuS9Hg6VrUnBUrLH+PZQINBQAEIwq2xQzWR234H1za1g9PNMibgjCfwcV2j9f6tiJgYoPAp4n0O21w== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/types" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - -"@lit-protocol/contracts-sdk@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/contracts-sdk/-/contracts-sdk-3.0.32.tgz#3254b128feb67e75f61ff180f66131ba12e47511" - integrity sha512-uqmTXQeele9HOWvu7ozQb7RvFjJxpDiQJOtqie17AR5O3J9DR6uASsr80uDP5zdlPnoouXnk22KNmsBsgvNo8g== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/types" "3.0.32" - bitcoinjs-lib "^6.1.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - jose "^4.14.4" - jszip "^3.10.1" - multiformats "^9.7.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/core@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/core/-/core-3.0.32.tgz#55a5834fa8c3dd3c5c03d3468146989d90c2edd2" - integrity sha512-YrtOJhTr7amaPE2CX5n7zgrKTF0opjS432YKQ8gyAwXUmlEyoNOBiGIa+HFLPgmw/AntQYV89zomjzx3hVgM7g== - dependencies: - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - bitcoinjs-lib "^6.1.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - jose "^4.14.4" - jszip "^3.10.1" - multiformats "^10.0.2" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/crypto@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/crypto/-/crypto-3.0.32.tgz#5febca628798fd49a002d5e4a43c8acb8f9e127d" - integrity sha512-Me7I2VVMg+dL0Q0x2Cqw6KTnYotRqGGNBuS/pay2kooI4UkheCz6ZnTt9eCtN7JF2pBIe0o/IFAzh1SFzSEZBQ== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/ecdsa-sdk@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/ecdsa-sdk/-/ecdsa-sdk-3.0.32.tgz#9ebac8ecfc275a6f2149fd56b1e13b3e8ed3bb7e" - integrity sha512-zuyE8ui+rIpM0MyoY5cPq9I+wQfxEouaRmbDplybaJc12UKWmnLDQCSQ4mPnZTs8FC5785Qfxj5VAe5CLQ+yEw== - dependencies: - pako "^2.1.0" - tslib "^2.3.0" - -"@lit-protocol/encryption@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/encryption/-/encryption-3.0.32.tgz#b167df877bd8e0778104c1767998a4c8491fa731" - integrity sha512-YMx3MQotn0cr26LcVNTLIPdl5xENP97TcsPsoXCaH7ArIOKXvmhqH3PbxfhyU9i/TTzCshDE18b0P9Od6oAwDQ== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - jszip "^3.10.1" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/lit-auth-client@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-auth-client/-/lit-auth-client-3.0.32.tgz#223a498c4b109558583f4ffa1dadf418a3fbd89a" - integrity sha512-McEMljGVEHsiMSI2hzqjrv3B4vX4VSEcTPwMKzKC1k6w43Hi/0GsU1Q0RGtaqIkNyvs/m+BeMR43lOKWn9LDAg== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-browser" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/core" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/encryption" "3.0.32" - "@lit-protocol/lit-node-client" "3.0.32" - "@lit-protocol/lit-node-client-nodejs" "3.0.32" - "@lit-protocol/lit-third-party-libs" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - "@simplewebauthn/browser" "^7.2.0" - "@simplewebauthn/typescript-types" "^7.0.0" - "@walletconnect/ethereum-provider" "2.9.2" - "@walletconnect/modal" "2.6.1" - base64url "^3.0.1" - bitcoinjs-lib "^6.1.0" - blockstore-core "^3.0.0" - bs58 "^5.0.0" - cbor-web "^9.0.1" - date-and-time "^2.4.1" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jose "^4.14.4" - jszip "^3.10.1" - lit-siwe "^1.1.8" - multiformats "^10.0.2" - nanoid "3.3.4" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - uint8arrays "^4.0.3" - -"@lit-protocol/lit-node-client-nodejs@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client-nodejs/-/lit-node-client-nodejs-3.0.32.tgz#0627b094d1d7de8370da4ade0bd5ecab7894feae" - integrity sha512-vivyz7SFHBpWk0j0teTEy+lxGYEftHecJRNPcEagBW2pmyMCQBL4XrwFBNH+k9aaCo1Zx4Q9WnVH0H78otcuLg== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/core" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/encryption" "3.0.32" - "@lit-protocol/lit-third-party-libs" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - bitcoinjs-lib "^6.1.0" - blockstore-core "^3.0.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jose "^4.14.4" - jszip "^3.10.1" - lit-siwe "^1.1.8" - multiformats "^10.0.2" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/lit-node-client@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client/-/lit-node-client-3.0.32.tgz#84e8f1da5f10a8ba5a377d1421a045fd5830a1c4" - integrity sha512-YAlMvhHq2d1vdHNVbqho8pqzEWY2MtsFOMGHVG11711oLal1fyFDr4iGJ5KnxxvK6+In2Amv65jQVSr1wlkdVQ== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-browser" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/core" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/encryption" "3.0.32" - "@lit-protocol/lit-node-client-nodejs" "3.0.32" - "@lit-protocol/lit-third-party-libs" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - "@walletconnect/ethereum-provider" "2.9.2" - "@walletconnect/modal" "2.6.1" - bitcoinjs-lib "^6.1.0" - blockstore-core "^3.0.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jose "^4.14.4" - jszip "^3.10.1" - lit-siwe "^1.1.8" - multiformats "^10.0.2" - node-fetch "^2.6.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - uint8arrays "^4.0.3" - -"@lit-protocol/lit-third-party-libs@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-third-party-libs/-/lit-third-party-libs-3.0.32.tgz#6813976bdf245df24431cd55065389fb739efe09" - integrity sha512-FtxJtuYLSKV6sesRA+GthEa/VrrEQag+oFM26mWu569SCBnsbMxaz2IJ3telpXKR8FXkaiIYXgsdkyEPj9KyNQ== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - blockstore-core "^3.0.0" - ipfs-unixfs-importer "^12.0.0" - tslib "^2.3.0" - -"@lit-protocol/logger@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/logger/-/logger-3.0.32.tgz#081ff6ac421cd3ab3bc993bb1c4b3c75b6deac50" - integrity sha512-18Vi6vbbenDMRhDGQTJolVG4rnhl5NQzplC327XYEkNN8lGR8bxbx9ajSC71anB5/XYtHy57yotMtvZTPK0uWg== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/types" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/misc-browser@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/misc-browser/-/misc-browser-3.0.32.tgz#3b38d2caf2286372ccce5a52d493c20b1579c652" - integrity sha512-r7YsHO+HOA1pvpMHJ3mptTDYSGizNyitqRSgk1vGoufk4jAsnXkGQS3HGfhcP0PADEWhiIo/tGVa9DSPlN58Sw== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - -"@lit-protocol/misc@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/misc/-/misc-3.0.32.tgz#80eb73665c80e7eae88bc3e8519a0c6a7e5d2c26" - integrity sha512-zH7Xr729/k6Yr8PqR0LWMro++C3guidvL1ukseht98gymVMwavKVmQg0+USDkXugzY6fKBIMzonOF4j5TK7zuw== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/types" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - uint8arrays "^4.0.3" - -"@lit-protocol/nacl@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/nacl/-/nacl-3.0.32.tgz#3b936c5bc8c45cc81f10d58e5a5aa69b271b66c2" - integrity sha512-LqIbqWlDVwqrhSpTdb60rvLQ1p3P5PI96N+8WfXPtdTVIOJLJFvKsqbwv5Atzkn3PaUURCWkmpIafEHxEmGIqg== - dependencies: - tslib "^2.3.0" - -"@lit-protocol/pkp-base@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/pkp-base/-/pkp-base-3.0.32.tgz#e89d8cb73de5dfb1ea11aae9d7def9f8350f339e" - integrity sha512-oBEs4mfYnRdsoctT+YOMGjU+07VvPM6C0XBnM1/w7XHnVcGWXv5Q0HVp/+mVNmqH8pDhYAA9R64IUEpsP8UcNQ== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-browser" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/core" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/encryption" "3.0.32" - "@lit-protocol/lit-node-client" "3.0.32" - "@lit-protocol/lit-node-client-nodejs" "3.0.32" - "@lit-protocol/lit-third-party-libs" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - "@walletconnect/ethereum-provider" "2.9.2" - "@walletconnect/modal" "2.6.1" - bitcoinjs-lib "^6.1.0" - blockstore-core "^3.0.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jose "^4.14.4" - jszip "^3.10.1" - lit-siwe "^1.1.8" - multiformats "^10.0.2" - node-fetch "^2.6.1" - secp256k1 "^5.0.0" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - uint8arrays "^4.0.3" - -"@lit-protocol/pkp-ethers@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/pkp-ethers/-/pkp-ethers-3.0.32.tgz#6dbbf6637a3a56c3749131443ad7fb0e377d314f" - integrity sha512-1CNwPZzv9RWkpjbElOJ/FNECO/6T2/rL9wPO3uCXPnpqvfWCe3gY+mB2agjm2goCIIFOfscOVdyP2aQOmyoJ4w== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "3.0.32" - "@lit-protocol/auth-browser" "3.0.32" - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/bls-sdk" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/contracts-sdk" "3.0.32" - "@lit-protocol/core" "3.0.32" - "@lit-protocol/crypto" "3.0.32" - "@lit-protocol/ecdsa-sdk" "3.0.32" - "@lit-protocol/encryption" "3.0.32" - "@lit-protocol/lit-node-client" "3.0.32" - "@lit-protocol/lit-node-client-nodejs" "3.0.32" - "@lit-protocol/lit-third-party-libs" "3.0.32" - "@lit-protocol/logger" "3.0.32" - "@lit-protocol/misc" "3.0.32" - "@lit-protocol/misc-browser" "3.0.32" - "@lit-protocol/nacl" "3.0.32" - "@lit-protocol/pkp-base" "3.0.32" - "@lit-protocol/sev-snp-utils-sdk" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@lit-protocol/uint8arrays" "3.0.32" - "@metamask/eth-sig-util" "5.0.2" - "@walletconnect/ethereum-provider" "2.9.2" - "@walletconnect/modal" "2.6.1" - bitcoinjs-lib "^6.1.0" - blockstore-core "^3.0.0" - bs58 "^5.0.0" - date-and-time "^2.4.1" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jose "^4.14.4" - jszip "^3.10.1" - lit-siwe "^1.1.8" - multiformats "^10.0.2" - node-fetch "^2.6.1" - secp256k1 "^5.0.0" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - uint8arrays "^4.0.3" - -"@lit-protocol/sev-snp-utils-sdk@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/sev-snp-utils-sdk/-/sev-snp-utils-sdk-3.0.32.tgz#c0e2a2f117b03170bd264408a7b892e14e31ec0f" - integrity sha512-H+DiTpWxgmcNqJuVKY3Ldy29J+42/+OwseIgOt21KldRk4Rymaa9O6hHaqEFSmjjJevMGzxJ+m0KzxWoM90GDg== - dependencies: - "@lit-protocol/uint8arrays" "3.0.32" - node-fetch "^2.6.1" - pako "^2.1.0" - tslib "^2.3.0" - -"@lit-protocol/types@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/types/-/types-3.0.32.tgz#6c0971a21dff6cb1a72ad5e70ab40f9a6caa92b6" - integrity sha512-rizsbqNzA+g8uP/Tfc3GPf+3ZCinYY886iTQbSY2wY7pj70ws3rmM9g/d5CS1laQvAhNlV6ak8uO9P0MVrppmg== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - ethers "^5.7.1" - jszip "^3.10.1" - siwe "^2.0.5" - siwe-recap "0.0.2-alpha.0" - tslib "^2.3.0" - -"@lit-protocol/uint8arrays@3.0.32": - version "3.0.32" - resolved "https://registry.yarnpkg.com/@lit-protocol/uint8arrays/-/uint8arrays-3.0.32.tgz#2962c3b1ef2dad9da03212c38f9de183ec401730" - integrity sha512-sZavZXFj9xSwMBnUp1xRii5n12LwpaxmYiDdIspo9yHCDTq60XNHgd2J+llk2Hge0H17MTnoPbICLwZlQ9YJmA== - dependencies: - tslib "^2.3.0" - "@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": version "1.6.3" resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.3.tgz#25b4eece2592132845d303e091bad9b04cdcfe03" @@ -2326,18 +1618,6 @@ "@metamask/safe-event-emitter" "^3.0.0" "@metamask/utils" "^5.0.1" -"@metamask/eth-sig-util@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz#c518279a6e17a88135a13d53a0b970f145ff8bce" - integrity sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q== - dependencies: - "@ethereumjs/util" "^8.0.0" - bn.js "^4.11.8" - ethereum-cryptography "^1.1.2" - ethjs-util "^0.1.6" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - "@metamask/eth-sig-util@^4.0.0", "@metamask/eth-sig-util@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" @@ -2583,14 +1863,6 @@ "@motionone/dom" "^10.16.4" tslib "^2.3.1" -"@multiformats/murmur3@^2.0.0": - version "2.1.8" - resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-2.1.8.tgz#81c1c15b6391109f3febfca4b3205196615a04e9" - integrity sha512-6vId1C46ra3R1sbJUOFCZnsUIveR9oF20yhPmAFxPm0JfrX3/ZRCgP3YDrBzlGoEppOXnA9czHeYc0T9mB6hbA== - dependencies: - multiformats "^13.0.0" - murmurhash3js-revisited "^3.0.0" - "@noble/curves@1.2.0", "@noble/curves@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -2605,18 +1877,6 @@ dependencies: "@noble/hashes" "1.3.3" -"@noble/curves@^1.3.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" - integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== - dependencies: - "@noble/hashes" "1.4.0" - -"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" - integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== - "@noble/hashes@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" @@ -2627,16 +1887,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== -"@noble/hashes@1.4.0", "@noble/hashes@^1", "@noble/hashes@^1.0.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2": +"@noble/hashes@^1", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== -"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" - integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -3819,15 +3074,6 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== -"@scure/bip32@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" - integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== - dependencies: - "@noble/hashes" "~1.2.0" - "@noble/secp256k1" "~1.7.0" - "@scure/base" "~1.1.0" - "@scure/bip32@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8" @@ -3846,14 +3092,6 @@ "@noble/hashes" "~1.3.2" "@scure/base" "~1.1.4" -"@scure/bip39@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" - integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== - dependencies: - "@noble/hashes" "~1.2.0" - "@scure/base" "~1.1.0" - "@scure/bip39@1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" @@ -3943,72 +3181,11 @@ "@sigstore/core" "^1.1.0" "@sigstore/protobuf-specs" "^0.3.1" -"@simplewebauthn/browser@^7.2.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@simplewebauthn/browser/-/browser-7.4.0.tgz#3e25b5e9f45d03eb60d3e4f8812d8d2acfd7dba6" - integrity sha512-qqCZ99lFWjtyza8NCtCpRm3GU5u8/QFeBfMgW5+U/E8Qyc4lvUcuJ8JTbrhksVQLZWSY1c/6Xw11QZ5e+D1hNw== - dependencies: - "@simplewebauthn/typescript-types" "^7.4.0" - -"@simplewebauthn/typescript-types@^7.0.0", "@simplewebauthn/typescript-types@^7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-7.4.0.tgz#1f5d55e187cbd30727a75543caf1bade747625ce" - integrity sha512-8/ZjHeUPe210Bt5oyaOIGx4h8lHdsQs19BiOT44gi/jBEgK7uBGA0Fy7NRsyh777al3m6WM0mBf0UR7xd4R7WQ== - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@snowballtools/auth-lit@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@snowballtools/auth-lit/-/auth-lit-0.1.0.tgz#1ed97cf55dd20c29b46ee3e5ad053662e17fdc41" - integrity sha512-WfGbdqd34I5wDcviSn9f8I1aTpY0ExJYGvkrwy/l0aeEotRBXoMDFNAM23RQN/aYzaewCOYGTPl1DJ1/hBYDyw== - dependencies: - "@lit-protocol/auth-helpers" "3.0.32" - "@lit-protocol/constants" "3.0.32" - "@lit-protocol/lit-auth-client" "3.0.32" - "@lit-protocol/lit-node-client" "3.0.32" - "@lit-protocol/pkp-ethers" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@snowballtools/auth" "*" - "@snowballtools/types" "*" - "@snowballtools/utils" "*" - -"@snowballtools/auth@*", "@snowballtools/auth@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@snowballtools/auth/-/auth-0.1.0.tgz#f6bca8e631d754b524525153769bf28fa956cfa8" - integrity sha512-jsviORyBcDporAFDCKGNHK4WCNBD68DdMJJ4wcnIa5DNXHjYLU4YYLqcbpccgnL1l+02o2nC/FyIwwDNcxWtjw== - dependencies: - "@lit-protocol/pkp-ethers" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@snowballtools/types" "*" - "@snowballtools/utils" "*" - debug "*" - -"@snowballtools/js-sdk@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@snowballtools/js-sdk/-/js-sdk-0.1.0.tgz#69835d4c0fdb1023a2ff3e75d916eb23e98084e1" - integrity sha512-ejyzeRjUiffaWZiBwLhCi9vVyJp+eNBlTYQIwfTipAQlr1q0yCfCHJic2z2CIt2w6Vzayfgi2KRmNyQpRd3img== - dependencies: - "@snowballtools/auth" "*" - "@snowballtools/types" "*" - "@snowballtools/utils" "*" - -"@snowballtools/link-lit-alchemy-light@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@snowballtools/link-lit-alchemy-light/-/link-lit-alchemy-light-0.1.0.tgz#3198bd75ad8002f76481680b1c792a7a13b84111" - integrity sha512-f6CEaol7qunra+1Tnk0Yb/M7l/EmYg40dlA7C+lYr0TQcGmIBQhT3rWtuluAlIsmKDPm1Ri7CCGfAYD7ioR/JQ== - dependencies: - "@alchemy/aa-alchemy" "^3.6.1" - "@alchemy/aa-core" "^3.6.1" - "@lit-protocol/pkp-ethers" "3.0.32" - "@snowballtools/smartwallet-alchemy-light" "*" - "@snowballtools/types" "*" - "@snowballtools/utils" "*" - ethers "^6.11.1" - viem "2.x" - "@snowballtools/material-tailwind-react-fork@^2.1.10": version "2.1.10" resolved "https://registry.yarnpkg.com/@snowballtools/material-tailwind-react-fork/-/material-tailwind-react-fork-2.1.10.tgz#7a3e582122505157cb033168e48d6c93d93336e8" @@ -4024,46 +3201,11 @@ react-dom "18.2.0" tailwind-merge "1.8.1" -"@snowballtools/smartwallet-alchemy-light@*", "@snowballtools/smartwallet-alchemy-light@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@snowballtools/smartwallet-alchemy-light/-/smartwallet-alchemy-light-0.1.0.tgz#659be4924c15c015b56453c508ee78cd3d64f837" - integrity sha512-gR69Kq3Bl8qxmMqBjac5lINRlABH25U+oUmrzUsul9TtUdfJMtA/96jR48v6upliKyncGoSIf+KJQ8opA5DqHw== - dependencies: - "@alchemy/aa-accounts" "^3.6.1" - "@alchemy/aa-alchemy" "^3.6.1" - "@alchemy/aa-core" "^3.6.1" - "@lit-protocol/pkp-ethers" "3.0.32" - "@lit-protocol/types" "3.0.32" - "@snowballtools/types" "*" - "@snowballtools/utils" "*" - -"@snowballtools/types@*", "@snowballtools/types@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@snowballtools/types/-/types-0.1.0.tgz#b76b20f76cc4192b250712d148991f04d68bade6" - integrity sha512-lYLtUGjTO2BDqpM/KA83ojRB9sKw7IPQ9IVrd0FWJlyHtmQ5MvDRIcXJXO85lIUUe4SIkxXdrJMvda0GMDMV0A== - -"@snowballtools/utils@*", "@snowballtools/utils@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@snowballtools/utils/-/utils-0.1.0.tgz#1f0c69f357a899301d0716e0b30121242617c464" - integrity sha512-0dx3ct6pSbMdhSi/Yg3unM3sPuDIk+lv57YNvqRhv8e+wz+5IfRj0Bm12BB10Dav1PMJAXkLMYKJ5OYJJn6ALA== - dependencies: - "@alchemy/aa-core" "^3.6.1" - "@snowballtools/types" "*" - alchemy-sdk "^3.2.0" - viem "2.x" - "@socket.io/component-emitter@~3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz#621270c02c0a5d4f4669eb1caa9723c91cf201de" integrity sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg== -"@spruceid/siwe-parser@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-1.1.3.tgz#0eebe8bbd63c6de89cb44c06b6329b00b305df65" - integrity sha512-oQ8PcwDqjGWJvLmvAF2yzd6iniiWxK0Qtz+Dw+gLD/W5zOQJiKIUXwslHOm8VB8OOOKW9vfR3dnPBhHaZDvRsw== - dependencies: - apg-js "^4.1.1" - "@spruceid/siwe-parser@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-2.1.0.tgz#59859ccfd02403179bcf115d9e02a7dc953a0820" @@ -4371,60 +3513,6 @@ "@tufjs/canonical-json" "2.0.0" minimatch "^9.0.3" -"@turnkey/api-key-stamper@0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@turnkey/api-key-stamper/-/api-key-stamper-0.4.0.tgz#03844adb9d08f4d0463e8d6e8dc9167a662b68e9" - integrity sha512-LyIiAXRuSL5UBa/Y95gHuh7j4uHzVMkI2+sHWM4/UWZat3nCoveU66h6SFXwF1BThA0poGgsKjWjsKNCJ89NPg== - dependencies: - "@noble/curves" "^1.3.0" - "@turnkey/encoding" "0.1.0" - sha256-uint8array "^0.10.7" - -"@turnkey/encoding@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@turnkey/encoding/-/encoding-0.1.0.tgz#85461c3aa11c70882cc2b0853f5db40f576c3ac9" - integrity sha512-aLmLrWtvV1k9UyGzuzMpBFdwleCH8VpzXIriusVMrFLiQp+4uHCS9cwrEG1glg3207ewWFDtvgj31qLoJS29pg== - -"@turnkey/http@2.10.0", "@turnkey/http@^2.6.2": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@turnkey/http/-/http-2.10.0.tgz#9e8d0dc6279719e3efaf5ae1df7dc9fd5a111ecf" - integrity sha512-5I2VwOzxYGxmSy8UOZn8rsV23gmK8v93KqNZ/mjf4GrFQ69q8LCaAFmrH1Zo+/J7eq0/GQdxNqBHfJKLp5iihw== - dependencies: - "@turnkey/api-key-stamper" "0.4.0" - "@turnkey/encoding" "0.1.0" - "@turnkey/webauthn-stamper" "0.5.0" - cross-fetch "^3.1.5" - -"@turnkey/iframe-stamper@^1.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@turnkey/iframe-stamper/-/iframe-stamper-1.2.0.tgz#bba478e391a266833f1a5960b9f1df9de5934fb8" - integrity sha512-OXbCVVzypa0AXa6dcNpfu8Q0xY/sq2nGXwhesrUQmE7V5I5nYYHZE3sQv54lErToX6H6YyDR9Z1DuPzEUkYTjw== - -"@turnkey/viem@^0.4.8": - version "0.4.14" - resolved "https://registry.yarnpkg.com/@turnkey/viem/-/viem-0.4.14.tgz#bbc60bd8ce478401e9e7900357de7edc792acd14" - integrity sha512-YMREwb7QBBuge8wxdpFGKAl48e4W/rX84XR1E5GsD5HnypNPnfMu/AI7Np0cbQBA6IRuwY9HWu3HbDPU9kicDg== - dependencies: - "@turnkey/api-key-stamper" "0.4.0" - "@turnkey/http" "2.10.0" - cross-fetch "^4.0.0" - typescript "^5.1" - -"@turnkey/webauthn-stamper@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@turnkey/webauthn-stamper/-/webauthn-stamper-0.5.0.tgz#014b8c20b1732af49dacb04f396edf010d3b7f47" - integrity sha512-iUbTUwD4f4ibdLy5PWWb7ITEz4S4VAP9/mNjFhoRY3cKVVTDfmykrVTKjPOIHWzDgAmLtgrLvySIIC9ZBVENBw== - dependencies: - sha256-uint8array "^0.10.7" - -"@turnkey/webauthn-stamper@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@turnkey/webauthn-stamper/-/webauthn-stamper-0.4.3.tgz#843499f0cf751c0421cb7630ea128b6f034a9446" - integrity sha512-hJuIpwny44TOrkFJiK8uA29RRO1A9xJK3KbN4PWqBxTLh1r7ntkl3zslc/qAkgnw6f+OREQbhQGoYkTdIX+7QA== - dependencies: - "@noble/hashes" "^1.3.2" - buffer "^6.0.3" - "@types/accepts@^1.3.5": version "1.3.7" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.7.tgz#3b98b1889d2b2386604c2bbbe62e4fb51e95b265" @@ -4518,14 +3606,6 @@ dependencies: "@types/node" "*" -"@types/cookie-session@^2.0.49": - version "2.0.49" - resolved "https://registry.yarnpkg.com/@types/cookie-session/-/cookie-session-2.0.49.tgz#44ae62bd1d1506fbb3cc14470cdf6f74decea04b" - integrity sha512-4E/bBjlqLhU5l4iGPR+NkVJH593hpNsT4dC3DJDr+ODm6Qpe13kZQVkezRIb+TYDXaBMemS3yLQ+0leba3jlkQ== - dependencies: - "@types/express" "*" - "@types/keygrip" "*" - "@types/cors@2.8.12": version "2.8.12" resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" @@ -4685,11 +3765,6 @@ dependencies: "@types/node" "*" -"@types/keygrip@*": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.6.tgz#1749535181a2a9b02ac04a797550a8787345b740" - integrity sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ== - "@types/lodash.memoize@^4.1.7": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/lodash.memoize/-/lodash.memoize-4.1.9.tgz#9f8912d39b6e450c0d342a2b74c99d331bf2016b" @@ -4717,7 +3792,7 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/minimatch@^3.0.3", "@types/minimatch@^3.0.4": +"@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -4744,11 +3819,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== -"@types/node@18.15.13": - version "18.15.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" - integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== - "@types/node@^10.1.0": version "10.17.60" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" @@ -4796,7 +3866,7 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.22": +"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.17": version "18.2.25" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.25.tgz#2946a30081f53e7c8d585eb138277245caedc521" integrity sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA== @@ -4811,10 +3881,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/react@^18.2.66": - version "18.2.79" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.79.tgz#c40efb4f255711f554d47b449f796d1c7756d865" - integrity sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w== +"@types/react@^18.2.77": + version "18.2.77" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.77.tgz#af2f857b6a6dfb6ca89ec102ebc147b1f1616880" + integrity sha512-CUT9KUUF+HytDM7WiXKLF9qUSg4tGImwy4FXTlfEDPEkkNUzJ7rVFolYweJ9fS1ljoIaP7M7Rdjc5eUm/Yu5AA== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -4875,11 +3945,6 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== -"@types/uuid@^9.0.8": - version "9.0.8" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" - integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== - "@types/yargs-parser@*": version "21.0.3" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" @@ -5017,28 +4082,6 @@ lodash.isequal "4.5.0" uint8arrays "^3.1.0" -"@walletconnect/core@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.9.2.tgz#c46734ca63771b28fd77606fd521930b7ecfc5e1" - integrity sha512-VARMPAx8sIgodeyngDHbealP3B621PQqjqKsByFUTOep8ZI1/R/20zU+cmq6j9RCrL+kLKZcrZqeVzs8Z7OlqQ== - dependencies: - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-provider" "1.0.13" - "@walletconnect/jsonrpc-types" "1.0.3" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/jsonrpc-ws-connection" "1.0.13" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/relay-auth" "^1.0.4" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.9.2" - "@walletconnect/utils" "2.9.2" - events "^3.3.0" - lodash.isequal "4.5.0" - uint8arrays "^3.1.0" - "@walletconnect/environment@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" @@ -5062,21 +4105,6 @@ "@walletconnect/utils" "2.11.2" events "^3.3.0" -"@walletconnect/ethereum-provider@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.9.2.tgz#fb3a6fca279bb4e98e75baa2fb9730545d41bb99" - integrity sha512-eO1dkhZffV1g7vpG19XUJTw09M/bwGUwwhy1mJ3AOPbOSbMPvwiCuRz2Kbtm1g9B0Jv15Dl+TvJ9vTgYF8zoZg== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.7" - "@walletconnect/jsonrpc-provider" "^1.0.13" - "@walletconnect/jsonrpc-types" "^1.0.3" - "@walletconnect/jsonrpc-utils" "^1.0.8" - "@walletconnect/sign-client" "2.9.2" - "@walletconnect/types" "2.9.2" - "@walletconnect/universal-provider" "2.9.2" - "@walletconnect/utils" "2.9.2" - events "^3.3.0" - "@walletconnect/ethereum-provider@^2.12.2": version "2.12.2" resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.12.2.tgz#43195a14cd43f928b2fcbba6b1a08e17e7838c4f" @@ -5146,17 +4174,6 @@ "@walletconnect/jsonrpc-types" "^1.0.3" tslib "1.14.1" -"@walletconnect/jsonrpc-ws-connection@1.0.13": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.13.tgz#23b0cdd899801bfbb44a6556936ec2b93ef2adf4" - integrity sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.6" - "@walletconnect/safe-json" "^1.0.2" - events "^3.3.0" - tslib "1.14.1" - ws "^7.5.1" - "@walletconnect/jsonrpc-ws-connection@1.0.14": version "1.0.14" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz#eec700e74766c7887de2bd76c91a0206628732aa" @@ -5167,7 +4184,7 @@ events "^3.3.0" ws "^7.5.1" -"@walletconnect/keyvaluestorage@^1.0.2", "@walletconnect/keyvaluestorage@^1.1.1": +"@walletconnect/keyvaluestorage@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== @@ -5184,13 +4201,6 @@ "@walletconnect/safe-json" "^1.0.2" pino "7.11.0" -"@walletconnect/modal-core@2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.1.tgz#bc76055d0b644a2d4b98024324825c108a700905" - integrity sha512-f2hYlJ5pwzGvjyaZ6BoGR5uiMgXzWXt6w6ktt1N8lmY6PiYp8whZgqx2hTxVWwVlsGnaIfh6UHp1hGnANx0eTQ== - dependencies: - valtio "1.11.0" - "@walletconnect/modal-core@2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.2.tgz#d73e45d96668764e0c8668ea07a45bb8b81119e9" @@ -5198,16 +4208,6 @@ dependencies: valtio "1.11.2" -"@walletconnect/modal-ui@2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.1.tgz#200c54c8dfe3c71321abb2724e18bb357dfd6371" - integrity sha512-RFUOwDAMijSK8B7W3+KoLKaa1l+KEUG0LCrtHqaB0H0cLnhEGdLR+kdTdygw+W8+yYZbkM5tXBm7MlFbcuyitA== - dependencies: - "@walletconnect/modal-core" "2.6.1" - lit "2.7.6" - motion "10.16.2" - qrcode "1.5.3" - "@walletconnect/modal-ui@2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz#fa57c087c57b7f76aaae93deab0f84bb68b59cf9" @@ -5218,14 +4218,6 @@ motion "10.16.2" qrcode "1.5.3" -"@walletconnect/modal@2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.1.tgz#066fdbfcff83b58c8a9da66ab4af0eb93e3626de" - integrity sha512-G84tSzdPKAFk1zimgV7JzIUFT5olZUVtI3GcOk77OeLYjlMfnDT23RVRHm5EyCrjkptnvpD0wQScXePOFd2Xcw== - dependencies: - "@walletconnect/modal-core" "2.6.1" - "@walletconnect/modal-ui" "2.6.1" - "@walletconnect/modal@2.6.2", "@walletconnect/modal@^2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" @@ -5291,21 +4283,6 @@ "@walletconnect/utils" "2.12.2" events "^3.3.0" -"@walletconnect/sign-client@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.9.2.tgz#ff4c81c082c2078878367d07f24bcb20b1f7ab9e" - integrity sha512-anRwnXKlR08lYllFMEarS01hp1gr6Q9XUgvacr749hoaC/AwGVlxYFdM8+MyYr3ozlA+2i599kjbK/mAebqdXg== - dependencies: - "@walletconnect/core" "2.9.2" - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.9.2" - "@walletconnect/utils" "2.9.2" - events "^3.3.0" - "@walletconnect/time@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" @@ -5337,18 +4314,6 @@ "@walletconnect/logger" "^2.0.1" events "^3.3.0" -"@walletconnect/types@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.9.2.tgz#d5fd5a61dc0f41cbdca59d1885b85207ac7bf8c5" - integrity sha512-7Rdn30amnJEEal4hk83cdwHUuxI1SWQ+K7fFFHBMqkuHLGi3tpMY6kpyfDxnUScYEZXqgRps4Jo5qQgnRqVM7A== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-types" "1.0.3" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - events "^3.3.0" - "@walletconnect/universal-provider@2.11.2": version "2.11.2" resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.11.2.tgz#bec3038f51445d707bbec75f0cb8af0a1f1e04db" @@ -5379,21 +4344,6 @@ "@walletconnect/utils" "2.12.2" events "^3.3.0" -"@walletconnect/universal-provider@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.9.2.tgz#40e54e98bc48b1f2f5f77eb5b7f05462093a8506" - integrity sha512-JmaolkO8D31UdRaQCHwlr8uIFUI5BYhBzqYFt54Mc6gbIa1tijGOmdyr6YhhFO70LPmS6gHIjljwOuEllmlrxw== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.7" - "@walletconnect/jsonrpc-provider" "1.0.13" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.7" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/sign-client" "2.9.2" - "@walletconnect/types" "2.9.2" - "@walletconnect/utils" "2.9.2" - events "^3.3.0" - "@walletconnect/utils@2.11.2": version "2.11.2" resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.11.2.tgz#dee0f19adf5e38543612cbe9fa4de7ed28eb7e85" @@ -5434,26 +4384,6 @@ query-string "7.1.3" uint8arrays "^3.1.0" -"@walletconnect/utils@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.9.2.tgz#035bdb859ee81a4bcc6420f56114cc5ec3e30afb" - integrity sha512-D44hwXET/8JhhIjqljY6qxSu7xXnlPrf63UN/Qfl98vDjWlYVcDl2+JIQRxD9GPastw0S8XZXdRq59XDXLuZBg== - dependencies: - "@stablelib/chacha20poly1305" "1.0.1" - "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "^1.0.2" - "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "^1.0.3" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.9.2" - "@walletconnect/window-getters" "^1.0.1" - "@walletconnect/window-metadata" "^1.0.1" - detect-browser "5.3.0" - query-string "7.1.3" - uint8arrays "^3.1.0" - "@walletconnect/window-getters@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" @@ -5649,11 +4579,6 @@ abitype@1.0.0: resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97" integrity sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ== -abitype@^0.8.3: - version "0.8.11" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.11.tgz#66e1cf2cbf46f48d0e57132d7c1c392447536cc1" - integrity sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A== - accepts@^1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -5682,11 +4607,6 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== -aes-js@4.0.0-beta.5: - version "4.0.0-beta.5" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" - integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== - agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -5716,26 +4636,6 @@ aggregate-error@^3.0.0, aggregate-error@^3.1.0: clean-stack "^2.0.0" indent-string "^4.0.0" -alchemy-sdk@^3.0.0, alchemy-sdk@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/alchemy-sdk/-/alchemy-sdk-3.2.1.tgz#23ced2b6f44ce4960ca0950b3b328c0d12b0098e" - integrity sha512-ytCllr0E3TZxlYT2o/+i8AVEFJwRS7msXYvS3f/L47VEemkv0Hpz09XTqbjOcfur2PooEMcD8rn5oKrbwLyFrQ== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/contracts" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/providers" "^5.7.0" - "@ethersproject/units" "^5.7.0" - "@ethersproject/wallet" "^5.7.0" - "@ethersproject/web" "^5.7.0" - axios "^1.6.5" - sturdy-websocket "^0.2.1" - websocket "^1.0.34" - ansi-colors@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -5787,11 +4687,6 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== -any-signal@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" - integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== - anymatch@^3.1.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -6058,13 +4953,6 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axios@^0.21.2: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - axios@^0.26.1: version "0.26.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" @@ -6072,7 +4960,7 @@ axios@^0.26.1: dependencies: follow-redirects "^1.14.8" -axios@^1.6.0, axios@^1.6.5, axios@^1.6.7: +axios@^1.6.0, axios@^1.6.7: version "1.6.8" resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== @@ -6102,21 +4990,11 @@ base-x@^3.0.2, base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" -base-x@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" - integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== - base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64url@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" - integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== - bech32@1.1.4, bech32@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" @@ -6162,11 +5040,6 @@ bindings@^1.3.0, bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bip174@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.1.1.tgz#ef3e968cf76de234a546962bcf572cc150982f9f" - integrity sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ== - bip32@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/bip32/-/bip32-3.0.1.tgz#1d1121469cce6e910e0ec3a5a1990dd62687e2a3" @@ -6186,18 +5059,6 @@ bip39@^3.0.4: dependencies: "@noble/hashes" "^1.2.0" -bitcoinjs-lib@^6.1.0: - version "6.1.5" - resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.5.tgz#3b03509ae7ddd80a440f10fc38c4a97f0a028d8c" - integrity sha512-yuf6xs9QX/E8LWE2aMJPNd0IxGofwfuVOiYdNUESkc+2bHHVKjhJd8qewqapeoolh9fihzHGoDCB5Vkr57RZCQ== - dependencies: - "@noble/hashes" "^1.2.0" - bech32 "^2.0.0" - bip174 "^2.1.1" - bs58check "^3.0.1" - typeforce "^1.11.3" - varuint-bitcoin "^1.1.2" - bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -6207,41 +5068,11 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -bl@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" - integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== - dependencies: - buffer "^6.0.3" - inherits "^2.0.4" - readable-stream "^3.4.0" - blakejs@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== -blob-to-it@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.4.tgz#f6caf7a4e90b7bb9215fa6a318ed6bd8ad9898cb" - integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== - dependencies: - browser-readablestream-to-it "^1.0.3" - -blockstore-core@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/blockstore-core/-/blockstore-core-3.0.0.tgz#08f52d954fe079d2735b745d218e737071badd97" - integrity sha512-5ZZB5nh6kErcjZ/CTK6lCwTIGlPdkTXbD8+2xLC4Fm0WGh7g2e2lW2bfURw7mvnPtSX1xV+sN4V2ndowSgIiHQ== - dependencies: - err-code "^3.0.1" - interface-blockstore "^4.0.0" - interface-store "^3.0.0" - it-all "^2.0.0" - it-drain "^2.0.0" - it-filter "^2.0.0" - it-take "^2.0.0" - multiformats "^11.0.0" - bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -6307,11 +5138,6 @@ brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" - integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== - browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -6341,13 +5167,6 @@ bs58@^4.0.0, bs58@^4.0.1: dependencies: base-x "^3.0.2" -bs58@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" - integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== - dependencies: - base-x "^4.0.0" - bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" @@ -6357,14 +5176,6 @@ bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" -bs58check@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" - integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== - dependencies: - "@noble/hashes" "^1.2.0" - bs58 "^5.0.0" - btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" @@ -6385,7 +5196,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3: +buffer@6.0.3, buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -6401,7 +5212,7 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -bufferutil@^4.0.1, bufferutil@^4.0.8: +bufferutil@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== @@ -6538,16 +5349,6 @@ canonical-json@^0.0.4: resolved "https://registry.yarnpkg.com/canonical-json/-/canonical-json-0.0.4.tgz#6579c072c3db5c477ec41dc978fbf2b8f41074a3" integrity sha512-2sW7x0m/P7dqEnO0O87U7RTVQAaa7MELcd+Jd9FA6CYgYtwJ1TlDWIYMD8nuMkH1KoThsJogqgLyklrt9d/Azw== -canonicalize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.0.0.tgz#32be2cef4446d67fd5348027a384cae28f17226a" - integrity sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w== - -cbor-web@^9.0.1: - version "9.0.2" - resolved "https://registry.yarnpkg.com/cbor-web/-/cbor-web-9.0.2.tgz#1915f1ef1a72ea905db07480f71cf12ff601c661" - integrity sha512-N6gU2GsJS8RR5gy1d9wQcSPgn9FGJFY7KNvdDRlwHfz6kCxrQr2TDnrjXHmr6TFSl6Fd0FC4zRnityEldjRGvQ== - cborg@^1.5.4, cborg@^1.6.0: version "1.10.2" resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" @@ -6967,16 +5768,6 @@ cookie-es@^1.0.0: resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.1.0.tgz#68f8d9f48aeb5a534f3896f80e792760d3d20def" integrity sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw== -cookie-session@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cookie-session/-/cookie-session-2.1.0.tgz#ae30b566b2f9f2d8ca2c4936513e6bf181830558" - integrity sha512-u73BDmR8QLGcs+Lprs0cfbcAPKl2HnPcjpwRXT41sEV4DRJ2+W0vJEEZkG31ofkx+HZflA70siRIjiTdIodmOQ== - dependencies: - cookies "0.9.1" - debug "3.2.7" - on-headers "~1.0.2" - safe-buffer "5.2.1" - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -6992,14 +5783,6 @@ cookie@0.6.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== -cookies@0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" - integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== - dependencies: - depd "~2.0.0" - keygrip "~1.1.0" - copyfiles@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" @@ -7063,14 +5846,6 @@ cosmjs-types@^0.5.1: long "^4.0.0" protobufjs "~6.11.2" -cosmjs-types@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.7.2.tgz#a757371abd340949c5bd5d49c6f8379ae1ffd7e2" - integrity sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA== - dependencies: - long "^4.0.0" - protobufjs "~6.11.2" - crc-32@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" @@ -7191,32 +5966,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -d@1, d@^1.0.1, d@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" - integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== - dependencies: - es5-ext "^0.10.64" - type "^2.7.2" - -dag-jose@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-1.0.0.tgz#52e42d70cb5bee31ae4e8e3ab860615568d7ad73" - integrity sha512-U0b/YsIPBp6YZNTFrVjwLZAlY3qGRxZTIEcM/CcQmrVrCWq9MWQq9pheXVSPLIhF4SNwzp2SikPva4/BIrJY+g== - dependencies: - "@ipld/dag-cbor" "^6.0.3" - multiformats "^9.0.2" - dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -date-and-time@^2.4.1: - version "2.4.3" - resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-2.4.3.tgz#116963998a8cecd478955ae053f31a6747a988df" - integrity sha512-xkS/imTmsyEdpp9ie5oV5UWolg3XkYWNySbT2W4ESWr6v4V8YrsHbhpk9fIeQcr0NFTnYbQJLXlgU1zrLItysA== - date-fns@^2.29.3: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" @@ -7239,26 +5993,19 @@ dayjs@1.11.10, dayjs@^1.11.9: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== -debug@*, debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@2.6.9, debug@^2.2.0: +debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== +debug@4, debug@^4.1.0, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - ms "^2.1.1" + ms "2.1.2" decamelize-keys@^1.1.0: version "1.1.1" @@ -7495,15 +6242,6 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -dns-over-http-resolver@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" - integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== - dependencies: - debug "^4.3.1" - native-fetch "^3.0.0" - receptacle "^1.3.2" - dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: version "0.5.16" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" @@ -7595,13 +6333,6 @@ ejs@^3.1.7: dependencies: jake "^10.8.5" -electron-fetch@^1.7.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" - integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== - dependencies: - encoding "^0.1.13" - electron-to-chromium@^1.4.668: version "1.4.733" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.733.tgz#708d51ce01a7ed3b401d5ced85e9f5d504fd4217" @@ -7710,11 +6441,6 @@ err-code@^2.0.2: resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -err-code@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" - integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -7749,33 +6475,6 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: - version "0.10.64" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" - integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - esniff "^2.0.1" - next-tick "^1.1.0" - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" - integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== - dependencies: - d "^1.0.2" - ext "^1.7.0" - esbuild@^0.19.2: version "0.19.12" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" @@ -7859,16 +6558,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -esniff@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" - integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== - dependencies: - d "^1.0.1" - es5-ext "^0.10.62" - event-emitter "^0.3.5" - type "^2.7.2" - esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -7942,16 +6631,6 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -ethereum-cryptography@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" - integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== - dependencies: - "@noble/hashes" "1.2.0" - "@noble/secp256k1" "1.7.1" - "@scure/bip32" "1.1.5" - "@scure/bip39" "1.1.1" - ethereum-cryptography@^2.0.0: version "2.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" @@ -7983,7 +6662,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: ethjs-util "0.1.6" rlp "^2.2.3" -ethers@^5.6.2, ethers@^5.7.1: +ethers@^5.6.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -8019,19 +6698,6 @@ ethers@^5.6.2, ethers@^5.7.1: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -ethers@^6.11.1: - version "6.11.1" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.11.1.tgz#96aae00b627c2e35f9b0a4d65c7ab658259ee6af" - integrity sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg== - dependencies: - "@adraffy/ens-normalize" "1.10.1" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@types/node" "18.15.13" - aes-js "4.0.0-beta.5" - tslib "2.4.0" - ws "8.5.0" - ethjs-util@0.1.6, ethjs-util@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" @@ -8040,14 +6706,6 @@ ethjs-util@0.1.6, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== - dependencies: - d "1" - es5-ext "~0.10.14" - eventemitter2@^6.4.5, eventemitter2@^6.4.7: version "6.4.9" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" @@ -8213,13 +6871,6 @@ express@^4.18.2: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" - integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== - dependencies: - type "^2.7.2" - extension-port-stream@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/extension-port-stream/-/extension-port-stream-2.1.1.tgz#ec11f2a5ed95655d8c40805d7cb0c39939ee9ef4" @@ -8241,11 +6892,6 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== -fast-fifo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" - integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== - fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" @@ -8372,7 +7018,7 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -follow-redirects@^1.14.0, follow-redirects@^1.14.8, follow-redirects@^1.15.6: +follow-redirects@^1.14.8, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== @@ -8556,11 +7202,6 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" -get-iterator@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" - integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== - get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" @@ -8744,13 +7385,6 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globalthis@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - globby@11.1.0, globby@^11.0.3: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -8818,14 +7452,6 @@ h3@^1.10.2, h3@^1.11.1: uncrypto "^0.1.3" unenv "^1.9.0" -hamt-sharding@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-3.0.6.tgz#3643107a3021af66ac95684aec87b196add5ba57" - integrity sha512-nZeamxfymIWLpVcAN0CRrb7uVq3hCOGj9IcL6NMA6VVCVWqj+h9Jo/SmaWuS92AEDf1thmHsM5D5c70hM3j2Tg== - dependencies: - sparse-array "^1.3.1" - uint8arrays "^5.0.1" - handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" @@ -9133,11 +7759,6 @@ ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== - import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -9216,33 +7837,6 @@ inquirer@^8.2.4: through "^2.3.6" wrap-ansi "^6.0.1" -interface-blockstore@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-4.0.1.tgz#0dda1774d72ca7e990dc1921cfc524b3e9d1b9ca" - integrity sha512-ROWKGJls7vLeFaQtI3hZVCJOkUoZ05xAi2t2qysM4d7dwVKrfm5jUOqWh8JgLL7Iup3XqJ0mKXXZuwJ3s03RSw== - dependencies: - interface-store "^3.0.0" - multiformats "^11.0.0" - -interface-datastore@^6.0.2: - version "6.1.1" - resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-6.1.1.tgz#5150a00de2e7513eaadba58bcafd059cb50004c1" - integrity sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg== - dependencies: - interface-store "^2.0.2" - nanoid "^3.0.2" - uint8arrays "^3.0.0" - -interface-store@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" - integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== - -interface-store@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" - integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== - internal-slot@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" @@ -9272,136 +7866,11 @@ ip-address@^9.0.5: jsbn "1.1.0" sprintf-js "^1.1.3" -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipfs-core-types@^0.10.0, ipfs-core-types@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.10.3.tgz#89ebe98199d4d829f2b20104bfa3299f808c80fe" - integrity sha512-GNid2lRBjR5qgScCglgk7w9Hk3TZAwPHQXxOLQx72wgyc0jF2U5NXRoKW0GRvX8NPbHmsrFszForIqxd23I1Gw== - dependencies: - "@ipld/dag-pb" "^2.1.3" - interface-datastore "^6.0.2" - ipfs-unixfs "^6.0.3" - multiaddr "^10.0.0" - multiformats "^9.5.1" - -ipfs-core-utils@^0.14.0: - version "0.14.3" - resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.14.3.tgz#d04c631c472507bdefc58d4e8d1d9109efbb411c" - integrity sha512-aBkewVhgAj3NWXPwu6imj0wADGiGVZmJzqKzODOJsibDjkx6FGdMv8kvvqtLnK8LS/dvSk9yk32IDtuDyYoV7Q== - dependencies: - any-signal "^3.0.0" - blob-to-it "^1.0.1" - browser-readablestream-to-it "^1.0.1" - debug "^4.1.1" - err-code "^3.0.1" - ipfs-core-types "^0.10.3" - ipfs-unixfs "^6.0.3" - ipfs-utils "^9.0.6" - it-all "^1.0.4" - it-map "^1.0.4" - it-peekable "^1.0.2" - it-to-stream "^1.0.0" - merge-options "^3.0.4" - multiaddr "^10.0.0" - multiaddr-to-uri "^8.0.0" - multiformats "^9.5.1" - nanoid "^3.1.23" - parse-duration "^1.0.0" - timeout-abort-controller "^3.0.0" - uint8arrays "^3.0.0" - -ipfs-http-client@56.0.0: - version "56.0.0" - resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-56.0.0.tgz#f42fa2bbf987bfa128ce0025de5d668586f4a815" - integrity sha512-JF3on9c0hB9XHk/UCxbyC6rSpERuj8F/0QcN/HImZoHNUKZ0/T8DpgVopocKdmGi1gr3Izlop7poaXomSt8Nug== - dependencies: - "@ipld/dag-cbor" "^7.0.0" - "@ipld/dag-json" "^8.0.1" - "@ipld/dag-pb" "^2.1.3" - any-signal "^3.0.0" - dag-jose "^1.0.0" - debug "^4.1.1" - err-code "^3.0.1" - ipfs-core-types "^0.10.0" - ipfs-core-utils "^0.14.0" - ipfs-utils "^9.0.2" - it-first "^1.0.6" - it-last "^1.0.4" - merge-options "^3.0.4" - multiaddr "^10.0.0" - multiformats "^9.4.13" - parse-duration "^1.0.0" - stream-to-it "^0.2.2" - uint8arrays "^3.0.0" - -ipfs-unixfs-importer@^12.0.0: - version "12.0.1" - resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-12.0.1.tgz#316a52d8a793e9e006b1ee43edc50b83e00ef306" - integrity sha512-//VPZOqbONtc1HNtb+sBrw+nIGijHEloSm1O3LVR5orSlhHQ8X7+OCkeqceFBhu40tPMe/TwgAPrkvh+fXL+bA== - dependencies: - "@ipld/dag-pb" "^4.0.0" - "@multiformats/murmur3" "^2.0.0" - err-code "^3.0.1" - hamt-sharding "^3.0.0" - interface-blockstore "^4.0.0" - ipfs-unixfs "^9.0.0" - it-all "^2.0.0" - it-batch "^2.0.0" - it-first "^2.0.0" - it-parallel-batch "^2.0.0" - merge-options "^3.0.4" - multiformats "^11.0.0" - rabin-wasm "^0.1.4" - uint8arraylist "^2.3.3" - uint8arrays "^4.0.2" - -ipfs-unixfs@^6.0.3: - version "6.0.9" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz#f6613b8e081d83faa43ed96e016a694c615a9374" - integrity sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ== - dependencies: - err-code "^3.0.1" - protobufjs "^6.10.2" - -ipfs-unixfs@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-9.0.1.tgz#d06e688e07ef4ce08d610337ba2fe8c143c386e7" - integrity sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg== - dependencies: - err-code "^3.0.1" - protobufjs "^7.0.0" - -ipfs-utils@^9.0.2, ipfs-utils@^9.0.6: - version "9.0.14" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" - integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== - dependencies: - any-signal "^3.0.0" - browser-readablestream-to-it "^1.0.0" - buffer "^6.0.1" - electron-fetch "^1.7.2" - err-code "^3.0.1" - is-electron "^2.2.0" - iso-url "^1.1.5" - it-all "^1.0.4" - it-glob "^1.0.1" - it-to-stream "^1.0.0" - merge-options "^3.0.4" - nanoid "^3.1.20" - native-fetch "^3.0.0" - node-fetch "^2.6.8" - react-native-fetch-api "^3.0.0" - stream-to-it "^0.2.2" - iron-webcrypto@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.1.0.tgz#f902f0cdbd77554b2195ecbb65558c311b01edfd" @@ -9504,11 +7973,6 @@ is-docker@^3.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== -is-electron@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" - integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -9555,13 +8019,6 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" @@ -9689,11 +8146,6 @@ is-typed-array@^1.1.3: dependencies: which-typed-array "^1.1.14" -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -9763,11 +8215,6 @@ isexe@^3.1.1: resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== -iso-url@^1.1.5: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" - integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== - isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" @@ -9781,98 +8228,11 @@ isomorphic-unfetch@3.1.0: node-fetch "^2.6.1" unfetch "^4.2.0" -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - isows@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== -it-all@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" - integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== - -it-all@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" - integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== - -it-batch@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-2.0.1.tgz#a0822be9b18743c41d8525835f788a7f297ba41f" - integrity sha512-2gWFuPzamh9Dh3pW+OKjc7UwJ41W4Eu2AinVAfXDMfrC5gXfm3b1TF+1UzsygBUgKBugnxnGP+/fFRyn+9y1mQ== - -it-drain@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-2.0.1.tgz#f50f6ce5cb8592a9d6337c9b5e780348877b152d" - integrity sha512-ESuHV6MLUNxuSy0vGZpKhSRjW0ixczN1FhbVy7eGJHjX6U2qiiXTyMvDc0z/w+nifOOwPyI5DT9Rc3o9IaGqEQ== - -it-filter@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-2.0.2.tgz#c849b3de4a12a2de3cc45be734ee55f69a0ed284" - integrity sha512-gocw1F3siqupegsOzZ78rAc9C+sYlQbI2af/TmzgdrR613MyEJHbvfwBf12XRekGG907kqXSOGKPlxzJa6XV1Q== - -it-first@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" - integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== - -it-first@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" - integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== - -it-glob@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" - integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== - dependencies: - "@types/minimatch" "^3.0.4" - minimatch "^3.0.4" - -it-last@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" - integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== - -it-map@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" - integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== - -it-parallel-batch@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-2.0.1.tgz#23eb07bbeb73521253d7c8a1566b53137103077c" - integrity sha512-tXh567/JfDGJ90Zi//H9HkL7kY27ARp0jf2vu2jUI6PUVBWfsoT+gC4eT41/b4+wkJXSGgT8ZHnivAOlMfcNjA== - dependencies: - it-batch "^2.0.0" - -it-peekable@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" - integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== - -it-take@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-take/-/it-take-2.0.1.tgz#f9e5ddf0b73a18ba00e62fb532d9d3cde3fe4ce6" - integrity sha512-DL7kpZNjuoeSTnB9dMAJ0Z3m2T29LRRAU+HIgkiQM+1jH3m8l9e/1xpWs8JHTlbKivbqSFrQMTc8KVcaQNmsaA== - -it-to-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" - integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== - dependencies: - buffer "^6.0.3" - fast-fifo "^1.0.0" - get-iterator "^1.0.2" - p-defer "^3.0.0" - p-fifo "^1.0.0" - readable-stream "^3.6.0" - jackspeak@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" @@ -9974,11 +8334,6 @@ jiti@^1.21.0: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== -jose@^4.14.4: - version "4.15.5" - resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.5.tgz#6475d0f467ecd3c630a1b5dadd2735a7288df706" - integrity sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg== - joycon@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -10131,16 +8486,6 @@ jsonwebtoken@^9.0.2: ms "^2.1.1" semver "^7.5.4" -jszip@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" - integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - setimmediate "^1.0.5" - junk@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" @@ -10172,13 +8517,6 @@ keccak@^3.0.0, keccak@^3.0.3: node-gyp-build "^4.2.0" readable-stream "^3.6.0" -keygrip@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" - integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== - dependencies: - tsscmp "1.0.6" - keyvaluestorage-interface@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" @@ -10310,13 +8648,6 @@ libsodium@^0.7.13: resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.13.tgz#230712ec0b7447c57b39489c48a4af01985fb393" integrity sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw== -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -10386,7 +8717,7 @@ lit-element@^4.0.0: "@lit/reactive-element" "^2.0.4" lit-html "^3.1.2" -lit-html@^2.7.0, lit-html@^2.8.0: +lit-html@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.8.0.tgz#96456a4bb4ee717b9a7d2f94562a16509d39bffa" integrity sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q== @@ -10400,24 +8731,6 @@ lit-html@^3.1.0, lit-html@^3.1.2: dependencies: "@types/trusted-types" "^2.0.2" -lit-siwe@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/lit-siwe/-/lit-siwe-1.1.8.tgz#6a393069012816d629c518bb8aa410f1e4a78bd7" - integrity sha512-gXI8GG0GAClw6G7T9p4p6Kn9ywDo8j2d90ShaYArJdsqqO9gwXfzxF84SMeY+bpsNqqQ3FahrhEwTCHd6w7wNw== - dependencies: - "@spruceid/siwe-parser" "1.1.3" - "@stablelib/random" "^1.0.1" - apg-js "^4.1.1" - -lit@2.7.6: - version "2.7.6" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.6.tgz#810007b876ed43e0c70124de91831921598b1665" - integrity sha512-1amFHA7t4VaaDe+vdQejSVBklwtH9svGoG6/dZi9JhxtJBBlqY5D1RV7iLUYY0trCqQc4NfhYYZilZiVHt7Hxg== - dependencies: - "@lit/reactive-element" "^1.6.0" - lit-element "^3.3.0" - lit-html "^2.7.0" - lit@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/lit/-/lit-2.8.0.tgz#4d838ae03059bf9cafa06e5c61d8acc0081e974e" @@ -10566,7 +8879,7 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -long@^5.0.0, long@^5.2.0: +long@^5.2.0: version "5.2.3" resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== @@ -11056,46 +9369,7 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multiaddr-to-uri@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz#65efe4b1f9de5f6b681aa42ff36a7c8db7625e58" - integrity sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA== - dependencies: - multiaddr "^10.0.0" - -multiaddr@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-10.0.1.tgz#0d15848871370860a4d266bb44d93b3dac5d90ef" - integrity sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg== - dependencies: - dns-over-http-resolver "^1.2.3" - err-code "^3.0.1" - is-ip "^3.1.0" - multiformats "^9.4.5" - uint8arrays "^3.0.0" - varint "^6.0.0" - -multiformats@^10.0.2: - version "10.0.3" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-10.0.3.tgz#d4147d01f9a31271c6fb5d24adf9b01f9e656bba" - integrity sha512-K2yGSmstS/oEmYiEIieHb53jJCaqp4ERPDQAYrm5sV3UUrVDZeshJQCK6GHAKyIGufU1vAcbS0PdAAZmC7Tzcw== - -multiformats@^11.0.0, multiformats@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" - integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== - -multiformats@^12.0.1: - version "12.1.3" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.3.tgz#cbf7a9861e11e74f8228b21376088cb43ba8754e" - integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== - -multiformats@^13.0.0, multiformats@^13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.0.tgz#5aa9d2175108a448fc3bdb54ba8a3d0b6cab3ac3" - integrity sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ== - -multiformats@^9.0.2, multiformats@^9.4.13, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.5.1, multiformats@^9.5.4, multiformats@^9.7.1: +multiformats@^9.4.2, multiformats@^9.5.4: version "9.9.0" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== @@ -11111,11 +9385,6 @@ multimatch@5.0.0, multimatch@^5.0.0: arrify "^2.0.1" minimatch "^3.0.4" -murmurhash3js-revisited@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" - integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== - mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -11145,16 +9414,11 @@ nanoid-dictionary@^5.0.0-beta.1: resolved "https://registry.yarnpkg.com/nanoid-dictionary/-/nanoid-dictionary-5.0.0-beta.1.tgz#f2a2aa05b04f7ac6a9327c62a96146e8aa1b025d" integrity sha512-xBkL9zzkNjzJ/UnmWyiOUDVX/COoi05eS0oU28RYKFFQhdnzO5dTOPbVZ/fCFgIOGr1zNinDHJ68mm/KQfcgcw== -nanoid@3, nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23, nanoid@^3.3.6, nanoid@^3.3.7: +nanoid@3, nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== -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== - napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" @@ -11165,11 +9429,6 @@ napi-wasm@^1.1.0: resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== -native-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" - integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== - negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -11180,11 +9439,6 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - node-abi@^3.3.0: version "3.57.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.57.0.tgz#d772cb899236c0aa46778d0d25256917cf15eb15" @@ -11224,7 +9478,7 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.8: +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -11706,19 +9960,6 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -p-defer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" - integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== - -p-fifo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" - integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== - dependencies: - fast-fifo "^1.0.0" - p-defer "^3.0.0" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -11830,16 +10071,6 @@ pacote@^17.0.5: ssri "^10.0.0" tar "^6.1.11" -pako@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - -pako@~1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -11847,11 +10078,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-duration@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" - integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== - parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -12309,7 +10535,7 @@ property-information@^5.0.0: dependencies: xtend "^4.0.0" -protobufjs@^6.10.2, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: +protobufjs@~6.11.2: version "6.11.4" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== @@ -12328,24 +10554,6 @@ protobufjs@^6.10.2, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: "@types/node" ">=13.7.0" long "^4.0.0" -protobufjs@^7.0.0: - version "7.2.6" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" - integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - protocols@^2.0.0, protocols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" @@ -12441,18 +10649,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -rabin-wasm@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" - integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== - dependencies: - "@assemblyscript/loader" "^0.9.4" - bl "^5.0.0" - debug "^4.3.1" - minimist "^1.2.5" - node-fetch "^2.6.1" - readable-stream "^3.6.0" - radix3@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" @@ -12571,13 +10767,6 @@ react-is@^18.0.0, react-is@^18.2.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-native-fetch-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" - integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== - dependencies: - p-defer "^3.0.0" - react-native-webview@^11.26.0: version "11.26.1" resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da" @@ -12814,13 +11003,6 @@ real-require@^0.1.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== -receptacle@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" - integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== - dependencies: - ms "^2.1.1" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -12932,11 +11114,6 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -retimer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" - integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== - retry@0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -13185,11 +11362,6 @@ sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -sha256-uint8array@^0.10.7: - version "0.10.7" - resolved "https://registry.yarnpkg.com/sha256-uint8array/-/sha256-uint8array-0.10.7.tgz#c751fc914f4227b26d996980562065fa4eadcf99" - integrity sha512-1Q6JQU4tX9NqsDGodej6pkrUVQVNapLZnvkwIhddH/JqzBZF1fSaxSWNY6sziXBE8aEa2twtGkXUrwzGeZCMpQ== - sha3@^2.1.1, sha3@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" @@ -13295,16 +11467,7 @@ simple-get@^4.0.0: once "^1.3.1" simple-concat "^1.0.0" -siwe-recap@0.0.2-alpha.0: - version "0.0.2-alpha.0" - resolved "https://registry.yarnpkg.com/siwe-recap/-/siwe-recap-0.0.2-alpha.0.tgz#75a0902c10a8ba5b4471f40e4eafb0afb2f8db59" - integrity sha512-xqFUnvrACWW/Q4s5HQ02avg8IyH2RcgkUzfvN4scYaaHErotLVtTGDZkSS0sn/oNK4MXRt83lTqredsvXgt8iA== - dependencies: - canonicalize "^2.0.0" - multiformats "^11.0.2" - siwe "^2.1.4" - -siwe@^2.0.5, siwe@^2.1.4: +siwe@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/siwe/-/siwe-2.2.0.tgz#dc025007acb210179396f5f099e618f9d941cfd2" integrity sha512-P8It3ztpGJM4pum3larVVXpR6KeP7G1wnul4EEmuT3LSPVcab+kkX9reoFcErHRPcBt+eVyrEJkAYD50vVRJ0A== @@ -13419,11 +11582,6 @@ space-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== -sparse-array@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" - integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== - spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" @@ -13527,13 +11685,6 @@ stream-shift@^1.0.2: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== -stream-to-it@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" - integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== - dependencies: - get-iterator "^1.0.2" - strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -13645,11 +11796,6 @@ strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" -sturdy-websocket@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.2.1.tgz#20a58fd53372ef96eaa08f3c61c91a10b07c7c05" - integrity sha512-NnzSOEKyv4I83qbuKw9ROtJrrT6Z/Xt7I0HiP/e6H6GnpeTDvzwGIGeJ8slai+VwODSHQDooW2CAilJwT9SpRg== - style-value-types@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.0.0.tgz#76c35f0e579843d523187989da866729411fc8ad" @@ -13720,11 +11866,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -symbol-observable@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" - integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== - symbol-observable@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" @@ -13876,13 +12017,6 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -timeout-abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" - integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== - dependencies: - retimer "^3.0.0" - tiny-secp256k1@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" @@ -13995,11 +12129,6 @@ tslib@1.14.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - tslib@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" @@ -14010,11 +12139,6 @@ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tsscmp@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== - tsup@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/tsup/-/tsup-8.0.2.tgz#c63192a08386515103e2c44ac5a23bdff75c5fa1" @@ -14060,11 +12184,6 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tweetnacl-util@^0.13.3: - version "0.13.5" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.13.5.tgz#e39cd5d99709ee7125a18b03895b45a1299e475f" - integrity sha512-/4Q3hpPFAnbBjNLLOmdTdyvInBfZcQBTWy+LWbypmWxAKwOpSQOyyv4ZZts4CoiYtS8Skyix5CkOWytf7XNK9A== - tweetnacl-util@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" @@ -14108,24 +12227,12 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" - integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typeforce@^1.11.3, typeforce@^1.11.5: +typeforce@^1.11.5: version "1.18.0" resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== @@ -14151,7 +12258,7 @@ typeorm@^0.3.19: uuid "^9.0.0" yargs "^17.6.2" -"typescript@>=3 < 6", typescript@^5.1, typescript@^5.3.3: +"typescript@>=3 < 6", typescript@^5.3.3: version "5.4.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== @@ -14173,13 +12280,6 @@ uid-safe@~2.1.5: dependencies: random-bytes "~1.0.0" -uint8arraylist@^2.3.3: - version "2.4.8" - resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" - integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== - dependencies: - uint8arrays "^5.0.1" - uint8arrays@^3.0.0, uint8arrays@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" @@ -14187,20 +12287,6 @@ uint8arrays@^3.0.0, uint8arrays@^3.1.0: dependencies: multiformats "^9.4.2" -uint8arrays@^4.0.2, uint8arrays@^4.0.3: - version "4.0.10" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" - integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== - dependencies: - multiformats "^12.0.1" - -uint8arrays@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.0.3.tgz#92b894d9c4269ba97c51544d6e1f279fe6f80d1f" - integrity sha512-6LBuKji28kHjgPJMkQ6GDaBb1lRwIhyOYq6pDGwYMoDPfImE9SkuYENVmR0yu9yGgs2clHUSY9fKDukR+AXfqQ== - dependencies: - multiformats "^13.0.0" - uncrypto@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" @@ -14346,13 +12432,6 @@ usehooks-ts@^2.15.1: dependencies: lodash.debounce "^4.0.8" -utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== - dependencies: - node-gyp-build "^4.3.0" - utf-8-validate@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-6.0.3.tgz#7d8c936d854e86b24d1d655f138ee27d2636d777" @@ -14423,14 +12502,6 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" -valtio@1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.0.tgz#c029dcd17a0f99d2fbec933721fe64cfd32a31ed" - integrity sha512-65Yd0yU5qs86b5lN1eu/nzcTgQ9/6YnD6iO+DDaDbQLn1Zv2w12Gwk43WkPlUBxk5wL/6cD5YMFf7kj6HZ1Kpg== - dependencies: - proxy-compare "2.5.1" - use-sync-external-store "1.2.0" - valtio@1.11.2: version "1.11.2" resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" @@ -14449,51 +12520,11 @@ value-or-promise@^1.0.12: resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== - -varuint-bitcoin@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" - integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== - dependencies: - safe-buffer "^5.1.1" - vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -viem@2.8.6: - version "2.8.6" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.8.6.tgz#7467a0f113b4b13dd53fde4797aec1e686672f03" - integrity sha512-LqxLOSFtXfbC3tsiZ8Km8jKR4ktTOLfigL2dR9IN28He2+QrNhYvvwGPz3P4hbfU12Wvuxo6mWGZ2L1lpNtvrA== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "1.0.0" - isows "1.0.3" - ws "8.13.0" - -viem@2.x, viem@^2.7.11: - version "2.9.16" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.16.tgz#2127871db1908a70798eddb820024b5f0ddc9152" - integrity sha512-FQRfN4G7uKEUs5DYvVrH/kZmTkwcSDpTBxnadpwG1EEP8nHm57WDpSaGN7PwSPVgJ6rMo5MENT5hgnqaNTlb2w== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "1.0.0" - isows "1.0.3" - ws "8.13.0" - viem@^1.0.0, viem@^1.1.4: version "1.21.4" resolved "https://registry.yarnpkg.com/viem/-/viem-1.21.4.tgz#883760e9222540a5a7e0339809202b45fe6a842d" @@ -14508,6 +12539,20 @@ viem@^1.0.0, viem@^1.1.4: isows "1.0.3" ws "8.13.0" +viem@^2.7.11: + version "2.9.16" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.16.tgz#2127871db1908a70798eddb820024b5f0ddc9152" + integrity sha512-FQRfN4G7uKEUs5DYvVrH/kZmTkwcSDpTBxnadpwG1EEP8nHm57WDpSaGN7PwSPVgJ6rMo5MENT5hgnqaNTlb2w== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "1.0.0" + isows "1.0.3" + ws "8.13.0" + vite@^5.2.0: version "5.2.8" resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.8.tgz#a99e09939f1a502992381395ce93efa40a2844aa" @@ -14552,11 +12597,6 @@ web-vitals@^2.1.4: resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== -web-vitals@^3.0.4: - version "3.5.2" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-3.5.2.tgz#5bb58461bbc173c3f00c2ddff8bfe6e680999ca9" - integrity sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg== - webextension-polyfill-ts@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/webextension-polyfill-ts/-/webextension-polyfill-ts-0.25.0.tgz#fff041626365dbd0e29c40b197e989a55ec221ca" @@ -14584,18 +12624,6 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -websocket@^1.0.34: - version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" - integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - whatwg-mimetype@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" @@ -14780,12 +12808,7 @@ ws@8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -ws@8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== - -ws@^7, ws@^7.5.1: +ws@^7.5.1: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== @@ -14808,14 +12831,6 @@ xss@^1.0.8: commander "^2.20.3" cssfilter "0.0.10" -xstream@^11.14.0: - version "11.14.0" - resolved "https://registry.yarnpkg.com/xstream/-/xstream-11.14.0.tgz#2c071d26b18310523b6877e86b4e54df068a9ae5" - integrity sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw== - dependencies: - globalthis "^1.0.1" - symbol-observable "^2.0.3" - xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -14831,11 +12846,6 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== - yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -14934,7 +12944,7 @@ zen-observable@0.8.15: resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== -zod@3.22.4, zod@^3.22.4: +zod@3.22.4: version "3.22.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== @@ -14945,10 +12955,3 @@ zustand@4.4.1: integrity sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw== dependencies: use-sync-external-store "1.2.0" - -zustand@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848" - integrity sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g== - dependencies: - use-sync-external-store "1.2.0" From 748ca507da13c719784b36e10e9eec18f277dcfc Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Tue, 23 Apr 2024 09:43:52 -0400 Subject: [PATCH 158/251] fix: use correct output directory for build --- build-webapp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-webapp.sh b/build-webapp.sh index a77ec641..d350c0dc 100755 --- a/build-webapp.sh +++ b/build-webapp.sh @@ -1,7 +1,7 @@ #!/bin/bash PKG_DIR="./packages/frontend" -OUTPUT_DIR="${PKG_DIR}/build" +OUTPUT_DIR="${PKG_DIR}/dist" DEST_DIR=${1:-/data} if [[ -d "$DEST_DIR" ]]; then From c395be82b5f038ea9ab010fafa7adbfbdf77f9bd Mon Sep 17 00:00:00 2001 From: Gilbert Date: Sun, 21 Apr 2024 18:02:42 -0500 Subject: [PATCH 159/251] Signup with sdk --- packages/backend/package.json | 2 + packages/backend/src/index.ts | 9 +- packages/backend/src/routes/auth.ts | 8 +- packages/backend/src/server.ts | 51 +- packages/backend/src/utils.ts | 18 +- packages/frontend/.env.example | 2 + packages/frontend/package.json | 15 +- packages/frontend/public/dot-border-line.svg | 3 + packages/frontend/reload-dev.sh | 9 + packages/frontend/src/App.tsx | 34 +- .../frontend/src/components/CloudyFlow.tsx | 218 ++ .../shared/CustomIcon/AppleIcon.tsx | 29 + .../CustomIcon/ArrowRightCircleFilledIcon.tsx | 2 +- .../shared/CustomIcon/GoogleIcon.tsx | 38 + .../components/shared/CustomIcon/KeyIcon.tsx | 80 + .../components/shared/DotBorder/DotBorder.tsx | 19 + .../src/components/shared/DotBorder/index.ts | 1 + .../InlineNotification/InlineNotification.tsx | 3 +- .../src/components/shared/Sidebar/Sidebar.tsx | 7 +- .../src/context/Web3ModalProvider.tsx | 127 - .../frontend/src/context/Web3Provider.tsx | 36 + packages/frontend/src/index.css | 2 + packages/frontend/src/index.tsx | 5 +- packages/frontend/src/layouts/global.css | 6 + packages/frontend/src/pages/AuthPage.tsx | 28 + packages/frontend/src/pages/Login.tsx | 18 - packages/frontend/src/pages/Snow.css | 25 - packages/frontend/src/pages/SnowballLogin.tsx | 17 - .../frontend/src/pages/auth/CreatePasskey.tsx | 83 + packages/frontend/src/pages/auth/Done.tsx | 41 + packages/frontend/src/pages/auth/Login.tsx | 194 ++ packages/frontend/src/pages/auth/SignUp.tsx | 187 ++ .../frontend/src/pages/auth/SnowballAuth.tsx | 52 + packages/frontend/src/utils/siwe.ts | 37 + packages/frontend/src/utils/snowball.ts | 19 - packages/frontend/src/utils/use-snowball.ts | 32 +- packages/frontend/tailwind.config.js | 12 +- yarn.lock | 2099 ++++++++++++++++- 38 files changed, 3240 insertions(+), 328 deletions(-) create mode 100644 packages/frontend/public/dot-border-line.svg create mode 100755 packages/frontend/reload-dev.sh create mode 100644 packages/frontend/src/components/CloudyFlow.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/GoogleIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx create mode 100644 packages/frontend/src/components/shared/DotBorder/DotBorder.tsx create mode 100644 packages/frontend/src/components/shared/DotBorder/index.ts delete mode 100644 packages/frontend/src/context/Web3ModalProvider.tsx create mode 100644 packages/frontend/src/context/Web3Provider.tsx create mode 100644 packages/frontend/src/layouts/global.css create mode 100644 packages/frontend/src/pages/AuthPage.tsx delete mode 100644 packages/frontend/src/pages/Login.tsx delete mode 100644 packages/frontend/src/pages/Snow.css delete mode 100644 packages/frontend/src/pages/SnowballLogin.tsx create mode 100644 packages/frontend/src/pages/auth/CreatePasskey.tsx create mode 100644 packages/frontend/src/pages/auth/Done.tsx create mode 100644 packages/frontend/src/pages/auth/Login.tsx create mode 100644 packages/frontend/src/pages/auth/SignUp.tsx create mode 100644 packages/frontend/src/pages/auth/SnowballAuth.tsx create mode 100644 packages/frontend/src/utils/siwe.ts delete mode 100644 packages/frontend/src/utils/snowball.ts diff --git a/packages/backend/package.json b/packages/backend/package.json index be7f3372..9aace9c7 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -13,6 +13,7 @@ "@types/semver": "^7.5.8", "apollo-server-core": "^3.13.0", "apollo-server-express": "^3.13.0", + "cookie-session": "^2.1.0", "cors": "^2.8.5", "debug": "^4.3.1", "express": "^4.18.2", @@ -45,6 +46,7 @@ "test:db:delete": "DEBUG=snowball:* ts-node ./test/delete-db.ts" }, "devDependencies": { + "@types/cookie-session": "^2.0.49", "@types/express-session": "^1.17.10", "@types/fs-extra": "^11.0.4", "better-sqlite3": "^9.2.2", diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 30785d2f..c74cb6e7 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -9,8 +9,6 @@ import { Database } from './database'; import { createAndStartServer } from './server'; import { createResolvers } from './resolvers'; import { getConfig } from './utils'; -import { Config } from './config'; -import { DEFAULT_CONFIG_FILE_PATH } from './constants'; import { Service } from './service'; import { Registry } from './registry'; @@ -18,13 +16,12 @@ const log = debug('snowball:server'); const OAUTH_CLIENT_TYPE = 'oauth-app'; export const main = async (): Promise => { - // TODO: get config path using cli - const { server, database, gitHub, registryConfig, misc } = await getConfig(DEFAULT_CONFIG_FILE_PATH); + const { server, database, gitHub, registryConfig, misc } = await getConfig(); const app = new OAuthApp({ clientType: OAUTH_CLIENT_TYPE, clientId: gitHub.oAuth.clientId, - clientSecret: gitHub.oAuth.clientSecret + clientSecret: gitHub.oAuth.clientSecret, }); const db = new Database(database, misc); @@ -35,7 +32,7 @@ export const main = async (): Promise => { { gitHubConfig: gitHub, registryConfig }, db, app, - registry + registry, ); const typeDefs = fs diff --git a/packages/backend/src/routes/auth.ts b/packages/backend/src/routes/auth.ts index ab326f18..4d2da019 100644 --- a/packages/backend/src/routes/auth.ts +++ b/packages/backend/src/routes/auth.ts @@ -1,16 +1,12 @@ import { Router } from 'express'; -import { SiweMessage, generateNonce } from 'siwe'; +import { SiweMessage } from 'siwe'; const router = Router(); -router.get('/nonce', async (_, res) => { - res.send(generateNonce()); -}); - router.post('/validate', async (req, res) => { const { message, signature } = req.body; const { success, data } = await new SiweMessage(message).verify({ - signature + signature, }); if (success) { diff --git a/packages/backend/src/server.ts b/packages/backend/src/server.ts index 7a4df019..f89aa979 100644 --- a/packages/backend/src/server.ts +++ b/packages/backend/src/server.ts @@ -6,9 +6,9 @@ import { createServer } from 'http'; import { ApolloServerPluginDrainHttpServer, ApolloServerPluginLandingPageLocalDefault, - AuthenticationError + AuthenticationError, } from 'apollo-server-core'; -import session from 'express-session'; +import cookieSession from 'cookie-session'; import { TypeSource } from '@graphql-tools/utils'; import { makeExecutableSchema } from '@graphql-tools/schema'; @@ -32,7 +32,7 @@ export const createAndStartServer = async ( serverConfig: ServerConfig, typeDefs: TypeSource, resolvers: any, - service: Service + service: Service, ): Promise => { const { host, port, gqlPath = DEFAULT_GQL_PATH } = serverConfig; const { appOriginUrl, secret, domain, trustProxy } = serverConfig.session; @@ -45,7 +45,7 @@ export const createAndStartServer = async ( // Create the schema const schema = makeExecutableSchema({ typeDefs, - resolvers + resolvers, }); const server = new ApolloServer({ @@ -68,32 +68,18 @@ export const createAndStartServer = async ( plugins: [ // Proper shutdown for the HTTP server ApolloServerPluginDrainHttpServer({ httpServer }), - ApolloServerPluginLandingPageLocalDefault({ embed: true }) - ] + ApolloServerPluginLandingPageLocalDefault({ embed: true }), + ], }); await server.start(); - app.use(cors({ - origin: appOriginUrl, - credentials: true - })); - - const sessionOptions: session.SessionOptions = { - secret: secret, - resave: false, - saveUninitialized: true, - cookie: { - secure: new URL(appOriginUrl).protocol === 'https:', - // TODO: Set cookie maxAge and handle cookie expiry in frontend - // maxAge: SESSION_COOKIE_MAX_AGE, - sameSite: new URL(appOriginUrl).protocol === 'https:' ? 'none' : 'lax' - } - }; - - if (domain) { - sessionOptions.cookie!.domain = domain; - } + app.use( + cors({ + origin: appOriginUrl, + credentials: true, + }), + ); if (trustProxy) { // trust first proxy @@ -101,7 +87,14 @@ export const createAndStartServer = async ( } app.use( - session(sessionOptions) + cookieSession({ + secret: secret, + secure: new URL(appOriginUrl).protocol === 'https:', + // 23 hours (less than 24 hours to avoid sessionSigs expiration issues) + maxAge: 23 * 60 * 60 * 1000, + sameSite: new URL(appOriginUrl).protocol === 'https:' ? 'none' : 'lax', + domain: domain || undefined, + }), ); server.applyMiddleware({ @@ -109,8 +102,8 @@ export const createAndStartServer = async ( path: gqlPath, cors: { origin: [appOriginUrl], - credentials: true - } + credentials: true, + }, }); app.use(express.json()); diff --git a/packages/backend/src/utils.ts b/packages/backend/src/utils.ts index 8d2a8e8b..eafc698b 100644 --- a/packages/backend/src/utils.ts +++ b/packages/backend/src/utils.ts @@ -3,11 +3,18 @@ import path from 'path'; import toml from 'toml'; import debug from 'debug'; import { DataSource, DeepPartial, EntityTarget, ObjectLiteral } from 'typeorm'; +import { Config } from './config'; +import { DEFAULT_CONFIG_FILE_PATH } from './constants'; const log = debug('snowball:utils'); -export const getConfig = async ( - configFile: string +export async function getConfig() { + // TODO: get config path using cli + return await _getConfig(DEFAULT_CONFIG_FILE_PATH); +} + +const _getConfig = async ( + configFile: string, ): Promise => { const configFilePath = path.resolve(configFile); const fileExists = await fs.pathExists(configFilePath); @@ -41,7 +48,7 @@ export const loadAndSaveData = async ( entityType: EntityTarget, dataSource: DataSource, entities: any, - relations?: any | undefined + relations?: any | undefined, ): Promise => { const entityRepository = dataSource.getRepository(entityType); @@ -56,7 +63,7 @@ export const loadAndSaveData = async ( entity = { ...entity, - [field]: relations[field][entityData[valueIndex]] + [field]: relations[field][entityData[valueIndex]], }; } } @@ -67,4 +74,5 @@ export const loadAndSaveData = async ( return savedEntity; }; -export const sleep = async (ms: number): Promise => new Promise(resolve => setTimeout(resolve, ms)); +export const sleep = async (ms: number): Promise => + new Promise((resolve) => setTimeout(resolve, ms)); diff --git a/packages/frontend/.env.example b/packages/frontend/.env.example index c1424c02..e733834a 100644 --- a/packages/frontend/.env.example +++ b/packages/frontend/.env.example @@ -8,4 +8,6 @@ VITE_WALLET_CONNECT_ID= VITE_LIT_RELAY_API_KEY= +VITE_ALCHEMY_API_KEY= + LOCAL_SNOWBALL_SDK_DIR= diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 65eb6fec..84bca501 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -21,15 +21,18 @@ "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-toast": "^1.1.5", "@radix-ui/react-tooltip": "^1.0.7", + "@snowballtools/auth": "0.1.0", + "@snowballtools/auth-lit": "0.1.0", + "@snowballtools/js-sdk": "0.1.0", + "@snowballtools/link-lit-alchemy-light": "0.1.0", "@snowballtools/material-tailwind-react-fork": "^2.1.10", + "@snowballtools/smartwallet-alchemy-light": "0.1.0", + "@snowballtools/types": "0.1.0", + "@snowballtools/utils": "0.1.0", "@tanstack/react-query": "^5.22.2", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/node": "^16.18.68", - "@types/react": "^18.2.77", - "@types/react-dom": "^18.2.17", "@walletconnect/ethereum-provider": "^2.12.2", "@web3modal/siwe": "^4.0.5", "@web3modal/wagmi": "^4.0.5", @@ -57,14 +60,18 @@ "siwe": "^2.1.4", "tailwind-variants": "^0.2.0", "usehooks-ts": "^2.15.1", + "uuid": "^9.0.1", "viem": "^2.7.11", "wagmi": "^2.5.7", "web-vitals": "^2.1.4" }, "devDependencies": { + "@types/jest": "^27.5.2", "@types/luxon": "^3.3.7", + "@types/node": "^16.18.68", "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", + "@types/uuid": "^9.0.8", "@vitejs/plugin-react": "^4.2.1", "autoprefixer": "^10.4.19", "postcss": "^8.4.38", diff --git a/packages/frontend/public/dot-border-line.svg b/packages/frontend/public/dot-border-line.svg new file mode 100644 index 00000000..a028e284 --- /dev/null +++ b/packages/frontend/public/dot-border-line.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/frontend/reload-dev.sh b/packages/frontend/reload-dev.sh new file mode 100755 index 00000000..95bfa440 --- /dev/null +++ b/packages/frontend/reload-dev.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +(cd /Users/rabbit-m2/p/snowball/snowball-ts-sdk && NO_CLEAN=1 turbo build) + +(cd ../.. && ./scripts/yarn-file-for-local-dev.sh) + +rm -rf node_modules/.vite + +yarn dev diff --git a/packages/frontend/src/App.tsx b/packages/frontend/src/App.tsx index ed427bcb..50533798 100644 --- a/packages/frontend/src/App.tsx +++ b/packages/frontend/src/App.tsx @@ -8,8 +8,10 @@ import { } from './pages/org-slug/projects/routes'; import ProjectSearchLayout from './layouts/ProjectSearch'; import Index from './pages'; -import Login from './pages/Login'; +import AuthPage from './pages/AuthPage'; import { DashboardLayout } from './pages/org-slug/layout'; +import { useEffect } from 'react'; +import Web3Provider from 'context/Web3Provider'; const router = createBrowserRouter([ { @@ -45,12 +47,38 @@ const router = createBrowserRouter([ }, { path: '/login', - element: , + element: , + }, + { + path: '/signup', + element: , }, ]); function App() { - return ; + // Hacky way of checking session + // TODO: Handle redirect backs + useEffect(() => { + fetch(`${import.meta.env.VITE_SERVER_URL}/auth/session`, { + credentials: 'include', + }).then((res) => { + if (res.status !== 200) { + localStorage.clear(); + if ( + window.location.pathname !== '/login' && + window.location.pathname !== '/signup' + ) { + window.location.pathname = '/login'; + } + } + }); + }, []); + + return ( + + ; + + ); } export default App; diff --git a/packages/frontend/src/components/CloudyFlow.tsx b/packages/frontend/src/components/CloudyFlow.tsx new file mode 100644 index 00000000..fb34990a --- /dev/null +++ b/packages/frontend/src/components/CloudyFlow.tsx @@ -0,0 +1,218 @@ +import React from 'react'; +type Props = React.PropsWithChildren<{ + className?: string; + snowZIndex?: number; +}>; + +export const CloudyFlow = ({ className, children, snowZIndex }: Props) => { + return ( +
    + {children} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx new file mode 100644 index 00000000..edbcf430 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/AppleIcon.tsx @@ -0,0 +1,29 @@ +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const AppleIcon: React.FC = (props) => { + return ( + + + + + + + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx index 842f2f3b..3782a9d2 100644 --- a/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/ArrowRightCircleFilledIcon.tsx @@ -3,11 +3,11 @@ import { CustomIcon, CustomIconProps } from './CustomIcon'; export const ArrowRightCircleFilledIcon = (props: CustomIconProps) => { return ( = (props) => { + return ( + + + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx new file mode 100644 index 00000000..eceb71db --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/KeyIcon.tsx @@ -0,0 +1,80 @@ +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const KeyIcon = (props: CustomIconProps) => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/DotBorder/DotBorder.tsx b/packages/frontend/src/components/shared/DotBorder/DotBorder.tsx new file mode 100644 index 00000000..cb8922cb --- /dev/null +++ b/packages/frontend/src/components/shared/DotBorder/DotBorder.tsx @@ -0,0 +1,19 @@ +import { ComponentPropsWithoutRef } from 'react'; +import { cn } from 'utils/classnames'; + +export interface DotBorderProps extends ComponentPropsWithoutRef<'div'> {} + +export const DotBorder = ({ className, ...props }: DotBorderProps) => { + const imageSrc = '/dot-border-line.svg'; + + return ( +
    +
    +
    + ); +}; diff --git a/packages/frontend/src/components/shared/DotBorder/index.ts b/packages/frontend/src/components/shared/DotBorder/index.ts new file mode 100644 index 00000000..fdef3775 --- /dev/null +++ b/packages/frontend/src/components/shared/DotBorder/index.ts @@ -0,0 +1 @@ +export * from './DotBorder'; diff --git a/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx b/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx index f24a4cfc..f331d342 100644 --- a/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx +++ b/packages/frontend/src/components/shared/InlineNotification/InlineNotification.tsx @@ -52,7 +52,8 @@ export const InlineNotification = ({ // Render custom icon or default icon const renderIcon = useCallback(() => { - if (!icon) return ; + if (!icon) + return ; return cloneIcon(icon, { className: iconClass() }); }, [icon]); diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index 63c47f8a..d7dc4aaa 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -85,8 +85,13 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { )); }, [orgSlug]); - const handleLogOut = useCallback(() => { + const handleLogOut = useCallback(async () => { + await fetch(`${import.meta.env.VITE_SERVER_URL}/auth/logout`, { + method: 'POST', + credentials: 'include', + }); disconnect(); + localStorage.clear(); navigate('/login'); }, [disconnect, navigate]); diff --git a/packages/frontend/src/context/Web3ModalProvider.tsx b/packages/frontend/src/context/Web3ModalProvider.tsx deleted file mode 100644 index 51512ca0..00000000 --- a/packages/frontend/src/context/Web3ModalProvider.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import { ReactNode } from 'react'; -import { SiweMessage } from 'siwe'; -import { WagmiProvider } from 'wagmi'; -import { arbitrum, mainnet } from 'wagmi/chains'; -import axios from 'axios'; - -import { createWeb3Modal } from '@web3modal/wagmi/react'; -import { defaultWagmiConfig } from '@web3modal/wagmi/react/config'; -import { createSIWEConfig } from '@web3modal/siwe'; -import type { - SIWECreateMessageArgs, - SIWEVerifyMessageArgs, -} from '@web3modal/siwe'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; - -const queryClient = new QueryClient(); - -const axiosInstance = axios.create({ - baseURL: import.meta.env.VITE_SERVER_URL, - headers: { - 'Content-Type': 'application/json', - 'Access-Control-Allow-Origin': '*', - }, - withCredentials: true, -}); - -const metadata = { - name: 'Snowball Tools', - description: 'Snowball Tools Dashboard', - url: window.location.origin, - icons: [ - 'https://raw.githubusercontent.com/snowball-tools/mediakit/main/assets/logo.svg', - ], -}; - -const chains = [mainnet, arbitrum] as const; -const config = defaultWagmiConfig({ - chains, - projectId: import.meta.env.VITE_WALLET_CONNECT_ID, - metadata, -}); - -const siweConfig = createSIWEConfig({ - createMessage: ({ nonce, address, chainId }: SIWECreateMessageArgs) => - new SiweMessage({ - version: '1', - domain: window.location.host, - uri: window.location.origin, - address, - chainId, - nonce, - // Human-readable ASCII assertion that the user will sign, and it must not contain `\n`. - statement: 'Sign in With Ethereum.', - }).prepareMessage(), - getNonce: async () => { - const nonce = (await axiosInstance.get('/auth/nonce')).data; - if (!nonce) { - throw new Error('Failed to get nonce!'); - } - - return nonce; - }, - getSession: async () => { - try { - const session = (await axiosInstance.get('/auth/session')).data; - const { address, chainId } = session; - - return { address, chainId }; - } catch (err) { - if (window.location.pathname !== '/login') { - window.location.href = '/login'; - } - - throw new Error('Failed to get session!'); - } - }, - verifyMessage: async ({ message, signature }: SIWEVerifyMessageArgs) => { - try { - const { success } = ( - await axiosInstance.post('/auth/validate', { - message, - signature, - }) - ).data; - - return success; - } catch (error) { - return false; - } - }, - signOut: async () => { - try { - const { success } = (await axiosInstance.post('/auth/logout')).data; - return success; - } catch (error) { - return false; - } - }, - onSignOut: () => { - window.location.href = '/login'; - }, - onSignIn: () => { - window.location.href = '/'; - }, -}); - -if (!import.meta.env.VITE_WALLET_CONNECT_ID) { - throw new Error('Error: REACT_APP_WALLET_CONNECT_ID env config is not set'); -} - -createWeb3Modal({ - siweConfig, - wagmiConfig: config, - projectId: import.meta.env.VITE_WALLET_CONNECT_ID, -}); - -export default function Web3ModalProvider({ - children, -}: { - children: ReactNode; -}) { - return ( - - {children} - - ); -} diff --git a/packages/frontend/src/context/Web3Provider.tsx b/packages/frontend/src/context/Web3Provider.tsx new file mode 100644 index 00000000..bfe7eed8 --- /dev/null +++ b/packages/frontend/src/context/Web3Provider.tsx @@ -0,0 +1,36 @@ +import { ReactNode } from 'react'; +import { WagmiProvider } from 'wagmi'; +import { arbitrum, mainnet } from 'wagmi/chains'; + +import { defaultWagmiConfig } from '@web3modal/wagmi/react/config'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; + +const queryClient = new QueryClient(); + +const metadata = { + name: 'Snowball Tools', + description: 'Snowball Tools Dashboard', + url: window.location.origin, + icons: [ + 'https://raw.githubusercontent.com/snowball-tools/mediakit/main/assets/logo.svg', + ], +}; + +const chains = [mainnet, arbitrum] as const; +const config = defaultWagmiConfig({ + chains, + projectId: import.meta.env.VITE_WALLET_CONNECT_ID, + metadata, +}); + +if (!import.meta.env.VITE_WALLET_CONNECT_ID) { + throw new Error('Error: REACT_APP_WALLET_CONNECT_ID env config is not set'); +} + +export default function Web3Provider({ children }: { children: ReactNode }) { + return ( + + {children} + + ); +} diff --git a/packages/frontend/src/index.css b/packages/frontend/src/index.css index 541fb61e..d2bf535e 100644 --- a/packages/frontend/src/index.css +++ b/packages/frontend/src/index.css @@ -1,7 +1,9 @@ +@import 'layouts/global.css'; @tailwind base; @tailwind components; @tailwind utilities; + @layer base { @font-face { font-family: 'Inter Display'; diff --git a/packages/frontend/src/index.tsx b/packages/frontend/src/index.tsx index 8dcaa1ce..43d476b5 100644 --- a/packages/frontend/src/index.tsx +++ b/packages/frontend/src/index.tsx @@ -13,7 +13,6 @@ import reportWebVitals from './reportWebVitals'; import { GQLClientProvider } from './context/GQLClientContext'; import { SERVER_GQL_PATH } from './constants'; import { Toaster } from 'components/shared/Toast'; -import Web3ModalProvider from './context/Web3ModalProvider'; const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement, ); @@ -30,9 +29,7 @@ root.render( - - - + diff --git a/packages/frontend/src/layouts/global.css b/packages/frontend/src/layouts/global.css new file mode 100644 index 00000000..1075299b --- /dev/null +++ b/packages/frontend/src/layouts/global.css @@ -0,0 +1,6 @@ +.flex-center { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} diff --git a/packages/frontend/src/pages/AuthPage.tsx b/packages/frontend/src/pages/AuthPage.tsx new file mode 100644 index 00000000..68bb3a4b --- /dev/null +++ b/packages/frontend/src/pages/AuthPage.tsx @@ -0,0 +1,28 @@ +import { CloudyFlow } from 'components/CloudyFlow'; +import { SnowballAuth } from './auth/SnowballAuth'; + +const AuthPage = () => { + return ( + +
    +
    + snowball logo +
    + Snowball +
    +
    +
    +
    +
    + +
    +
    +
    + ); +}; + +export default AuthPage; diff --git a/packages/frontend/src/pages/Login.tsx b/packages/frontend/src/pages/Login.tsx deleted file mode 100644 index 69faf41b..00000000 --- a/packages/frontend/src/pages/Login.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import './Snow.css'; - -const Login = () => { - return ( -
    -
    - snowball logo - -
    -
    - ); -}; - -export default Login; diff --git a/packages/frontend/src/pages/Snow.css b/packages/frontend/src/pages/Snow.css deleted file mode 100644 index 8359e58d..00000000 --- a/packages/frontend/src/pages/Snow.css +++ /dev/null @@ -1,25 +0,0 @@ -.snow { - width: 100%; - height: 100vh; - border: 1px solid rgba(255, 255, 255, 0.1); - background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' style='enable-background:new 0 0 50 50%3B' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.st1%7Bopacity:0.3%3Bfill:%23FFFFFF%3B%7D.st3%7Bopacity:0.1%3Bfill:%23FFFFFF%3B%7D%3C/style%3E%3Ccircle class='st1' cx='5' cy='8' r='1'/%3E%3Ccircle class='st1' cx='38' cy='3' r='1'/%3E%3Ccircle class='st1' cx='12' cy='4' r='1'/%3E%3Ccircle class='st1' cx='16' cy='16' r='1'/%3E%3Ccircle class='st1' cx='47' cy='46' r='1'/%3E%3Ccircle class='st1' cx='32' cy='10' r='1'/%3E%3Ccircle class='st1' cx='3' cy='46' r='1'/%3E%3Ccircle class='st1' cx='45' cy='13' r='1'/%3E%3Ccircle class='st1' cx='10' cy='28' r='1'/%3E%3Ccircle class='st1' cx='22' cy='35' r='1'/%3E%3Ccircle class='st1' cx='3' cy='21' r='1'/%3E%3Ccircle class='st1' cx='26' cy='20' r='1'/%3E%3Ccircle class='st1' cx='30' cy='45' r='1'/%3E%3Ccircle class='st1' cx='15' cy='45' r='1'/%3E%3Ccircle class='st1' cx='34' cy='36' r='1'/%3E%3Ccircle class='st1' cx='41' cy='32' r='1'/%3E%3C/svg%3E"); - background-position: 0px 0px; - animation: animatedBackground 230s linear infinite; -} - -.snow div { - width: 100%; - height: 100%; - background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' style='enable-background:new 0 0 50 50%3B' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.st1%7Bopacity:0.7%3Bfill:%23FFFFFF%3B%7D.st3%7Bopacity:0.1%3Bfill:%23FFFFFF%3B%7D%3C/style%3E%3Ccircle class='st3' cx='4' cy='14' r='1'/%3E%3Ccircle class='st3' cx='43' cy='3' r='1'/%3E%3Ccircle class='st3' cx='31' cy='30' r='2'/%3E%3Ccircle class='st3' cx='19' cy='23' r='1'/%3E%3Ccircle class='st3' cx='37' cy='22' r='1'/%3E%3Ccircle class='st3' cx='43' cy='16' r='1'/%3E%3Ccircle class='st3' cx='8' cy='45' r='1'/%3E%3Ccircle class='st3' cx='29' cy='39' r='1'/%3E%3Ccircle class='st3' cx='13' cy='37' r='1'/%3E%3Ccircle class='st3' cx='47' cy='32' r='1'/%3E%3Ccircle class='st3' cx='15' cy='4' r='2'/%3E%3Ccircle class='st3' cx='9' cy='27' r='1'/%3E%3Ccircle class='st3' cx='30' cy='9' r='1'/%3E%3Ccircle class='st3' cx='25' cy='15' r='1'/%3E%3Ccircle class='st3' cx='21' cy='45' r='2'/%3E%3Ccircle class='st3' cx='42' cy='45' r='1'/%3E%3C/svg%3E"); - background-position: 0px 0px; - animation: animatedBackground 260s linear infinite; -} - -@keyframes animatedBackground { - 0% { - background-position: 0 0; - } - 100% { - background-position: 0px 11600px; - } -} diff --git a/packages/frontend/src/pages/SnowballLogin.tsx b/packages/frontend/src/pages/SnowballLogin.tsx deleted file mode 100644 index 828f9fc4..00000000 --- a/packages/frontend/src/pages/SnowballLogin.tsx +++ /dev/null @@ -1,17 +0,0 @@ -// import { useSnowball } from 'utils/use-snowball'; - -// export const SnowballLogin = () => { -// const snowball = useSnowball(); -// console.log(snowball); -// return ( -//
    -//
    -// snowball logo -//
    -//
    -// ); -// }; diff --git a/packages/frontend/src/pages/auth/CreatePasskey.tsx b/packages/frontend/src/pages/auth/CreatePasskey.tsx new file mode 100644 index 00000000..b976f973 --- /dev/null +++ b/packages/frontend/src/pages/auth/CreatePasskey.tsx @@ -0,0 +1,83 @@ +import { Button } from 'components/shared/Button'; +import { LoaderIcon } from 'components/shared/CustomIcon'; +import { KeyIcon } from 'components/shared/CustomIcon/KeyIcon'; +import { InlineNotification } from 'components/shared/InlineNotification'; +import { Input } from 'components/shared/Input'; +import { WavyBorder } from 'components/shared/WavyBorder'; +import { useState } from 'react'; +import { IconRight } from 'react-day-picker'; +import { useSnowball } from 'utils/use-snowball'; + +type Props = { + onDone: () => void; +}; + +export const CreatePasskey = ({}: Props) => { + const snowball = useSnowball(); + const [name, setName] = useState(''); + + const auth = snowball.auth.passkey; + const loading = !!auth.state.loading; + + async function createPasskey() { + await auth.register(name); + } + + return ( +
    +
    +
    + +
    +
    +
    + Create a passkey +
    +
    + Passkeys allow you to sign in securely without using passwords. +
    +
    +
    + +
    +
    +
    +
    +
    + Give it a name +
    +
    + { + setName(e.target.value); + }} + /> +
    + + {auth.state.error ? ( + + ) : ( + + )} +
    + +
    +
    + ); +}; diff --git a/packages/frontend/src/pages/auth/Done.tsx b/packages/frontend/src/pages/auth/Done.tsx new file mode 100644 index 00000000..ab63b12f --- /dev/null +++ b/packages/frontend/src/pages/auth/Done.tsx @@ -0,0 +1,41 @@ +import { Button } from 'components/shared/Button'; +import { + ArrowRightCircleFilledIcon, + CheckRoundFilledIcon, +} from 'components/shared/CustomIcon'; +import { WavyBorder } from 'components/shared/WavyBorder'; + +type Props = { + continueTo: string; +}; +export const Done = ({ continueTo }: Props) => { + return ( +
    +
    +
    + +
    +
    +
    + You're in! +
    +
    + It's time to get your next project rolling! +
    +
    +
    + +
    + +
    +
    + ); +}; diff --git a/packages/frontend/src/pages/auth/Login.tsx b/packages/frontend/src/pages/auth/Login.tsx new file mode 100644 index 00000000..8b95143d --- /dev/null +++ b/packages/frontend/src/pages/auth/Login.tsx @@ -0,0 +1,194 @@ +import { Button } from 'components/shared/Button'; +import { + ArrowRightCircleFilledIcon, + GithubIcon, + LinkIcon, + LoaderIcon, + QuestionMarkRoundFilledIcon, +} from 'components/shared/CustomIcon'; +import { GoogleIcon } from 'components/shared/CustomIcon/GoogleIcon'; +import { DotBorder } from 'components/shared/DotBorder'; +import { WavyBorder } from 'components/shared/WavyBorder'; +import { useState } from 'react'; +import { CreatePasskey } from './CreatePasskey'; +import { AppleIcon } from 'components/shared/CustomIcon/AppleIcon'; +import { KeyIcon } from 'components/shared/CustomIcon/KeyIcon'; +import { useToast } from 'components/shared/Toast'; +import { Link } from 'react-router-dom'; + +type Provider = 'google' | 'github' | 'apple' | 'email' | 'passkey'; + +type Props = { + onDone: () => void; +}; + +export const Login = ({ onDone }: Props) => { + const [provider, setProvider] = useState(false); + + // const loading = snowball.auth.state.loading && provider; + const loading = provider; + const { toast } = useToast(); + + if (provider === 'email') { + return ; + } + + return ( +
    +
    +
    + Sign in to Snowball +
    +
    + + +
    +
    +
    + +
    +
    + Got a Passkey? +
    +
    + Use it to sign in securely without using a password. +
    +
    +
    +
    + + +
    + +
    +
    + Lost your passkey? +
    +
    + + +
    +
    +
    + +
    + +
    + OR +
    + +
    + +
    + + + + + +
    +
    +
    + Don't have an account? +
    +
    + + Sign up now + +
    +
    +
    +
    + ); +}; diff --git a/packages/frontend/src/pages/auth/SignUp.tsx b/packages/frontend/src/pages/auth/SignUp.tsx new file mode 100644 index 00000000..a9ac9588 --- /dev/null +++ b/packages/frontend/src/pages/auth/SignUp.tsx @@ -0,0 +1,187 @@ +import { Button } from 'components/shared/Button'; +import { + ArrowRightCircleFilledIcon, + GithubIcon, + LoaderIcon, +} from 'components/shared/CustomIcon'; +import { GoogleIcon } from 'components/shared/CustomIcon/GoogleIcon'; +import { DotBorder } from 'components/shared/DotBorder'; +import { WavyBorder } from 'components/shared/WavyBorder'; +import { useEffect, useState } from 'react'; +import { useSnowball } from 'utils/use-snowball'; +import { CreatePasskey } from './CreatePasskey'; +import { Input } from 'components/shared/Input'; +import { AppleIcon } from 'components/shared/CustomIcon/AppleIcon'; +import { Link } from 'react-router-dom'; +import { useToast } from 'components/shared/Toast'; +import { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; +import { signInWithEthereum } from 'utils/siwe'; + +type Provider = 'google' | 'github' | 'apple' | 'email'; + +type Props = { + onDone: () => void; +}; + +export const SignUp = ({ onDone }: Props) => { + const [email, setEmail] = useState(''); + const [provider, setProvider] = useState(false); + + const { toast } = useToast(); + const snowball = useSnowball(); + + async function handleSignupRedirect() { + let wallet: PKPEthersWallet | undefined; + const google = snowball.auth.google; + if (google.canHandleOAuthRedirectBack()) { + setProvider('google'); + await google.handleOAuthRedirectBack(); + wallet = await google.getEthersWallet(); + await signInWithEthereum(wallet); + } + + if (wallet) { + onDone(); + } + } + + useEffect(() => { + handleSignupRedirect(); + }, []); + + const loading = provider; + const emailValid = /.@./.test(email); + + if (provider === 'email') { + return ; + } + + return ( +
    +
    +
    + Sign up to Snowball +
    +
    + +
    +
    + + + + + +
    + +
    + +
    + OR +
    + +
    + +
    +
    +
    + Email +
    + setEmail(e.target.value)} + disabled={!!loading} + /> +
    + + +
    +
    + Already an user? +
    +
    + + Sign in now + +
    +
    +
    +
    +
    + ); +}; diff --git a/packages/frontend/src/pages/auth/SnowballAuth.tsx b/packages/frontend/src/pages/auth/SnowballAuth.tsx new file mode 100644 index 00000000..69cb7987 --- /dev/null +++ b/packages/frontend/src/pages/auth/SnowballAuth.tsx @@ -0,0 +1,52 @@ +import { snowball } from 'utils/use-snowball'; +import { Login } from './Login'; +import { SignUp } from './SignUp'; +import { useEffect, useState } from 'react'; +import { Done } from './Done'; + +type Screen = 'login' | 'signup' | 'success'; + +const DASHBOARD_URL = '/'; + +export const SnowballAuth = () => { + const path = window.location.pathname; + const [screen, setScreen] = useState( + path === '/login' ? 'login' : 'signup', + ); + + useEffect(() => { + if (snowball.session) { + window.location.href = DASHBOARD_URL; + } + }, []); + + useEffect(() => { + if (path === '/login') { + setScreen('login'); + } else if (path === '/signup') { + setScreen('signup'); + } + }, [path]); + + if (screen === 'signup') { + return ( + { + setScreen('success'); + }} + /> + ); + } + if (screen === 'login') { + return ( + { + setScreen('success'); + }} + /> + ); + } + if (screen === 'success') { + return ; + } +}; diff --git a/packages/frontend/src/utils/siwe.ts b/packages/frontend/src/utils/siwe.ts new file mode 100644 index 00000000..b66e436c --- /dev/null +++ b/packages/frontend/src/utils/siwe.ts @@ -0,0 +1,37 @@ +import { SiweMessage } from 'siwe'; +import { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; +import { v4 as uuid } from 'uuid'; + +const domain = window.location.host; +const origin = window.location.origin; + +export async function signInWithEthereum(wallet: PKPEthersWallet) { + const message = await createSiweMessage( + await wallet.getAddress(), + 'Sign in with Ethereum to the app.', + ); + const signature = await wallet.signMessage(message); + + const res = await fetch(`${import.meta.env.VITE_SERVER_URL}/auth/validate`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ message, signature }), + credentials: 'include', + }); + console.log(await res.text()); +} + +async function createSiweMessage(address: string, statement: string) { + const message = new SiweMessage({ + domain, + address, + statement, + uri: origin, + version: '1', + chainId: 1, + nonce: uuid().replace(/[^a-z0-9]/g, ''), + }); + return message.prepareMessage(); +} diff --git a/packages/frontend/src/utils/snowball.ts b/packages/frontend/src/utils/snowball.ts deleted file mode 100644 index c17731f8..00000000 --- a/packages/frontend/src/utils/snowball.ts +++ /dev/null @@ -1,19 +0,0 @@ -// import { LitGoogleAuth } from '@snowballtools/auth-lit'; -// import { Snowball, SnowballChain } from '@snowballtools/js-sdk'; -// // import { LinkLitAlchemyLight } from '@snowballtools/link-lit-alchemy-light'; - -// export const DOMAIN = import.meta.env.VITE_DOMAIN || 'localhost'; -// export const ORIGIN = -// import.meta.env.VITE_VERCEL_ENV === 'production' -// ? `https://${DOMAIN}` -// : `http://${DOMAIN}:3000`; - -// // prettier-ignore - -// export const snowball = Snowball.withAuth( -// LitGoogleAuth.configure({ -// litReplayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, -// }), -// ).create({ -// initialChain: SnowballChain.sepolia, -// }); diff --git a/packages/frontend/src/utils/use-snowball.ts b/packages/frontend/src/utils/use-snowball.ts index 6657a3b2..45e174b7 100644 --- a/packages/frontend/src/utils/use-snowball.ts +++ b/packages/frontend/src/utils/use-snowball.ts @@ -1,13 +1,25 @@ -// import { useEffect, useState } from 'react'; -// import { snowball } from './snowball'; +import { useEffect, useState } from 'react'; +import { Snowball, SnowballChain } from '@snowballtools/js-sdk'; +import { LitGoogleAuth, LitPasskeyAuth } from '@snowballtools/auth-lit'; -// export function useSnowball() { -// const [state, setState] = useState(100); +export const snowball = Snowball.withAuth({ + google: LitGoogleAuth.configure({ + litRelayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, + }), + passkey: LitPasskeyAuth.configure({ + litRelayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, + }), +}).create({ + initialChain: SnowballChain.sepolia, +}); -// useEffect(() => { -// // Subscribe and directly return the unsubscribe function -// return snowball.subscribe(() => setState(state + 1)); -// }, [snowball]); +export function useSnowball() { + const [state, setState] = useState(100); -// return snowball; -// } + useEffect(() => { + // Subscribe and directly return the unsubscribe function + return snowball.subscribe(() => setState(state + 1)); + }, [state]); + + return snowball; +} diff --git a/packages/frontend/tailwind.config.js b/packages/frontend/tailwind.config.js index 608f5b6b..15e99e8a 100644 --- a/packages/frontend/tailwind.config.js +++ b/packages/frontend/tailwind.config.js @@ -1,4 +1,5 @@ import withMT from '@snowballtools/material-tailwind-react-fork/utils/withMT'; +import colors from 'tailwindcss/colors' /** @type {import('tailwindcss').Config} */ export default withMT({ @@ -9,7 +10,11 @@ export default withMT({ ], theme: { extend: { - zIndex: { + screens: { + xxs: '400px', + xs: '480px', + }, + zIndex: { tooltip: '52', }, letterSpacing: { @@ -25,6 +30,8 @@ export default withMT({ '3xs': '0.5rem', }, colors: { + sky: colors.sky, // TODO: WHy is this necessary? We're already using tailwind v3 + slate: colors.slate, // TODO: WHy is this necessary? We're already using tailwind v3 emerald: { 100: '#d1fae5', 200: '#a9f1d0', @@ -173,6 +180,9 @@ export default withMT({ zIndex: { toast: '9999', }, + animation: { + 'spin': 'spin 3s linear infinite', + } }, }, plugins: [], diff --git a/yarn.lock b/yarn.lock index 069d780c..baa23f4b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,6 +12,46 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@alchemy/aa-accounts@^3.6.1", "@alchemy/aa-accounts@^3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@alchemy/aa-accounts/-/aa-accounts-3.8.1.tgz#290e290b7047d8d29deb2b5959abaf839786f553" + integrity sha512-MoBbn+LTNBZIQTWlx0HIbXROJ9AcWhG0EOcbRMq0B+714/GogliJ5R/rUwQktxy+SfQa9K4Sh7q3kXFUgmFIdA== + dependencies: + "@alchemy/aa-core" "^3.8.1" + viem "2.8.6" + +"@alchemy/aa-alchemy@^3.6.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@alchemy/aa-alchemy/-/aa-alchemy-3.8.1.tgz#05b76657d871d98f426fe3eb365f5e0b349eed37" + integrity sha512-EmE3g7nN74v6+u8EUonHDJDDRbI6XsPpXYaSBNJsf9erjnw001z1+2GnUZdqa4NFJlJGdCboxX1sM5RJFO2IXA== + dependencies: + "@alchemy/aa-core" "^3.8.1" + "@turnkey/http" "^2.6.2" + "@turnkey/iframe-stamper" "^1.0.0" + "@turnkey/viem" "^0.4.8" + "@turnkey/webauthn-stamper" "^0.4.3" + eventemitter3 "^5.0.1" + viem "2.8.6" + zustand "^4.5.2" + optionalDependencies: + "@alchemy/aa-accounts" "^3.8.1" + alchemy-sdk "^3.0.0" + +"@alchemy/aa-core@^3.6.1", "@alchemy/aa-core@^3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@alchemy/aa-core/-/aa-core-3.8.1.tgz#5c961fbb0f342ed54a1af0329b81172144e52530" + integrity sha512-ilcIAG3OheJ3pm+0djZRcYXgNebZw8w/VBo0gcfu2B6V5cUnF0PPUYmj1ORR1ZxwQrP1Gnnl9TM3Bv+c4U25GQ== + dependencies: + abitype "^0.8.3" + eventemitter3 "^5.0.1" + viem "2.8.6" + zod "^3.22.4" + "@alloc/quick-lru@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" @@ -153,6 +193,11 @@ dependencies: xss "^1.0.8" +"@assemblyscript/loader@^0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" + integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" @@ -419,6 +464,14 @@ preact "^10.16.0" sha.js "^2.4.11" +"@confio/ics23@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d" + integrity sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w== + dependencies: + "@noble/hashes" "^1.0.0" + protobufjs "^6.8.8" + "@cosmjs/amino@0.28.13", "@cosmjs/amino@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.28.13.tgz#b51417a23c1ff8ef8b85a6862eba8492c6c44f38" @@ -429,6 +482,16 @@ "@cosmjs/math" "0.28.13" "@cosmjs/utils" "0.28.13" +"@cosmjs/amino@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.30.1.tgz#7c18c14627361ba6c88e3495700ceea1f76baace" + integrity sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w== + dependencies: + "@cosmjs/crypto" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + "@cosmjs/crypto@0.28.13", "@cosmjs/crypto@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.28.13.tgz#541b6a36f616b2da5a568ead46d4e83841ceb412" @@ -442,6 +505,19 @@ elliptic "^6.5.3" libsodium-wrappers "^0.7.6" +"@cosmjs/crypto@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.30.1.tgz#21e94d5ca8f8ded16eee1389d2639cb5c43c3eb5" + integrity sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ== + dependencies: + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + "@noble/hashes" "^1" + bn.js "^5.2.0" + elliptic "^6.5.4" + libsodium-wrappers "^0.7.6" + "@cosmjs/encoding@0.28.13", "@cosmjs/encoding@^0.28.1": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.28.13.tgz#7994e8e2c435beaf0690296ffb0f7f3eaec8150b" @@ -451,6 +527,23 @@ bech32 "^1.1.4" readonly-date "^1.0.0" +"@cosmjs/encoding@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.30.1.tgz#b5c4e0ef7ceb1f2753688eb96400ed70f35c6058" + integrity sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ== + dependencies: + base64-js "^1.3.0" + bech32 "^1.1.4" + readonly-date "^1.0.0" + +"@cosmjs/json-rpc@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz#16f21305fc167598c8a23a45549b85106b2372bc" + integrity sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ== + dependencies: + "@cosmjs/stream" "^0.30.1" + xstream "^11.14.0" + "@cosmjs/math@0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.28.13.tgz#50c05bc67007a04216f7f5e0c93f57270f8cc077" @@ -458,6 +551,13 @@ dependencies: bn.js "^5.2.0" +"@cosmjs/math@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.30.1.tgz#8b816ef4de5d3afa66cb9fdfb5df2357a7845b8a" + integrity sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q== + dependencies: + bn.js "^5.2.0" + "@cosmjs/proto-signing@^0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.28.13.tgz#95ac12f0da0f0814f348f5ae996c3e96d015df61" @@ -471,11 +571,80 @@ cosmjs-types "^0.4.0" long "^4.0.0" +"@cosmjs/proto-signing@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz#f0dda372488df9cd2677150b89b3e9c72b3cb713" + integrity sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ== + dependencies: + "@cosmjs/amino" "^0.30.1" + "@cosmjs/crypto" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + cosmjs-types "^0.7.1" + long "^4.0.0" + +"@cosmjs/socket@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.30.1.tgz#00b22f4b5e2ab01f4d82ccdb7b2e59536bfe5ce0" + integrity sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow== + dependencies: + "@cosmjs/stream" "^0.30.1" + isomorphic-ws "^4.0.1" + ws "^7" + xstream "^11.14.0" + +"@cosmjs/stargate@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.30.1.tgz#e1b22e1226cffc6e93914a410755f1f61057ba04" + integrity sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog== + dependencies: + "@confio/ics23" "^0.6.8" + "@cosmjs/amino" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stream" "^0.30.1" + "@cosmjs/tendermint-rpc" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + cosmjs-types "^0.7.1" + long "^4.0.0" + protobufjs "~6.11.3" + xstream "^11.14.0" + +"@cosmjs/stream@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.30.1.tgz#ba038a2aaf41343696b1e6e759d8e03a9516ec1a" + integrity sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ== + dependencies: + xstream "^11.14.0" + +"@cosmjs/tendermint-rpc@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz#c16378892ba1ac63f72803fdf7567eab9d4f0aa0" + integrity sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ== + dependencies: + "@cosmjs/crypto" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/json-rpc" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/socket" "^0.30.1" + "@cosmjs/stream" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + axios "^0.21.2" + readonly-date "^1.0.0" + xstream "^11.14.0" + "@cosmjs/utils@0.28.13": version "0.28.13" resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.28.13.tgz#2fd2844ec832d7833811e2ae1691305d09791a08" integrity sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg== +"@cosmjs/utils@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.30.1.tgz#6d92582341be3c2ec8d82090253cfa4b7f959edb" + integrity sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g== + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -867,7 +1036,7 @@ "@ethereumjs/util" "^8.1.0" ethereum-cryptography "^2.0.0" -"@ethereumjs/util@^8.1.0": +"@ethereumjs/util@^8.0.0", "@ethereumjs/util@^8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== @@ -964,7 +1133,7 @@ dependencies: "@ethersproject/bignumber" "^5.7.0" -"@ethersproject/contracts@5.7.0": +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== @@ -1067,7 +1236,7 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/providers@5.7.2": +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.0": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== @@ -1166,7 +1335,7 @@ "@ethersproject/rlp" "^5.7.0" "@ethersproject/signing-key" "^5.7.0" -"@ethersproject/units@5.7.0": +"@ethersproject/units@5.7.0", "@ethersproject/units@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== @@ -1175,7 +1344,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/wallet@5.7.0": +"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== @@ -1421,7 +1590,15 @@ resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== -"@ipld/dag-cbor@^7.0.1": +"@ipld/dag-cbor@^6.0.3": + version "6.0.15" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-6.0.15.tgz#aebe7a26c391cae98c32faedb681b1519e3d2372" + integrity sha512-Vm3VTSTwlmGV92a3C5aeY+r2A18zbH2amehNhsX8PBa3muXICaWrN8Uri85A5hLH7D7ElhE8PdjxD6kNqUmTZA== + dependencies: + cborg "^1.5.4" + multiformats "^9.5.4" + +"@ipld/dag-cbor@^7.0.0", "@ipld/dag-cbor@^7.0.1": version "7.0.3" resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== @@ -1429,7 +1606,7 @@ cborg "^1.6.0" multiformats "^9.5.4" -"@ipld/dag-json@^8.0.9": +"@ipld/dag-json@^8.0.1", "@ipld/dag-json@^8.0.9": version "8.0.11" resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-8.0.11.tgz#8d30cc2dfacb0aef04d327465d3df91e79e8b6ce" integrity sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA== @@ -1437,6 +1614,20 @@ cborg "^1.5.4" multiformats "^9.5.4" +"@ipld/dag-pb@^2.1.3": + version "2.1.18" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-2.1.18.tgz#12d63e21580e87c75fd1a2c62e375a78e355c16f" + integrity sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg== + dependencies: + multiformats "^9.5.4" + +"@ipld/dag-pb@^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.1.0.tgz#4ebec92eeb9e8f317b8ef971221c6dac7b12b302" + integrity sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg== + dependencies: + multiformats "^13.1.0" + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1595,6 +1786,523 @@ resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz#353ce4a76c83fadec272ea5674ede767650762fd" integrity sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g== +"@lit-protocol/access-control-conditions@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/access-control-conditions/-/access-control-conditions-3.0.32.tgz#e21c4e55327adcd2c7537ae30e733c0db30b5e33" + integrity sha512-m8xKM7Nh8WkXq7dWsJsjUEkMnbEo/iPDAX3kvZkPRoeo3RZ9abOBedfMsBIjx9R4hj/poyfC7TSGhstvoesGGQ== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/auth-browser@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/auth-browser/-/auth-browser-3.0.32.tgz#8c03645394fab27afd9fbe93a3adab70bed43a50" + integrity sha512-aY2BYZJJZQLZczM/WRcUbB5J54SXh4wn+P2+L9VpQTlKkshjgNLLeYOv705Y0uVaK1r9b2wTVjaMzZJPMZ4qXw== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + "@walletconnect/ethereum-provider" "2.9.2" + "@walletconnect/modal" "2.6.1" + ethers "^5.7.1" + jszip "^3.10.1" + lit-siwe "^1.1.8" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.13.3" + uint8arrays "^4.0.3" + util "^0.12.4" + web-vitals "^3.0.4" + +"@lit-protocol/auth-helpers@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/auth-helpers/-/auth-helpers-3.0.32.tgz#1879796afee55e8c23950c9a10f2ca8bed5e1a89" + integrity sha512-QSnApvcDMkxSpRy6P46RSeCJcOJ05JC8WW++VeFkQbzRKcYU8lfkF39Xi6/I1h9sv2LFHrfbT7fY7ijPF7IjWA== + dependencies: + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + +"@lit-protocol/bls-sdk@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/bls-sdk/-/bls-sdk-3.0.32.tgz#53fee54b2d17363b92cc5f901a473c07f35ad58e" + integrity sha512-8wDcmMmeFA6YuxGn4wNCTrkTPyEBJ8qSXsXJCMHkuglwVgrI2rOK26PK/k++0mf1+i4C2TzKeF9V8GJagb/o3w== + dependencies: + pako "^2.1.0" + tslib "^2.3.0" + +"@lit-protocol/constants@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/constants/-/constants-3.0.32.tgz#c41bd2bc0b583bed747fcf518a9c712fde7174a3" + integrity sha512-hSna3+qRGuS9Hg6VrUnBUrLH+PZQINBQAEIwq2xQzWR234H1za1g9PNMibgjCfwcV2j9f6tiJgYoPAp4n0O21w== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/types" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + +"@lit-protocol/contracts-sdk@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/contracts-sdk/-/contracts-sdk-3.0.32.tgz#3254b128feb67e75f61ff180f66131ba12e47511" + integrity sha512-uqmTXQeele9HOWvu7ozQb7RvFjJxpDiQJOtqie17AR5O3J9DR6uASsr80uDP5zdlPnoouXnk22KNmsBsgvNo8g== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/types" "3.0.32" + bitcoinjs-lib "^6.1.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + jose "^4.14.4" + jszip "^3.10.1" + multiformats "^9.7.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/core@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/core/-/core-3.0.32.tgz#55a5834fa8c3dd3c5c03d3468146989d90c2edd2" + integrity sha512-YrtOJhTr7amaPE2CX5n7zgrKTF0opjS432YKQ8gyAwXUmlEyoNOBiGIa+HFLPgmw/AntQYV89zomjzx3hVgM7g== + dependencies: + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + bitcoinjs-lib "^6.1.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + jose "^4.14.4" + jszip "^3.10.1" + multiformats "^10.0.2" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/crypto@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/crypto/-/crypto-3.0.32.tgz#5febca628798fd49a002d5e4a43c8acb8f9e127d" + integrity sha512-Me7I2VVMg+dL0Q0x2Cqw6KTnYotRqGGNBuS/pay2kooI4UkheCz6ZnTt9eCtN7JF2pBIe0o/IFAzh1SFzSEZBQ== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/ecdsa-sdk@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/ecdsa-sdk/-/ecdsa-sdk-3.0.32.tgz#9ebac8ecfc275a6f2149fd56b1e13b3e8ed3bb7e" + integrity sha512-zuyE8ui+rIpM0MyoY5cPq9I+wQfxEouaRmbDplybaJc12UKWmnLDQCSQ4mPnZTs8FC5785Qfxj5VAe5CLQ+yEw== + dependencies: + pako "^2.1.0" + tslib "^2.3.0" + +"@lit-protocol/encryption@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/encryption/-/encryption-3.0.32.tgz#b167df877bd8e0778104c1767998a4c8491fa731" + integrity sha512-YMx3MQotn0cr26LcVNTLIPdl5xENP97TcsPsoXCaH7ArIOKXvmhqH3PbxfhyU9i/TTzCshDE18b0P9Od6oAwDQ== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + jszip "^3.10.1" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/lit-auth-client@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/lit-auth-client/-/lit-auth-client-3.0.32.tgz#223a498c4b109558583f4ffa1dadf418a3fbd89a" + integrity sha512-McEMljGVEHsiMSI2hzqjrv3B4vX4VSEcTPwMKzKC1k6w43Hi/0GsU1Q0RGtaqIkNyvs/m+BeMR43lOKWn9LDAg== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-browser" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/core" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/encryption" "3.0.32" + "@lit-protocol/lit-node-client" "3.0.32" + "@lit-protocol/lit-node-client-nodejs" "3.0.32" + "@lit-protocol/lit-third-party-libs" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + "@simplewebauthn/browser" "^7.2.0" + "@simplewebauthn/typescript-types" "^7.0.0" + "@walletconnect/ethereum-provider" "2.9.2" + "@walletconnect/modal" "2.6.1" + base64url "^3.0.1" + bitcoinjs-lib "^6.1.0" + blockstore-core "^3.0.0" + bs58 "^5.0.0" + cbor-web "^9.0.1" + date-and-time "^2.4.1" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + ipfs-unixfs-importer "^12.0.0" + jose "^4.14.4" + jszip "^3.10.1" + lit-siwe "^1.1.8" + multiformats "^10.0.2" + nanoid "3.3.4" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + uint8arrays "^4.0.3" + +"@lit-protocol/lit-node-client-nodejs@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client-nodejs/-/lit-node-client-nodejs-3.0.32.tgz#0627b094d1d7de8370da4ade0bd5ecab7894feae" + integrity sha512-vivyz7SFHBpWk0j0teTEy+lxGYEftHecJRNPcEagBW2pmyMCQBL4XrwFBNH+k9aaCo1Zx4Q9WnVH0H78otcuLg== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/core" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/encryption" "3.0.32" + "@lit-protocol/lit-third-party-libs" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + bitcoinjs-lib "^6.1.0" + blockstore-core "^3.0.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + ipfs-unixfs-importer "^12.0.0" + jose "^4.14.4" + jszip "^3.10.1" + lit-siwe "^1.1.8" + multiformats "^10.0.2" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/lit-node-client@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client/-/lit-node-client-3.0.32.tgz#84e8f1da5f10a8ba5a377d1421a045fd5830a1c4" + integrity sha512-YAlMvhHq2d1vdHNVbqho8pqzEWY2MtsFOMGHVG11711oLal1fyFDr4iGJ5KnxxvK6+In2Amv65jQVSr1wlkdVQ== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-browser" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/core" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/encryption" "3.0.32" + "@lit-protocol/lit-node-client-nodejs" "3.0.32" + "@lit-protocol/lit-third-party-libs" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + "@walletconnect/ethereum-provider" "2.9.2" + "@walletconnect/modal" "2.6.1" + bitcoinjs-lib "^6.1.0" + blockstore-core "^3.0.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + ipfs-unixfs-importer "^12.0.0" + jose "^4.14.4" + jszip "^3.10.1" + lit-siwe "^1.1.8" + multiformats "^10.0.2" + node-fetch "^2.6.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + uint8arrays "^4.0.3" + +"@lit-protocol/lit-third-party-libs@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/lit-third-party-libs/-/lit-third-party-libs-3.0.32.tgz#6813976bdf245df24431cd55065389fb739efe09" + integrity sha512-FtxJtuYLSKV6sesRA+GthEa/VrrEQag+oFM26mWu569SCBnsbMxaz2IJ3telpXKR8FXkaiIYXgsdkyEPj9KyNQ== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + blockstore-core "^3.0.0" + ipfs-unixfs-importer "^12.0.0" + tslib "^2.3.0" + +"@lit-protocol/logger@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/logger/-/logger-3.0.32.tgz#081ff6ac421cd3ab3bc993bb1c4b3c75b6deac50" + integrity sha512-18Vi6vbbenDMRhDGQTJolVG4rnhl5NQzplC327XYEkNN8lGR8bxbx9ajSC71anB5/XYtHy57yotMtvZTPK0uWg== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/types" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/misc-browser@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/misc-browser/-/misc-browser-3.0.32.tgz#3b38d2caf2286372ccce5a52d493c20b1579c652" + integrity sha512-r7YsHO+HOA1pvpMHJ3mptTDYSGizNyitqRSgk1vGoufk4jAsnXkGQS3HGfhcP0PADEWhiIo/tGVa9DSPlN58Sw== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + +"@lit-protocol/misc@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/misc/-/misc-3.0.32.tgz#80eb73665c80e7eae88bc3e8519a0c6a7e5d2c26" + integrity sha512-zH7Xr729/k6Yr8PqR0LWMro++C3guidvL1ukseht98gymVMwavKVmQg0+USDkXugzY6fKBIMzonOF4j5TK7zuw== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/types" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + uint8arrays "^4.0.3" + +"@lit-protocol/nacl@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/nacl/-/nacl-3.0.32.tgz#3b936c5bc8c45cc81f10d58e5a5aa69b271b66c2" + integrity sha512-LqIbqWlDVwqrhSpTdb60rvLQ1p3P5PI96N+8WfXPtdTVIOJLJFvKsqbwv5Atzkn3PaUURCWkmpIafEHxEmGIqg== + dependencies: + tslib "^2.3.0" + +"@lit-protocol/pkp-base@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/pkp-base/-/pkp-base-3.0.32.tgz#e89d8cb73de5dfb1ea11aae9d7def9f8350f339e" + integrity sha512-oBEs4mfYnRdsoctT+YOMGjU+07VvPM6C0XBnM1/w7XHnVcGWXv5Q0HVp/+mVNmqH8pDhYAA9R64IUEpsP8UcNQ== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-browser" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/core" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/encryption" "3.0.32" + "@lit-protocol/lit-node-client" "3.0.32" + "@lit-protocol/lit-node-client-nodejs" "3.0.32" + "@lit-protocol/lit-third-party-libs" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + "@walletconnect/ethereum-provider" "2.9.2" + "@walletconnect/modal" "2.6.1" + bitcoinjs-lib "^6.1.0" + blockstore-core "^3.0.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + ipfs-unixfs-importer "^12.0.0" + jose "^4.14.4" + jszip "^3.10.1" + lit-siwe "^1.1.8" + multiformats "^10.0.2" + node-fetch "^2.6.1" + secp256k1 "^5.0.0" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + uint8arrays "^4.0.3" + +"@lit-protocol/pkp-ethers@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/pkp-ethers/-/pkp-ethers-3.0.32.tgz#6dbbf6637a3a56c3749131443ad7fb0e377d314f" + integrity sha512-1CNwPZzv9RWkpjbElOJ/FNECO/6T2/rL9wPO3uCXPnpqvfWCe3gY+mB2agjm2goCIIFOfscOVdyP2aQOmyoJ4w== + dependencies: + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@lit-protocol/access-control-conditions" "3.0.32" + "@lit-protocol/auth-browser" "3.0.32" + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/bls-sdk" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/contracts-sdk" "3.0.32" + "@lit-protocol/core" "3.0.32" + "@lit-protocol/crypto" "3.0.32" + "@lit-protocol/ecdsa-sdk" "3.0.32" + "@lit-protocol/encryption" "3.0.32" + "@lit-protocol/lit-node-client" "3.0.32" + "@lit-protocol/lit-node-client-nodejs" "3.0.32" + "@lit-protocol/lit-third-party-libs" "3.0.32" + "@lit-protocol/logger" "3.0.32" + "@lit-protocol/misc" "3.0.32" + "@lit-protocol/misc-browser" "3.0.32" + "@lit-protocol/nacl" "3.0.32" + "@lit-protocol/pkp-base" "3.0.32" + "@lit-protocol/sev-snp-utils-sdk" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@lit-protocol/uint8arrays" "3.0.32" + "@metamask/eth-sig-util" "5.0.2" + "@walletconnect/ethereum-provider" "2.9.2" + "@walletconnect/modal" "2.6.1" + bitcoinjs-lib "^6.1.0" + blockstore-core "^3.0.0" + bs58 "^5.0.0" + date-and-time "^2.4.1" + ethers "^5.7.1" + ipfs-http-client "56.0.0" + ipfs-unixfs-importer "^12.0.0" + jose "^4.14.4" + jszip "^3.10.1" + lit-siwe "^1.1.8" + multiformats "^10.0.2" + node-fetch "^2.6.1" + secp256k1 "^5.0.0" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + uint8arrays "^4.0.3" + +"@lit-protocol/sev-snp-utils-sdk@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/sev-snp-utils-sdk/-/sev-snp-utils-sdk-3.0.32.tgz#c0e2a2f117b03170bd264408a7b892e14e31ec0f" + integrity sha512-H+DiTpWxgmcNqJuVKY3Ldy29J+42/+OwseIgOt21KldRk4Rymaa9O6hHaqEFSmjjJevMGzxJ+m0KzxWoM90GDg== + dependencies: + "@lit-protocol/uint8arrays" "3.0.32" + node-fetch "^2.6.1" + pako "^2.1.0" + tslib "^2.3.0" + +"@lit-protocol/types@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/types/-/types-3.0.32.tgz#6c0971a21dff6cb1a72ad5e70ab40f9a6caa92b6" + integrity sha512-rizsbqNzA+g8uP/Tfc3GPf+3ZCinYY886iTQbSY2wY7pj70ws3rmM9g/d5CS1laQvAhNlV6ak8uO9P0MVrppmg== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + ethers "^5.7.1" + jszip "^3.10.1" + siwe "^2.0.5" + siwe-recap "0.0.2-alpha.0" + tslib "^2.3.0" + +"@lit-protocol/uint8arrays@3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@lit-protocol/uint8arrays/-/uint8arrays-3.0.32.tgz#2962c3b1ef2dad9da03212c38f9de183ec401730" + integrity sha512-sZavZXFj9xSwMBnUp1xRii5n12LwpaxmYiDdIspo9yHCDTq60XNHgd2J+llk2Hge0H17MTnoPbICLwZlQ9YJmA== + dependencies: + tslib "^2.3.0" + "@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": version "1.6.3" resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.3.tgz#25b4eece2592132845d303e091bad9b04cdcfe03" @@ -1618,6 +2326,18 @@ "@metamask/safe-event-emitter" "^3.0.0" "@metamask/utils" "^5.0.1" +"@metamask/eth-sig-util@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz#c518279a6e17a88135a13d53a0b970f145ff8bce" + integrity sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q== + dependencies: + "@ethereumjs/util" "^8.0.0" + bn.js "^4.11.8" + ethereum-cryptography "^1.1.2" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + "@metamask/eth-sig-util@^4.0.0", "@metamask/eth-sig-util@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" @@ -1863,6 +2583,14 @@ "@motionone/dom" "^10.16.4" tslib "^2.3.1" +"@multiformats/murmur3@^2.0.0": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-2.1.8.tgz#81c1c15b6391109f3febfca4b3205196615a04e9" + integrity sha512-6vId1C46ra3R1sbJUOFCZnsUIveR9oF20yhPmAFxPm0JfrX3/ZRCgP3YDrBzlGoEppOXnA9czHeYc0T9mB6hbA== + dependencies: + multiformats "^13.0.0" + murmurhash3js-revisited "^3.0.0" + "@noble/curves@1.2.0", "@noble/curves@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -1877,6 +2605,18 @@ dependencies: "@noble/hashes" "1.3.3" +"@noble/curves@^1.3.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" + integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== + dependencies: + "@noble/hashes" "1.4.0" + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + "@noble/hashes@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" @@ -1887,11 +2627,16 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== -"@noble/hashes@^1", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1": +"@noble/hashes@1.4.0", "@noble/hashes@^1", "@noble/hashes@^1.0.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -3074,6 +3819,15 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + "@scure/bip32@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8" @@ -3092,6 +3846,14 @@ "@noble/hashes" "~1.3.2" "@scure/base" "~1.1.4" +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + "@scure/bip39@1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" @@ -3181,11 +3943,72 @@ "@sigstore/core" "^1.1.0" "@sigstore/protobuf-specs" "^0.3.1" +"@simplewebauthn/browser@^7.2.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@simplewebauthn/browser/-/browser-7.4.0.tgz#3e25b5e9f45d03eb60d3e4f8812d8d2acfd7dba6" + integrity sha512-qqCZ99lFWjtyza8NCtCpRm3GU5u8/QFeBfMgW5+U/E8Qyc4lvUcuJ8JTbrhksVQLZWSY1c/6Xw11QZ5e+D1hNw== + dependencies: + "@simplewebauthn/typescript-types" "^7.4.0" + +"@simplewebauthn/typescript-types@^7.0.0", "@simplewebauthn/typescript-types@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-7.4.0.tgz#1f5d55e187cbd30727a75543caf1bade747625ce" + integrity sha512-8/ZjHeUPe210Bt5oyaOIGx4h8lHdsQs19BiOT44gi/jBEgK7uBGA0Fy7NRsyh777al3m6WM0mBf0UR7xd4R7WQ== + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@snowballtools/auth-lit@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/auth-lit/-/auth-lit-0.1.0.tgz#1ed97cf55dd20c29b46ee3e5ad053662e17fdc41" + integrity sha512-WfGbdqd34I5wDcviSn9f8I1aTpY0ExJYGvkrwy/l0aeEotRBXoMDFNAM23RQN/aYzaewCOYGTPl1DJ1/hBYDyw== + dependencies: + "@lit-protocol/auth-helpers" "3.0.32" + "@lit-protocol/constants" "3.0.32" + "@lit-protocol/lit-auth-client" "3.0.32" + "@lit-protocol/lit-node-client" "3.0.32" + "@lit-protocol/pkp-ethers" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@snowballtools/auth" "*" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + +"@snowballtools/auth@*", "@snowballtools/auth@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/auth/-/auth-0.1.0.tgz#f6bca8e631d754b524525153769bf28fa956cfa8" + integrity sha512-jsviORyBcDporAFDCKGNHK4WCNBD68DdMJJ4wcnIa5DNXHjYLU4YYLqcbpccgnL1l+02o2nC/FyIwwDNcxWtjw== + dependencies: + "@lit-protocol/pkp-ethers" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + debug "*" + +"@snowballtools/js-sdk@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/js-sdk/-/js-sdk-0.1.0.tgz#69835d4c0fdb1023a2ff3e75d916eb23e98084e1" + integrity sha512-ejyzeRjUiffaWZiBwLhCi9vVyJp+eNBlTYQIwfTipAQlr1q0yCfCHJic2z2CIt2w6Vzayfgi2KRmNyQpRd3img== + dependencies: + "@snowballtools/auth" "*" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + +"@snowballtools/link-lit-alchemy-light@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/link-lit-alchemy-light/-/link-lit-alchemy-light-0.1.0.tgz#3198bd75ad8002f76481680b1c792a7a13b84111" + integrity sha512-f6CEaol7qunra+1Tnk0Yb/M7l/EmYg40dlA7C+lYr0TQcGmIBQhT3rWtuluAlIsmKDPm1Ri7CCGfAYD7ioR/JQ== + dependencies: + "@alchemy/aa-alchemy" "^3.6.1" + "@alchemy/aa-core" "^3.6.1" + "@lit-protocol/pkp-ethers" "3.0.32" + "@snowballtools/smartwallet-alchemy-light" "*" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + ethers "^6.11.1" + viem "2.x" + "@snowballtools/material-tailwind-react-fork@^2.1.10": version "2.1.10" resolved "https://registry.yarnpkg.com/@snowballtools/material-tailwind-react-fork/-/material-tailwind-react-fork-2.1.10.tgz#7a3e582122505157cb033168e48d6c93d93336e8" @@ -3201,11 +4024,46 @@ react-dom "18.2.0" tailwind-merge "1.8.1" +"@snowballtools/smartwallet-alchemy-light@*", "@snowballtools/smartwallet-alchemy-light@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/smartwallet-alchemy-light/-/smartwallet-alchemy-light-0.1.0.tgz#659be4924c15c015b56453c508ee78cd3d64f837" + integrity sha512-gR69Kq3Bl8qxmMqBjac5lINRlABH25U+oUmrzUsul9TtUdfJMtA/96jR48v6upliKyncGoSIf+KJQ8opA5DqHw== + dependencies: + "@alchemy/aa-accounts" "^3.6.1" + "@alchemy/aa-alchemy" "^3.6.1" + "@alchemy/aa-core" "^3.6.1" + "@lit-protocol/pkp-ethers" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + +"@snowballtools/types@*", "@snowballtools/types@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/types/-/types-0.1.0.tgz#b76b20f76cc4192b250712d148991f04d68bade6" + integrity sha512-lYLtUGjTO2BDqpM/KA83ojRB9sKw7IPQ9IVrd0FWJlyHtmQ5MvDRIcXJXO85lIUUe4SIkxXdrJMvda0GMDMV0A== + +"@snowballtools/utils@*", "@snowballtools/utils@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@snowballtools/utils/-/utils-0.1.0.tgz#1f0c69f357a899301d0716e0b30121242617c464" + integrity sha512-0dx3ct6pSbMdhSi/Yg3unM3sPuDIk+lv57YNvqRhv8e+wz+5IfRj0Bm12BB10Dav1PMJAXkLMYKJ5OYJJn6ALA== + dependencies: + "@alchemy/aa-core" "^3.6.1" + "@snowballtools/types" "*" + alchemy-sdk "^3.2.0" + viem "2.x" + "@socket.io/component-emitter@~3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz#621270c02c0a5d4f4669eb1caa9723c91cf201de" integrity sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg== +"@spruceid/siwe-parser@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-1.1.3.tgz#0eebe8bbd63c6de89cb44c06b6329b00b305df65" + integrity sha512-oQ8PcwDqjGWJvLmvAF2yzd6iniiWxK0Qtz+Dw+gLD/W5zOQJiKIUXwslHOm8VB8OOOKW9vfR3dnPBhHaZDvRsw== + dependencies: + apg-js "^4.1.1" + "@spruceid/siwe-parser@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-2.1.0.tgz#59859ccfd02403179bcf115d9e02a7dc953a0820" @@ -3513,6 +4371,60 @@ "@tufjs/canonical-json" "2.0.0" minimatch "^9.0.3" +"@turnkey/api-key-stamper@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@turnkey/api-key-stamper/-/api-key-stamper-0.4.0.tgz#03844adb9d08f4d0463e8d6e8dc9167a662b68e9" + integrity sha512-LyIiAXRuSL5UBa/Y95gHuh7j4uHzVMkI2+sHWM4/UWZat3nCoveU66h6SFXwF1BThA0poGgsKjWjsKNCJ89NPg== + dependencies: + "@noble/curves" "^1.3.0" + "@turnkey/encoding" "0.1.0" + sha256-uint8array "^0.10.7" + +"@turnkey/encoding@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@turnkey/encoding/-/encoding-0.1.0.tgz#85461c3aa11c70882cc2b0853f5db40f576c3ac9" + integrity sha512-aLmLrWtvV1k9UyGzuzMpBFdwleCH8VpzXIriusVMrFLiQp+4uHCS9cwrEG1glg3207ewWFDtvgj31qLoJS29pg== + +"@turnkey/http@2.10.0", "@turnkey/http@^2.6.2": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@turnkey/http/-/http-2.10.0.tgz#9e8d0dc6279719e3efaf5ae1df7dc9fd5a111ecf" + integrity sha512-5I2VwOzxYGxmSy8UOZn8rsV23gmK8v93KqNZ/mjf4GrFQ69q8LCaAFmrH1Zo+/J7eq0/GQdxNqBHfJKLp5iihw== + dependencies: + "@turnkey/api-key-stamper" "0.4.0" + "@turnkey/encoding" "0.1.0" + "@turnkey/webauthn-stamper" "0.5.0" + cross-fetch "^3.1.5" + +"@turnkey/iframe-stamper@^1.0.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@turnkey/iframe-stamper/-/iframe-stamper-1.2.0.tgz#bba478e391a266833f1a5960b9f1df9de5934fb8" + integrity sha512-OXbCVVzypa0AXa6dcNpfu8Q0xY/sq2nGXwhesrUQmE7V5I5nYYHZE3sQv54lErToX6H6YyDR9Z1DuPzEUkYTjw== + +"@turnkey/viem@^0.4.8": + version "0.4.14" + resolved "https://registry.yarnpkg.com/@turnkey/viem/-/viem-0.4.14.tgz#bbc60bd8ce478401e9e7900357de7edc792acd14" + integrity sha512-YMREwb7QBBuge8wxdpFGKAl48e4W/rX84XR1E5GsD5HnypNPnfMu/AI7Np0cbQBA6IRuwY9HWu3HbDPU9kicDg== + dependencies: + "@turnkey/api-key-stamper" "0.4.0" + "@turnkey/http" "2.10.0" + cross-fetch "^4.0.0" + typescript "^5.1" + +"@turnkey/webauthn-stamper@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@turnkey/webauthn-stamper/-/webauthn-stamper-0.5.0.tgz#014b8c20b1732af49dacb04f396edf010d3b7f47" + integrity sha512-iUbTUwD4f4ibdLy5PWWb7ITEz4S4VAP9/mNjFhoRY3cKVVTDfmykrVTKjPOIHWzDgAmLtgrLvySIIC9ZBVENBw== + dependencies: + sha256-uint8array "^0.10.7" + +"@turnkey/webauthn-stamper@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@turnkey/webauthn-stamper/-/webauthn-stamper-0.4.3.tgz#843499f0cf751c0421cb7630ea128b6f034a9446" + integrity sha512-hJuIpwny44TOrkFJiK8uA29RRO1A9xJK3KbN4PWqBxTLh1r7ntkl3zslc/qAkgnw6f+OREQbhQGoYkTdIX+7QA== + dependencies: + "@noble/hashes" "^1.3.2" + buffer "^6.0.3" + "@types/accepts@^1.3.5": version "1.3.7" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.7.tgz#3b98b1889d2b2386604c2bbbe62e4fb51e95b265" @@ -3606,6 +4518,14 @@ dependencies: "@types/node" "*" +"@types/cookie-session@^2.0.49": + version "2.0.49" + resolved "https://registry.yarnpkg.com/@types/cookie-session/-/cookie-session-2.0.49.tgz#44ae62bd1d1506fbb3cc14470cdf6f74decea04b" + integrity sha512-4E/bBjlqLhU5l4iGPR+NkVJH593hpNsT4dC3DJDr+ODm6Qpe13kZQVkezRIb+TYDXaBMemS3yLQ+0leba3jlkQ== + dependencies: + "@types/express" "*" + "@types/keygrip" "*" + "@types/cors@2.8.12": version "2.8.12" resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" @@ -3765,6 +4685,11 @@ dependencies: "@types/node" "*" +"@types/keygrip@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.6.tgz#1749535181a2a9b02ac04a797550a8787345b740" + integrity sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ== + "@types/lodash.memoize@^4.1.7": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/lodash.memoize/-/lodash.memoize-4.1.9.tgz#9f8912d39b6e450c0d342a2b74c99d331bf2016b" @@ -3792,7 +4717,7 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/minimatch@^3.0.3": +"@types/minimatch@^3.0.3", "@types/minimatch@^3.0.4": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -3819,6 +4744,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== +"@types/node@18.15.13": + version "18.15.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== + "@types/node@^10.1.0": version "10.17.60" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" @@ -3866,7 +4796,7 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.17": +"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.22": version "18.2.25" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.25.tgz#2946a30081f53e7c8d585eb138277245caedc521" integrity sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA== @@ -3881,10 +4811,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/react@^18.2.77": - version "18.2.77" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.77.tgz#af2f857b6a6dfb6ca89ec102ebc147b1f1616880" - integrity sha512-CUT9KUUF+HytDM7WiXKLF9qUSg4tGImwy4FXTlfEDPEkkNUzJ7rVFolYweJ9fS1ljoIaP7M7Rdjc5eUm/Yu5AA== +"@types/react@^18.2.66": + version "18.2.79" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.79.tgz#c40efb4f255711f554d47b449f796d1c7756d865" + integrity sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -3945,6 +4875,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== +"@types/uuid@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" + integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== + "@types/yargs-parser@*": version "21.0.3" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" @@ -4082,6 +5017,28 @@ lodash.isequal "4.5.0" uint8arrays "^3.1.0" +"@walletconnect/core@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.9.2.tgz#c46734ca63771b28fd77606fd521930b7ecfc5e1" + integrity sha512-VARMPAx8sIgodeyngDHbealP3B621PQqjqKsByFUTOep8ZI1/R/20zU+cmq6j9RCrL+kLKZcrZqeVzs8Z7OlqQ== + dependencies: + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/jsonrpc-ws-connection" "1.0.13" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/relay-auth" "^1.0.4" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.9.2" + "@walletconnect/utils" "2.9.2" + events "^3.3.0" + lodash.isequal "4.5.0" + uint8arrays "^3.1.0" + "@walletconnect/environment@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" @@ -4105,6 +5062,21 @@ "@walletconnect/utils" "2.11.2" events "^3.3.0" +"@walletconnect/ethereum-provider@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.9.2.tgz#fb3a6fca279bb4e98e75baa2fb9730545d41bb99" + integrity sha512-eO1dkhZffV1g7vpG19XUJTw09M/bwGUwwhy1mJ3AOPbOSbMPvwiCuRz2Kbtm1g9B0Jv15Dl+TvJ9vTgYF8zoZg== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.7" + "@walletconnect/jsonrpc-provider" "^1.0.13" + "@walletconnect/jsonrpc-types" "^1.0.3" + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/sign-client" "2.9.2" + "@walletconnect/types" "2.9.2" + "@walletconnect/universal-provider" "2.9.2" + "@walletconnect/utils" "2.9.2" + events "^3.3.0" + "@walletconnect/ethereum-provider@^2.12.2": version "2.12.2" resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.12.2.tgz#43195a14cd43f928b2fcbba6b1a08e17e7838c4f" @@ -4174,6 +5146,17 @@ "@walletconnect/jsonrpc-types" "^1.0.3" tslib "1.14.1" +"@walletconnect/jsonrpc-ws-connection@1.0.13": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.13.tgz#23b0cdd899801bfbb44a6556936ec2b93ef2adf4" + integrity sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + tslib "1.14.1" + ws "^7.5.1" + "@walletconnect/jsonrpc-ws-connection@1.0.14": version "1.0.14" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz#eec700e74766c7887de2bd76c91a0206628732aa" @@ -4184,7 +5167,7 @@ events "^3.3.0" ws "^7.5.1" -"@walletconnect/keyvaluestorage@^1.1.1": +"@walletconnect/keyvaluestorage@^1.0.2", "@walletconnect/keyvaluestorage@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== @@ -4201,6 +5184,13 @@ "@walletconnect/safe-json" "^1.0.2" pino "7.11.0" +"@walletconnect/modal-core@2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.1.tgz#bc76055d0b644a2d4b98024324825c108a700905" + integrity sha512-f2hYlJ5pwzGvjyaZ6BoGR5uiMgXzWXt6w6ktt1N8lmY6PiYp8whZgqx2hTxVWwVlsGnaIfh6UHp1hGnANx0eTQ== + dependencies: + valtio "1.11.0" + "@walletconnect/modal-core@2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.2.tgz#d73e45d96668764e0c8668ea07a45bb8b81119e9" @@ -4208,6 +5198,16 @@ dependencies: valtio "1.11.2" +"@walletconnect/modal-ui@2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.1.tgz#200c54c8dfe3c71321abb2724e18bb357dfd6371" + integrity sha512-RFUOwDAMijSK8B7W3+KoLKaa1l+KEUG0LCrtHqaB0H0cLnhEGdLR+kdTdygw+W8+yYZbkM5tXBm7MlFbcuyitA== + dependencies: + "@walletconnect/modal-core" "2.6.1" + lit "2.7.6" + motion "10.16.2" + qrcode "1.5.3" + "@walletconnect/modal-ui@2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz#fa57c087c57b7f76aaae93deab0f84bb68b59cf9" @@ -4218,6 +5218,14 @@ motion "10.16.2" qrcode "1.5.3" +"@walletconnect/modal@2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.1.tgz#066fdbfcff83b58c8a9da66ab4af0eb93e3626de" + integrity sha512-G84tSzdPKAFk1zimgV7JzIUFT5olZUVtI3GcOk77OeLYjlMfnDT23RVRHm5EyCrjkptnvpD0wQScXePOFd2Xcw== + dependencies: + "@walletconnect/modal-core" "2.6.1" + "@walletconnect/modal-ui" "2.6.1" + "@walletconnect/modal@2.6.2", "@walletconnect/modal@^2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" @@ -4283,6 +5291,21 @@ "@walletconnect/utils" "2.12.2" events "^3.3.0" +"@walletconnect/sign-client@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.9.2.tgz#ff4c81c082c2078878367d07f24bcb20b1f7ab9e" + integrity sha512-anRwnXKlR08lYllFMEarS01hp1gr6Q9XUgvacr749hoaC/AwGVlxYFdM8+MyYr3ozlA+2i599kjbK/mAebqdXg== + dependencies: + "@walletconnect/core" "2.9.2" + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.9.2" + "@walletconnect/utils" "2.9.2" + events "^3.3.0" + "@walletconnect/time@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" @@ -4314,6 +5337,18 @@ "@walletconnect/logger" "^2.0.1" events "^3.3.0" +"@walletconnect/types@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.9.2.tgz#d5fd5a61dc0f41cbdca59d1885b85207ac7bf8c5" + integrity sha512-7Rdn30amnJEEal4hk83cdwHUuxI1SWQ+K7fFFHBMqkuHLGi3tpMY6kpyfDxnUScYEZXqgRps4Jo5qQgnRqVM7A== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + events "^3.3.0" + "@walletconnect/universal-provider@2.11.2": version "2.11.2" resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.11.2.tgz#bec3038f51445d707bbec75f0cb8af0a1f1e04db" @@ -4344,6 +5379,21 @@ "@walletconnect/utils" "2.12.2" events "^3.3.0" +"@walletconnect/universal-provider@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.9.2.tgz#40e54e98bc48b1f2f5f77eb5b7f05462093a8506" + integrity sha512-JmaolkO8D31UdRaQCHwlr8uIFUI5BYhBzqYFt54Mc6gbIa1tijGOmdyr6YhhFO70LPmS6gHIjljwOuEllmlrxw== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.7" + "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/sign-client" "2.9.2" + "@walletconnect/types" "2.9.2" + "@walletconnect/utils" "2.9.2" + events "^3.3.0" + "@walletconnect/utils@2.11.2": version "2.11.2" resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.11.2.tgz#dee0f19adf5e38543612cbe9fa4de7ed28eb7e85" @@ -4384,6 +5434,26 @@ query-string "7.1.3" uint8arrays "^3.1.0" +"@walletconnect/utils@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.9.2.tgz#035bdb859ee81a4bcc6420f56114cc5ec3e30afb" + integrity sha512-D44hwXET/8JhhIjqljY6qxSu7xXnlPrf63UN/Qfl98vDjWlYVcDl2+JIQRxD9GPastw0S8XZXdRq59XDXLuZBg== + dependencies: + "@stablelib/chacha20poly1305" "1.0.1" + "@stablelib/hkdf" "1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/sha256" "1.0.1" + "@stablelib/x25519" "^1.0.3" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.9.2" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" + detect-browser "5.3.0" + query-string "7.1.3" + uint8arrays "^3.1.0" + "@walletconnect/window-getters@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" @@ -4579,6 +5649,11 @@ abitype@1.0.0: resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97" integrity sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ== +abitype@^0.8.3: + version "0.8.11" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.11.tgz#66e1cf2cbf46f48d0e57132d7c1c392447536cc1" + integrity sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A== + accepts@^1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -4607,6 +5682,11 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -4636,6 +5716,26 @@ aggregate-error@^3.0.0, aggregate-error@^3.1.0: clean-stack "^2.0.0" indent-string "^4.0.0" +alchemy-sdk@^3.0.0, alchemy-sdk@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/alchemy-sdk/-/alchemy-sdk-3.2.1.tgz#23ced2b6f44ce4960ca0950b3b328c0d12b0098e" + integrity sha512-ytCllr0E3TZxlYT2o/+i8AVEFJwRS7msXYvS3f/L47VEemkv0Hpz09XTqbjOcfur2PooEMcD8rn5oKrbwLyFrQ== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/providers" "^5.7.0" + "@ethersproject/units" "^5.7.0" + "@ethersproject/wallet" "^5.7.0" + "@ethersproject/web" "^5.7.0" + axios "^1.6.5" + sturdy-websocket "^0.2.1" + websocket "^1.0.34" + ansi-colors@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -4687,6 +5787,11 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== +any-signal@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" + integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== + anymatch@^3.1.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -4953,6 +6058,13 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +axios@^0.21.2: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + axios@^0.26.1: version "0.26.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" @@ -4960,7 +6072,7 @@ axios@^0.26.1: dependencies: follow-redirects "^1.14.8" -axios@^1.6.0, axios@^1.6.7: +axios@^1.6.0, axios@^1.6.5, axios@^1.6.7: version "1.6.8" resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== @@ -4990,11 +6102,21 @@ base-x@^3.0.2, base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +base64url@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== + bech32@1.1.4, bech32@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" @@ -5040,6 +6162,11 @@ bindings@^1.3.0, bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +bip174@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.1.1.tgz#ef3e968cf76de234a546962bcf572cc150982f9f" + integrity sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ== + bip32@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/bip32/-/bip32-3.0.1.tgz#1d1121469cce6e910e0ec3a5a1990dd62687e2a3" @@ -5059,6 +6186,18 @@ bip39@^3.0.4: dependencies: "@noble/hashes" "^1.2.0" +bitcoinjs-lib@^6.1.0: + version "6.1.5" + resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.5.tgz#3b03509ae7ddd80a440f10fc38c4a97f0a028d8c" + integrity sha512-yuf6xs9QX/E8LWE2aMJPNd0IxGofwfuVOiYdNUESkc+2bHHVKjhJd8qewqapeoolh9fihzHGoDCB5Vkr57RZCQ== + dependencies: + "@noble/hashes" "^1.2.0" + bech32 "^2.0.0" + bip174 "^2.1.1" + bs58check "^3.0.1" + typeforce "^1.11.3" + varuint-bitcoin "^1.1.2" + bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -5068,11 +6207,41 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +bl@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + blakejs@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== +blob-to-it@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.4.tgz#f6caf7a4e90b7bb9215fa6a318ed6bd8ad9898cb" + integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== + dependencies: + browser-readablestream-to-it "^1.0.3" + +blockstore-core@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/blockstore-core/-/blockstore-core-3.0.0.tgz#08f52d954fe079d2735b745d218e737071badd97" + integrity sha512-5ZZB5nh6kErcjZ/CTK6lCwTIGlPdkTXbD8+2xLC4Fm0WGh7g2e2lW2bfURw7mvnPtSX1xV+sN4V2ndowSgIiHQ== + dependencies: + err-code "^3.0.1" + interface-blockstore "^4.0.0" + interface-store "^3.0.0" + it-all "^2.0.0" + it-drain "^2.0.0" + it-filter "^2.0.0" + it-take "^2.0.0" + multiformats "^11.0.0" + bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -5138,6 +6307,11 @@ brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== +browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" + integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== + browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -5167,6 +6341,13 @@ bs58@^4.0.0, bs58@^4.0.1: dependencies: base-x "^3.0.2" +bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" @@ -5176,6 +6357,14 @@ bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" +bs58check@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" + integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== + dependencies: + "@noble/hashes" "^1.2.0" + bs58 "^5.0.0" + btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" @@ -5196,7 +6385,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -buffer@6.0.3, buffer@^6.0.3: +buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -5212,7 +6401,7 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -bufferutil@^4.0.8: +bufferutil@^4.0.1, bufferutil@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== @@ -5349,6 +6538,16 @@ canonical-json@^0.0.4: resolved "https://registry.yarnpkg.com/canonical-json/-/canonical-json-0.0.4.tgz#6579c072c3db5c477ec41dc978fbf2b8f41074a3" integrity sha512-2sW7x0m/P7dqEnO0O87U7RTVQAaa7MELcd+Jd9FA6CYgYtwJ1TlDWIYMD8nuMkH1KoThsJogqgLyklrt9d/Azw== +canonicalize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.0.0.tgz#32be2cef4446d67fd5348027a384cae28f17226a" + integrity sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w== + +cbor-web@^9.0.1: + version "9.0.2" + resolved "https://registry.yarnpkg.com/cbor-web/-/cbor-web-9.0.2.tgz#1915f1ef1a72ea905db07480f71cf12ff601c661" + integrity sha512-N6gU2GsJS8RR5gy1d9wQcSPgn9FGJFY7KNvdDRlwHfz6kCxrQr2TDnrjXHmr6TFSl6Fd0FC4zRnityEldjRGvQ== + cborg@^1.5.4, cborg@^1.6.0: version "1.10.2" resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" @@ -5768,6 +6967,16 @@ cookie-es@^1.0.0: resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.1.0.tgz#68f8d9f48aeb5a534f3896f80e792760d3d20def" integrity sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw== +cookie-session@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cookie-session/-/cookie-session-2.1.0.tgz#ae30b566b2f9f2d8ca2c4936513e6bf181830558" + integrity sha512-u73BDmR8QLGcs+Lprs0cfbcAPKl2HnPcjpwRXT41sEV4DRJ2+W0vJEEZkG31ofkx+HZflA70siRIjiTdIodmOQ== + dependencies: + cookies "0.9.1" + debug "3.2.7" + on-headers "~1.0.2" + safe-buffer "5.2.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -5783,6 +6992,14 @@ cookie@0.6.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookies@0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" + integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + copyfiles@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" @@ -5846,6 +7063,14 @@ cosmjs-types@^0.5.1: long "^4.0.0" protobufjs "~6.11.2" +cosmjs-types@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.7.2.tgz#a757371abd340949c5bd5d49c6f8379ae1ffd7e2" + integrity sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA== + dependencies: + long "^4.0.0" + protobufjs "~6.11.2" + crc-32@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" @@ -5966,11 +7191,32 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +d@1, d@^1.0.1, d@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" + integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== + dependencies: + es5-ext "^0.10.64" + type "^2.7.2" + +dag-jose@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-1.0.0.tgz#52e42d70cb5bee31ae4e8e3ab860615568d7ad73" + integrity sha512-U0b/YsIPBp6YZNTFrVjwLZAlY3qGRxZTIEcM/CcQmrVrCWq9MWQq9pheXVSPLIhF4SNwzp2SikPva4/BIrJY+g== + dependencies: + "@ipld/dag-cbor" "^6.0.3" + multiformats "^9.0.2" + dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== +date-and-time@^2.4.1: + version "2.4.3" + resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-2.4.3.tgz#116963998a8cecd478955ae053f31a6747a988df" + integrity sha512-xkS/imTmsyEdpp9ie5oV5UWolg3XkYWNySbT2W4ESWr6v4V8YrsHbhpk9fIeQcr0NFTnYbQJLXlgU1zrLItysA== + date-fns@^2.29.3: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" @@ -5993,19 +7239,26 @@ dayjs@1.11.10, dayjs@^1.11.9: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== -debug@2.6.9: +debug@*, debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@2.6.9, debug@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== +debug@3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - ms "2.1.2" + ms "^2.1.1" decamelize-keys@^1.1.0: version "1.1.1" @@ -6242,6 +7495,15 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== +dns-over-http-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" + integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== + dependencies: + debug "^4.3.1" + native-fetch "^3.0.0" + receptacle "^1.3.2" + dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: version "0.5.16" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" @@ -6333,6 +7595,13 @@ ejs@^3.1.7: dependencies: jake "^10.8.5" +electron-fetch@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" + integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== + dependencies: + encoding "^0.1.13" + electron-to-chromium@^1.4.668: version "1.4.733" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.733.tgz#708d51ce01a7ed3b401d5ced85e9f5d504fd4217" @@ -6441,6 +7710,11 @@ err-code@^2.0.2: resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== +err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -6475,6 +7749,33 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" +es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: + version "0.10.64" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" + integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" + integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== + dependencies: + d "^1.0.2" + ext "^1.7.0" + esbuild@^0.19.2: version "0.19.12" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" @@ -6558,6 +7859,16 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -6631,6 +7942,16 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" +ethereum-cryptography@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + ethereum-cryptography@^2.0.0: version "2.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" @@ -6662,7 +7983,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: ethjs-util "0.1.6" rlp "^2.2.3" -ethers@^5.6.2: +ethers@^5.6.2, ethers@^5.7.1: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -6698,6 +8019,19 @@ ethers@^5.6.2: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" +ethers@^6.11.1: + version "6.11.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.11.1.tgz#96aae00b627c2e35f9b0a4d65c7ab658259ee6af" + integrity sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.5.0" + ethjs-util@0.1.6, ethjs-util@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" @@ -6706,6 +8040,14 @@ ethjs-util@0.1.6, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + eventemitter2@^6.4.5, eventemitter2@^6.4.7: version "6.4.9" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" @@ -6871,6 +8213,13 @@ express@^4.18.2: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + extension-port-stream@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/extension-port-stream/-/extension-port-stream-2.1.1.tgz#ec11f2a5ed95655d8c40805d7cb0c39939ee9ef4" @@ -6892,6 +8241,11 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== +fast-fifo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" @@ -7018,7 +8372,7 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -follow-redirects@^1.14.8, follow-redirects@^1.15.6: +follow-redirects@^1.14.0, follow-redirects@^1.14.8, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== @@ -7202,6 +8556,11 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" @@ -7385,6 +8744,13 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globalthis@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@11.1.0, globby@^11.0.3: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -7452,6 +8818,14 @@ h3@^1.10.2, h3@^1.11.1: uncrypto "^0.1.3" unenv "^1.9.0" +hamt-sharding@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-3.0.6.tgz#3643107a3021af66ac95684aec87b196add5ba57" + integrity sha512-nZeamxfymIWLpVcAN0CRrb7uVq3hCOGj9IcL6NMA6VVCVWqj+h9Jo/SmaWuS92AEDf1thmHsM5D5c70hM3j2Tg== + dependencies: + sparse-array "^1.3.1" + uint8arrays "^5.0.1" + handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" @@ -7759,6 +9133,11 @@ ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -7837,6 +9216,33 @@ inquirer@^8.2.4: through "^2.3.6" wrap-ansi "^6.0.1" +interface-blockstore@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-4.0.1.tgz#0dda1774d72ca7e990dc1921cfc524b3e9d1b9ca" + integrity sha512-ROWKGJls7vLeFaQtI3hZVCJOkUoZ05xAi2t2qysM4d7dwVKrfm5jUOqWh8JgLL7Iup3XqJ0mKXXZuwJ3s03RSw== + dependencies: + interface-store "^3.0.0" + multiformats "^11.0.0" + +interface-datastore@^6.0.2: + version "6.1.1" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-6.1.1.tgz#5150a00de2e7513eaadba58bcafd059cb50004c1" + integrity sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg== + dependencies: + interface-store "^2.0.2" + nanoid "^3.0.2" + uint8arrays "^3.0.0" + +interface-store@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" + integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== + +interface-store@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" + integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== + internal-slot@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" @@ -7866,11 +9272,136 @@ ip-address@^9.0.5: jsbn "1.1.0" sprintf-js "^1.1.3" +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipfs-core-types@^0.10.0, ipfs-core-types@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.10.3.tgz#89ebe98199d4d829f2b20104bfa3299f808c80fe" + integrity sha512-GNid2lRBjR5qgScCglgk7w9Hk3TZAwPHQXxOLQx72wgyc0jF2U5NXRoKW0GRvX8NPbHmsrFszForIqxd23I1Gw== + dependencies: + "@ipld/dag-pb" "^2.1.3" + interface-datastore "^6.0.2" + ipfs-unixfs "^6.0.3" + multiaddr "^10.0.0" + multiformats "^9.5.1" + +ipfs-core-utils@^0.14.0: + version "0.14.3" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.14.3.tgz#d04c631c472507bdefc58d4e8d1d9109efbb411c" + integrity sha512-aBkewVhgAj3NWXPwu6imj0wADGiGVZmJzqKzODOJsibDjkx6FGdMv8kvvqtLnK8LS/dvSk9yk32IDtuDyYoV7Q== + dependencies: + any-signal "^3.0.0" + blob-to-it "^1.0.1" + browser-readablestream-to-it "^1.0.1" + debug "^4.1.1" + err-code "^3.0.1" + ipfs-core-types "^0.10.3" + ipfs-unixfs "^6.0.3" + ipfs-utils "^9.0.6" + it-all "^1.0.4" + it-map "^1.0.4" + it-peekable "^1.0.2" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + multiaddr "^10.0.0" + multiaddr-to-uri "^8.0.0" + multiformats "^9.5.1" + nanoid "^3.1.23" + parse-duration "^1.0.0" + timeout-abort-controller "^3.0.0" + uint8arrays "^3.0.0" + +ipfs-http-client@56.0.0: + version "56.0.0" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-56.0.0.tgz#f42fa2bbf987bfa128ce0025de5d668586f4a815" + integrity sha512-JF3on9c0hB9XHk/UCxbyC6rSpERuj8F/0QcN/HImZoHNUKZ0/T8DpgVopocKdmGi1gr3Izlop7poaXomSt8Nug== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + "@ipld/dag-json" "^8.0.1" + "@ipld/dag-pb" "^2.1.3" + any-signal "^3.0.0" + dag-jose "^1.0.0" + debug "^4.1.1" + err-code "^3.0.1" + ipfs-core-types "^0.10.0" + ipfs-core-utils "^0.14.0" + ipfs-utils "^9.0.2" + it-first "^1.0.6" + it-last "^1.0.4" + merge-options "^3.0.4" + multiaddr "^10.0.0" + multiformats "^9.4.13" + parse-duration "^1.0.0" + stream-to-it "^0.2.2" + uint8arrays "^3.0.0" + +ipfs-unixfs-importer@^12.0.0: + version "12.0.1" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-12.0.1.tgz#316a52d8a793e9e006b1ee43edc50b83e00ef306" + integrity sha512-//VPZOqbONtc1HNtb+sBrw+nIGijHEloSm1O3LVR5orSlhHQ8X7+OCkeqceFBhu40tPMe/TwgAPrkvh+fXL+bA== + dependencies: + "@ipld/dag-pb" "^4.0.0" + "@multiformats/murmur3" "^2.0.0" + err-code "^3.0.1" + hamt-sharding "^3.0.0" + interface-blockstore "^4.0.0" + ipfs-unixfs "^9.0.0" + it-all "^2.0.0" + it-batch "^2.0.0" + it-first "^2.0.0" + it-parallel-batch "^2.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + rabin-wasm "^0.1.4" + uint8arraylist "^2.3.3" + uint8arrays "^4.0.2" + +ipfs-unixfs@^6.0.3: + version "6.0.9" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz#f6613b8e081d83faa43ed96e016a694c615a9374" + integrity sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ== + dependencies: + err-code "^3.0.1" + protobufjs "^6.10.2" + +ipfs-unixfs@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-9.0.1.tgz#d06e688e07ef4ce08d610337ba2fe8c143c386e7" + integrity sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg== + dependencies: + err-code "^3.0.1" + protobufjs "^7.0.0" + +ipfs-utils@^9.0.2, ipfs-utils@^9.0.6: + version "9.0.14" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" + integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== + dependencies: + any-signal "^3.0.0" + browser-readablestream-to-it "^1.0.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^3.0.1" + is-electron "^2.2.0" + iso-url "^1.1.5" + it-all "^1.0.4" + it-glob "^1.0.1" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + nanoid "^3.1.20" + native-fetch "^3.0.0" + node-fetch "^2.6.8" + react-native-fetch-api "^3.0.0" + stream-to-it "^0.2.2" + iron-webcrypto@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.1.0.tgz#f902f0cdbd77554b2195ecbb65558c311b01edfd" @@ -7973,6 +9504,11 @@ is-docker@^3.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== +is-electron@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" + integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -8019,6 +9555,13 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" @@ -8146,6 +9689,11 @@ is-typed-array@^1.1.3: dependencies: which-typed-array "^1.1.14" +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -8215,6 +9763,11 @@ isexe@^3.1.1: resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== +iso-url@^1.1.5: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" + integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== + isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" @@ -8228,11 +9781,98 @@ isomorphic-unfetch@3.1.0: node-fetch "^2.6.1" unfetch "^4.2.0" +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + isows@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== +it-all@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-all@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" + integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== + +it-batch@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-2.0.1.tgz#a0822be9b18743c41d8525835f788a7f297ba41f" + integrity sha512-2gWFuPzamh9Dh3pW+OKjc7UwJ41W4Eu2AinVAfXDMfrC5gXfm3b1TF+1UzsygBUgKBugnxnGP+/fFRyn+9y1mQ== + +it-drain@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-2.0.1.tgz#f50f6ce5cb8592a9d6337c9b5e780348877b152d" + integrity sha512-ESuHV6MLUNxuSy0vGZpKhSRjW0ixczN1FhbVy7eGJHjX6U2qiiXTyMvDc0z/w+nifOOwPyI5DT9Rc3o9IaGqEQ== + +it-filter@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-2.0.2.tgz#c849b3de4a12a2de3cc45be734ee55f69a0ed284" + integrity sha512-gocw1F3siqupegsOzZ78rAc9C+sYlQbI2af/TmzgdrR613MyEJHbvfwBf12XRekGG907kqXSOGKPlxzJa6XV1Q== + +it-first@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" + integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== + +it-first@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" + integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== + +it-glob@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" + integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== + dependencies: + "@types/minimatch" "^3.0.4" + minimatch "^3.0.4" + +it-last@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" + integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== + +it-map@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" + integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== + +it-parallel-batch@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-2.0.1.tgz#23eb07bbeb73521253d7c8a1566b53137103077c" + integrity sha512-tXh567/JfDGJ90Zi//H9HkL7kY27ARp0jf2vu2jUI6PUVBWfsoT+gC4eT41/b4+wkJXSGgT8ZHnivAOlMfcNjA== + dependencies: + it-batch "^2.0.0" + +it-peekable@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" + integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== + +it-take@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-take/-/it-take-2.0.1.tgz#f9e5ddf0b73a18ba00e62fb532d9d3cde3fe4ce6" + integrity sha512-DL7kpZNjuoeSTnB9dMAJ0Z3m2T29LRRAU+HIgkiQM+1jH3m8l9e/1xpWs8JHTlbKivbqSFrQMTc8KVcaQNmsaA== + +it-to-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" + integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== + dependencies: + buffer "^6.0.3" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + jackspeak@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" @@ -8334,6 +9974,11 @@ jiti@^1.21.0: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== +jose@^4.14.4: + version "4.15.5" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.5.tgz#6475d0f467ecd3c630a1b5dadd2735a7288df706" + integrity sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg== + joycon@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -8486,6 +10131,16 @@ jsonwebtoken@^9.0.2: ms "^2.1.1" semver "^7.5.4" +jszip@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + junk@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" @@ -8517,6 +10172,13 @@ keccak@^3.0.0, keccak@^3.0.3: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + dependencies: + tsscmp "1.0.6" + keyvaluestorage-interface@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" @@ -8648,6 +10310,13 @@ libsodium@^0.7.13: resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.13.tgz#230712ec0b7447c57b39489c48a4af01985fb393" integrity sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw== +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -8717,7 +10386,7 @@ lit-element@^4.0.0: "@lit/reactive-element" "^2.0.4" lit-html "^3.1.2" -lit-html@^2.8.0: +lit-html@^2.7.0, lit-html@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.8.0.tgz#96456a4bb4ee717b9a7d2f94562a16509d39bffa" integrity sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q== @@ -8731,6 +10400,24 @@ lit-html@^3.1.0, lit-html@^3.1.2: dependencies: "@types/trusted-types" "^2.0.2" +lit-siwe@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/lit-siwe/-/lit-siwe-1.1.8.tgz#6a393069012816d629c518bb8aa410f1e4a78bd7" + integrity sha512-gXI8GG0GAClw6G7T9p4p6Kn9ywDo8j2d90ShaYArJdsqqO9gwXfzxF84SMeY+bpsNqqQ3FahrhEwTCHd6w7wNw== + dependencies: + "@spruceid/siwe-parser" "1.1.3" + "@stablelib/random" "^1.0.1" + apg-js "^4.1.1" + +lit@2.7.6: + version "2.7.6" + resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.6.tgz#810007b876ed43e0c70124de91831921598b1665" + integrity sha512-1amFHA7t4VaaDe+vdQejSVBklwtH9svGoG6/dZi9JhxtJBBlqY5D1RV7iLUYY0trCqQc4NfhYYZilZiVHt7Hxg== + dependencies: + "@lit/reactive-element" "^1.6.0" + lit-element "^3.3.0" + lit-html "^2.7.0" + lit@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/lit/-/lit-2.8.0.tgz#4d838ae03059bf9cafa06e5c61d8acc0081e974e" @@ -8879,7 +10566,7 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -long@^5.2.0: +long@^5.0.0, long@^5.2.0: version "5.2.3" resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== @@ -9369,7 +11056,46 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multiformats@^9.4.2, multiformats@^9.5.4: +multiaddr-to-uri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz#65efe4b1f9de5f6b681aa42ff36a7c8db7625e58" + integrity sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA== + dependencies: + multiaddr "^10.0.0" + +multiaddr@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-10.0.1.tgz#0d15848871370860a4d266bb44d93b3dac5d90ef" + integrity sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg== + dependencies: + dns-over-http-resolver "^1.2.3" + err-code "^3.0.1" + is-ip "^3.1.0" + multiformats "^9.4.5" + uint8arrays "^3.0.0" + varint "^6.0.0" + +multiformats@^10.0.2: + version "10.0.3" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-10.0.3.tgz#d4147d01f9a31271c6fb5d24adf9b01f9e656bba" + integrity sha512-K2yGSmstS/oEmYiEIieHb53jJCaqp4ERPDQAYrm5sV3UUrVDZeshJQCK6GHAKyIGufU1vAcbS0PdAAZmC7Tzcw== + +multiformats@^11.0.0, multiformats@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" + integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== + +multiformats@^12.0.1: + version "12.1.3" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.3.tgz#cbf7a9861e11e74f8228b21376088cb43ba8754e" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^13.0.0, multiformats@^13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.0.tgz#5aa9d2175108a448fc3bdb54ba8a3d0b6cab3ac3" + integrity sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ== + +multiformats@^9.0.2, multiformats@^9.4.13, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.5.1, multiformats@^9.5.4, multiformats@^9.7.1: version "9.9.0" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== @@ -9385,6 +11111,11 @@ multimatch@5.0.0, multimatch@^5.0.0: arrify "^2.0.1" minimatch "^3.0.4" +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -9414,11 +11145,16 @@ nanoid-dictionary@^5.0.0-beta.1: resolved "https://registry.yarnpkg.com/nanoid-dictionary/-/nanoid-dictionary-5.0.0-beta.1.tgz#f2a2aa05b04f7ac6a9327c62a96146e8aa1b025d" integrity sha512-xBkL9zzkNjzJ/UnmWyiOUDVX/COoi05eS0oU28RYKFFQhdnzO5dTOPbVZ/fCFgIOGr1zNinDHJ68mm/KQfcgcw== -nanoid@3, nanoid@^3.3.6, nanoid@^3.3.7: +nanoid@3, nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23, nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== +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== + napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" @@ -9429,6 +11165,11 @@ napi-wasm@^1.1.0: resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== +native-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" + integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== + negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -9439,6 +11180,11 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + node-abi@^3.3.0: version "3.57.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.57.0.tgz#d772cb899236c0aa46778d0d25256917cf15eb15" @@ -9478,7 +11224,7 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.8: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -9960,6 +11706,19 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" + integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== + dependencies: + fast-fifo "^1.0.0" + p-defer "^3.0.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -10071,6 +11830,16 @@ pacote@^17.0.5: ssri "^10.0.0" tar "^6.1.11" +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -10078,6 +11847,11 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-duration@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" + integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== + parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -10535,7 +12309,7 @@ property-information@^5.0.0: dependencies: xtend "^4.0.0" -protobufjs@~6.11.2: +protobufjs@^6.10.2, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: version "6.11.4" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== @@ -10554,6 +12328,24 @@ protobufjs@~6.11.2: "@types/node" ">=13.7.0" long "^4.0.0" +protobufjs@^7.0.0: + version "7.2.6" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" + integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + protocols@^2.0.0, protocols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" @@ -10649,6 +12441,18 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +rabin-wasm@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" + integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== + dependencies: + "@assemblyscript/loader" "^0.9.4" + bl "^5.0.0" + debug "^4.3.1" + minimist "^1.2.5" + node-fetch "^2.6.1" + readable-stream "^3.6.0" + radix3@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" @@ -10767,6 +12571,13 @@ react-is@^18.0.0, react-is@^18.2.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +react-native-fetch-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" + integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== + dependencies: + p-defer "^3.0.0" + react-native-webview@^11.26.0: version "11.26.1" resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da" @@ -11003,6 +12814,13 @@ real-require@^0.1.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -11114,6 +12932,11 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" +retimer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" + integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== + retry@0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -11362,6 +13185,11 @@ sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +sha256-uint8array@^0.10.7: + version "0.10.7" + resolved "https://registry.yarnpkg.com/sha256-uint8array/-/sha256-uint8array-0.10.7.tgz#c751fc914f4227b26d996980562065fa4eadcf99" + integrity sha512-1Q6JQU4tX9NqsDGodej6pkrUVQVNapLZnvkwIhddH/JqzBZF1fSaxSWNY6sziXBE8aEa2twtGkXUrwzGeZCMpQ== + sha3@^2.1.1, sha3@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" @@ -11467,7 +13295,16 @@ simple-get@^4.0.0: once "^1.3.1" simple-concat "^1.0.0" -siwe@^2.1.4: +siwe-recap@0.0.2-alpha.0: + version "0.0.2-alpha.0" + resolved "https://registry.yarnpkg.com/siwe-recap/-/siwe-recap-0.0.2-alpha.0.tgz#75a0902c10a8ba5b4471f40e4eafb0afb2f8db59" + integrity sha512-xqFUnvrACWW/Q4s5HQ02avg8IyH2RcgkUzfvN4scYaaHErotLVtTGDZkSS0sn/oNK4MXRt83lTqredsvXgt8iA== + dependencies: + canonicalize "^2.0.0" + multiformats "^11.0.2" + siwe "^2.1.4" + +siwe@^2.0.5, siwe@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/siwe/-/siwe-2.2.0.tgz#dc025007acb210179396f5f099e618f9d941cfd2" integrity sha512-P8It3ztpGJM4pum3larVVXpR6KeP7G1wnul4EEmuT3LSPVcab+kkX9reoFcErHRPcBt+eVyrEJkAYD50vVRJ0A== @@ -11582,6 +13419,11 @@ space-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +sparse-array@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" + integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== + spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" @@ -11685,6 +13527,13 @@ stream-shift@^1.0.2: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== +stream-to-it@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -11796,6 +13645,11 @@ strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" +sturdy-websocket@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.2.1.tgz#20a58fd53372ef96eaa08f3c61c91a10b07c7c05" + integrity sha512-NnzSOEKyv4I83qbuKw9ROtJrrT6Z/Xt7I0HiP/e6H6GnpeTDvzwGIGeJ8slai+VwODSHQDooW2CAilJwT9SpRg== + style-value-types@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.0.0.tgz#76c35f0e579843d523187989da866729411fc8ad" @@ -11866,6 +13720,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +symbol-observable@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" + integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== + symbol-observable@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" @@ -12017,6 +13876,13 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +timeout-abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" + integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== + dependencies: + retimer "^3.0.0" + tiny-secp256k1@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" @@ -12129,6 +13995,11 @@ tslib@1.14.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tslib@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" @@ -12139,6 +14010,11 @@ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + tsup@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/tsup/-/tsup-8.0.2.tgz#c63192a08386515103e2c44ac5a23bdff75c5fa1" @@ -12184,6 +14060,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tweetnacl-util@^0.13.3: + version "0.13.5" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.13.5.tgz#e39cd5d99709ee7125a18b03895b45a1299e475f" + integrity sha512-/4Q3hpPFAnbBjNLLOmdTdyvInBfZcQBTWy+LWbypmWxAKwOpSQOyyv4ZZts4CoiYtS8Skyix5CkOWytf7XNK9A== + tweetnacl-util@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" @@ -12227,12 +14108,24 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typeforce@^1.11.5: +typeforce@^1.11.3, typeforce@^1.11.5: version "1.18.0" resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== @@ -12258,7 +14151,7 @@ typeorm@^0.3.19: uuid "^9.0.0" yargs "^17.6.2" -"typescript@>=3 < 6", typescript@^5.3.3: +"typescript@>=3 < 6", typescript@^5.1, typescript@^5.3.3: version "5.4.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== @@ -12280,6 +14173,13 @@ uid-safe@~2.1.5: dependencies: random-bytes "~1.0.0" +uint8arraylist@^2.3.3: + version "2.4.8" + resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" + integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== + dependencies: + uint8arrays "^5.0.1" + uint8arrays@^3.0.0, uint8arrays@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" @@ -12287,6 +14187,20 @@ uint8arrays@^3.0.0, uint8arrays@^3.1.0: dependencies: multiformats "^9.4.2" +uint8arrays@^4.0.2, uint8arrays@^4.0.3: + version "4.0.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" + integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== + dependencies: + multiformats "^12.0.1" + +uint8arrays@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.0.3.tgz#92b894d9c4269ba97c51544d6e1f279fe6f80d1f" + integrity sha512-6LBuKji28kHjgPJMkQ6GDaBb1lRwIhyOYq6pDGwYMoDPfImE9SkuYENVmR0yu9yGgs2clHUSY9fKDukR+AXfqQ== + dependencies: + multiformats "^13.0.0" + uncrypto@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" @@ -12432,6 +14346,13 @@ usehooks-ts@^2.15.1: dependencies: lodash.debounce "^4.0.8" +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + utf-8-validate@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-6.0.3.tgz#7d8c936d854e86b24d1d655f138ee27d2636d777" @@ -12502,6 +14423,14 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" +valtio@1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.0.tgz#c029dcd17a0f99d2fbec933721fe64cfd32a31ed" + integrity sha512-65Yd0yU5qs86b5lN1eu/nzcTgQ9/6YnD6iO+DDaDbQLn1Zv2w12Gwk43WkPlUBxk5wL/6cD5YMFf7kj6HZ1Kpg== + dependencies: + proxy-compare "2.5.1" + use-sync-external-store "1.2.0" + valtio@1.11.2: version "1.11.2" resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" @@ -12520,11 +14449,51 @@ value-or-promise@^1.0.12: resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +varuint-bitcoin@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +viem@2.8.6: + version "2.8.6" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.8.6.tgz#7467a0f113b4b13dd53fde4797aec1e686672f03" + integrity sha512-LqxLOSFtXfbC3tsiZ8Km8jKR4ktTOLfigL2dR9IN28He2+QrNhYvvwGPz3P4hbfU12Wvuxo6mWGZ2L1lpNtvrA== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "1.0.0" + isows "1.0.3" + ws "8.13.0" + +viem@2.x, viem@^2.7.11: + version "2.9.16" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.16.tgz#2127871db1908a70798eddb820024b5f0ddc9152" + integrity sha512-FQRfN4G7uKEUs5DYvVrH/kZmTkwcSDpTBxnadpwG1EEP8nHm57WDpSaGN7PwSPVgJ6rMo5MENT5hgnqaNTlb2w== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "1.0.0" + isows "1.0.3" + ws "8.13.0" + viem@^1.0.0, viem@^1.1.4: version "1.21.4" resolved "https://registry.yarnpkg.com/viem/-/viem-1.21.4.tgz#883760e9222540a5a7e0339809202b45fe6a842d" @@ -12539,20 +14508,6 @@ viem@^1.0.0, viem@^1.1.4: isows "1.0.3" ws "8.13.0" -viem@^2.7.11: - version "2.9.16" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.16.tgz#2127871db1908a70798eddb820024b5f0ddc9152" - integrity sha512-FQRfN4G7uKEUs5DYvVrH/kZmTkwcSDpTBxnadpwG1EEP8nHm57WDpSaGN7PwSPVgJ6rMo5MENT5hgnqaNTlb2w== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "1.0.0" - isows "1.0.3" - ws "8.13.0" - vite@^5.2.0: version "5.2.8" resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.8.tgz#a99e09939f1a502992381395ce93efa40a2844aa" @@ -12597,6 +14552,11 @@ web-vitals@^2.1.4: resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== +web-vitals@^3.0.4: + version "3.5.2" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-3.5.2.tgz#5bb58461bbc173c3f00c2ddff8bfe6e680999ca9" + integrity sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg== + webextension-polyfill-ts@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/webextension-polyfill-ts/-/webextension-polyfill-ts-0.25.0.tgz#fff041626365dbd0e29c40b197e989a55ec221ca" @@ -12624,6 +14584,18 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +websocket@^1.0.34: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + whatwg-mimetype@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" @@ -12808,7 +14780,12 @@ ws@8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -ws@^7.5.1: +ws@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +ws@^7, ws@^7.5.1: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== @@ -12831,6 +14808,14 @@ xss@^1.0.8: commander "^2.20.3" cssfilter "0.0.10" +xstream@^11.14.0: + version "11.14.0" + resolved "https://registry.yarnpkg.com/xstream/-/xstream-11.14.0.tgz#2c071d26b18310523b6877e86b4e54df068a9ae5" + integrity sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw== + dependencies: + globalthis "^1.0.1" + symbol-observable "^2.0.3" + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -12846,6 +14831,11 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -12944,7 +14934,7 @@ zen-observable@0.8.15: resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== -zod@3.22.4: +zod@3.22.4, zod@^3.22.4: version "3.22.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== @@ -12955,3 +14945,10 @@ zustand@4.4.1: integrity sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw== dependencies: use-sync-external-store "1.2.0" + +zustand@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848" + integrity sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g== + dependencies: + use-sync-external-store "1.2.0" From d2daed4cac0187c599d526ceb80a0cf5c33eb7be Mon Sep 17 00:00:00 2001 From: Gilbert Date: Tue, 23 Apr 2024 21:10:20 -0500 Subject: [PATCH 160/251] Sign in with google --- packages/backend/src/routes/auth.ts | 42 ++++++--- packages/backend/src/server.ts | 2 +- packages/backend/src/service.ts | 10 ++- packages/frontend/package.json | 14 +-- packages/frontend/src/App.tsx | 8 +- packages/frontend/src/pages/auth/Login.tsx | 94 ++++++++++++++++++--- packages/frontend/src/pages/auth/SignUp.tsx | 80 ++++++++++++++---- packages/frontend/src/utils/siwe.ts | 19 +++-- packages/frontend/src/utils/use-snowball.ts | 9 +- yarn.lock | 14 +-- 10 files changed, 222 insertions(+), 70 deletions(-) diff --git a/packages/backend/src/routes/auth.ts b/packages/backend/src/routes/auth.ts index 4d2da019..e1214bbc 100644 --- a/packages/backend/src/routes/auth.ts +++ b/packages/backend/src/routes/auth.ts @@ -1,37 +1,55 @@ import { Router } from 'express'; import { SiweMessage } from 'siwe'; +import { Service } from '../service'; const router = Router(); router.post('/validate', async (req, res) => { - const { message, signature } = req.body; + const { message, signature, action } = req.body; const { success, data } = await new SiweMessage(message).verify({ signature, }); - if (success) { - req.session.address = data.address; - req.session.chainId = data.chainId; + if (!success) { + return res.send({ success }); } + const service: Service = req.app.get('service'); + const user = await service.getUserByEthAddress(data.address); + + if (action === 'signup') { + if (user) { + return res.send({ success: false, error: 'user_already_exists' }); + } + const newUser = await service.loadOrCreateUser(data.address); + req.session.userId = newUser.id; + } else if (action === 'login') { + if (!user) { + return res.send({ success: false, error: 'user_not_found' }); + } + req.session.userId = user.id; + } + + req.session.address = data.address; + res.send({ success }); }); router.get('/session', (req, res) => { - if (req.session.address && req.session.chainId) { - res.send({ address: req.session.address, chainId: req.session.chainId }); + if (req.session.address) { + res.send({ + userId: req.session.userId, + address: req.session.address, + }); } else { res.status(401).send({ error: 'Unauthorized: No active session' }); } }); router.post('/logout', (req, res) => { - req.session.destroy((err) => { - if (err) { - return res.send({ success: false }); - } - res.send({ success: true }); - }); + // This is how you clear cookie-session + (req as any).session = null; + res.send({ success: true }); }); export default router; diff --git a/packages/backend/src/server.ts b/packages/backend/src/server.ts index f89aa979..fa8b7d46 100644 --- a/packages/backend/src/server.ts +++ b/packages/backend/src/server.ts @@ -23,8 +23,8 @@ const log = debug('snowball:server'); declare module 'express-session' { interface SessionData { + userId: string; address: string; - chainId: number; } } diff --git a/packages/backend/src/service.ts b/packages/backend/src/service.ts index 5211585c..ff304fde 100644 --- a/packages/backend/src/service.ts +++ b/packages/backend/src/service.ts @@ -161,13 +161,17 @@ export class Service { }); } - async loadOrCreateUser (ethAddress: string): Promise { - // Get user by ETH address - let user = await this.db.getUser({ + async getUserByEthAddress (ethAddress: string): Promise { + return await this.db.getUser({ where: { ethAddress } }); + } + + async loadOrCreateUser (ethAddress: string): Promise { + // Get user by ETH address + let user = await this.getUserByEthAddress(ethAddress); if (!user) { const [org] = await this.db.getOrganizations({}); diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 84bca501..91b671f8 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -21,14 +21,14 @@ "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-toast": "^1.1.5", "@radix-ui/react-tooltip": "^1.0.7", - "@snowballtools/auth": "0.1.0", - "@snowballtools/auth-lit": "0.1.0", - "@snowballtools/js-sdk": "0.1.0", - "@snowballtools/link-lit-alchemy-light": "0.1.0", + "@snowballtools/auth": "^0.1.0", + "@snowballtools/auth-lit": "^0.1.0", + "@snowballtools/js-sdk": "^0.1.0", + "@snowballtools/link-lit-alchemy-light": "^0.1.0", "@snowballtools/material-tailwind-react-fork": "^2.1.10", - "@snowballtools/smartwallet-alchemy-light": "0.1.0", - "@snowballtools/types": "0.1.0", - "@snowballtools/utils": "0.1.0", + "@snowballtools/smartwallet-alchemy-light": "^0.1.0", + "@snowballtools/types": "^0.1.0", + "@snowballtools/utils": "^0.1.0", "@tanstack/react-query": "^5.22.2", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", diff --git a/packages/frontend/src/App.tsx b/packages/frontend/src/App.tsx index 50533798..eae3b12c 100644 --- a/packages/frontend/src/App.tsx +++ b/packages/frontend/src/App.tsx @@ -64,10 +64,8 @@ function App() { }).then((res) => { if (res.status !== 200) { localStorage.clear(); - if ( - window.location.pathname !== '/login' && - window.location.pathname !== '/signup' - ) { + const path = window.location.pathname; + if (path !== '/login' && path !== '/signup') { window.location.pathname = '/login'; } } @@ -76,7 +74,7 @@ function App() { return ( - ; + ); } diff --git a/packages/frontend/src/pages/auth/Login.tsx b/packages/frontend/src/pages/auth/Login.tsx index 8b95143d..0757cf26 100644 --- a/packages/frontend/src/pages/auth/Login.tsx +++ b/packages/frontend/src/pages/auth/Login.tsx @@ -9,12 +9,15 @@ import { import { GoogleIcon } from 'components/shared/CustomIcon/GoogleIcon'; import { DotBorder } from 'components/shared/DotBorder'; import { WavyBorder } from 'components/shared/WavyBorder'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { CreatePasskey } from './CreatePasskey'; import { AppleIcon } from 'components/shared/CustomIcon/AppleIcon'; import { KeyIcon } from 'components/shared/CustomIcon/KeyIcon'; import { useToast } from 'components/shared/Toast'; import { Link } from 'react-router-dom'; +import { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; +import { signInWithEthereum } from 'utils/siwe'; +import { useSnowball } from 'utils/use-snowball'; type Provider = 'google' | 'github' | 'apple' | 'email' | 'passkey'; @@ -23,6 +26,8 @@ type Props = { }; export const Login = ({ onDone }: Props) => { + const snowball = useSnowball(); + const [error, setError] = useState(''); const [provider, setProvider] = useState(false); // const loading = snowball.auth.state.loading && provider; @@ -33,6 +38,59 @@ export const Login = ({ onDone }: Props) => { return ; } + async function handleSigninRedirect() { + let wallet: PKPEthersWallet | undefined; + const { google } = snowball.auth; + if (google.canHandleOAuthRedirectBack()) { + setProvider('google'); + console.log('Handling google redirect back'); + try { + await google.handleOAuthRedirectBack(); + wallet = await google.getEthersWallet(); + const result = await signInWithEthereum(1, 'login', wallet); + if (result.error) { + setError(result.error); + setProvider(false); + wallet = undefined; + return; + } + } catch (err: any) { + setError(err.message); + console.log(err.message, err.name, err.details); + setProvider(false); + return; + } + } + // if (apple.canHandleOAuthRedirectBack()) { + // setProvider('apple'); + // console.log('Handling apple redirect back'); + // try { + // await apple.handleOAuthRedirectBack(); + // wallet = await apple.getEthersWallet(); + // const result = await signInWithEthereum(1, 'login', wallet); + // if (result.error) { + // setError(result.error); + // setProvider(false); + // wallet = undefined; + // return; + // } + // } catch (err: any) { + // setError(err.message); + // console.log(err.message, err.name, err.details); + // setProvider(false); + // return; + // } + // } + + if (wallet) { + window.location.pathname = '/'; + } + } + + useEffect(() => { + handleSigninRedirect(); + }, []); + return (
    @@ -114,7 +172,7 @@ export const Login = ({ onDone }: Props) => { } onClick={() => { setProvider('google'); - // snowball.auth.createPasskey(); + snowball.auth.google.startOAuthRedirect(); }} className="flex-1 self-stretch" variant={'tertiary'} @@ -157,6 +215,7 @@ export const Login = ({ onDone }: Props) => { } onClick={async () => { setProvider('apple'); + // snowball.auth.apple.startOAuthRedirect(); await new Promise((resolve) => setTimeout(resolve, 800)); setProvider(false); toast({ @@ -175,17 +234,26 @@ export const Login = ({ onDone }: Props) => { Continue with Apple
    -
    -
    - Don't have an account? -
    -
    - - Sign up now - + +
    + {error && ( +
    +
    Error: {error}
    +
    + )} + +
    +
    + Don't have an account? +
    +
    + + Sign up now + +
    diff --git a/packages/frontend/src/pages/auth/SignUp.tsx b/packages/frontend/src/pages/auth/SignUp.tsx index a9ac9588..bcfa48db 100644 --- a/packages/frontend/src/pages/auth/SignUp.tsx +++ b/packages/frontend/src/pages/auth/SignUp.tsx @@ -19,12 +19,15 @@ import { signInWithEthereum } from 'utils/siwe'; type Provider = 'google' | 'github' | 'apple' | 'email'; +type Err = { type: 'email' | 'provider'; message: string }; + type Props = { onDone: () => void; }; export const SignUp = ({ onDone }: Props) => { const [email, setEmail] = useState(''); + const [error, setError] = useState(); const [provider, setProvider] = useState(false); const { toast } = useToast(); @@ -32,13 +35,43 @@ export const SignUp = ({ onDone }: Props) => { async function handleSignupRedirect() { let wallet: PKPEthersWallet | undefined; - const google = snowball.auth.google; + const { google } = snowball.auth; if (google.canHandleOAuthRedirectBack()) { setProvider('google'); - await google.handleOAuthRedirectBack(); - wallet = await google.getEthersWallet(); - await signInWithEthereum(wallet); + try { + await google.handleOAuthRedirectBack(); + wallet = await google.getEthersWallet(); + const result = await signInWithEthereum(1, 'signup', wallet); + if (result.error) { + setError({ type: 'provider', message: result.error }); + setProvider(false); + wallet = undefined; + return; + } + } catch (err: any) { + setError({ type: 'provider', message: err.message }); + setProvider(false); + return; + } } + // if (apple.canHandleOAuthRedirectBack()) { + // setProvider('apple'); + // try { + // await apple.handleOAuthRedirectBack(); + // wallet = await apple.getEthersWallet(); + // const result = await signInWithEthereum(1, 'signup', wallet); + // if (result.error) { + // setError({ type: 'provider', message: result.error }); + // setProvider(false); + // wallet = undefined; + // return; + // } + // } catch (err: any) { + // setError({ type: 'provider', message: err.message }); + // setProvider(false); + // return; + // } + // } if (wallet) { onDone(); @@ -118,6 +151,7 @@ export const SignUp = ({ onDone }: Props) => { } onClick={async () => { setProvider('apple'); + // snowball.auth.apple.startOAuthRedirect(); await new Promise((resolve) => setTimeout(resolve, 800)); setProvider(false); toast({ @@ -137,6 +171,12 @@ export const SignUp = ({ onDone }: Props) => {
    + {error && error.type === 'provider' && ( +
    +
    Error: {error.message}
    +
    + )} +
    @@ -166,18 +206,26 @@ export const SignUp = ({ onDone }: Props) => { > Continue with Email - -
    -
    - Already an user? -
    -
    - - Sign in now - +
    + {error && error.type === 'email' && ( +
    +
    + Error: {error.message} +
    +
    + )} +
    +
    + Already an user? +
    +
    + + Sign in now + +
    diff --git a/packages/frontend/src/utils/siwe.ts b/packages/frontend/src/utils/siwe.ts index b66e436c..4eccc740 100644 --- a/packages/frontend/src/utils/siwe.ts +++ b/packages/frontend/src/utils/siwe.ts @@ -5,8 +5,13 @@ import { v4 as uuid } from 'uuid'; const domain = window.location.host; const origin = window.location.origin; -export async function signInWithEthereum(wallet: PKPEthersWallet) { +export async function signInWithEthereum( + chainId: number, + action: 'signup' | 'login', + wallet: PKPEthersWallet, +) { const message = await createSiweMessage( + chainId, await wallet.getAddress(), 'Sign in with Ethereum to the app.', ); @@ -17,20 +22,24 @@ export async function signInWithEthereum(wallet: PKPEthersWallet) { headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify({ message, signature }), + body: JSON.stringify({ action, message, signature }), credentials: 'include', }); - console.log(await res.text()); + return (await res.json()) as { success: boolean; error?: string }; } -async function createSiweMessage(address: string, statement: string) { +async function createSiweMessage( + chainId: number, + address: string, + statement: string, +) { const message = new SiweMessage({ domain, address, statement, uri: origin, version: '1', - chainId: 1, + chainId, nonce: uuid().replace(/[^a-z0-9]/g, ''), }); return message.prepareMessage(); diff --git a/packages/frontend/src/utils/use-snowball.ts b/packages/frontend/src/utils/use-snowball.ts index 45e174b7..1b04f90b 100644 --- a/packages/frontend/src/utils/use-snowball.ts +++ b/packages/frontend/src/utils/use-snowball.ts @@ -1,11 +1,18 @@ import { useEffect, useState } from 'react'; import { Snowball, SnowballChain } from '@snowballtools/js-sdk'; -import { LitGoogleAuth, LitPasskeyAuth } from '@snowballtools/auth-lit'; +import { + // LitAppleAuth, + LitGoogleAuth, + LitPasskeyAuth, +} from '@snowballtools/auth-lit'; export const snowball = Snowball.withAuth({ google: LitGoogleAuth.configure({ litRelayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, }), + // apple: LitAppleAuth.configure({ + // litRelayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, + // }), passkey: LitPasskeyAuth.configure({ litRelayApiKey: import.meta.env.VITE_LIT_RELAY_API_KEY!, }), diff --git a/yarn.lock b/yarn.lock index baa23f4b..cbd9ec1b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3960,7 +3960,7 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@snowballtools/auth-lit@0.1.0": +"@snowballtools/auth-lit@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/auth-lit/-/auth-lit-0.1.0.tgz#1ed97cf55dd20c29b46ee3e5ad053662e17fdc41" integrity sha512-WfGbdqd34I5wDcviSn9f8I1aTpY0ExJYGvkrwy/l0aeEotRBXoMDFNAM23RQN/aYzaewCOYGTPl1DJ1/hBYDyw== @@ -3975,7 +3975,7 @@ "@snowballtools/types" "*" "@snowballtools/utils" "*" -"@snowballtools/auth@*", "@snowballtools/auth@0.1.0": +"@snowballtools/auth@*", "@snowballtools/auth@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/auth/-/auth-0.1.0.tgz#f6bca8e631d754b524525153769bf28fa956cfa8" integrity sha512-jsviORyBcDporAFDCKGNHK4WCNBD68DdMJJ4wcnIa5DNXHjYLU4YYLqcbpccgnL1l+02o2nC/FyIwwDNcxWtjw== @@ -3986,7 +3986,7 @@ "@snowballtools/utils" "*" debug "*" -"@snowballtools/js-sdk@0.1.0": +"@snowballtools/js-sdk@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/js-sdk/-/js-sdk-0.1.0.tgz#69835d4c0fdb1023a2ff3e75d916eb23e98084e1" integrity sha512-ejyzeRjUiffaWZiBwLhCi9vVyJp+eNBlTYQIwfTipAQlr1q0yCfCHJic2z2CIt2w6Vzayfgi2KRmNyQpRd3img== @@ -3995,7 +3995,7 @@ "@snowballtools/types" "*" "@snowballtools/utils" "*" -"@snowballtools/link-lit-alchemy-light@0.1.0": +"@snowballtools/link-lit-alchemy-light@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/link-lit-alchemy-light/-/link-lit-alchemy-light-0.1.0.tgz#3198bd75ad8002f76481680b1c792a7a13b84111" integrity sha512-f6CEaol7qunra+1Tnk0Yb/M7l/EmYg40dlA7C+lYr0TQcGmIBQhT3rWtuluAlIsmKDPm1Ri7CCGfAYD7ioR/JQ== @@ -4024,7 +4024,7 @@ react-dom "18.2.0" tailwind-merge "1.8.1" -"@snowballtools/smartwallet-alchemy-light@*", "@snowballtools/smartwallet-alchemy-light@0.1.0": +"@snowballtools/smartwallet-alchemy-light@*", "@snowballtools/smartwallet-alchemy-light@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/smartwallet-alchemy-light/-/smartwallet-alchemy-light-0.1.0.tgz#659be4924c15c015b56453c508ee78cd3d64f837" integrity sha512-gR69Kq3Bl8qxmMqBjac5lINRlABH25U+oUmrzUsul9TtUdfJMtA/96jR48v6upliKyncGoSIf+KJQ8opA5DqHw== @@ -4037,12 +4037,12 @@ "@snowballtools/types" "*" "@snowballtools/utils" "*" -"@snowballtools/types@*", "@snowballtools/types@0.1.0": +"@snowballtools/types@*", "@snowballtools/types@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/types/-/types-0.1.0.tgz#b76b20f76cc4192b250712d148991f04d68bade6" integrity sha512-lYLtUGjTO2BDqpM/KA83ojRB9sKw7IPQ9IVrd0FWJlyHtmQ5MvDRIcXJXO85lIUUe4SIkxXdrJMvda0GMDMV0A== -"@snowballtools/utils@*", "@snowballtools/utils@0.1.0": +"@snowballtools/utils@*", "@snowballtools/utils@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/utils/-/utils-0.1.0.tgz#1f0c69f357a899301d0716e0b30121242617c464" integrity sha512-0dx3ct6pSbMdhSi/Yg3unM3sPuDIk+lv57YNvqRhv8e+wz+5IfRj0Bm12BB10Dav1PMJAXkLMYKJ5OYJJn6ALA== From e6b68dcce46c133f93daa0e1434d12a09388c679 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Tue, 23 Apr 2024 21:54:46 -0500 Subject: [PATCH 161/251] Bump snowball version --- packages/frontend/package.json | 14 +++---- yarn.lock | 71 ++++++++++++++++++++++++++-------- 2 files changed, 62 insertions(+), 23 deletions(-) diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 91b671f8..d3569752 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -21,14 +21,14 @@ "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-toast": "^1.1.5", "@radix-ui/react-tooltip": "^1.0.7", - "@snowballtools/auth": "^0.1.0", - "@snowballtools/auth-lit": "^0.1.0", - "@snowballtools/js-sdk": "^0.1.0", - "@snowballtools/link-lit-alchemy-light": "^0.1.0", + "@snowballtools/auth": "^0.1.1", + "@snowballtools/auth-lit": "^0.1.1", + "@snowballtools/js-sdk": "^0.1.1", + "@snowballtools/link-lit-alchemy-light": "^0.1.1", "@snowballtools/material-tailwind-react-fork": "^2.1.10", - "@snowballtools/smartwallet-alchemy-light": "^0.1.0", - "@snowballtools/types": "^0.1.0", - "@snowballtools/utils": "^0.1.0", + "@snowballtools/smartwallet-alchemy-light": "^0.1.1", + "@snowballtools/types": "^0.1.1", + "@snowballtools/utils": "^0.1.1", "@tanstack/react-query": "^5.22.2", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", diff --git a/yarn.lock b/yarn.lock index cbd9ec1b..a58174d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3960,10 +3960,10 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@snowballtools/auth-lit@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@snowballtools/auth-lit/-/auth-lit-0.1.0.tgz#1ed97cf55dd20c29b46ee3e5ad053662e17fdc41" - integrity sha512-WfGbdqd34I5wDcviSn9f8I1aTpY0ExJYGvkrwy/l0aeEotRBXoMDFNAM23RQN/aYzaewCOYGTPl1DJ1/hBYDyw== +"@snowballtools/auth-lit@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@snowballtools/auth-lit/-/auth-lit-0.1.1.tgz#838a13464740010b7fd5934851da27ebef853472" + integrity sha512-GQ20/oFuRKMFFrww6/m1/YUuzK/+7D3m2w2IdMGt47iKuGK3JkjJ+wSSWPws3rEWmluztfMBnTWYZpSc/udgNg== dependencies: "@lit-protocol/auth-helpers" "3.0.32" "@lit-protocol/constants" "3.0.32" @@ -3975,7 +3975,7 @@ "@snowballtools/types" "*" "@snowballtools/utils" "*" -"@snowballtools/auth@*", "@snowballtools/auth@^0.1.0": +"@snowballtools/auth@*": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/auth/-/auth-0.1.0.tgz#f6bca8e631d754b524525153769bf28fa956cfa8" integrity sha512-jsviORyBcDporAFDCKGNHK4WCNBD68DdMJJ4wcnIa5DNXHjYLU4YYLqcbpccgnL1l+02o2nC/FyIwwDNcxWtjw== @@ -3986,19 +3986,30 @@ "@snowballtools/utils" "*" debug "*" -"@snowballtools/js-sdk@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@snowballtools/js-sdk/-/js-sdk-0.1.0.tgz#69835d4c0fdb1023a2ff3e75d916eb23e98084e1" - integrity sha512-ejyzeRjUiffaWZiBwLhCi9vVyJp+eNBlTYQIwfTipAQlr1q0yCfCHJic2z2CIt2w6Vzayfgi2KRmNyQpRd3img== +"@snowballtools/auth@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@snowballtools/auth/-/auth-0.1.1.tgz#d99226111e1648fc0a89ea062ae2fae850eef58e" + integrity sha512-ETLWkiLSpI7GBJd6a9pDPrQ9RJxvvSLUD0A5UgETH6T1gd+qY5FlJK1HfwdpbfBfyDShj4CaPTYKRXiTSZexfQ== + dependencies: + "@lit-protocol/pkp-ethers" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + debug "*" + +"@snowballtools/js-sdk@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@snowballtools/js-sdk/-/js-sdk-0.1.1.tgz#f463b34d49246b0cccff2fe6004fe7bd238e29fd" + integrity sha512-ViPvKeuOdbPVup5YYZUoWPRWVdM44EERzg1+gLi4tpdo0NjWC5gHr+w3+ESr88CV1Tr/vIn5HfOLxL5DT32qyw== dependencies: "@snowballtools/auth" "*" "@snowballtools/types" "*" "@snowballtools/utils" "*" -"@snowballtools/link-lit-alchemy-light@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@snowballtools/link-lit-alchemy-light/-/link-lit-alchemy-light-0.1.0.tgz#3198bd75ad8002f76481680b1c792a7a13b84111" - integrity sha512-f6CEaol7qunra+1Tnk0Yb/M7l/EmYg40dlA7C+lYr0TQcGmIBQhT3rWtuluAlIsmKDPm1Ri7CCGfAYD7ioR/JQ== +"@snowballtools/link-lit-alchemy-light@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@snowballtools/link-lit-alchemy-light/-/link-lit-alchemy-light-0.1.1.tgz#55142771399578d7775e7d231a5cf26600a53b71" + integrity sha512-7vyxWLpkgLLGTaiFflklIz7dnluKwzTbF+EOsuHTFETHy+mt7GhgFkbG1/1EgxQ05oIccTtxzN/VclnZp06L5g== dependencies: "@alchemy/aa-alchemy" "^3.6.1" "@alchemy/aa-core" "^3.6.1" @@ -4024,7 +4035,7 @@ react-dom "18.2.0" tailwind-merge "1.8.1" -"@snowballtools/smartwallet-alchemy-light@*", "@snowballtools/smartwallet-alchemy-light@^0.1.0": +"@snowballtools/smartwallet-alchemy-light@*": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/smartwallet-alchemy-light/-/smartwallet-alchemy-light-0.1.0.tgz#659be4924c15c015b56453c508ee78cd3d64f837" integrity sha512-gR69Kq3Bl8qxmMqBjac5lINRlABH25U+oUmrzUsul9TtUdfJMtA/96jR48v6upliKyncGoSIf+KJQ8opA5DqHw== @@ -4037,12 +4048,30 @@ "@snowballtools/types" "*" "@snowballtools/utils" "*" -"@snowballtools/types@*", "@snowballtools/types@^0.1.0": +"@snowballtools/smartwallet-alchemy-light@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@snowballtools/smartwallet-alchemy-light/-/smartwallet-alchemy-light-0.1.1.tgz#b8b159247fc56c25af68b1aa1f19b51359cf58e6" + integrity sha512-KzjBrGrQO3oSZgZP8c9niAEV7N1D0LBMjc8hjVKG6ox9udw+e3u+rzRzEfqDZc8W19pvYxjoUq9jCdaU5zc+Kw== + dependencies: + "@alchemy/aa-accounts" "^3.6.1" + "@alchemy/aa-alchemy" "^3.6.1" + "@alchemy/aa-core" "^3.6.1" + "@lit-protocol/pkp-ethers" "3.0.32" + "@lit-protocol/types" "3.0.32" + "@snowballtools/types" "*" + "@snowballtools/utils" "*" + +"@snowballtools/types@*": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/types/-/types-0.1.0.tgz#b76b20f76cc4192b250712d148991f04d68bade6" integrity sha512-lYLtUGjTO2BDqpM/KA83ojRB9sKw7IPQ9IVrd0FWJlyHtmQ5MvDRIcXJXO85lIUUe4SIkxXdrJMvda0GMDMV0A== -"@snowballtools/utils@*", "@snowballtools/utils@^0.1.0": +"@snowballtools/types@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@snowballtools/types/-/types-0.1.1.tgz#b9162576ebf2e2a026303cd453786e381509ddbf" + integrity sha512-FmVk1fdwLRRPdFdDvgt+/NmWbviPKSTzsdmbPI5TbviDbVZPBCQImo1fYGq+5T5zK7WqN9ULAi04DbiPSpTVVA== + +"@snowballtools/utils@*": version "0.1.0" resolved "https://registry.yarnpkg.com/@snowballtools/utils/-/utils-0.1.0.tgz#1f0c69f357a899301d0716e0b30121242617c464" integrity sha512-0dx3ct6pSbMdhSi/Yg3unM3sPuDIk+lv57YNvqRhv8e+wz+5IfRj0Bm12BB10Dav1PMJAXkLMYKJ5OYJJn6ALA== @@ -4052,6 +4081,16 @@ alchemy-sdk "^3.2.0" viem "2.x" +"@snowballtools/utils@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@snowballtools/utils/-/utils-0.1.1.tgz#30c64a317e5dba613bf8fdd66dc4067c362f6ec0" + integrity sha512-GL9G8EUJUB/MxW1aaUtS4/KaKpND8CyWOG46wQ1SdEhrWooCg8fsU/0mG/lS/E/uoAUoaP0aG+hxo8v/wxKI9g== + dependencies: + "@alchemy/aa-core" "^3.6.1" + "@snowballtools/types" "*" + alchemy-sdk "^3.2.0" + viem "2.x" + "@socket.io/component-emitter@~3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz#621270c02c0a5d4f4669eb1caa9723c91cf201de" From aea6bfde54306f9df1d7fd2b2f4f0acd7b70bbf6 Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Wed, 24 Apr 2024 09:59:47 -0400 Subject: [PATCH 162/251] feat: support cf workers Note: we don't really want to be committing the gql-client. it is a stopgap. --- packages/backend/package.json | 2 +- packages/backend/src/registry.ts | 2 +- packages/backend/test/initialize-registry.ts | 2 +- .../backend/test/publish-deploy-records.ts | 2 +- packages/deployer/package.json | 2 +- packages/frontend/package.json | 5 +- packages/frontend/vite.config.ts | 3 - packages/gql-client/.gitignore | 2 +- packages/gql-client/dist/index.d.mts | 279 ++++ packages/gql-client/dist/index.d.ts | 279 ++++ packages/gql-client/dist/index.js | 700 ++++++++ packages/gql-client/dist/index.js.map | 1 + packages/gql-client/dist/index.mjs | 669 ++++++++ packages/gql-client/dist/index.mjs.map | 1 + yarn.lock | 1463 +++++++++++------ 15 files changed, 2921 insertions(+), 491 deletions(-) create mode 100644 packages/gql-client/dist/index.d.mts create mode 100644 packages/gql-client/dist/index.d.ts create mode 100644 packages/gql-client/dist/index.js create mode 100644 packages/gql-client/dist/index.js.map create mode 100644 packages/gql-client/dist/index.mjs create mode 100644 packages/gql-client/dist/index.mjs.map diff --git a/packages/backend/package.json b/packages/backend/package.json index 9aace9c7..f0fd6fbc 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "main": "index.js", "dependencies": { - "@cerc-io/laconic-sdk": "^0.1.16", + "@snowballtools/laconic-sdk": "^0.1.17", "@graphql-tools/schema": "^10.0.2", "@graphql-tools/utils": "^10.0.12", "@octokit/oauth-app": "^6.1.0", diff --git a/packages/backend/src/registry.ts b/packages/backend/src/registry.ts index ed30af9f..92cdbfe5 100644 --- a/packages/backend/src/registry.ts +++ b/packages/backend/src/registry.ts @@ -3,7 +3,7 @@ import assert from 'assert'; import { inc as semverInc } from 'semver'; import { DateTime } from 'luxon'; -import { Registry as LaconicRegistry } from '@cerc-io/laconic-sdk'; +import { Registry as LaconicRegistry } from '@snowballtools/laconic-sdk'; import { RegistryConfig } from './config'; import { diff --git a/packages/backend/test/initialize-registry.ts b/packages/backend/test/initialize-registry.ts index ac818adc..b7dc77bb 100644 --- a/packages/backend/test/initialize-registry.ts +++ b/packages/backend/test/initialize-registry.ts @@ -1,6 +1,6 @@ import debug from 'debug'; -import { Registry } from '@cerc-io/laconic-sdk'; +import { Registry } from '@snowballtools/laconic-sdk'; import { DEFAULT_CONFIG_FILE_PATH } from '../src/constants'; import { Config } from '../src/config'; diff --git a/packages/backend/test/publish-deploy-records.ts b/packages/backend/test/publish-deploy-records.ts index 0819a91c..7dfe3d26 100644 --- a/packages/backend/test/publish-deploy-records.ts +++ b/packages/backend/test/publish-deploy-records.ts @@ -2,7 +2,7 @@ import debug from 'debug'; import { DataSource } from 'typeorm'; import path from 'path'; -import { Registry } from '@cerc-io/laconic-sdk'; +import { Registry } from '@snowballtools/laconic-sdk'; import { Config } from '../src/config'; import { DEFAULT_CONFIG_FILE_PATH } from '../src/constants'; diff --git a/packages/deployer/package.json b/packages/deployer/package.json index ca7a0320..72bfd492 100644 --- a/packages/deployer/package.json +++ b/packages/deployer/package.json @@ -4,6 +4,6 @@ "main": "index.js", "private": true, "devDependencies": { - "@cerc-io/laconic-registry-cli": "^0.1.10" + "@snowballtools/laconic-registry-cli": "^0.1.13" } } diff --git a/packages/frontend/package.json b/packages/frontend/package.json index d3569752..56a45e44 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "dev": "vite --port 3000", - "build": "tsc && vite build", + "build": "vite build", "lint": "tsc --noEmit", "preview": "vite preview" }, @@ -66,6 +66,7 @@ "web-vitals": "^2.1.4" }, "devDependencies": { + "@types/lodash": "^4.17.0", "@types/jest": "^27.5.2", "@types/luxon": "^3.3.7", "@types/node": "^16.18.68", @@ -80,4 +81,4 @@ "typescript": "^5.3.3", "vite": "^5.2.0" } -} \ No newline at end of file +} diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index b2a78fa8..4a991e0e 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -12,9 +12,6 @@ export default defineConfig({ components: "/src/components", }, }, - define: { - "process.env": "import.meta.env", - }, optimizeDeps: { include: [ // "@snowballtools/types", diff --git a/packages/gql-client/.gitignore b/packages/gql-client/.gitignore index 1521c8b7..08e50ec8 100644 --- a/packages/gql-client/.gitignore +++ b/packages/gql-client/.gitignore @@ -1 +1 @@ -dist +# dist diff --git a/packages/gql-client/dist/index.d.mts b/packages/gql-client/dist/index.d.mts new file mode 100644 index 00000000..f2a6d7e6 --- /dev/null +++ b/packages/gql-client/dist/index.d.mts @@ -0,0 +1,279 @@ +declare enum Role { + Owner = "Owner", + Maintainer = "Maintainer", + Reader = "Reader" +} +declare enum Permission { + View = "View", + Edit = "Edit" +} +declare enum Environment { + Production = "Production", + Preview = "Preview", + Development = "Development" +} +declare enum DeploymentStatus { + Building = "Building", + Ready = "Ready", + Error = "Error" +} +declare enum DomainStatus { + Live = "Live", + Pending = "Pending" +} +type EnvironmentVariable = { + id: string; + environment: Environment; + key: string; + value: string; + createdAt: string; + updatedAt: string; +}; +type Domain = { + id: string; + branch: string; + name: string; + status: DomainStatus; + redirectTo: Domain | null; + createdAt: string; + updatedAt: string; +}; +type User = { + id: string; + name: string | null; + email: string; + isVerified: boolean; + createdAt: string; + updatedAt: string; + gitHubToken: string | null; +}; +type Deployment = { + id: string; + domain: Domain; + branch: string; + commitHash: string; + commitMessage: string; + url?: string; + environment: Environment; + isCurrent: boolean; + status: DeploymentStatus; + createdBy: User; + createdAt: string; + updatedAt: string; +}; +type OrganizationMember = { + id: string; + member: User; + role: Role; + createdAt: string; + updatedAt: string; +}; +type ProjectMember = { + id: string; + member: User; + permissions: Permission[]; + isPending: boolean; + createdAt: string; + updatedAt: string; +}; +type OrganizationProject = { + id: string; + owner: User; + deployments: Deployment[]; + name: string; + repository: string; + prodBranch: string; + description: string; + template: string; + framework: string; + webhooks: string[]; + members: ProjectMember[]; + environmentVariables: EnvironmentVariable[]; + createdAt: string; + updatedAt: string; +}; +type Organization = { + id: string; + name: string; + slug: string; + projects: OrganizationProject[]; + createdAt: string; + updatedAt: string; + members: OrganizationMember[]; +}; +type Project = { + id: string; + owner: User; + deployments: Deployment[]; + name: string; + repository: string; + prodBranch: string; + description: string; + template: string; + framework: string; + webhooks: string[]; + members: ProjectMember[]; + environmentVariables: EnvironmentVariable[]; + createdAt: string; + updatedAt: string; + organization: Organization; + icon: string; + subDomain: string; +}; +type GetProjectMembersResponse = { + projectMembers: ProjectMember[]; +}; +type AddProjectMemberResponse = { + addProjectMember: boolean; +}; +type RemoveProjectMemberResponse = { + removeProjectMember: boolean; +}; +type UpdateProjectMemberResponse = { + updateProjectMember: boolean; +}; +type GetDeploymentsResponse = { + deployments: Deployment[]; +}; +type GetEnvironmentVariablesResponse = { + environmentVariables: EnvironmentVariable[]; +}; +type GetOrganizationsResponse = { + organizations: Organization[]; +}; +type GetUserResponse = { + user: User; +}; +type GetProjectResponse = { + project: Project | null; +}; +type GetProjectsInOrganizationResponse = { + projectsInOrganization: Project[]; +}; +type GetDomainsResponse = { + domains: Domain[]; +}; +type SearchProjectsResponse = { + searchProjects: Project[]; +}; +type AddEnvironmentVariablesResponse = { + addEnvironmentVariables: boolean; +}; +type AddEnvironmentVariableInput = { + environments: string[]; + key: string; + value: string; +}; +type UpdateEnvironmentVariableInput = { + key: string; + value: string; +}; +type UpdateProjectMemberInput = { + permissions: Permission[]; +}; +type AddProjectMemberInput = { + email: string; + permissions: Permission[]; +}; +type UpdateEnvironmentVariableResponse = { + updateEnvironmentVariable: boolean; +}; +type RemoveEnvironmentVariableResponse = { + removeEnvironmentVariable: boolean; +}; +type UpdateDeploymentToProdResponse = { + updateDeploymentToProd: boolean; +}; +type AddProjectResponse = { + addProject: Project; +}; +type UpdateProjectResponse = { + updateProject: boolean; +}; +type UpdateDomainResponse = { + updateDomain: boolean; +}; +type DeleteProjectResponse = { + deleteProject: boolean; +}; +type DeleteDomainResponse = { + deleteDomain: boolean; +}; +type AddProjectInput = { + name: string; + repository: string; + prodBranch: string; + template?: string; +}; +type UpdateProjectInput = { + name?: string; + description?: string; + prodBranch?: string; + webhooks?: string[]; + organizationId?: string; +}; +type UpdateDomainInput = { + name?: string; + branch?: string; + redirectToId?: string | null; +}; +type RedeployToProdResponse = { + redeployToProd: boolean; +}; +type RollbackDeploymentResponse = { + rollbackDeployment: boolean; +}; +type AddDomainInput = { + name: string; +}; +type FilterDomainInput = { + branch?: string; + status?: DomainStatus; +}; +type AddDomainResponse = { + addDomain: true; +}; +type AuthenticateGitHubResponse = { + authenticateGitHub: { + token: string; + }; +}; +type UnauthenticateGitHubResponse = { + unauthenticateGitHub: boolean; +}; + +interface GraphQLConfig { + gqlEndpoint: string; +} +declare class GQLClient { + private client; + constructor(config: GraphQLConfig); + getUser(): Promise; + getProject(projectId: string): Promise; + getProjectsInOrganization(organizationSlug: string): Promise; + getOrganizations(): Promise; + getDeployments(projectId: string): Promise; + getEnvironmentVariables(projectId: string): Promise; + getProjectMembers(projectId: string): Promise; + addProjectMember(projectId: string, data: AddProjectMemberInput): Promise; + updateProjectMember(projectMemberId: string, data: UpdateProjectMemberInput): Promise; + removeProjectMember(projectMemberId: string): Promise; + searchProjects(searchText: string): Promise; + addEnvironmentVariables(projectId: string, data: AddEnvironmentVariableInput[]): Promise; + updateEnvironmentVariable(environmentVariableId: string, data: UpdateEnvironmentVariableInput): Promise; + removeEnvironmentVariable(environmentVariableId: string): Promise; + updateDeploymentToProd(deploymentId: string): Promise; + addProject(organizationSlug: string, data: AddProjectInput): Promise; + updateProject(projectId: string, data: UpdateProjectInput): Promise; + updateDomain(domainId: string, data: UpdateDomainInput): Promise; + redeployToProd(deploymentId: string): Promise; + deleteProject(projectId: string): Promise; + deleteDomain(domainId: string): Promise; + rollbackDeployment(projectId: string, deploymentId: string): Promise; + addDomain(projectId: string, data: AddDomainInput): Promise; + getDomains(projectId: string, filter?: FilterDomainInput): Promise; + authenticateGitHub(code: string): Promise; + unauthenticateGithub(): Promise; +} + +export { type AddDomainInput, type AddDomainResponse, type AddEnvironmentVariableInput, type AddEnvironmentVariablesResponse, type AddProjectInput, type AddProjectMemberInput, type AddProjectMemberResponse, type AddProjectResponse, type AuthenticateGitHubResponse, type DeleteDomainResponse, type DeleteProjectResponse, type Deployment, DeploymentStatus, type Domain, DomainStatus, Environment, type EnvironmentVariable, type FilterDomainInput, GQLClient, type GetDeploymentsResponse, type GetDomainsResponse, type GetEnvironmentVariablesResponse, type GetOrganizationsResponse, type GetProjectMembersResponse, type GetProjectResponse, type GetProjectsInOrganizationResponse, type GetUserResponse, type GraphQLConfig, type Organization, type OrganizationMember, type OrganizationProject, Permission, type Project, type ProjectMember, type RedeployToProdResponse, type RemoveEnvironmentVariableResponse, type RemoveProjectMemberResponse, Role, type RollbackDeploymentResponse, type SearchProjectsResponse, type UnauthenticateGitHubResponse, type UpdateDeploymentToProdResponse, type UpdateDomainInput, type UpdateDomainResponse, type UpdateEnvironmentVariableInput, type UpdateEnvironmentVariableResponse, type UpdateProjectInput, type UpdateProjectMemberInput, type UpdateProjectMemberResponse, type UpdateProjectResponse, type User }; diff --git a/packages/gql-client/dist/index.d.ts b/packages/gql-client/dist/index.d.ts new file mode 100644 index 00000000..f2a6d7e6 --- /dev/null +++ b/packages/gql-client/dist/index.d.ts @@ -0,0 +1,279 @@ +declare enum Role { + Owner = "Owner", + Maintainer = "Maintainer", + Reader = "Reader" +} +declare enum Permission { + View = "View", + Edit = "Edit" +} +declare enum Environment { + Production = "Production", + Preview = "Preview", + Development = "Development" +} +declare enum DeploymentStatus { + Building = "Building", + Ready = "Ready", + Error = "Error" +} +declare enum DomainStatus { + Live = "Live", + Pending = "Pending" +} +type EnvironmentVariable = { + id: string; + environment: Environment; + key: string; + value: string; + createdAt: string; + updatedAt: string; +}; +type Domain = { + id: string; + branch: string; + name: string; + status: DomainStatus; + redirectTo: Domain | null; + createdAt: string; + updatedAt: string; +}; +type User = { + id: string; + name: string | null; + email: string; + isVerified: boolean; + createdAt: string; + updatedAt: string; + gitHubToken: string | null; +}; +type Deployment = { + id: string; + domain: Domain; + branch: string; + commitHash: string; + commitMessage: string; + url?: string; + environment: Environment; + isCurrent: boolean; + status: DeploymentStatus; + createdBy: User; + createdAt: string; + updatedAt: string; +}; +type OrganizationMember = { + id: string; + member: User; + role: Role; + createdAt: string; + updatedAt: string; +}; +type ProjectMember = { + id: string; + member: User; + permissions: Permission[]; + isPending: boolean; + createdAt: string; + updatedAt: string; +}; +type OrganizationProject = { + id: string; + owner: User; + deployments: Deployment[]; + name: string; + repository: string; + prodBranch: string; + description: string; + template: string; + framework: string; + webhooks: string[]; + members: ProjectMember[]; + environmentVariables: EnvironmentVariable[]; + createdAt: string; + updatedAt: string; +}; +type Organization = { + id: string; + name: string; + slug: string; + projects: OrganizationProject[]; + createdAt: string; + updatedAt: string; + members: OrganizationMember[]; +}; +type Project = { + id: string; + owner: User; + deployments: Deployment[]; + name: string; + repository: string; + prodBranch: string; + description: string; + template: string; + framework: string; + webhooks: string[]; + members: ProjectMember[]; + environmentVariables: EnvironmentVariable[]; + createdAt: string; + updatedAt: string; + organization: Organization; + icon: string; + subDomain: string; +}; +type GetProjectMembersResponse = { + projectMembers: ProjectMember[]; +}; +type AddProjectMemberResponse = { + addProjectMember: boolean; +}; +type RemoveProjectMemberResponse = { + removeProjectMember: boolean; +}; +type UpdateProjectMemberResponse = { + updateProjectMember: boolean; +}; +type GetDeploymentsResponse = { + deployments: Deployment[]; +}; +type GetEnvironmentVariablesResponse = { + environmentVariables: EnvironmentVariable[]; +}; +type GetOrganizationsResponse = { + organizations: Organization[]; +}; +type GetUserResponse = { + user: User; +}; +type GetProjectResponse = { + project: Project | null; +}; +type GetProjectsInOrganizationResponse = { + projectsInOrganization: Project[]; +}; +type GetDomainsResponse = { + domains: Domain[]; +}; +type SearchProjectsResponse = { + searchProjects: Project[]; +}; +type AddEnvironmentVariablesResponse = { + addEnvironmentVariables: boolean; +}; +type AddEnvironmentVariableInput = { + environments: string[]; + key: string; + value: string; +}; +type UpdateEnvironmentVariableInput = { + key: string; + value: string; +}; +type UpdateProjectMemberInput = { + permissions: Permission[]; +}; +type AddProjectMemberInput = { + email: string; + permissions: Permission[]; +}; +type UpdateEnvironmentVariableResponse = { + updateEnvironmentVariable: boolean; +}; +type RemoveEnvironmentVariableResponse = { + removeEnvironmentVariable: boolean; +}; +type UpdateDeploymentToProdResponse = { + updateDeploymentToProd: boolean; +}; +type AddProjectResponse = { + addProject: Project; +}; +type UpdateProjectResponse = { + updateProject: boolean; +}; +type UpdateDomainResponse = { + updateDomain: boolean; +}; +type DeleteProjectResponse = { + deleteProject: boolean; +}; +type DeleteDomainResponse = { + deleteDomain: boolean; +}; +type AddProjectInput = { + name: string; + repository: string; + prodBranch: string; + template?: string; +}; +type UpdateProjectInput = { + name?: string; + description?: string; + prodBranch?: string; + webhooks?: string[]; + organizationId?: string; +}; +type UpdateDomainInput = { + name?: string; + branch?: string; + redirectToId?: string | null; +}; +type RedeployToProdResponse = { + redeployToProd: boolean; +}; +type RollbackDeploymentResponse = { + rollbackDeployment: boolean; +}; +type AddDomainInput = { + name: string; +}; +type FilterDomainInput = { + branch?: string; + status?: DomainStatus; +}; +type AddDomainResponse = { + addDomain: true; +}; +type AuthenticateGitHubResponse = { + authenticateGitHub: { + token: string; + }; +}; +type UnauthenticateGitHubResponse = { + unauthenticateGitHub: boolean; +}; + +interface GraphQLConfig { + gqlEndpoint: string; +} +declare class GQLClient { + private client; + constructor(config: GraphQLConfig); + getUser(): Promise; + getProject(projectId: string): Promise; + getProjectsInOrganization(organizationSlug: string): Promise; + getOrganizations(): Promise; + getDeployments(projectId: string): Promise; + getEnvironmentVariables(projectId: string): Promise; + getProjectMembers(projectId: string): Promise; + addProjectMember(projectId: string, data: AddProjectMemberInput): Promise; + updateProjectMember(projectMemberId: string, data: UpdateProjectMemberInput): Promise; + removeProjectMember(projectMemberId: string): Promise; + searchProjects(searchText: string): Promise; + addEnvironmentVariables(projectId: string, data: AddEnvironmentVariableInput[]): Promise; + updateEnvironmentVariable(environmentVariableId: string, data: UpdateEnvironmentVariableInput): Promise; + removeEnvironmentVariable(environmentVariableId: string): Promise; + updateDeploymentToProd(deploymentId: string): Promise; + addProject(organizationSlug: string, data: AddProjectInput): Promise; + updateProject(projectId: string, data: UpdateProjectInput): Promise; + updateDomain(domainId: string, data: UpdateDomainInput): Promise; + redeployToProd(deploymentId: string): Promise; + deleteProject(projectId: string): Promise; + deleteDomain(domainId: string): Promise; + rollbackDeployment(projectId: string, deploymentId: string): Promise; + addDomain(projectId: string, data: AddDomainInput): Promise; + getDomains(projectId: string, filter?: FilterDomainInput): Promise; + authenticateGitHub(code: string): Promise; + unauthenticateGithub(): Promise; +} + +export { type AddDomainInput, type AddDomainResponse, type AddEnvironmentVariableInput, type AddEnvironmentVariablesResponse, type AddProjectInput, type AddProjectMemberInput, type AddProjectMemberResponse, type AddProjectResponse, type AuthenticateGitHubResponse, type DeleteDomainResponse, type DeleteProjectResponse, type Deployment, DeploymentStatus, type Domain, DomainStatus, Environment, type EnvironmentVariable, type FilterDomainInput, GQLClient, type GetDeploymentsResponse, type GetDomainsResponse, type GetEnvironmentVariablesResponse, type GetOrganizationsResponse, type GetProjectMembersResponse, type GetProjectResponse, type GetProjectsInOrganizationResponse, type GetUserResponse, type GraphQLConfig, type Organization, type OrganizationMember, type OrganizationProject, Permission, type Project, type ProjectMember, type RedeployToProdResponse, type RemoveEnvironmentVariableResponse, type RemoveProjectMemberResponse, Role, type RollbackDeploymentResponse, type SearchProjectsResponse, type UnauthenticateGitHubResponse, type UpdateDeploymentToProdResponse, type UpdateDomainInput, type UpdateDomainResponse, type UpdateEnvironmentVariableInput, type UpdateEnvironmentVariableResponse, type UpdateProjectInput, type UpdateProjectMemberInput, type UpdateProjectMemberResponse, type UpdateProjectResponse, type User }; diff --git a/packages/gql-client/dist/index.js b/packages/gql-client/dist/index.js new file mode 100644 index 00000000..e985aa93 --- /dev/null +++ b/packages/gql-client/dist/index.js @@ -0,0 +1,700 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + DeploymentStatus: () => DeploymentStatus, + DomainStatus: () => DomainStatus, + Environment: () => Environment, + GQLClient: () => GQLClient, + Permission: () => Permission, + Role: () => Role +}); +module.exports = __toCommonJS(src_exports); + +// src/client.ts +var import_client3 = require("@apollo/client"); + +// src/queries.ts +var import_client = require("@apollo/client"); +var getUser = import_client.gql` +query { + user { + id + name + email + createdAt + updatedAt + gitHubToken + } +} +`; +var getProject = import_client.gql` +query ($projectId: String!) { + project(projectId: $projectId) { + createdAt + description + id + name + template + updatedAt + prodBranch + framework + repository + webhooks + icon + subDomain + organization { + id + name + } + owner { + id + name + email + } + deployments { + id + branch + isCurrent + status + updatedAt + commitHash + createdAt + environment + domain { + status + branch + createdAt + updatedAt + id + name + } + createdBy { + id + name + } + } + } +} +`; +var getProjectsInOrganization = import_client.gql` +query ($organizationSlug: String!) { + projectsInOrganization(organizationSlug: $organizationSlug) { + id + name + createdAt + description + framework + prodBranch + webhooks + repository + updatedAt + icon + subDomain + deployments { + id + branch + isCurrent + status + updatedAt + commitHash + commitMessage + createdAt + environment + domain { + status + branch + createdAt + updatedAt + id + name + } + } + } +} +`; +var getOrganizations = import_client.gql` +query { + organizations { + id + name + slug + createdAt + updatedAt + } +} +`; +var getDeployments = import_client.gql` +query ($projectId: String!) { + deployments(projectId: $projectId) { + id + domain{ + branch + createdAt + id + name + status + updatedAt + } + branch + commitHash + commitMessage + url + environment + isCurrent + status + createdAt + updatedAt + createdBy { + id + name + email + } + } +} +`; +var getEnvironmentVariables = import_client.gql` +query ($projectId: String!) { + environmentVariables(projectId: $projectId) { + createdAt + environment + id + key + updatedAt + value + } +} +`; +var getProjectMembers = import_client.gql` +query ($projectId: String!) { + projectMembers(projectId: $projectId) { + id + member { + id + name + email + isVerified + } + isPending + createdAt + updatedAt + permissions + } +} +`; +var searchProjects = import_client.gql` +query ($searchText: String!) { + searchProjects(searchText: $searchText) { + id + name + prodBranch + repository + createdAt + description + framework + prodBranch + webhooks + updatedAt + template + repository + organization { + id + name + slug + createdAt + updatedAt + } + } +} +`; +var getDomains = import_client.gql` +query ($projectId: String!, $filter: FilterDomainsInput) { + domains(projectId: $projectId, filter: $filter) { + branch + createdAt + redirectTo { + id + name + branch + status + } + id + name + status + updatedAt + } +} +`; + +// src/mutations.ts +var import_client2 = require("@apollo/client"); +var removeProjectMember = import_client2.gql` +mutation ($projectMemberId: String!) { + removeProjectMember(projectMemberId: $projectMemberId) +} +`; +var updateProjectMember = import_client2.gql` +mutation ($projectMemberId: String!, $data: UpdateProjectMemberInput) { + updateProjectMember(projectMemberId: $projectMemberId, data: $data) +} +`; +var addProjectMember = import_client2.gql` +mutation ($projectId: String!, $data: AddProjectMemberInput) { + addProjectMember(projectId: $projectId, data: $data) +} +`; +var addEnvironmentVariables = import_client2.gql` +mutation ($projectId: String!, $data: [AddEnvironmentVariableInput!]) { + addEnvironmentVariables(projectId: $projectId, data: $data) +} +`; +var updateEnvironmentVariable = import_client2.gql` +mutation ($environmentVariableId: String!, $data: UpdateEnvironmentVariableInput!) { + updateEnvironmentVariable(environmentVariableId: $environmentVariableId, data: $data) +} +`; +var removeEnvironmentVariable = import_client2.gql` +mutation ($environmentVariableId: String!) { + removeEnvironmentVariable(environmentVariableId: $environmentVariableId) +} +`; +var updateDeploymentToProd = import_client2.gql` +mutation ($deploymentId: String!) { + updateDeploymentToProd(deploymentId: $deploymentId) +} +`; +var addProject = import_client2.gql` +mutation ($organizationSlug: String!, $data: AddProjectInput) { + addProject(organizationSlug: $organizationSlug, data: $data) { + id + } +}`; +var updateProjectMutation = import_client2.gql` +mutation ($projectId: String!, $data: UpdateProjectInput) { + updateProject(projectId: $projectId, data: $data) +}`; +var updateDomainMutation = import_client2.gql` +mutation ($domainId: String!, $data: UpdateDomainInput!) { + updateDomain(domainId: $domainId, data: $data) +}`; +var redeployToProd = import_client2.gql` +mutation ($deploymentId: String!) { + redeployToProd(deploymentId: $deploymentId) +} +`; +var deleteProject = import_client2.gql` +mutation ($projectId: String!) { + deleteProject(projectId: $projectId) +} +`; +var deleteDomain = import_client2.gql` +mutation ($domainId: String!) { + deleteDomain(domainId: $domainId) +}`; +var rollbackDeployment = import_client2.gql` +mutation ($projectId: String! ,$deploymentId: String!) { + rollbackDeployment(projectId: $projectId, deploymentId: $deploymentId) +} +`; +var addDomain = import_client2.gql` +mutation ($projectId: String!, $data: AddDomainInput!) { + addDomain(projectId: $projectId, data: $data) +} +`; +var authenticateGitHub = import_client2.gql` +mutation ($code: String!) { + authenticateGitHub(code: $code) { + token + } +}`; +var unauthenticateGitHub = import_client2.gql` +mutation { + unauthenticateGitHub +}`; + +// src/client.ts +var defaultOptions = { + watchQuery: { + fetchPolicy: "no-cache", + errorPolicy: "ignore" + }, + query: { + fetchPolicy: "no-cache", + errorPolicy: "all" + } +}; +var GQLClient = class { + constructor(config) { + this.client = new import_client3.ApolloClient({ + uri: config.gqlEndpoint, + cache: new import_client3.InMemoryCache(), + defaultOptions, + credentials: "include" + }); + } + getUser() { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getUser + }); + return data; + }); + } + getProject(projectId) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getProject, + variables: { + projectId + } + }); + return data; + }); + } + getProjectsInOrganization(organizationSlug) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getProjectsInOrganization, + variables: { + organizationSlug + } + }); + return data; + }); + } + getOrganizations() { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getOrganizations + }); + return data; + }); + } + getDeployments(projectId) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getDeployments, + variables: { + projectId + } + }); + return data; + }); + } + getEnvironmentVariables(projectId) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getEnvironmentVariables, + variables: { + projectId + } + }); + return data; + }); + } + getProjectMembers(projectId) { + return __async(this, null, function* () { + const result = yield this.client.query({ + query: getProjectMembers, + variables: { + projectId + } + }); + return result.data; + }); + } + addProjectMember(projectId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: addProjectMember, + variables: { + projectId, + data + } + }); + return result.data; + }); + } + updateProjectMember(projectMemberId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: updateProjectMember, + variables: { + projectMemberId, + data + } + }); + return result.data; + }); + } + removeProjectMember(projectMemberId) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: removeProjectMember, + variables: { + projectMemberId + } + }); + return result.data; + }); + } + searchProjects(searchText) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: searchProjects, + variables: { + searchText + } + }); + return data; + }); + } + addEnvironmentVariables(projectId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: addEnvironmentVariables, + variables: { + projectId, + data + } + }); + return result.data; + }); + } + updateEnvironmentVariable(environmentVariableId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: updateEnvironmentVariable, + variables: { + environmentVariableId, + data + } + }); + return result.data; + }); + } + removeEnvironmentVariable(environmentVariableId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: removeEnvironmentVariable, + variables: { + environmentVariableId + } + }); + return data; + }); + } + updateDeploymentToProd(deploymentId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: updateDeploymentToProd, + variables: { + deploymentId + } + }); + return data; + }); + } + addProject(organizationSlug, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: addProject, + variables: { + organizationSlug, + data + } + }); + return result.data; + }); + } + updateProject(projectId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: updateProjectMutation, + variables: { + projectId, + data + } + }); + return result.data; + }); + } + updateDomain(domainId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: updateDomainMutation, + variables: { + domainId, + data + } + }); + return result.data; + }); + } + redeployToProd(deploymentId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: redeployToProd, + variables: { + deploymentId + } + }); + return data; + }); + } + deleteProject(projectId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: deleteProject, + variables: { + projectId + } + }); + return data; + }); + } + deleteDomain(domainId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: deleteDomain, + variables: { + domainId + } + }); + return data; + }); + } + rollbackDeployment(projectId, deploymentId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: rollbackDeployment, + variables: { + projectId, + deploymentId + } + }); + return data; + }); + } + addDomain(projectId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: addDomain, + variables: { + projectId, + data + } + }); + return result.data; + }); + } + getDomains(projectId, filter) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getDomains, + variables: { + projectId, + filter + } + }); + return data; + }); + } + authenticateGitHub(code) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: authenticateGitHub, + variables: { + code + } + }); + return data; + }); + } + unauthenticateGithub() { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: unauthenticateGitHub + }); + return data; + }); + } +}; + +// src/types.ts +var Role = /* @__PURE__ */ ((Role2) => { + Role2["Owner"] = "Owner"; + Role2["Maintainer"] = "Maintainer"; + Role2["Reader"] = "Reader"; + return Role2; +})(Role || {}); +var Permission = /* @__PURE__ */ ((Permission2) => { + Permission2["View"] = "View"; + Permission2["Edit"] = "Edit"; + return Permission2; +})(Permission || {}); +var Environment = /* @__PURE__ */ ((Environment2) => { + Environment2["Production"] = "Production"; + Environment2["Preview"] = "Preview"; + Environment2["Development"] = "Development"; + return Environment2; +})(Environment || {}); +var DeploymentStatus = /* @__PURE__ */ ((DeploymentStatus2) => { + DeploymentStatus2["Building"] = "Building"; + DeploymentStatus2["Ready"] = "Ready"; + DeploymentStatus2["Error"] = "Error"; + return DeploymentStatus2; +})(DeploymentStatus || {}); +var DomainStatus = /* @__PURE__ */ ((DomainStatus2) => { + DomainStatus2["Live"] = "Live"; + DomainStatus2["Pending"] = "Pending"; + return DomainStatus2; +})(DomainStatus || {}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + DeploymentStatus, + DomainStatus, + Environment, + GQLClient, + Permission, + Role +}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/gql-client/dist/index.js.map b/packages/gql-client/dist/index.js.map new file mode 100644 index 00000000..fd1f5cf0 --- /dev/null +++ b/packages/gql-client/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.ts","../src/client.ts","../src/queries.ts","../src/mutations.ts","../src/types.ts"],"sourcesContent":["export * from \"./client\";\nexport * from \"./types\";\n","import { ApolloClient, DefaultOptions, InMemoryCache, NormalizedCacheObject } from '@apollo/client';\n\nimport * as queries from './queries';\nimport * as types from './types';\nimport * as mutations from './mutations';\n\nexport interface GraphQLConfig {\n gqlEndpoint: string;\n}\n\n// TODO: check options\nconst defaultOptions: DefaultOptions = {\n watchQuery: {\n fetchPolicy: 'no-cache',\n errorPolicy: 'ignore'\n },\n query: {\n fetchPolicy: 'no-cache',\n errorPolicy: 'all'\n }\n};\n\nexport class GQLClient {\n private client: ApolloClient;\n\n constructor (config: GraphQLConfig) {\n this.client = new ApolloClient({\n uri: config.gqlEndpoint,\n cache: new InMemoryCache(),\n defaultOptions,\n credentials: 'include'\n });\n }\n\n async getUser () : Promise {\n const { data } = await this.client.query({\n query: queries.getUser\n });\n\n return data;\n }\n\n async getProject (projectId: string) : Promise {\n const { data } = await this.client.query({\n query: queries.getProject,\n variables: {\n projectId\n }\n });\n\n return data;\n }\n\n async getProjectsInOrganization (organizationSlug: string) : Promise {\n const { data } = await this.client.query({\n query: queries.getProjectsInOrganization,\n variables: {\n organizationSlug\n }\n });\n\n return data;\n }\n\n async getOrganizations () : Promise {\n const { data } = await this.client.query({\n query: queries.getOrganizations\n });\n\n return data;\n }\n\n async getDeployments (projectId: string) : Promise {\n const { data } = await this.client.query({\n query: queries.getDeployments,\n variables: {\n projectId\n }\n });\n\n return data;\n }\n\n async getEnvironmentVariables (projectId: string) : Promise {\n const { data } = await this.client.query({\n query: queries.getEnvironmentVariables,\n variables: {\n projectId\n }\n });\n\n return data;\n }\n\n async getProjectMembers (projectId: string) : Promise {\n const result = await this.client.query({\n query: queries.getProjectMembers,\n variables: {\n projectId\n }\n });\n\n return result.data;\n }\n\n async addProjectMember (projectId: string, data: types.AddProjectMemberInput) : Promise {\n const result = await this.client.mutate({\n mutation: mutations.addProjectMember,\n variables: {\n projectId,\n data\n }\n });\n\n return result.data;\n }\n\n async updateProjectMember (projectMemberId: string, data: types.UpdateProjectMemberInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.updateProjectMember,\n variables: {\n projectMemberId,\n data\n }\n });\n\n return result.data;\n }\n\n async removeProjectMember (projectMemberId: string): Promise {\n const result = await this.client.mutate({\n mutation: mutations.removeProjectMember,\n variables: {\n projectMemberId\n }\n });\n\n return result.data;\n }\n\n async searchProjects (searchText: string) : Promise {\n const { data } = await this.client.query({\n query: queries.searchProjects,\n variables: {\n searchText\n }\n });\n\n return data;\n }\n\n async addEnvironmentVariables (projectId: string, data: types.AddEnvironmentVariableInput[]): Promise {\n const result = await this.client.mutate({\n mutation: mutations.addEnvironmentVariables,\n variables: {\n projectId,\n data\n }\n });\n\n return result.data;\n }\n\n async updateEnvironmentVariable (environmentVariableId: string, data: types.UpdateEnvironmentVariableInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.updateEnvironmentVariable,\n variables: {\n environmentVariableId,\n data\n }\n });\n\n return result.data;\n }\n\n async removeEnvironmentVariable (environmentVariableId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.removeEnvironmentVariable,\n variables: {\n environmentVariableId\n }\n });\n\n return data;\n }\n\n async updateDeploymentToProd (deploymentId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.updateDeploymentToProd,\n variables: {\n deploymentId\n }\n });\n\n return data;\n }\n\n async addProject (organizationSlug: string, data: types.AddProjectInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.addProject,\n variables: {\n organizationSlug,\n data\n }\n });\n\n return result.data;\n }\n\n async updateProject (projectId: string, data: types.UpdateProjectInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.updateProjectMutation,\n variables: {\n projectId,\n data\n }\n });\n\n return result.data;\n }\n\n async updateDomain (domainId: string, data: types.UpdateDomainInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.updateDomainMutation,\n variables: {\n domainId,\n data\n }\n });\n\n return result.data;\n }\n\n async redeployToProd (deploymentId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.redeployToProd,\n variables: {\n deploymentId\n }\n });\n\n return data;\n }\n\n async deleteProject (projectId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.deleteProject,\n variables: {\n projectId\n }\n });\n\n return data;\n }\n\n async deleteDomain (domainId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.deleteDomain,\n variables: {\n domainId\n }\n });\n\n return data;\n }\n\n async rollbackDeployment (projectId: string, deploymentId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.rollbackDeployment,\n variables: {\n projectId,\n deploymentId\n }\n });\n\n return data;\n }\n\n async addDomain (projectId: string, data: types.AddDomainInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.addDomain,\n variables: {\n projectId,\n data\n }\n });\n\n return result.data;\n }\n\n async getDomains (projectId: string, filter?: types.FilterDomainInput): Promise {\n const { data } = await this.client.query({\n query: queries.getDomains,\n variables: {\n projectId,\n filter\n }\n });\n\n return data;\n }\n\n async authenticateGitHub (code: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.authenticateGitHub,\n variables: {\n code\n }\n });\n\n return data;\n }\n\n async unauthenticateGithub (): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.unauthenticateGitHub\n });\n\n return data;\n }\n}\n","import { gql } from '@apollo/client';\n\nexport const getUser = gql`\nquery {\n user {\n id\n name\n email\n createdAt\n updatedAt\n gitHubToken\n }\n}\n`;\n\nexport const getProject = gql`\nquery ($projectId: String!) {\n project(projectId: $projectId) {\n createdAt\n description\n id\n name\n template\n updatedAt\n prodBranch\n framework\n repository\n webhooks\n icon\n subDomain\n organization {\n id\n name\n }\n owner {\n id\n name\n email\n }\n deployments {\n id\n branch\n isCurrent\n status\n updatedAt\n commitHash\n createdAt\n environment\n domain {\n status\n branch\n createdAt\n updatedAt\n id\n name\n }\n createdBy {\n id\n name\n }\n }\n }\n}\n`;\n\nexport const getProjectsInOrganization = gql`\nquery ($organizationSlug: String!) {\n projectsInOrganization(organizationSlug: $organizationSlug) {\n id\n name\n createdAt\n description\n framework\n prodBranch\n webhooks\n repository\n updatedAt\n icon\n subDomain\n deployments {\n id\n branch\n isCurrent\n status\n updatedAt\n commitHash\n commitMessage\n createdAt\n environment\n domain {\n status\n branch\n createdAt\n updatedAt\n id\n name\n }\n }\n }\n}\n`;\n\nexport const getOrganizations = gql`\nquery {\n organizations {\n id\n name\n slug\n createdAt\n updatedAt\n }\n}\n`;\n\nexport const getDeployments = gql`\nquery ($projectId: String!) {\n deployments(projectId: $projectId) {\n id\n domain{\n branch\n createdAt\n id\n name\n status\n updatedAt\n }\n branch\n commitHash\n commitMessage\n url\n environment\n isCurrent\n status\n createdAt\n updatedAt\n createdBy {\n id\n name\n email\n }\n }\n}\n`;\n\nexport const getEnvironmentVariables = gql`\nquery ($projectId: String!) {\n environmentVariables(projectId: $projectId) {\n createdAt\n environment\n id\n key\n updatedAt\n value\n }\n}\n`;\n\nexport const getProjectMembers = gql`\nquery ($projectId: String!) {\n projectMembers(projectId: $projectId) {\n id\n member {\n id\n name\n email\n isVerified\n }\n isPending\n createdAt\n updatedAt\n permissions\n }\n}\n`;\n\nexport const searchProjects = gql`\nquery ($searchText: String!) {\n searchProjects(searchText: $searchText) {\n id\n name\n prodBranch\n repository\n createdAt\n description\n framework\n prodBranch\n webhooks\n updatedAt\n template\n repository\n organization {\n id\n name\n slug\n createdAt\n updatedAt\n }\n }\n}\n`;\n\nexport const getDomains = gql`\nquery ($projectId: String!, $filter: FilterDomainsInput) {\n domains(projectId: $projectId, filter: $filter) {\n branch\n createdAt\n redirectTo {\n id\n name\n branch\n status\n }\n id\n name\n status\n updatedAt\n }\n}\n`;\n","import { gql } from '@apollo/client';\n\nexport const removeProjectMember = gql`\nmutation ($projectMemberId: String!) {\n removeProjectMember(projectMemberId: $projectMemberId)\n}\n`;\n\nexport const updateProjectMember = gql`\nmutation ($projectMemberId: String!, $data: UpdateProjectMemberInput) {\n updateProjectMember(projectMemberId: $projectMemberId, data: $data)\n}\n`;\n\nexport const addProjectMember = gql`\nmutation ($projectId: String!, $data: AddProjectMemberInput) {\n addProjectMember(projectId: $projectId, data: $data)\n}\n`;\n\nexport const addEnvironmentVariables = gql`\nmutation ($projectId: String!, $data: [AddEnvironmentVariableInput!]) {\n addEnvironmentVariables(projectId: $projectId, data: $data)\n}\n`;\n\nexport const updateEnvironmentVariable = gql`\nmutation ($environmentVariableId: String!, $data: UpdateEnvironmentVariableInput!) {\n updateEnvironmentVariable(environmentVariableId: $environmentVariableId, data: $data)\n}\n`;\n\nexport const removeEnvironmentVariable = gql`\nmutation ($environmentVariableId: String!) {\n removeEnvironmentVariable(environmentVariableId: $environmentVariableId)\n}\n`;\n\nexport const updateDeploymentToProd = gql`\nmutation ($deploymentId: String!) {\n updateDeploymentToProd(deploymentId: $deploymentId)\n}\n`;\n\nexport const addProject = gql`\nmutation ($organizationSlug: String!, $data: AddProjectInput) {\n addProject(organizationSlug: $organizationSlug, data: $data) {\n id\n }\n}`;\n\nexport const updateProjectMutation = gql`\nmutation ($projectId: String!, $data: UpdateProjectInput) {\n updateProject(projectId: $projectId, data: $data)\n}`;\n\nexport const updateDomainMutation = gql`\nmutation ($domainId: String!, $data: UpdateDomainInput!) {\n updateDomain(domainId: $domainId, data: $data)\n}`;\n\nexport const redeployToProd = gql`\nmutation ($deploymentId: String!) {\n redeployToProd(deploymentId: $deploymentId)\n}\n`;\n\nexport const deleteProject = gql`\nmutation ($projectId: String!) {\n deleteProject(projectId: $projectId)\n}\n`;\n\nexport const deleteDomain = gql`\nmutation ($domainId: String!) {\n deleteDomain(domainId: $domainId)\n}`;\n\nexport const rollbackDeployment = gql`\nmutation ($projectId: String! ,$deploymentId: String!) {\n rollbackDeployment(projectId: $projectId, deploymentId: $deploymentId)\n}\n`;\n\nexport const addDomain = gql`\nmutation ($projectId: String!, $data: AddDomainInput!) {\n addDomain(projectId: $projectId, data: $data)\n}\n`;\n\nexport const authenticateGitHub = gql`\nmutation ($code: String!) {\n authenticateGitHub(code: $code) {\n token\n }\n}`;\n\nexport const unauthenticateGitHub = gql`\nmutation {\n unauthenticateGitHub\n}`;\n","// Note: equivalent to types present in GQL schema\n\nexport enum Role {\n Owner = 'Owner',\n Maintainer = 'Maintainer',\n Reader = 'Reader',\n}\n\nexport enum Permission {\n View = 'View',\n Edit = 'Edit',\n}\n\nexport enum Environment {\n Production = 'Production',\n Preview = 'Preview',\n Development = 'Development',\n}\n\nexport enum DeploymentStatus {\n Building = 'Building',\n Ready = 'Ready',\n Error = 'Error',\n}\n\nexport enum DomainStatus {\n Live = 'Live',\n Pending = 'Pending',\n}\n\nexport type EnvironmentVariable = {\n id: string\n environment: Environment\n key: string\n value: string\n createdAt: string\n updatedAt: string\n}\n\nexport type Domain = {\n id: string\n branch: string\n name: string\n status: DomainStatus\n redirectTo: Domain | null\n createdAt: string\n updatedAt: string\n}\n\nexport type User = {\n id: string\n name: string | null\n email: string\n isVerified: boolean\n createdAt: string\n updatedAt: string\n gitHubToken: string | null\n}\n\nexport type Deployment = {\n id: string\n domain: Domain\n branch: string\n commitHash: string\n commitMessage: string\n url?: string\n environment: Environment\n isCurrent: boolean\n status: DeploymentStatus\n createdBy: User\n createdAt: string\n updatedAt: string\n}\n\nexport type OrganizationMember = {\n id: string\n member: User\n role: Role\n createdAt: string\n updatedAt: string\n}\n\nexport type ProjectMember = {\n id: string\n member: User\n permissions: Permission[]\n isPending: boolean\n createdAt: string\n updatedAt: string\n}\n\nexport type OrganizationProject = {\n id: string\n owner: User\n deployments: Deployment[]\n name: string\n repository: string\n prodBranch: string\n description: string\n template: string\n framework: string\n webhooks: string[]\n members: ProjectMember[]\n environmentVariables: EnvironmentVariable[]\n createdAt: string\n updatedAt: string\n}\n\nexport type Organization = {\n id: string\n name: string\n slug: string\n projects: OrganizationProject[]\n createdAt: string\n updatedAt: string\n members: OrganizationMember[]\n}\n\nexport type Project = {\n id: string\n owner: User\n deployments: Deployment[]\n name: string\n repository: string\n prodBranch: string\n description: string\n template: string\n framework: string\n webhooks: string[]\n members: ProjectMember[]\n environmentVariables: EnvironmentVariable[]\n createdAt: string\n updatedAt: string\n organization: Organization\n icon: string\n subDomain: string\n}\n\nexport type GetProjectMembersResponse = {\n projectMembers: ProjectMember[]\n}\n\nexport type AddProjectMemberResponse = {\n addProjectMember: boolean\n}\n\nexport type RemoveProjectMemberResponse = {\n removeProjectMember: boolean;\n}\n\nexport type UpdateProjectMemberResponse = {\n updateProjectMember: boolean;\n}\n\nexport type GetDeploymentsResponse = {\n deployments: Deployment[]\n}\n\nexport type GetEnvironmentVariablesResponse = {\n environmentVariables: EnvironmentVariable[]\n}\n\nexport type GetOrganizationsResponse = {\n organizations: Organization[]\n}\n\nexport type GetUserResponse = {\n user: User\n}\n\nexport type GetProjectResponse = {\n project: Project | null\n}\n\nexport type GetProjectsInOrganizationResponse = {\n projectsInOrganization: Project[]\n}\n\nexport type GetDomainsResponse = {\n domains: Domain[]\n}\n\nexport type SearchProjectsResponse = {\n searchProjects: Project[]\n}\n\nexport type AddEnvironmentVariablesResponse = {\n addEnvironmentVariables: boolean;\n}\n\nexport type AddEnvironmentVariableInput = {\n environments: string[];\n key: string;\n value: string;\n}\n\nexport type UpdateEnvironmentVariableInput = {\n key: string;\n value: string;\n}\n\nexport type UpdateProjectMemberInput = {\n permissions: Permission[];\n}\n\nexport type AddProjectMemberInput = {\n email: string;\n permissions: Permission[]\n}\n\nexport type UpdateEnvironmentVariableResponse = {\n updateEnvironmentVariable: boolean;\n}\n\nexport type RemoveEnvironmentVariableResponse = {\n removeEnvironmentVariable: boolean;\n}\n\nexport type UpdateDeploymentToProdResponse = {\n updateDeploymentToProd: boolean;\n}\n\nexport type AddProjectResponse = {\n addProject: Project\n}\n\nexport type UpdateProjectResponse = {\n updateProject: boolean;\n}\n\nexport type UpdateDomainResponse = {\n updateDomain: boolean;\n}\n\nexport type DeleteProjectResponse = {\n deleteProject: boolean;\n}\n\nexport type DeleteDomainResponse = {\n deleteDomain: boolean;\n}\n\nexport type AddProjectInput = {\n name: string;\n repository: string;\n prodBranch: string;\n template?: string;\n}\n\nexport type UpdateProjectInput = {\n name?: string\n description?: string\n prodBranch?: string\n webhooks?: string[]\n organizationId?: string\n}\n\nexport type UpdateDomainInput = {\n name?: string;\n branch?: string;\n redirectToId?: string | null;\n}\n\nexport type RedeployToProdResponse = {\n redeployToProd: boolean\n}\n\nexport type RollbackDeploymentResponse = {\n rollbackDeployment: boolean\n}\n\nexport type AddDomainInput = {\n name: string\n}\n\nexport type FilterDomainInput = {\n branch?: string\n status?: DomainStatus\n}\n\nexport type AddDomainResponse = {\n addDomain: true\n}\n\nexport type AuthenticateGitHubResponse = {\n authenticateGitHub: {\n token: string\n }\n}\n\nexport type UnauthenticateGitHubResponse = {\n unauthenticateGitHub: boolean\n}\n"],"mappings":"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","names":["import_client","import_client","Role","Permission","Environment","DeploymentStatus","DomainStatus"]} \ No newline at end of file diff --git a/packages/gql-client/dist/index.mjs b/packages/gql-client/dist/index.mjs new file mode 100644 index 00000000..86682ff7 --- /dev/null +++ b/packages/gql-client/dist/index.mjs @@ -0,0 +1,669 @@ +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// src/client.ts +import { ApolloClient, InMemoryCache } from "@apollo/client"; + +// src/queries.ts +import { gql } from "@apollo/client"; +var getUser = gql` +query { + user { + id + name + email + createdAt + updatedAt + gitHubToken + } +} +`; +var getProject = gql` +query ($projectId: String!) { + project(projectId: $projectId) { + createdAt + description + id + name + template + updatedAt + prodBranch + framework + repository + webhooks + icon + subDomain + organization { + id + name + } + owner { + id + name + email + } + deployments { + id + branch + isCurrent + status + updatedAt + commitHash + createdAt + environment + domain { + status + branch + createdAt + updatedAt + id + name + } + createdBy { + id + name + } + } + } +} +`; +var getProjectsInOrganization = gql` +query ($organizationSlug: String!) { + projectsInOrganization(organizationSlug: $organizationSlug) { + id + name + createdAt + description + framework + prodBranch + webhooks + repository + updatedAt + icon + subDomain + deployments { + id + branch + isCurrent + status + updatedAt + commitHash + commitMessage + createdAt + environment + domain { + status + branch + createdAt + updatedAt + id + name + } + } + } +} +`; +var getOrganizations = gql` +query { + organizations { + id + name + slug + createdAt + updatedAt + } +} +`; +var getDeployments = gql` +query ($projectId: String!) { + deployments(projectId: $projectId) { + id + domain{ + branch + createdAt + id + name + status + updatedAt + } + branch + commitHash + commitMessage + url + environment + isCurrent + status + createdAt + updatedAt + createdBy { + id + name + email + } + } +} +`; +var getEnvironmentVariables = gql` +query ($projectId: String!) { + environmentVariables(projectId: $projectId) { + createdAt + environment + id + key + updatedAt + value + } +} +`; +var getProjectMembers = gql` +query ($projectId: String!) { + projectMembers(projectId: $projectId) { + id + member { + id + name + email + isVerified + } + isPending + createdAt + updatedAt + permissions + } +} +`; +var searchProjects = gql` +query ($searchText: String!) { + searchProjects(searchText: $searchText) { + id + name + prodBranch + repository + createdAt + description + framework + prodBranch + webhooks + updatedAt + template + repository + organization { + id + name + slug + createdAt + updatedAt + } + } +} +`; +var getDomains = gql` +query ($projectId: String!, $filter: FilterDomainsInput) { + domains(projectId: $projectId, filter: $filter) { + branch + createdAt + redirectTo { + id + name + branch + status + } + id + name + status + updatedAt + } +} +`; + +// src/mutations.ts +import { gql as gql2 } from "@apollo/client"; +var removeProjectMember = gql2` +mutation ($projectMemberId: String!) { + removeProjectMember(projectMemberId: $projectMemberId) +} +`; +var updateProjectMember = gql2` +mutation ($projectMemberId: String!, $data: UpdateProjectMemberInput) { + updateProjectMember(projectMemberId: $projectMemberId, data: $data) +} +`; +var addProjectMember = gql2` +mutation ($projectId: String!, $data: AddProjectMemberInput) { + addProjectMember(projectId: $projectId, data: $data) +} +`; +var addEnvironmentVariables = gql2` +mutation ($projectId: String!, $data: [AddEnvironmentVariableInput!]) { + addEnvironmentVariables(projectId: $projectId, data: $data) +} +`; +var updateEnvironmentVariable = gql2` +mutation ($environmentVariableId: String!, $data: UpdateEnvironmentVariableInput!) { + updateEnvironmentVariable(environmentVariableId: $environmentVariableId, data: $data) +} +`; +var removeEnvironmentVariable = gql2` +mutation ($environmentVariableId: String!) { + removeEnvironmentVariable(environmentVariableId: $environmentVariableId) +} +`; +var updateDeploymentToProd = gql2` +mutation ($deploymentId: String!) { + updateDeploymentToProd(deploymentId: $deploymentId) +} +`; +var addProject = gql2` +mutation ($organizationSlug: String!, $data: AddProjectInput) { + addProject(organizationSlug: $organizationSlug, data: $data) { + id + } +}`; +var updateProjectMutation = gql2` +mutation ($projectId: String!, $data: UpdateProjectInput) { + updateProject(projectId: $projectId, data: $data) +}`; +var updateDomainMutation = gql2` +mutation ($domainId: String!, $data: UpdateDomainInput!) { + updateDomain(domainId: $domainId, data: $data) +}`; +var redeployToProd = gql2` +mutation ($deploymentId: String!) { + redeployToProd(deploymentId: $deploymentId) +} +`; +var deleteProject = gql2` +mutation ($projectId: String!) { + deleteProject(projectId: $projectId) +} +`; +var deleteDomain = gql2` +mutation ($domainId: String!) { + deleteDomain(domainId: $domainId) +}`; +var rollbackDeployment = gql2` +mutation ($projectId: String! ,$deploymentId: String!) { + rollbackDeployment(projectId: $projectId, deploymentId: $deploymentId) +} +`; +var addDomain = gql2` +mutation ($projectId: String!, $data: AddDomainInput!) { + addDomain(projectId: $projectId, data: $data) +} +`; +var authenticateGitHub = gql2` +mutation ($code: String!) { + authenticateGitHub(code: $code) { + token + } +}`; +var unauthenticateGitHub = gql2` +mutation { + unauthenticateGitHub +}`; + +// src/client.ts +var defaultOptions = { + watchQuery: { + fetchPolicy: "no-cache", + errorPolicy: "ignore" + }, + query: { + fetchPolicy: "no-cache", + errorPolicy: "all" + } +}; +var GQLClient = class { + constructor(config) { + this.client = new ApolloClient({ + uri: config.gqlEndpoint, + cache: new InMemoryCache(), + defaultOptions, + credentials: "include" + }); + } + getUser() { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getUser + }); + return data; + }); + } + getProject(projectId) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getProject, + variables: { + projectId + } + }); + return data; + }); + } + getProjectsInOrganization(organizationSlug) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getProjectsInOrganization, + variables: { + organizationSlug + } + }); + return data; + }); + } + getOrganizations() { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getOrganizations + }); + return data; + }); + } + getDeployments(projectId) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getDeployments, + variables: { + projectId + } + }); + return data; + }); + } + getEnvironmentVariables(projectId) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getEnvironmentVariables, + variables: { + projectId + } + }); + return data; + }); + } + getProjectMembers(projectId) { + return __async(this, null, function* () { + const result = yield this.client.query({ + query: getProjectMembers, + variables: { + projectId + } + }); + return result.data; + }); + } + addProjectMember(projectId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: addProjectMember, + variables: { + projectId, + data + } + }); + return result.data; + }); + } + updateProjectMember(projectMemberId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: updateProjectMember, + variables: { + projectMemberId, + data + } + }); + return result.data; + }); + } + removeProjectMember(projectMemberId) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: removeProjectMember, + variables: { + projectMemberId + } + }); + return result.data; + }); + } + searchProjects(searchText) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: searchProjects, + variables: { + searchText + } + }); + return data; + }); + } + addEnvironmentVariables(projectId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: addEnvironmentVariables, + variables: { + projectId, + data + } + }); + return result.data; + }); + } + updateEnvironmentVariable(environmentVariableId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: updateEnvironmentVariable, + variables: { + environmentVariableId, + data + } + }); + return result.data; + }); + } + removeEnvironmentVariable(environmentVariableId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: removeEnvironmentVariable, + variables: { + environmentVariableId + } + }); + return data; + }); + } + updateDeploymentToProd(deploymentId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: updateDeploymentToProd, + variables: { + deploymentId + } + }); + return data; + }); + } + addProject(organizationSlug, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: addProject, + variables: { + organizationSlug, + data + } + }); + return result.data; + }); + } + updateProject(projectId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: updateProjectMutation, + variables: { + projectId, + data + } + }); + return result.data; + }); + } + updateDomain(domainId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: updateDomainMutation, + variables: { + domainId, + data + } + }); + return result.data; + }); + } + redeployToProd(deploymentId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: redeployToProd, + variables: { + deploymentId + } + }); + return data; + }); + } + deleteProject(projectId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: deleteProject, + variables: { + projectId + } + }); + return data; + }); + } + deleteDomain(domainId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: deleteDomain, + variables: { + domainId + } + }); + return data; + }); + } + rollbackDeployment(projectId, deploymentId) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: rollbackDeployment, + variables: { + projectId, + deploymentId + } + }); + return data; + }); + } + addDomain(projectId, data) { + return __async(this, null, function* () { + const result = yield this.client.mutate({ + mutation: addDomain, + variables: { + projectId, + data + } + }); + return result.data; + }); + } + getDomains(projectId, filter) { + return __async(this, null, function* () { + const { data } = yield this.client.query({ + query: getDomains, + variables: { + projectId, + filter + } + }); + return data; + }); + } + authenticateGitHub(code) { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: authenticateGitHub, + variables: { + code + } + }); + return data; + }); + } + unauthenticateGithub() { + return __async(this, null, function* () { + const { data } = yield this.client.mutate({ + mutation: unauthenticateGitHub + }); + return data; + }); + } +}; + +// src/types.ts +var Role = /* @__PURE__ */ ((Role2) => { + Role2["Owner"] = "Owner"; + Role2["Maintainer"] = "Maintainer"; + Role2["Reader"] = "Reader"; + return Role2; +})(Role || {}); +var Permission = /* @__PURE__ */ ((Permission2) => { + Permission2["View"] = "View"; + Permission2["Edit"] = "Edit"; + return Permission2; +})(Permission || {}); +var Environment = /* @__PURE__ */ ((Environment2) => { + Environment2["Production"] = "Production"; + Environment2["Preview"] = "Preview"; + Environment2["Development"] = "Development"; + return Environment2; +})(Environment || {}); +var DeploymentStatus = /* @__PURE__ */ ((DeploymentStatus2) => { + DeploymentStatus2["Building"] = "Building"; + DeploymentStatus2["Ready"] = "Ready"; + DeploymentStatus2["Error"] = "Error"; + return DeploymentStatus2; +})(DeploymentStatus || {}); +var DomainStatus = /* @__PURE__ */ ((DomainStatus2) => { + DomainStatus2["Live"] = "Live"; + DomainStatus2["Pending"] = "Pending"; + return DomainStatus2; +})(DomainStatus || {}); +export { + DeploymentStatus, + DomainStatus, + Environment, + GQLClient, + Permission, + Role +}; +//# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/packages/gql-client/dist/index.mjs.map b/packages/gql-client/dist/index.mjs.map new file mode 100644 index 00000000..03304128 --- /dev/null +++ b/packages/gql-client/dist/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/client.ts","../src/queries.ts","../src/mutations.ts","../src/types.ts"],"sourcesContent":["import { ApolloClient, DefaultOptions, InMemoryCache, NormalizedCacheObject } from '@apollo/client';\n\nimport * as queries from './queries';\nimport * as types from './types';\nimport * as mutations from './mutations';\n\nexport interface GraphQLConfig {\n gqlEndpoint: string;\n}\n\n// TODO: check options\nconst defaultOptions: DefaultOptions = {\n watchQuery: {\n fetchPolicy: 'no-cache',\n errorPolicy: 'ignore'\n },\n query: {\n fetchPolicy: 'no-cache',\n errorPolicy: 'all'\n }\n};\n\nexport class GQLClient {\n private client: ApolloClient;\n\n constructor (config: GraphQLConfig) {\n this.client = new ApolloClient({\n uri: config.gqlEndpoint,\n cache: new InMemoryCache(),\n defaultOptions,\n credentials: 'include'\n });\n }\n\n async getUser () : Promise {\n const { data } = await this.client.query({\n query: queries.getUser\n });\n\n return data;\n }\n\n async getProject (projectId: string) : Promise {\n const { data } = await this.client.query({\n query: queries.getProject,\n variables: {\n projectId\n }\n });\n\n return data;\n }\n\n async getProjectsInOrganization (organizationSlug: string) : Promise {\n const { data } = await this.client.query({\n query: queries.getProjectsInOrganization,\n variables: {\n organizationSlug\n }\n });\n\n return data;\n }\n\n async getOrganizations () : Promise {\n const { data } = await this.client.query({\n query: queries.getOrganizations\n });\n\n return data;\n }\n\n async getDeployments (projectId: string) : Promise {\n const { data } = await this.client.query({\n query: queries.getDeployments,\n variables: {\n projectId\n }\n });\n\n return data;\n }\n\n async getEnvironmentVariables (projectId: string) : Promise {\n const { data } = await this.client.query({\n query: queries.getEnvironmentVariables,\n variables: {\n projectId\n }\n });\n\n return data;\n }\n\n async getProjectMembers (projectId: string) : Promise {\n const result = await this.client.query({\n query: queries.getProjectMembers,\n variables: {\n projectId\n }\n });\n\n return result.data;\n }\n\n async addProjectMember (projectId: string, data: types.AddProjectMemberInput) : Promise {\n const result = await this.client.mutate({\n mutation: mutations.addProjectMember,\n variables: {\n projectId,\n data\n }\n });\n\n return result.data;\n }\n\n async updateProjectMember (projectMemberId: string, data: types.UpdateProjectMemberInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.updateProjectMember,\n variables: {\n projectMemberId,\n data\n }\n });\n\n return result.data;\n }\n\n async removeProjectMember (projectMemberId: string): Promise {\n const result = await this.client.mutate({\n mutation: mutations.removeProjectMember,\n variables: {\n projectMemberId\n }\n });\n\n return result.data;\n }\n\n async searchProjects (searchText: string) : Promise {\n const { data } = await this.client.query({\n query: queries.searchProjects,\n variables: {\n searchText\n }\n });\n\n return data;\n }\n\n async addEnvironmentVariables (projectId: string, data: types.AddEnvironmentVariableInput[]): Promise {\n const result = await this.client.mutate({\n mutation: mutations.addEnvironmentVariables,\n variables: {\n projectId,\n data\n }\n });\n\n return result.data;\n }\n\n async updateEnvironmentVariable (environmentVariableId: string, data: types.UpdateEnvironmentVariableInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.updateEnvironmentVariable,\n variables: {\n environmentVariableId,\n data\n }\n });\n\n return result.data;\n }\n\n async removeEnvironmentVariable (environmentVariableId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.removeEnvironmentVariable,\n variables: {\n environmentVariableId\n }\n });\n\n return data;\n }\n\n async updateDeploymentToProd (deploymentId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.updateDeploymentToProd,\n variables: {\n deploymentId\n }\n });\n\n return data;\n }\n\n async addProject (organizationSlug: string, data: types.AddProjectInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.addProject,\n variables: {\n organizationSlug,\n data\n }\n });\n\n return result.data;\n }\n\n async updateProject (projectId: string, data: types.UpdateProjectInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.updateProjectMutation,\n variables: {\n projectId,\n data\n }\n });\n\n return result.data;\n }\n\n async updateDomain (domainId: string, data: types.UpdateDomainInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.updateDomainMutation,\n variables: {\n domainId,\n data\n }\n });\n\n return result.data;\n }\n\n async redeployToProd (deploymentId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.redeployToProd,\n variables: {\n deploymentId\n }\n });\n\n return data;\n }\n\n async deleteProject (projectId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.deleteProject,\n variables: {\n projectId\n }\n });\n\n return data;\n }\n\n async deleteDomain (domainId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.deleteDomain,\n variables: {\n domainId\n }\n });\n\n return data;\n }\n\n async rollbackDeployment (projectId: string, deploymentId: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.rollbackDeployment,\n variables: {\n projectId,\n deploymentId\n }\n });\n\n return data;\n }\n\n async addDomain (projectId: string, data: types.AddDomainInput): Promise {\n const result = await this.client.mutate({\n mutation: mutations.addDomain,\n variables: {\n projectId,\n data\n }\n });\n\n return result.data;\n }\n\n async getDomains (projectId: string, filter?: types.FilterDomainInput): Promise {\n const { data } = await this.client.query({\n query: queries.getDomains,\n variables: {\n projectId,\n filter\n }\n });\n\n return data;\n }\n\n async authenticateGitHub (code: string): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.authenticateGitHub,\n variables: {\n code\n }\n });\n\n return data;\n }\n\n async unauthenticateGithub (): Promise {\n const { data } = await this.client.mutate({\n mutation: mutations.unauthenticateGitHub\n });\n\n return data;\n }\n}\n","import { gql } from '@apollo/client';\n\nexport const getUser = gql`\nquery {\n user {\n id\n name\n email\n createdAt\n updatedAt\n gitHubToken\n }\n}\n`;\n\nexport const getProject = gql`\nquery ($projectId: String!) {\n project(projectId: $projectId) {\n createdAt\n description\n id\n name\n template\n updatedAt\n prodBranch\n framework\n repository\n webhooks\n icon\n subDomain\n organization {\n id\n name\n }\n owner {\n id\n name\n email\n }\n deployments {\n id\n branch\n isCurrent\n status\n updatedAt\n commitHash\n createdAt\n environment\n domain {\n status\n branch\n createdAt\n updatedAt\n id\n name\n }\n createdBy {\n id\n name\n }\n }\n }\n}\n`;\n\nexport const getProjectsInOrganization = gql`\nquery ($organizationSlug: String!) {\n projectsInOrganization(organizationSlug: $organizationSlug) {\n id\n name\n createdAt\n description\n framework\n prodBranch\n webhooks\n repository\n updatedAt\n icon\n subDomain\n deployments {\n id\n branch\n isCurrent\n status\n updatedAt\n commitHash\n commitMessage\n createdAt\n environment\n domain {\n status\n branch\n createdAt\n updatedAt\n id\n name\n }\n }\n }\n}\n`;\n\nexport const getOrganizations = gql`\nquery {\n organizations {\n id\n name\n slug\n createdAt\n updatedAt\n }\n}\n`;\n\nexport const getDeployments = gql`\nquery ($projectId: String!) {\n deployments(projectId: $projectId) {\n id\n domain{\n branch\n createdAt\n id\n name\n status\n updatedAt\n }\n branch\n commitHash\n commitMessage\n url\n environment\n isCurrent\n status\n createdAt\n updatedAt\n createdBy {\n id\n name\n email\n }\n }\n}\n`;\n\nexport const getEnvironmentVariables = gql`\nquery ($projectId: String!) {\n environmentVariables(projectId: $projectId) {\n createdAt\n environment\n id\n key\n updatedAt\n value\n }\n}\n`;\n\nexport const getProjectMembers = gql`\nquery ($projectId: String!) {\n projectMembers(projectId: $projectId) {\n id\n member {\n id\n name\n email\n isVerified\n }\n isPending\n createdAt\n updatedAt\n permissions\n }\n}\n`;\n\nexport const searchProjects = gql`\nquery ($searchText: String!) {\n searchProjects(searchText: $searchText) {\n id\n name\n prodBranch\n repository\n createdAt\n description\n framework\n prodBranch\n webhooks\n updatedAt\n template\n repository\n organization {\n id\n name\n slug\n createdAt\n updatedAt\n }\n }\n}\n`;\n\nexport const getDomains = gql`\nquery ($projectId: String!, $filter: FilterDomainsInput) {\n domains(projectId: $projectId, filter: $filter) {\n branch\n createdAt\n redirectTo {\n id\n name\n branch\n status\n }\n id\n name\n status\n updatedAt\n }\n}\n`;\n","import { gql } from '@apollo/client';\n\nexport const removeProjectMember = gql`\nmutation ($projectMemberId: String!) {\n removeProjectMember(projectMemberId: $projectMemberId)\n}\n`;\n\nexport const updateProjectMember = gql`\nmutation ($projectMemberId: String!, $data: UpdateProjectMemberInput) {\n updateProjectMember(projectMemberId: $projectMemberId, data: $data)\n}\n`;\n\nexport const addProjectMember = gql`\nmutation ($projectId: String!, $data: AddProjectMemberInput) {\n addProjectMember(projectId: $projectId, data: $data)\n}\n`;\n\nexport const addEnvironmentVariables = gql`\nmutation ($projectId: String!, $data: [AddEnvironmentVariableInput!]) {\n addEnvironmentVariables(projectId: $projectId, data: $data)\n}\n`;\n\nexport const updateEnvironmentVariable = gql`\nmutation ($environmentVariableId: String!, $data: UpdateEnvironmentVariableInput!) {\n updateEnvironmentVariable(environmentVariableId: $environmentVariableId, data: $data)\n}\n`;\n\nexport const removeEnvironmentVariable = gql`\nmutation ($environmentVariableId: String!) {\n removeEnvironmentVariable(environmentVariableId: $environmentVariableId)\n}\n`;\n\nexport const updateDeploymentToProd = gql`\nmutation ($deploymentId: String!) {\n updateDeploymentToProd(deploymentId: $deploymentId)\n}\n`;\n\nexport const addProject = gql`\nmutation ($organizationSlug: String!, $data: AddProjectInput) {\n addProject(organizationSlug: $organizationSlug, data: $data) {\n id\n }\n}`;\n\nexport const updateProjectMutation = gql`\nmutation ($projectId: String!, $data: UpdateProjectInput) {\n updateProject(projectId: $projectId, data: $data)\n}`;\n\nexport const updateDomainMutation = gql`\nmutation ($domainId: String!, $data: UpdateDomainInput!) {\n updateDomain(domainId: $domainId, data: $data)\n}`;\n\nexport const redeployToProd = gql`\nmutation ($deploymentId: String!) {\n redeployToProd(deploymentId: $deploymentId)\n}\n`;\n\nexport const deleteProject = gql`\nmutation ($projectId: String!) {\n deleteProject(projectId: $projectId)\n}\n`;\n\nexport const deleteDomain = gql`\nmutation ($domainId: String!) {\n deleteDomain(domainId: $domainId)\n}`;\n\nexport const rollbackDeployment = gql`\nmutation ($projectId: String! ,$deploymentId: String!) {\n rollbackDeployment(projectId: $projectId, deploymentId: $deploymentId)\n}\n`;\n\nexport const addDomain = gql`\nmutation ($projectId: String!, $data: AddDomainInput!) {\n addDomain(projectId: $projectId, data: $data)\n}\n`;\n\nexport const authenticateGitHub = gql`\nmutation ($code: String!) {\n authenticateGitHub(code: $code) {\n token\n }\n}`;\n\nexport const unauthenticateGitHub = gql`\nmutation {\n unauthenticateGitHub\n}`;\n","// Note: equivalent to types present in GQL schema\n\nexport enum Role {\n Owner = 'Owner',\n Maintainer = 'Maintainer',\n Reader = 'Reader',\n}\n\nexport enum Permission {\n View = 'View',\n Edit = 'Edit',\n}\n\nexport enum Environment {\n Production = 'Production',\n Preview = 'Preview',\n Development = 'Development',\n}\n\nexport enum DeploymentStatus {\n Building = 'Building',\n Ready = 'Ready',\n Error = 'Error',\n}\n\nexport enum DomainStatus {\n Live = 'Live',\n Pending = 'Pending',\n}\n\nexport type EnvironmentVariable = {\n id: string\n environment: Environment\n key: string\n value: string\n createdAt: string\n updatedAt: string\n}\n\nexport type Domain = {\n id: string\n branch: string\n name: string\n status: DomainStatus\n redirectTo: Domain | null\n createdAt: string\n updatedAt: string\n}\n\nexport type User = {\n id: string\n name: string | null\n email: string\n isVerified: boolean\n createdAt: string\n updatedAt: string\n gitHubToken: string | null\n}\n\nexport type Deployment = {\n id: string\n domain: Domain\n branch: string\n commitHash: string\n commitMessage: string\n url?: string\n environment: Environment\n isCurrent: boolean\n status: DeploymentStatus\n createdBy: User\n createdAt: string\n updatedAt: string\n}\n\nexport type OrganizationMember = {\n id: string\n member: User\n role: Role\n createdAt: string\n updatedAt: string\n}\n\nexport type ProjectMember = {\n id: string\n member: User\n permissions: Permission[]\n isPending: boolean\n createdAt: string\n updatedAt: string\n}\n\nexport type OrganizationProject = {\n id: string\n owner: User\n deployments: Deployment[]\n name: string\n repository: string\n prodBranch: string\n description: string\n template: string\n framework: string\n webhooks: string[]\n members: ProjectMember[]\n environmentVariables: EnvironmentVariable[]\n createdAt: string\n updatedAt: string\n}\n\nexport type Organization = {\n id: string\n name: string\n slug: string\n projects: OrganizationProject[]\n createdAt: string\n updatedAt: string\n members: OrganizationMember[]\n}\n\nexport type Project = {\n id: string\n owner: User\n deployments: Deployment[]\n name: string\n repository: string\n prodBranch: string\n description: string\n template: string\n framework: string\n webhooks: string[]\n members: ProjectMember[]\n environmentVariables: EnvironmentVariable[]\n createdAt: string\n updatedAt: string\n organization: Organization\n icon: string\n subDomain: string\n}\n\nexport type GetProjectMembersResponse = {\n projectMembers: ProjectMember[]\n}\n\nexport type AddProjectMemberResponse = {\n addProjectMember: boolean\n}\n\nexport type RemoveProjectMemberResponse = {\n removeProjectMember: boolean;\n}\n\nexport type UpdateProjectMemberResponse = {\n updateProjectMember: boolean;\n}\n\nexport type GetDeploymentsResponse = {\n deployments: Deployment[]\n}\n\nexport type GetEnvironmentVariablesResponse = {\n environmentVariables: EnvironmentVariable[]\n}\n\nexport type GetOrganizationsResponse = {\n organizations: Organization[]\n}\n\nexport type GetUserResponse = {\n user: User\n}\n\nexport type GetProjectResponse = {\n project: Project | null\n}\n\nexport type GetProjectsInOrganizationResponse = {\n projectsInOrganization: Project[]\n}\n\nexport type GetDomainsResponse = {\n domains: Domain[]\n}\n\nexport type SearchProjectsResponse = {\n searchProjects: Project[]\n}\n\nexport type AddEnvironmentVariablesResponse = {\n addEnvironmentVariables: boolean;\n}\n\nexport type AddEnvironmentVariableInput = {\n environments: string[];\n key: string;\n value: string;\n}\n\nexport type UpdateEnvironmentVariableInput = {\n key: string;\n value: string;\n}\n\nexport type UpdateProjectMemberInput = {\n permissions: Permission[];\n}\n\nexport type AddProjectMemberInput = {\n email: string;\n permissions: Permission[]\n}\n\nexport type UpdateEnvironmentVariableResponse = {\n updateEnvironmentVariable: boolean;\n}\n\nexport type RemoveEnvironmentVariableResponse = {\n removeEnvironmentVariable: boolean;\n}\n\nexport type UpdateDeploymentToProdResponse = {\n updateDeploymentToProd: boolean;\n}\n\nexport type AddProjectResponse = {\n addProject: Project\n}\n\nexport type UpdateProjectResponse = {\n updateProject: boolean;\n}\n\nexport type UpdateDomainResponse = {\n updateDomain: boolean;\n}\n\nexport type DeleteProjectResponse = {\n deleteProject: boolean;\n}\n\nexport type DeleteDomainResponse = {\n deleteDomain: boolean;\n}\n\nexport type AddProjectInput = {\n name: string;\n repository: string;\n prodBranch: string;\n template?: string;\n}\n\nexport type UpdateProjectInput = {\n name?: string\n description?: string\n prodBranch?: string\n webhooks?: string[]\n organizationId?: string\n}\n\nexport type UpdateDomainInput = {\n name?: string;\n branch?: string;\n redirectToId?: string | null;\n}\n\nexport type RedeployToProdResponse = {\n redeployToProd: boolean\n}\n\nexport type RollbackDeploymentResponse = {\n rollbackDeployment: boolean\n}\n\nexport type AddDomainInput = {\n name: string\n}\n\nexport type FilterDomainInput = {\n branch?: string\n status?: DomainStatus\n}\n\nexport type AddDomainResponse = {\n addDomain: true\n}\n\nexport type AuthenticateGitHubResponse = {\n authenticateGitHub: {\n token: string\n }\n}\n\nexport type UnauthenticateGitHubResponse = {\n unauthenticateGitHub: boolean\n}\n"],"mappings":"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","names":["gql","Role","Permission","Environment","DeploymentStatus","DomainStatus"]} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index a58174d6..b0e1bc38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -344,7 +344,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== @@ -363,7 +363,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.9.2": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd" integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== @@ -404,51 +404,6 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@cerc-io/laconic-registry-cli@^0.1.10": - version "0.1.11" - resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Flaconic-registry-cli/-/0.1.11/laconic-registry-cli-0.1.11.tgz#2e385ed4e0efe223dba274b1864b2ff9ce2f2546" - integrity sha512-IaARadsRnXxcU3pQQFg6tTBu42NF06/o9pKG81eKv/41pfZt+t74Nz3nPN2bPqVQYpwvl1qK7maEsF3HOBoD7g== - dependencies: - "@cerc-io/laconic-sdk" "^0.1.15" - fs-extra "^10.1.0" - js-yaml "^3.14.1" - lodash "^4.17.21" - lodash-clean "^2.2.3" - yargs "^17.4.1" - -"@cerc-io/laconic-sdk@^0.1.15", "@cerc-io/laconic-sdk@^0.1.16": - version "0.1.16" - resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Flaconic-sdk/-/0.1.16/laconic-sdk-0.1.16.tgz#53f12a32f156a177987f89e727eb5f16743df7db" - integrity sha512-wu6k711qHPxowgyzAmjxz8i/ZTGxW+4sHf9WQ+0hW/E9PlR3Gn8OIsN3J8tvY45wvNdKKR3bm+7w/byyYLRF9A== - dependencies: - "@cosmjs/amino" "^0.28.1" - "@cosmjs/crypto" "^0.28.1" - "@cosmjs/encoding" "^0.28.1" - "@ipld/dag-cbor" "^7.0.1" - "@ipld/dag-json" "^8.0.9" - "@metamask/eth-sig-util" "^4.0.0" - "@tharsis/address-converter" "^0.1.7" - "@tharsis/eip712" "^0.2.1" - "@tharsis/proto" "^0.1.16" - "@tharsis/provider" "^0.2.4" - "@tharsis/transactions" "^0.2.2" - axios "^0.26.1" - bip32 "3.0.1" - bip39 "^3.0.4" - canonical-json "^0.0.4" - ethers "^5.6.2" - evmosjs "^0.2.5" - graphql.js "^0.6.8" - js-sha256 "^0.9.0" - js-yaml "^3.14.1" - jsonschema "^1.4.0" - lodash "^4.17.21" - multiformats "^9.5.4" - node-yaml "^4.0.1" - secp256k1 "^4.0.1" - semver "^7.3.5" - tiny-secp256k1 "^1.1.6" - "@coinbase/wallet-sdk@3.9.1": version "3.9.1" resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.9.1.tgz#503a14671bb392d653623ef2340934e213ac971f" @@ -652,6 +607,11 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + "@emotion/babel-plugin@^11.11.0": version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" @@ -1482,14 +1442,14 @@ integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== "@fontsource-variable/jetbrains-mono@^5.0.19": - version "5.0.20" - resolved "https://registry.yarnpkg.com/@fontsource-variable/jetbrains-mono/-/jetbrains-mono-5.0.20.tgz#7c393976674190830fb29c6019309a0f8356274c" - integrity sha512-IWJnmY9vT5Olcac1vzA7FMdnojCrZWMq+g7SqC2jsFpY0LQTjIgp9gBjjw9kUOkNbLw37/evZO4w6rdPeMA68A== + version "5.0.21" + resolved "https://registry.yarnpkg.com/@fontsource-variable/jetbrains-mono/-/jetbrains-mono-5.0.21.tgz#4daf1cf6daab1253221b4c78a420c49e753ecec3" + integrity sha512-LL/57KBbM3r0UMuN6tSeYExiBObt0QuGq49m1FyoDFIv1GAcuKU0EQ/GAKJ/yt3R8onOCD3f5X9Dln//G6uzRQ== "@fontsource/inter@^5.0.16": - version "5.0.17" - resolved "https://registry.yarnpkg.com/@fontsource/inter/-/inter-5.0.17.tgz#43fb1bc6bcfbfbfc3a9d19a59a4a7ab99fc1c645" - integrity sha512-2meBGx1kt7u5LwzGc5Sz5rka6ZDrydg6nT3x6Wkt310vHXUchIywrO8pooWMzZdHYcyFY/cv4lEpJZgMD94bCg== + version "5.0.18" + resolved "https://registry.yarnpkg.com/@fontsource/inter/-/inter-5.0.18.tgz#eaddac790ee74b70932030f37ebaa9fc76decbd8" + integrity sha512-YCsoYPTcs713sI7tLtxaPrIhXAXvEetGg5Ry02ivA8qUOb3fQHojbK/X9HLD5OOKvFUNR2Ynkwb1kR1hVKQHpw== "@graphql-tools/merge@8.3.1": version "8.3.1" @@ -1563,9 +1523,9 @@ tslib "^2.4.0" "@graphql-tools/utils@^10.0.12", "@graphql-tools/utils@^10.0.13": - version "10.1.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.1.2.tgz#192de00e7301c0242e7305ab16bbeef76bbcec74" - integrity sha512-fX13CYsDnX4yifIyNdiN0cVygz/muvkreWWem6BBw130+ODbRRgfiVveL0NizCEnKXkpvdeTy9Bxvo9LIKlhrw== + version "10.1.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.1.3.tgz#e9c8913a74c97f9a9210d22b45f520762f2fa299" + integrity sha512-loco2ctrrMQzdpSHbcOo6+Ecp21BV67cQ2pNGhuVKAexruu01RdLn3LgtK47B9BpLz3cUD6U0u1R0rur7xMOOg== dependencies: "@graphql-typed-document-node/core" "^3.1.1" cross-inspect "1.0.0" @@ -1690,6 +1650,14 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" @@ -1703,7 +1671,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": +"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -2677,14 +2645,14 @@ semver "^7.3.5" "@npmcli/git@^5.0.0": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.5.tgz#b4758b3993f078bd6d73356b8bdd0306f48fd3cb" - integrity sha512-x8hXItC8OFOwdgERzRIxg0ic1lQqW6kSZFFQtZTCNYOeGb9UqzVcod02TYljI9UBl4RtfcyQ0A7ygmcGFvEqWw== + version "5.0.6" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.6.tgz#d7b24eb2cff98754c8868faab40405abfa1abe28" + integrity sha512-4x/182sKXmQkf0EtXxT26GEsaOATpD7WVtza5hrYivWZeo6QefC6xq9KAXrnjtFKBZ4rZwR7aX/zClYYXgtwLw== dependencies: "@npmcli/promise-spawn" "^7.0.0" lru-cache "^10.0.1" npm-pick-manifest "^9.0.0" - proc-log "^3.0.0" + proc-log "^4.0.0" promise-inflight "^1.0.1" promise-retry "^2.0.1" semver "^7.3.5" @@ -2704,16 +2672,16 @@ integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== "@npmcli/package-json@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.0.2.tgz#9bf4a04d669d1743b358338eba5a19504e89b057" - integrity sha512-LmW+tueGSK+FCM3OpcKtwKKo3igpefh6HHiw23sGd8OdJ8l0GrfGfVdGOFVtJRMaXVnvI1RUdEPlB9VUln5Wbw== + version "5.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.1.0.tgz#10d117b5fb175acc14c70901a151c52deffc843e" + integrity sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ== dependencies: "@npmcli/git" "^5.0.0" glob "^10.2.2" hosted-git-info "^7.0.0" json-parse-even-better-errors "^3.0.0" normalize-package-data "^6.0.0" - proc-log "^3.0.0" + proc-log "^4.0.0" semver "^7.5.3" "@npmcli/promise-spawn@^7.0.0": @@ -2750,27 +2718,27 @@ node-gyp "^10.0.0" which "^4.0.0" -"@nrwl/devkit@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-18.2.4.tgz#9856e8e40e9ad1811a5de6478405ec753d548364" - integrity sha512-dLK8MMb3eEFWlhtI1kNDNbWIT1Xbrgg3eAQ+Ix/N5JDbxJkJhE28WsIJgQb1NTwe/N87O5JtOpxz4/TsSLJCsQ== +"@nrwl/devkit@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-18.3.3.tgz#9ec5575afe6d14b17acd5e8da4e98a0de27704c6" + integrity sha512-3zZLE1vfwsNie7qjVUt9lqaM1slU0RTr/dW+Yt/2lxe8Peu6f8bnCM1Pf3kSlzoxQroctfocRtVHFXJsAuAt4g== dependencies: - "@nx/devkit" "18.2.4" + "@nx/devkit" "18.3.3" -"@nrwl/tao@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-18.2.4.tgz#fe5d115f7d24a64e2a561c5d5df3bdcf19b3566e" - integrity sha512-kgJwZ26F+AzvFXaW5eh1g4HLntPcJ6+EE7JyEvrdRzpw7KxTqWy6Ql7dYys6zGlpP4c3PbsXwdc7tGM3Df2PNg== +"@nrwl/tao@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-18.3.3.tgz#2d0c60d233f2cc07c85ba08126dd46f21dda1ef0" + integrity sha512-f/PUDLpSMEObiLQ5sIDySJM+5DxSCNunkxxbY1R9rmQ1cFcgrHaXIHQqbSj91mMa3mmtbKACk8u1LbI+oQV0Tg== dependencies: - nx "18.2.4" + nx "18.3.3" tslib "^2.3.0" -"@nx/devkit@18.2.4", "@nx/devkit@>=17.1.2 < 19": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-18.2.4.tgz#3feeedf70772f93030c5e808a60f31428a111217" - integrity sha512-Ws3BcA/aeXuwsCQ5e7PYy2H7DswareTOEfgs7izxNyGugpydktVH9DZZTOFNDsc06yzgvyTucDbDQ+JsrJ9PcQ== +"@nx/devkit@18.3.3", "@nx/devkit@>=17.1.2 < 19": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-18.3.3.tgz#2ec37855020da74ad1e77b51711b057b3cb12fec" + integrity sha512-FtkZ6mA5//vEA5lcbT80m080ROVacHYV5F1peztTRA+IY2JZGJoqx425kn5ylDO8aCSAIAwcn2qIdhI8BnpG3Q== dependencies: - "@nrwl/devkit" "18.2.4" + "@nrwl/devkit" "18.3.3" ejs "^3.1.7" enquirer "~2.3.6" ignore "^5.0.4" @@ -2779,55 +2747,55 @@ tslib "^2.3.0" yargs-parser "21.1.1" -"@nx/nx-darwin-arm64@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-18.2.4.tgz#594dd0d475293f5767eb68a6ec5cb7d1b54a3177" - integrity sha512-RYhMImghdyHmwnbNoR2CkLz4Opj9EmuHY3lMfsorg+T4wIOql/iXACrqjnreN7Hy9myJDo1EIbYZ4x8VSxFWtA== +"@nx/nx-darwin-arm64@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-18.3.3.tgz#dcdbcfe2796bbe3f1dfd61bce81389b05a50e69b" + integrity sha512-NpA2/7o1uUuaocMYopX9muxKif9HlGfWaXo2UeiR918usF6xri4aUqweZbaXVc9iqCAEbVMWUsjaLYGKPXHAjw== -"@nx/nx-darwin-x64@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-18.2.4.tgz#7d3e498440067643ee5f938d7e1ac41ac29761d1" - integrity sha512-2mXMslSRD/ZoI/oaX+0Mh9J/hucXtNgdwC4YFbp1u8UKquAaQ6hf4uo0s4i+AfLX0F7roMtkFPaG/+MQUJE1Rw== +"@nx/nx-darwin-x64@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-18.3.3.tgz#aa7bdd1a3ea0bb81682422b805914efccab3b179" + integrity sha512-aydPLbc7DeceJ6szRf6DLT4ERoPvwfWyFiGXdAlEZYWhjEuNZLeG8K6jA3yHeWltKfX/qJqhnyKbnubBNzBKlQ== -"@nx/nx-freebsd-x64@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-18.2.4.tgz#ac0414909b1ff5e99fb35e7b69e795baf6755bed" - integrity sha512-QUiYLvyUT0PS7D8erf49xa1Jyw4Gfev5gtYfME34Twmn/JPx/99ZkBG4wHbzLqRGwlO5K6m6P4qs30Pzfwtw7A== +"@nx/nx-freebsd-x64@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-18.3.3.tgz#331f5dbb56c90b08e99c1ce9ff51e0c5b956f030" + integrity sha512-sEYEWsK/fwC1l7wzls7RNOjhmrooH0lK0mpgj1vDXesLBSZ7k+pddAqaHFECN4QXBSbHZI2PWOEhbnIH+Errsg== -"@nx/nx-linux-arm-gnueabihf@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-18.2.4.tgz#ca04b00b65e3692da822708cdb6efc0921d8b04a" - integrity sha512-+fjFciSUhvDV8dPa97Brwb83k3Xa4gHPI2Un8wlpp28Cv4horeGruRZrrifR1VmD2wp2UBIMl5n7YsDP8KvYhQ== +"@nx/nx-linux-arm-gnueabihf@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-18.3.3.tgz#d66d4787f5cfc56b5a7aa9a0453174b96b4729a8" + integrity sha512-B9GGMkrrzwiAfvew22x85ITO9TiNxbgRbKJQWQaoopNpXrnSWpY8WTNxpDT24fwV1qdQfsPKcY3F4O0NOUgPRA== -"@nx/nx-linux-arm64-gnu@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-18.2.4.tgz#b9b708d8a189bb70cd7bf0eb58bdc4a5c0690785" - integrity sha512-lfaTc+AvV56Uv5mXROiRwh2REiI/7IsqeRDfL+prcuuvJ5Oxi2wYVgnmqcHL+ryQnk0Qn7/d+j/BmYHX5Ve5jQ== +"@nx/nx-linux-arm64-gnu@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-18.3.3.tgz#2ab08df1d052a55d4a52ba910fe41c25701d5361" + integrity sha512-1EucHf5/0JeqZmhritqkpEdOcdo9Dl32gpFvhNfS6kCAYmaDlEl4zqedz3VIoj4C7+C0pV3mcRO9qB9H7GM5bQ== -"@nx/nx-linux-arm64-musl@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-18.2.4.tgz#229f82776c0fcfc86b906bed36e3f8527d20c31c" - integrity sha512-U6eoLTQmbxUWU9kZxx6hsYN4zmmOrsDDeW+i3aj5aeahfYlmyz6TsT0V3FSB70WGJC5aMVgEi4RkntQMKkm5vQ== +"@nx/nx-linux-arm64-musl@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-18.3.3.tgz#69376454bb9759c376d0a90aa876dfff6bbf4d15" + integrity sha512-HPgOgnYYLPVCBEaAkSEGPGzZqTDCiyCAF/qtvx5z0f1U/hZYb1ubgxw70ogY82Cafr7X4gQBz5k4/ZCnoCXlOQ== -"@nx/nx-linux-x64-gnu@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-18.2.4.tgz#34f02b4578da3924df11a8c50e68026ad70f0641" - integrity sha512-q8WcJhmcRNORkKjax6WcUwMJe/1mQs+RYlUkGqmi7tD7lfcLSqdLPJVjqVmQAwmy1Wh/MHPsbqRwSerUnCxB1A== +"@nx/nx-linux-x64-gnu@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-18.3.3.tgz#0b8ba8ec0c2371f0df462742460d52d63b1cc715" + integrity sha512-FgYTQ3VEE6EUOGtJT9riRK8IBwPGFjKS+N2mudQJn2bB/9IumUvVRYQUIX08gqGLlqZPO6uUUhUjwZY8SnjRLQ== -"@nx/nx-linux-x64-musl@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-18.2.4.tgz#0cc6f7195203d1aa87de5de2d97e03d537829af8" - integrity sha512-0MDuoPgHa6kkBrjg7hwZ2qQivhJbh3lk7r3q4osDrqZcGxq5XVJqeAmYFyChQy4dbQfUm4hhYkEfzpU8M2lnvQ== +"@nx/nx-linux-x64-musl@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-18.3.3.tgz#c96d6f8d2d94b99ac8da723077ebbc92f833beea" + integrity sha512-QnWjGViR1Wj9gJXa1RJ9mXyy2/JzQ7NF2C4ulTYSH5St1HoxhkfnLsV0+uNLFEV9PSZq+2BfxmQuT8Appefv1A== -"@nx/nx-win32-arm64-msvc@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-18.2.4.tgz#100df4c69c85e894d643803dc1ac73c82168b5da" - integrity sha512-uLhSRtfnXzN000Qf27GOjEPXzd4/jBWqv2x419IMh+AEtKHuCEpQNBUAyLvBbQ79SMr+FmCXHB8AeeJ7bEUiRw== +"@nx/nx-win32-arm64-msvc@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-18.3.3.tgz#0d2c7396e7a063849edbd6e3d34ea81445c389b5" + integrity sha512-Xn3LUaPsF8QkEYUVV3lc693NTCMWrfZBFXTy1cQpvLzQ+idsXQ/EGWoq93cIM3Nc2YWyblT2hHHelb8dHCZAlw== -"@nx/nx-win32-x64-msvc@18.2.4": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-18.2.4.tgz#8e7eb0f9c7bee12977f37ebddc935463d9251793" - integrity sha512-Y52Afz02Ub1kRZXd6NUTwPMjKQqBKZ35e5dUEpl14na2fWvdgdMz4bYOBPUcmQrovlxBGhmFXtFzxkdW3zyRbQ== +"@nx/nx-win32-x64-msvc@18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-18.3.3.tgz#ea1a60ae1ffe805529d5cb95e7b28e6b8ae24621" + integrity sha512-t8HvOnQEiaaoTFOOIrql30NPhIwDFO7jg0Jtz3Tbneulh7ceswJp71yFHsRGGrYZ23Tgg+Sna6M9qLRGzlRGkg== "@octetstream/promisify@2.0.2": version "2.0.2" @@ -3016,10 +2984,10 @@ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-20.0.0.tgz#9ec2daa0090eeb865ee147636e0c00f73790c6e5" integrity sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA== -"@octokit/openapi-types@^22.0.1": - version "22.0.1" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-22.0.1.tgz#41f5b1c4dad3e547906ea9258837fcbea7cc72b4" - integrity sha512-1yN5m1IMNXthoBDUXFF97N1gHop04B3H8ws7wtOr8GgRyDO1gKALjwMHARNBoMBiB/2vEe/vxstrApcJZzQbnQ== +"@octokit/openapi-types@^22.1.0": + version "22.1.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-22.1.0.tgz#6aa72f35fb29318064e4ab60972f40429857eb2e" + integrity sha512-pGUdSP+eEPfZiQHNkZI0U01HLipxncisdJQB4G//OAmfeO8sqTQ9KRa0KF03TUPCziNsoXUrTg4B2Q1EX++T0Q== "@octokit/plugin-enterprise-rest@6.0.1": version "6.0.1" @@ -3152,11 +3120,11 @@ "@octokit/openapi-types" "^20.0.0" "@octokit/types@^13.0.0", "@octokit/types@^13.1.0": - version "13.4.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.4.0.tgz#b9f6865a6fc491387352d7f327e1f030fa7be1cd" - integrity sha512-WlMegy3lPXYWASe3k9Jslc5a0anrYAYMWtsFrxBTdQjS70hvLH6C+PGvHbOsgy3RA3LouGJoU/vAt4KarecQLQ== + version "13.4.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.4.1.tgz#ad3574488cce6792e5d981a1bdf4b694e1ca349f" + integrity sha512-Y73oOAzRBAUzR/iRAbGULzpNkX8vaxKCqEtg6K74Ff3w9f5apFnWtE/2nade7dMWWW3bS5Kkd6DJS4HF04xreg== dependencies: - "@octokit/openapi-types" "^22.0.1" + "@octokit/openapi-types" "^22.1.0" "@octokit/types@^9.0.0", "@octokit/types@^9.2.3": version "9.3.2" @@ -3718,80 +3686,85 @@ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c" integrity sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w== -"@rollup/rollup-android-arm-eabi@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.1.tgz#ca0501dd836894216cb9572848c5dde4bfca3bec" - integrity sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA== +"@rollup/rollup-android-arm-eabi@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.4.tgz#5e8930291f1e5ead7fb1171d53ba5c87718de062" + integrity sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q== -"@rollup/rollup-android-arm64@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.1.tgz#154ca7e4f815d2e442ffc62ee7f64aee8b2547b0" - integrity sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ== +"@rollup/rollup-android-arm64@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.16.4.tgz#ffb84f1359c04ec8a022a97110e18a5600f5f638" + integrity sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w== -"@rollup/rollup-darwin-arm64@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.1.tgz#02b522ab6ccc2c504634651985ff8e657b42c055" - integrity sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q== +"@rollup/rollup-darwin-arm64@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.16.4.tgz#b2fcee8d4806a0b1b9185ac038cc428ddedce9f4" + integrity sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw== -"@rollup/rollup-darwin-x64@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.1.tgz#217737f9f73de729fdfd7d529afebb6c8283f554" - integrity sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA== +"@rollup/rollup-darwin-x64@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.16.4.tgz#fcb25ccbaa3dd33a6490e9d1c64bab2e0e16b932" + integrity sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ== -"@rollup/rollup-linux-arm-gnueabihf@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.1.tgz#a87e478ab3f697c7f4e74c8b1cac1e0667f8f4be" - integrity sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g== +"@rollup/rollup-linux-arm-gnueabihf@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.16.4.tgz#40d46bdfe667e5eca31bf40047460e326d2e26bb" + integrity sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw== -"@rollup/rollup-linux-arm64-gnu@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.1.tgz#4da6830eca27e5f4ca15f9197e5660952ca185c6" - integrity sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w== +"@rollup/rollup-linux-arm-musleabihf@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.16.4.tgz#7741df2448c11c56588b50835dbfe91b1a10b375" + integrity sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg== -"@rollup/rollup-linux-arm64-musl@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.1.tgz#0b0ed35720aebc8f5e501d370a9ea0f686ead1e0" - integrity sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw== +"@rollup/rollup-linux-arm64-gnu@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.16.4.tgz#0a23b02d2933e4c4872ad18d879890b6a4a295df" + integrity sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w== -"@rollup/rollup-linux-powerpc64le-gnu@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.1.tgz#024ad04d162726f25e62915851f7df69a9677c17" - integrity sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw== +"@rollup/rollup-linux-arm64-musl@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.16.4.tgz#e37ef259358aa886cc07d782220a4fb83c1e6970" + integrity sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg== -"@rollup/rollup-linux-riscv64-gnu@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.1.tgz#180694d1cd069ddbe22022bb5b1bead3b7de581c" - integrity sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw== +"@rollup/rollup-linux-powerpc64le-gnu@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.16.4.tgz#8c69218b6de05ee2ba211664a2d2ac1e54e43f94" + integrity sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w== -"@rollup/rollup-linux-s390x-gnu@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.1.tgz#f7b4e2b0ca49be4e34f9ef0b548c926d94edee87" - integrity sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA== +"@rollup/rollup-linux-riscv64-gnu@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.16.4.tgz#d32727dab8f538d9a4a7c03bcf58c436aecd0139" + integrity sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng== -"@rollup/rollup-linux-x64-gnu@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz#0aaf79e5b9ccf7db3084fe6c3f2d2873a27d5af4" - integrity sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA== +"@rollup/rollup-linux-s390x-gnu@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.16.4.tgz#d46097246a187d99fc9451fe8393b7155b47c5ec" + integrity sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ== -"@rollup/rollup-linux-x64-musl@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.1.tgz#38f0a37ca5015eb07dff86a1b6f94279c179f4ed" - integrity sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g== +"@rollup/rollup-linux-x64-gnu@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.4.tgz#6356c5a03a4afb1c3057490fc51b4764e109dbc7" + integrity sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA== -"@rollup/rollup-win32-arm64-msvc@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.1.tgz#84d48c55740ede42c77373f76e85f368633a0cc3" - integrity sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA== +"@rollup/rollup-linux-x64-musl@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.16.4.tgz#03a5831a9c0d05877b94653b5ddd3020d3c6fb06" + integrity sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA== -"@rollup/rollup-win32-ia32-msvc@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.1.tgz#c1e0bc39e20e760f0a526ddf14ae0543af796605" - integrity sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg== +"@rollup/rollup-win32-arm64-msvc@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.16.4.tgz#6cc0db57750376b9303bdb6f5482af8974fcae35" + integrity sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA== -"@rollup/rollup-win32-x64-msvc@4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.1.tgz#299eee74b7d87e116083ac5b1ce8dd9434668294" - integrity sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew== +"@rollup/rollup-win32-ia32-msvc@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.16.4.tgz#aea0b7e492bd9ed46971cb80bc34f1eb14e07789" + integrity sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w== + +"@rollup/rollup-win32-x64-msvc@4.16.4": + version "4.16.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.4.tgz#c09ad9a132ccb5a67c4f211d909323ab1294f95f" + integrity sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A== "@safe-global/safe-apps-provider@0.18.1": version "0.18.1" @@ -3810,9 +3783,9 @@ viem "^1.0.0" "@safe-global/safe-gateway-typescript-sdk@^3.5.3": - version "3.19.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.19.0.tgz#18637c205c83bfc0a6be5fddbf202d6bb4927302" - integrity sha512-TRlP05KY6t3wjLJ74FiirWlEt3xTclnUQM2YdYto1jx5G1o0meMnugIUZXhzm7Bs3rDEDNhz/aDf2KMSZtoCFg== + version "3.20.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.20.0.tgz#980cbae3b6342a4b1ed813d037bf580f9285e630" + integrity sha512-BUvzWY4gHBiIZv2e6EVPtv/ur7OuJuyEiiXa0qylpHQ5a9oR2yUjqtZwnFaunyNIkD98vyR/F/ql40JWn1OrTA== "@scure/base@^1.1.3", "@scure/base@~1.1.0", "@scure/base@~1.1.2", "@scure/base@~1.1.4": version "1.1.6" @@ -4006,6 +3979,51 @@ "@snowballtools/types" "*" "@snowballtools/utils" "*" +"@snowballtools/laconic-registry-cli@^0.1.13": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@snowballtools/laconic-registry-cli/-/laconic-registry-cli-0.1.13.tgz#16d144737e3be2efbb7b0d6fcc86a98441202966" + integrity sha512-n+oHm8nOhpXVgZ5iE8MP+M2J4Z0DFU5bvcMvrd9IPre3b48MVCidnR140lbjoluwKbqrJ/228Y2KTt753uUxsA== + dependencies: + "@snowballtools/laconic-sdk" "^0.1.17" + fs-extra "^10.1.0" + js-yaml "^3.14.1" + lodash "^4.17.21" + lodash-clean "^2.2.3" + yargs "^17.4.1" + +"@snowballtools/laconic-sdk@^0.1.17": + version "0.1.17" + resolved "https://registry.yarnpkg.com/@snowballtools/laconic-sdk/-/laconic-sdk-0.1.17.tgz#1b2326045efc92479767d505ac7c61c8e3d407f4" + integrity sha512-k//bM6pHT7BhJg0dUyjrisANb8QNYBi21Ng6IT7y7kZ7BCqwRq9az3YcEQiuIR1p5dTJlAATxJ/TjJrP0alfiw== + dependencies: + "@cosmjs/amino" "^0.28.1" + "@cosmjs/crypto" "^0.28.1" + "@cosmjs/encoding" "^0.28.1" + "@ipld/dag-cbor" "^7.0.1" + "@ipld/dag-json" "^8.0.9" + "@metamask/eth-sig-util" "^4.0.0" + "@tharsis/address-converter" "^0.1.7" + "@tharsis/eip712" "^0.2.1" + "@tharsis/proto" "^0.1.16" + "@tharsis/provider" "^0.2.4" + "@tharsis/transactions" "^0.2.2" + axios "^0.26.1" + bip32 "3.0.1" + bip39 "^3.0.4" + canonical-json "^0.0.4" + ethers "^5.6.2" + evmosjs "^0.2.5" + graphql.js "^0.6.8" + js-sha256 "^0.9.0" + js-yaml "^3.14.1" + jsonschema "^1.4.0" + lodash "^4.17.21" + multiformats "^9.5.4" + node-yaml "^4.0.1" + secp256k1 "^4.0.1" + semver "^7.3.5" + tiny-secp256k1 "^1.1.6" + "@snowballtools/link-lit-alchemy-light@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@snowballtools/link-lit-alchemy-light/-/link-lit-alchemy-light-0.1.1.tgz#55142771399578d7775e7d231a5cf26600a53b71" @@ -4103,13 +4121,13 @@ dependencies: apg-js "^4.1.1" -"@spruceid/siwe-parser@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-2.1.0.tgz#59859ccfd02403179bcf115d9e02a7dc953a0820" - integrity sha512-tFQwY2oQLa4qvHE6npKsVgVdVLQOCGP1zJM3yjZOHut43LqCwdSwitZndFLrJHZLpqru9FnmYHRakvsPvrI+qA== +"@spruceid/siwe-parser@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-2.1.2.tgz#3e13e7d3ac0bfdaf109a07342590eb21daee2fc3" + integrity sha512-d/r3S1LwJyMaRAKQ0awmo9whfXeE88Qt00vRj91q5uv5ATtWIQEGJ67Yr5eSZw5zp1/fZCXZYuEckt8lSkereQ== dependencies: "@noble/hashes" "^1.1.2" - apg-js "^4.1.1" + apg-js "^4.3.0" uri-js "^4.4.1" valid-url "^1.0.9" @@ -4252,17 +4270,17 @@ "@stablelib/random" "^1.0.2" "@stablelib/wipe" "^1.0.1" -"@tanstack/query-core@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.29.0.tgz#d0b3d12c07d5a47f42ab0c1ed4f317106f3d4b20" - integrity sha512-WgPTRs58hm9CMzEr5jpISe8HXa3qKQ8CxewdYZeVnA54JrPY9B1CZiwsCoLpLkf0dGRZq+LcX5OiJb0bEsOFww== +"@tanstack/query-core@5.32.0": + version "5.32.0" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.32.0.tgz#e097ec2b394a2f64de33c98cd8baf3525c99641a" + integrity sha512-Z3flEgCat55DRXU5UMwYU1U+DgFZKA3iufyOKs+II7iRAo0uXkeU7PH5e6sOH1CGEag0IpKmZxlUFpCg6roSKw== "@tanstack/react-query@^5.22.2": - version "5.29.2" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.29.2.tgz#c55ffbfaf9d8cf34212428db2b6c61ca6b545188" - integrity sha512-nyuWILR4u7H5moLGSiifLh8kIqQDLNOHGuSz0rcp+J75fNc8aQLyr5+I2JCHU3n+nJrTTW1ssgAD8HiKD7IFBQ== + version "5.32.0" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.32.0.tgz#52d441e7ad2a0098dc426f3834f68150c13f265b" + integrity sha512-+E3UudQtarnx9A6xhpgMZapyF+aJfNBGFMgI459FnduEZqT/9KhOWnMOneZahLRt52yzskSA0AuOyLkXHK0yBA== dependencies: - "@tanstack/query-core" "5.29.0" + "@tanstack/query-core" "5.32.0" "@testing-library/dom@^8.5.0": version "8.20.1" @@ -4582,7 +4600,23 @@ resolved "https://registry.yarnpkg.com/@types/dom-screen-wake-lock/-/dom-screen-wake-lock-1.0.3.tgz#c3588a5f6f40fae957f9ce5be9bc4927a61bb9a0" integrity sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw== -"@types/estree@1.0.5": +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.56.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -4710,6 +4744,11 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" +"@types/json-schema@*", "@types/json-schema@^7.0.8": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/jsonfile@*": version "6.1.4" resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702" @@ -4729,14 +4768,7 @@ resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.6.tgz#1749535181a2a9b02ac04a797550a8787345b740" integrity sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ== -"@types/lodash.memoize@^4.1.7": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/lodash.memoize/-/lodash.memoize-4.1.9.tgz#9f8912d39b6e450c0d342a2b74c99d331bf2016b" - integrity sha512-glY1nQuoqX4Ft8Uk+KfJudOD7DQbbEDF6k9XpGncaohW3RW4eSWBlx6AA0fZCrh40tZcQNH4jS/Oc59J6Eq+aw== - dependencies: - "@types/lodash" "*" - -"@types/lodash@*": +"@types/lodash@^4.17.0": version "4.17.0" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.0.tgz#d774355e41f372d5350a4d0714abb48194a489c3" integrity sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA== @@ -4826,9 +4858,9 @@ integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== "@types/qs@*": - version "6.9.14" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.14.tgz#169e142bfe493895287bee382af6039795e9b75b" - integrity sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA== + version "6.9.15" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== "@types/range-parser@*": version "1.2.7" @@ -4842,15 +4874,7 @@ dependencies: "@types/react" "*" -"@types/react@*": - version "18.2.76" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.76.tgz#49bf63dac2ade25289d5be9c5af9adda2cb8a18e" - integrity sha512-T6z/v7YxpswDM61Vq5KoSPTJqCkroJfsDIsvXCr4+qOY6gik5Ju4w0jf67cpC5z7ydOnp/E0V0W08pDRy8u9Xw== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/react@^18.2.66": +"@types/react@*", "@types/react@^18.2.66": version "18.2.79" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.79.tgz#c40efb4f255711f554d47b449f796d1c7756d865" integrity sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w== @@ -4942,57 +4966,57 @@ "@types/babel__core" "^7.20.5" react-refresh "^0.14.0" -"@vue/compiler-core@3.4.21": - version "3.4.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.21.tgz#868b7085378fc24e58c9aed14c8d62110a62be1a" - integrity sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og== +"@vue/compiler-core@3.4.24": + version "3.4.24" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.24.tgz#6b4a5ffddcd874a692f2acfa68981201bcd7096b" + integrity sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A== dependencies: - "@babel/parser" "^7.23.9" - "@vue/shared" "3.4.21" + "@babel/parser" "^7.24.4" + "@vue/shared" "3.4.24" entities "^4.5.0" estree-walker "^2.0.2" - source-map-js "^1.0.2" + source-map-js "^1.2.0" -"@vue/compiler-dom@3.4.21": - version "3.4.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz#0077c355e2008207283a5a87d510330d22546803" - integrity sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA== +"@vue/compiler-dom@3.4.24": + version "3.4.24" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.24.tgz#b7335a49f095b6d35e48b6f7be8da513c1fa52b8" + integrity sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA== dependencies: - "@vue/compiler-core" "3.4.21" - "@vue/shared" "3.4.21" + "@vue/compiler-core" "3.4.24" + "@vue/shared" "3.4.24" "@vue/compiler-sfc@^3.3.4": - version "3.4.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz#4af920dc31ab99e1ff5d152b5fe0ad12181145b2" - integrity sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ== + version "3.4.24" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.24.tgz#2872e353147ce2a145169a33ddd4d68dc95c3a18" + integrity sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA== dependencies: - "@babel/parser" "^7.23.9" - "@vue/compiler-core" "3.4.21" - "@vue/compiler-dom" "3.4.21" - "@vue/compiler-ssr" "3.4.21" - "@vue/shared" "3.4.21" + "@babel/parser" "^7.24.4" + "@vue/compiler-core" "3.4.24" + "@vue/compiler-dom" "3.4.24" + "@vue/compiler-ssr" "3.4.24" + "@vue/shared" "3.4.24" estree-walker "^2.0.2" - magic-string "^0.30.7" - postcss "^8.4.35" - source-map-js "^1.0.2" + magic-string "^0.30.10" + postcss "^8.4.38" + source-map-js "^1.2.0" -"@vue/compiler-ssr@3.4.21": - version "3.4.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz#b84ae64fb9c265df21fc67f7624587673d324fef" - integrity sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q== +"@vue/compiler-ssr@3.4.24": + version "3.4.24" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.24.tgz#0d11fe54dabd17cbd6393a16bf7f785da1cfab46" + integrity sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ== dependencies: - "@vue/compiler-dom" "3.4.21" - "@vue/shared" "3.4.21" + "@vue/compiler-dom" "3.4.24" + "@vue/shared" "3.4.24" -"@vue/shared@3.4.21": - version "3.4.21" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.21.tgz#de526a9059d0a599f0b429af7037cd0c3ed7d5a1" - integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g== +"@vue/shared@3.4.24": + version "3.4.24" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.24.tgz#278ac71f492b392b9b17fe8fc7d324db1a8842db" + integrity sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw== -"@wagmi/connectors@4.1.25": - version "4.1.25" - resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-4.1.25.tgz#074c5e79067d7d4ba3fc3f965e8c3738b3049aa2" - integrity sha512-4Tot1Gtiv7uhiUAxZ9On37aai35l5S0sV7N2yQSNgzqXe55bAlI0cqyBAIJRvyKwOe1+hzKfoFqYQSaoCgj5Lg== +"@wagmi/connectors@4.1.26": + version "4.1.26" + resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-4.1.26.tgz#dda4e2cc3c3943cff66a68e1ce382260d25cd74f" + integrity sha512-0bANLzi4gZcszPnCj3l7+DPztCG+L+W1Zm/a02YmEh2MaQC/blBsbAdb2JALdW66HJJE8m4cNZjPJPTsS2/MQQ== dependencies: "@coinbase/wallet-sdk" "3.9.1" "@metamask/sdk" "0.14.3" @@ -5001,10 +5025,10 @@ "@walletconnect/ethereum-provider" "2.11.2" "@walletconnect/modal" "2.6.2" -"@wagmi/core@2.6.16": - version "2.6.16" - resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.6.16.tgz#7a697aed16ff387b8d684ea64bf9ebb755f537a1" - integrity sha512-95r+2CCf4Yz4CWG7UZMALIcGSUfpr9YbZ2HOqmz6gJEBaW9Cf9xUEZj2MXOHZIP+Ri/3CZJtbBEclDot4enZWA== +"@wagmi/core@2.6.17": + version "2.6.17" + resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.6.17.tgz#46445d12bc46b1fa59d50165ccb50280eac34957" + integrity sha512-Ghr7PlD5HO1YJrsaC52j/csgaigBAiTR7cFiwrY7WdwvWLsR5na4Dv6KfHTU3d3al0CKDLanQdRS5nB4mX1M+g== dependencies: eventemitter3 "5.0.1" mipd "0.0.5" @@ -5274,12 +5298,11 @@ "@walletconnect/modal-ui" "2.6.2" "@walletconnect/relay-api@^1.0.9": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" - integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg== + version "1.0.10" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.10.tgz#5aef3cd07c21582b968136179aa75849dcc65499" + integrity sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw== dependencies: "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" "@walletconnect/relay-auth@^1.0.4": version "1.0.4" @@ -5508,103 +5531,239 @@ "@walletconnect/window-getters" "^1.0.1" tslib "1.14.1" -"@web3modal/common@4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/common/-/common-4.1.7.tgz#9962313d84a7a0a026795fd297eebde62e8ca59a" - integrity sha512-ddw12YVRkHd7m1PIjpX/leioKBO9pccVkOClehKNiJR0aPoY84CbvxXTqamhgbYLcc6klpJM6hXr/TMoAnp2KQ== +"@web3modal/common@4.1.11": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/common/-/common-4.1.11.tgz#74fe5e870c0cccac10fe6d5fed57f307877beee8" + integrity sha512-zcoaixcI3dLC/D0QlhpT8MNCd717O1/3r1AemC5/9Wbk2F+YKXkzJZHmWlXoTvlTw9DH07rJzs9YTPxFyn855w== dependencies: bignumber.js "9.1.2" dayjs "1.11.10" -"@web3modal/core@4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-4.1.7.tgz#8bfcea01781132039eb01e608a0ac449a8ac3c11" - integrity sha512-XFxC7Nyv+qUjPBO+iKrhhm+IXeaM3mOnVmmA0O8xLP7wifS65YQiPNOahoN8z6h05As/9alFSP6m7PPS7k2C9A== +"@web3modal/core@4.1.11": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-4.1.11.tgz#7dbc7ab82a98df8feb9033c2ee3ac853e6135fcc" + integrity sha512-e475IIWywEtgH1CCB2Pl1C/wgPu0NzAvtTMOPSGNoHsw1ID2n6j/o4CURQb2HJjOoYQjTKKVkzXa44vFh2p9xw== dependencies: - "@web3modal/common" "4.1.7" - "@web3modal/wallet" "4.1.7" + "@web3modal/common" "4.1.11" + "@web3modal/wallet" "4.1.11" valtio "1.11.2" -"@web3modal/polyfills@4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/polyfills/-/polyfills-4.1.7.tgz#09b269592ad690803831144d4df486feea9eedeb" - integrity sha512-88o276wGepnOU88xwzOA49sDYT0w1jwaTW2BfpsCrfuJfgqFtkxVa2fXXm9nnLXBNhwIrzMbxb+d47vrhETM1w== +"@web3modal/polyfills@4.1.11": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/polyfills/-/polyfills-4.1.11.tgz#ab5b98b5594d4d36cb3fe11eec68b84f303c2282" + integrity sha512-+aMmjGrLCKLo4gVAdWgFdOX2ZjExciSLw/YlZ01wLO8Yj3bZbCZ7sjBc9xndHOVMK0QyUzBtpCOpYMJzi+59jg== dependencies: buffer "6.0.3" -"@web3modal/scaffold-react@4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/scaffold-react/-/scaffold-react-4.1.7.tgz#90aef89768b78e7efeb386c7a447360eed56a642" - integrity sha512-ePo0xuB64bQMmZPJ7IRhWWTXnSwFU/JoozXeSkDK+cunLBl2EMJJdF1ZCm455FiZ0EorGrwTkvuLiJUk5Hzf8A== +"@web3modal/scaffold-react@4.1.11": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/scaffold-react/-/scaffold-react-4.1.11.tgz#67c17cda7bcdbb1a17c99dc62dfabaf5930ad751" + integrity sha512-vouJHj77ZNKvR/Uyb3Hfc2UFSA4ZrrHmA0vbioCbgIh+V1rYT5XcAZDEu4AAo1qJ5NBRU1pkClVwAmQuWGY43w== dependencies: - "@web3modal/scaffold" "4.1.7" + "@web3modal/scaffold" "4.1.11" -"@web3modal/scaffold-utils@4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/scaffold-utils/-/scaffold-utils-4.1.7.tgz#82df9e8b4dcea69be4f4c202f9913701d577032b" - integrity sha512-o/trJdcWcCHXaMlg4bUUkWO3/Tan4FCfpdZNCSUtsrpNMeH602KbGdmWudZRd8zxxcM9ORSwoRXqSE6GDtnolA== +"@web3modal/scaffold-utils@4.1.11": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/scaffold-utils/-/scaffold-utils-4.1.11.tgz#54511d896bc7bfe7bb651da4a9cd2507498af311" + integrity sha512-nsS9yK5tp1N/VfecLLPc8H/dGJCzn0jElWjRS92VfGPhOSiEh5PIrPyCl9o6wUZsp4fH1YUsoSY2EFpPsuCWgw== dependencies: - "@web3modal/core" "4.1.7" - "@web3modal/polyfills" "4.1.7" + "@web3modal/core" "4.1.11" + "@web3modal/polyfills" "4.1.11" valtio "1.11.2" -"@web3modal/scaffold-vue@4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/scaffold-vue/-/scaffold-vue-4.1.7.tgz#b19d8a858a878cfcd65374d8dd76273cc93c16ca" - integrity sha512-8W+3oUx3HxGe30oqyem8hwqxrV+pMExgYfxC08IATOBbjkrrLp6jmslYgfIE3qJtuaF3KuM7eDqhei380URNcw== +"@web3modal/scaffold-vue@4.1.11": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/scaffold-vue/-/scaffold-vue-4.1.11.tgz#e1b5677c02532fabc1b5dca45c25be5e730dee0f" + integrity sha512-PmIfD2TlKkZZa6V0sqwDtZ7t62BEk5JjCHd380QaZwGTbPEwS99leTWLKBTaxAPShK2p7+aj2Txss63wIXLRFg== dependencies: - "@web3modal/scaffold" "4.1.7" + "@web3modal/scaffold" "4.1.11" -"@web3modal/scaffold@4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/scaffold/-/scaffold-4.1.7.tgz#692989995324688305e5c514db19afdb4b2e5858" - integrity sha512-AaMeyw2EZ3z1tdnfdDW6YyLY5cRstxNKDo1LAYXuSlcKxu437YXyL+gqbNmgtamDYE+xaJHesiFI6c71/O26AQ== +"@web3modal/scaffold@4.1.11": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/scaffold/-/scaffold-4.1.11.tgz#13e18823158357f90e10f3cd83cf615d2ac59daf" + integrity sha512-n8bP3cJNQxV8OD3s8bSj8QDbZvjn8a1Ui81jo2a3rIxOUAlD/cKRM8ivmNxiUdBMae8GP5CLiWtkIptmSLw40Q== dependencies: - "@web3modal/common" "4.1.7" - "@web3modal/core" "4.1.7" - "@web3modal/siwe" "4.1.7" - "@web3modal/ui" "4.1.7" - "@web3modal/wallet" "4.1.7" + "@web3modal/common" "4.1.11" + "@web3modal/core" "4.1.11" + "@web3modal/siwe" "4.1.11" + "@web3modal/ui" "4.1.11" + "@web3modal/wallet" "4.1.11" lit "3.1.0" -"@web3modal/siwe@4.1.7", "@web3modal/siwe@^4.0.5": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/siwe/-/siwe-4.1.7.tgz#67772b4beaeb484836b3af84c0dec74fda929f6e" - integrity sha512-7P3hZ8D259s0l3C8MzmqQXNHY9Z0iEZ4FWUsQnDmLTN3m6qjfWP+vs/SzFENuw2uSbqG0SQz5wIx3dHaLC7Lmw== +"@web3modal/siwe@4.1.11", "@web3modal/siwe@^4.0.5": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/siwe/-/siwe-4.1.11.tgz#def52403ec332b4600c8c18134ef0efb658abe5c" + integrity sha512-gndcNA351mkAR0wUsO4dLS9CbpcFo+AQ2CUXF0Jx83DwaBStCVsX3yllfnYKh/gpVetF3B48mRUt9TTTJJ79dA== dependencies: - "@web3modal/core" "4.1.7" - "@web3modal/scaffold-utils" "4.1.7" + "@web3modal/core" "4.1.11" + "@web3modal/scaffold-utils" "4.1.11" lit "3.1.0" valtio "1.11.2" -"@web3modal/ui@4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-4.1.7.tgz#2e022c03f893d384edc5d91838cbcc1f2ce6ed5c" - integrity sha512-uAfxRpRwgiLN+T1VOhTy27ajijU9qkFDmrv0jK+g6LP5C0wxhGPL6Qrs3chDeCHepx8b5VUdsNTxFEpwWeibjA== +"@web3modal/ui@4.1.11": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-4.1.11.tgz#48a6e57bae1614414c3627d4ba9712441fa61ef0" + integrity sha512-lentHZvUpNjVasvNI8/jrVPIAV1M5zJKZ4Q4AeYwUJdEtlRon1uq10MRylmvlZAjWb98U130uJy245Fz87Th/w== dependencies: lit "3.1.0" qrcode "1.5.3" "@web3modal/wagmi@^4.0.5": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/wagmi/-/wagmi-4.1.7.tgz#e37d7483e796831a41a58e34159483b02f0edb0c" - integrity sha512-lH4Q65DyMj6I9OICttglZ1QCUzEC1Rg4s5wftG5SqthcETfKU31TFTd0lE7I2eW7nO7+Rhdzurufvuk2/lRISg== + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/wagmi/-/wagmi-4.1.11.tgz#6b98f9bea2269ef760c58dd8c8d445b64187b9fa" + integrity sha512-VoXV9idD0yV7jx0F2Xk722VXqQNCDKqDc+LR8WsuOU64TiTLJx9UDQpNcoigbC3bYCi/4Cpw41iSGgs7utbgyQ== dependencies: - "@web3modal/polyfills" "4.1.7" - "@web3modal/scaffold" "4.1.7" - "@web3modal/scaffold-react" "4.1.7" - "@web3modal/scaffold-utils" "4.1.7" - "@web3modal/scaffold-vue" "4.1.7" - "@web3modal/siwe" "4.1.7" + "@web3modal/polyfills" "4.1.11" + "@web3modal/scaffold" "4.1.11" + "@web3modal/scaffold-react" "4.1.11" + "@web3modal/scaffold-utils" "4.1.11" + "@web3modal/scaffold-vue" "4.1.11" + "@web3modal/siwe" "4.1.11" -"@web3modal/wallet@4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@web3modal/wallet/-/wallet-4.1.7.tgz#02b67491e842df4caf9e5ba34494f8e5244e43a7" - integrity sha512-9CeMCOYYr2O7D3Z+dElbbVWwWI1RLGGew3RSt0zfVibPoc5tml/x4cq+KNHSKeW9TUQpp/HAFdbrux4Z1WZAbA== +"@web3modal/wallet@4.1.11": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@web3modal/wallet/-/wallet-4.1.11.tgz#07518f9737151abf1d55fae398b523dc99ab7a41" + integrity sha512-6eJSpNcrBxufJFEQu9+ZOMUZxPqa8438RvfYKCU9nLXwoBtweo6ecpQw2yhXDlrfG+uJZhFabtPxROabn2M8Kg== dependencies: - "@web3modal/polyfills" "4.1.7" + "@web3modal/polyfills" "4.1.11" zod "3.22.4" +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" + +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + "@wojtekmaj/date-utils@^1.1.3": version "1.5.1" resolved "https://registry.yarnpkg.com/@wojtekmaj/date-utils/-/date-utils-1.5.1.tgz#c3cd67177ac781cfa5736219d702a55a2aea5f2b" @@ -5645,6 +5804,16 @@ dependencies: tslib "^2.3.0" +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -5701,12 +5870,17 @@ accepts@^1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + acorn-walk@^8.1.1: version "8.3.2" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.11.3, acorn@^8.4.1: +acorn@^8.11.3, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -5755,6 +5929,21 @@ aggregate-error@^3.0.0, aggregate-error@^3.1.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + alchemy-sdk@^3.0.0, alchemy-sdk@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/alchemy-sdk/-/alchemy-sdk-3.2.1.tgz#23ced2b6f44ce4960ca0950b3b328c0d12b0098e" @@ -5839,7 +6028,7 @@ anymatch@^3.1.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apg-js@^4.1.1: +apg-js@^4.1.1, apg-js@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/apg-js/-/apg-js-4.3.0.tgz#2c55d3f1aa6b90be5d3c6539f346cf2c726702c3" integrity sha512-8U8MULS+JocCnm11bfrVS4zxtAcE3uOiCAI21SnjDrV9LNhMSGwTGGeko3QfyK1JLWwT7KebFqJMB2puzfdFMQ== @@ -6363,7 +6552,7 @@ browserify-aes@^1.2.0: inherits "^2.0.1" safe-buffer "^5.0.1" -browserslist@^4.22.2, browserslist@^4.23.0: +browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -6460,9 +6649,9 @@ builtins@^5.0.0: semver "^7.0.0" bundle-require@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-4.0.2.tgz#65fc74ff14eabbba36d26c9a6161bd78fff6b29e" - integrity sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag== + version "4.0.3" + resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-4.0.3.tgz#916115a75d2d038a6fd0e08669887aba30128561" + integrity sha512-2iscZ3fcthP2vka4Y7j277YJevwmsby/FpFDwjgw34Nl7dtCpt7zz/4TexmHMzY6KZEih7En9ImlbbgUNNQGtA== dependencies: load-tsconfig "^0.2.3" @@ -6568,9 +6757,9 @@ camelize@^1.0.0: integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: - version "1.0.30001608" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001608.tgz#7ae6e92ffb300e4b4ec2f795e0abab456ec06cc0" - integrity sha512-cjUJTQkk9fQlJR2s4HMuPMvTiRggl0rAVMtthQuyOlDWuqHXqN8azLq+pi8B2TjwKJ32diHjUqRIKeFX4z1FoA== + version "1.0.30001612" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz#d34248b4ec1f117b70b24ad9ee04c90e0b8a14ae" + integrity sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g== canonical-json@^0.0.4: version "0.0.4" @@ -6670,6 +6859,11 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + ci-info@^3.2.0, ci-info@^3.6.1, ci-info@^3.7.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" @@ -6775,7 +6969,7 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-deep@4.0.1: +clone-deep@4.0.1, clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== @@ -6795,9 +6989,9 @@ clsx@^1.2.1: integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== clsx@^2.0.0, clsx@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" - integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== cmd-shim@6.0.1: version "6.0.1" @@ -6838,6 +7032,11 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + columnify@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" @@ -6858,7 +7057,12 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@^2.20.3: +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^2.20.0, commander@^2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -6896,6 +7100,11 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" +confbox@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579" + integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== + consola@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" @@ -7628,9 +7837,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.7: - version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== dependencies: jake "^10.8.5" @@ -7642,9 +7851,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.4.668: - version "1.4.733" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.733.tgz#708d51ce01a7ed3b401d5ced85e9f5d504fd4217" - integrity sha512-gUI9nhI2iBGF0OaYYLKOaOtliFMl+Bt1rY7VmEjwxOxqoYLub/D9xmduPEhbw2imE6gYkJKhIE5it+KE2ulVxQ== + version "1.4.746" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.746.tgz#787213e75f6c7bccb55dfe8b68170555c548d093" + integrity sha512-jeWaIta2rIG2FzHaYIhSuVWqC6KJYo7oSBX4Jv7g+aVujKztfvdpf+n6MGwZdC5hQXbax4nntykLH2juIQrfPg== elliptic@6.5.4: version "6.5.4" @@ -7722,6 +7931,14 @@ engine.io-parser@~5.2.1: resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== +enhanced-resolve@^5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" + integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -7744,6 +7961,11 @@ envinfo@7.8.1: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +envinfo@^7.7.3: + version "7.12.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.12.0.tgz#b56723b39c2053d67ea5714f026d05d4f5cc7acd" + integrity sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg== + err-code@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" @@ -7788,6 +8010,11 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" +es-module-lexer@^1.2.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.0.tgz#4878fee3789ad99e065f975fdd3c645529ff0236" + integrity sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw== + es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: version "0.10.64" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" @@ -7898,6 +8125,14 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + esniff@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" @@ -7913,6 +8148,23 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" @@ -8102,7 +8354,7 @@ eventemitter3@^4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.3.0: +events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -8280,6 +8532,11 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + fast-fifo@^1.0.0: version "1.3.2" resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" @@ -8296,7 +8553,7 @@ fast-glob@^3.2.9, fast-glob@^3.3.0: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -8311,6 +8568,11 @@ fast-safe-stringify@^2.0.6: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -8470,9 +8732,9 @@ framer-motion@6.5.1: "@emotion/is-prop-valid" "^0.8.2" framer-motion@^11.0.8: - version "11.0.28" - resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-11.0.28.tgz#b55a61d12c61a3a9e89084a1ff006b20e367436a" - integrity sha512-j/vNYTCH5MX5sY/3dwMs00z1+qAqKX3iIHF762bwqlU814ooD5dDbuj3pA0LmIT5YqyryCkXEb/q+zRblin0lw== + version "11.1.7" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-11.1.7.tgz#ad970c1296e7b5fb26db222fd65d1329aef115a6" + integrity sha512-cW11Pu53eDAXUEhv5hEiWuIXWhfkbV32PlgVISn7jRdcAiVrJ1S03YQQ0/DzoswGYYwKi4qYmHHjCzAH52eSdQ== dependencies: tslib "^2.4.0" @@ -8641,12 +8903,11 @@ get-stream@^8.0.1: integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== get-user-locale@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-user-locale/-/get-user-locale-2.3.1.tgz#fc7319429c8a70fac01b3b2a0b08b0c71c1d3fe2" - integrity sha512-VEvcsqKYx7zhZYC1CjecrDC5ziPSpl1gSm0qFFJhHSGDrSC+x4+p1KojWC/83QX//j476gFhkVXP/kNUc9q+bQ== + version "2.3.2" + resolved "https://registry.yarnpkg.com/get-user-locale/-/get-user-locale-2.3.2.tgz#d37ae6e670c2b57d23a96fb4d91e04b2059d52cf" + integrity sha512-O2GWvQkhnbDoWFUJfaBlDIKUEdND8ATpBXD6KXcbhxlfktyD/d8w6mkzM/IlQEqGZAMz/PW6j6Hv53BiigKLUQ== dependencies: - "@types/lodash.memoize" "^4.1.7" - lodash.memoize "^4.1.1" + mem "^8.0.0" git-raw-commits@^3.0.0: version "3.0.0" @@ -8714,6 +8975,11 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@^10.2.2, glob@^10.3.10: version "10.3.12" resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b" @@ -8819,7 +9085,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.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== @@ -9185,7 +9451,7 @@ import-fresh@^3.2.1, import-fresh@^3.3.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@3.1.0: +import-local@3.1.0, import-local@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== @@ -9296,6 +9562,11 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + invariant@2.2.4, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -9442,9 +9713,9 @@ ipfs-utils@^9.0.2, ipfs-utils@^9.0.6: stream-to-it "^0.2.2" iron-webcrypto@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.1.0.tgz#f902f0cdbd77554b2195ecbb65558c311b01edfd" - integrity sha512-5vgYsCakNlaQub1orZK5QmNYhwYtcllTkZBp5sfIaCqY93Cf6l+v2rtE+E4TMbcfjxDMCdrO8wmp7+ZvhDECLA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.1.1.tgz#245c9d467075ee810343ddfa53dd4909616aaf33" + integrity sha512-5xGwQUWHQSy039rFr+5q/zOmj7GP0Ypzvo34Ep+61bPIhaLduEDp/PvLGlU3awD2mzWUR0weN2vJ1mILydFPEg== is-alphabetical@^1.0.0: version "1.0.4" @@ -10008,6 +10279,15 @@ jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jiti@^1.21.0: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" @@ -10068,7 +10348,7 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -10100,6 +10380,11 @@ json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + json-stable-stringify@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" @@ -10125,11 +10410,6 @@ jsonc-parser@3.2.0: resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== -jsonc-parser@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" - integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -10417,9 +10697,9 @@ lit-element@^3.3.0: lit-html "^2.8.0" lit-element@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-4.0.4.tgz#e0b37ebbe2394bcb9578d611a409f49475dff361" - integrity sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ== + version "4.0.5" + resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-4.0.5.tgz#f20cd8a6231eaf5358f7a6877ca6ea7628fa2015" + integrity sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q== dependencies: "@lit-labs/ssr-dom-shim" "^1.2.0" "@lit/reactive-element" "^2.0.4" @@ -10433,9 +10713,9 @@ lit-html@^2.7.0, lit-html@^2.8.0: "@types/trusted-types" "^2.0.2" lit-html@^3.1.0, lit-html@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-3.1.2.tgz#6655ce82367472de7680c62b1bcb0beb0e426fa1" - integrity sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-3.1.3.tgz#ae2e9fee0258d0a1b5d7b86c87da51117e4f911b" + integrity sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA== dependencies: "@types/trusted-types" "^2.0.2" @@ -10500,6 +10780,11 @@ load-tsconfig@^0.2.3: resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -10567,11 +10852,6 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== -lodash.memoize@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -10676,10 +10956,10 @@ lz-string@^1.5.0: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== -magic-string@^0.30.7: - version "0.30.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.9.tgz#8927ae21bfdd856310e07a1bc8dd5e73cb6c251d" - integrity sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw== +magic-string@^0.30.10: + version "0.30.10" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" + integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -10741,6 +11021,13 @@ make-fetch-happen@^13.0.0: promise-retry "^2.0.1" ssri "^10.0.0" +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -10770,6 +11057,14 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== +mem@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" + integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== + dependencies: + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" + meow@^8.1.2: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -10832,7 +11127,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -10854,6 +11149,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + mimic-fn@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" @@ -11048,7 +11348,7 @@ mkdirp@^2.1.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== -mlly@^1.2.0, mlly@^1.6.1: +mlly@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.6.1.tgz#0983067dc3366d6314fc5e12712884e6978d028f" integrity sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA== @@ -11225,9 +11525,9 @@ next-tick@^1.1.0: integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== node-abi@^3.3.0: - version "3.57.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.57.0.tgz#d772cb899236c0aa46778d0d25256917cf15eb15" - integrity sha512-Dp+A9JWxRaKuHP35H77I4kCKesDy5HUDEmScia2FyncMTOXASMyg251F5PhFoDA5uqBrDDffiLpbqnrZmNXW+g== + version "3.61.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.61.0.tgz#9248f8b8e35dbae2fafeecd6240c5a017ea23f3f" + integrity sha512-dYDO1rxzvMXjEMi37PBeFuYgwh3QZpsw/jt+qOmnRSwiV4z4c+OLoRlTa3V8ID4TrkSQpzCVc9OI2sstFaINfQ== dependencies: semver "^7.3.5" @@ -11431,12 +11731,12 @@ npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: validate-npm-package-name "^5.0.0" npm-package-arg@^11.0.0: - version "11.0.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.1.tgz#f208b0022c29240a1c532a449bdde3f0a4708ebc" - integrity sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== + version "11.0.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.2.tgz#1ef8006c4a9e9204ddde403035f7ff7d718251ca" + integrity sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw== dependencies: hosted-git-info "^7.0.0" - proc-log "^3.0.0" + proc-log "^4.0.0" semver "^7.3.5" validate-npm-package-name "^5.0.0" @@ -11481,9 +11781,9 @@ npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0.5: proc-log "^3.0.0" npm-registry-fetch@^16.0.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-16.2.0.tgz#f9302e0a0e0e47138c29b5d801ea928f6f6edb8b" - integrity sha512-zVH+G0q1O2hqgQBUvQ2LWp6ujr6VJAeDnmWxqiMlCguvLexEzBnuQIwC70r04vcvCMAcYEIpA/rO9YyVi+fmJQ== + version "16.2.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz#c367df2d770f915da069ff19fd31762f4bca3ef1" + integrity sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA== dependencies: "@npmcli/redact" "^1.1.0" make-fetch-happen "^13.0.0" @@ -11492,7 +11792,7 @@ npm-registry-fetch@^16.0.0: minipass-json-stream "^1.0.1" minizlib "^2.1.2" npm-package-arg "^11.0.0" - proc-log "^3.0.0" + proc-log "^4.0.0" npm-run-path@^4.0.1: version "4.0.1" @@ -11518,12 +11818,12 @@ npmlog@^6.0.2: gauge "^4.0.3" set-blocking "^2.0.0" -nx@18.2.4, "nx@>=17.1.2 < 19": - version "18.2.4" - resolved "https://registry.yarnpkg.com/nx/-/nx-18.2.4.tgz#207c5db6b00701a6202cdf7728d4a0deb458147a" - integrity sha512-GxqJcDOhfLa9jsPmip0jG73CZKA96wCryss2DhixCiCU66I3GLYF4+585ObO8Tx7Z1GqhT92RaNGjCxjMIwaPg== +nx@18.3.3, "nx@>=17.1.2 < 19": + version "18.3.3" + resolved "https://registry.yarnpkg.com/nx/-/nx-18.3.3.tgz#ab96811961b631efd4f0c83550e92f7b0a625e83" + integrity sha512-GqC5ANfTWV6SFbgquZwuRMI2Z2nO0c0Yx4JzM3x32aJOgXsmRml3WcV0a5648bIXSen34gylHYl2EHaxVWkzNQ== dependencies: - "@nrwl/tao" "18.2.4" + "@nrwl/tao" "18.3.3" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" "@zkochan/js-yaml" "0.0.6" @@ -11558,16 +11858,16 @@ nx@18.2.4, "nx@>=17.1.2 < 19": yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "18.2.4" - "@nx/nx-darwin-x64" "18.2.4" - "@nx/nx-freebsd-x64" "18.2.4" - "@nx/nx-linux-arm-gnueabihf" "18.2.4" - "@nx/nx-linux-arm64-gnu" "18.2.4" - "@nx/nx-linux-arm64-musl" "18.2.4" - "@nx/nx-linux-x64-gnu" "18.2.4" - "@nx/nx-linux-x64-musl" "18.2.4" - "@nx/nx-win32-arm64-msvc" "18.2.4" - "@nx/nx-win32-x64-msvc" "18.2.4" + "@nx/nx-darwin-arm64" "18.3.3" + "@nx/nx-darwin-x64" "18.3.3" + "@nx/nx-freebsd-x64" "18.3.3" + "@nx/nx-linux-arm-gnueabihf" "18.3.3" + "@nx/nx-linux-arm64-gnu" "18.3.3" + "@nx/nx-linux-arm64-musl" "18.3.3" + "@nx/nx-linux-x64-gnu" "18.3.3" + "@nx/nx-linux-x64-musl" "18.3.3" + "@nx/nx-win32-arm64-msvc" "18.3.3" + "@nx/nx-win32-x64-msvc" "18.3.3" obj-multiplex@^1.0.0: version "1.0.0" @@ -11745,6 +12045,11 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== + p-defer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" @@ -11846,9 +12151,9 @@ p-waterfall@2.1.1: p-reduce "^2.0.0" pacote@^17.0.5: - version "17.0.6" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-17.0.6.tgz#874bb59cda5d44ab784d0b6530fcb4a7d9b76a60" - integrity sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ== + version "17.0.7" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-17.0.7.tgz#14b59a9bf5e3442c891af86825b97b7d72f48fba" + integrity sha512-sgvnoUMlkv9xHwDUKjKQFXVyUi8dtJGKp3vg6sYy+TxbDic5RjZCHF3ygv0EJgNRZ2GfRONjlKPUfokJ9lDpwQ== dependencies: "@npmcli/git" "^5.0.0" "@npmcli/installed-package-contents" "^2.0.1" @@ -11861,7 +12166,7 @@ pacote@^17.0.5: npm-packlist "^8.0.0" npm-pick-manifest "^9.0.0" npm-registry-fetch "^16.0.0" - proc-log "^3.0.0" + proc-log "^4.0.0" promise-retry "^2.0.1" read-package-json "^7.0.0" read-package-json-fast "^3.0.0" @@ -12038,7 +12343,7 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: +pathe@^1.1.1, pathe@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== @@ -12127,13 +12432,13 @@ pkg-dir@^4.2.0: find-up "^4.0.0" pkg-types@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" - integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== + version "1.1.0" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.0.tgz#3ec1bf33379030fd0a34c227b6c650e8ea7ca271" + integrity sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA== dependencies: - jsonc-parser "^3.2.0" - mlly "^1.2.0" - pathe "^1.1.0" + confbox "^0.1.7" + mlly "^1.6.1" + pathe "^1.1.2" please-upgrade-node@^3.2.0: version "3.2.0" @@ -12148,9 +12453,9 @@ pngjs@^5.0.0: integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== pony-cause@^2.1.10: - version "2.1.10" - resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-2.1.10.tgz#828457ad6f13be401a075dbf14107a9057945174" - integrity sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw== + version "2.1.11" + resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-2.1.11.tgz#d69a20aaccdb3bdb8f74dd59e5c68d8e6772e4bd" + integrity sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg== popmotion@11.0.3: version "11.0.3" @@ -12220,7 +12525,7 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.23, postcss@^8.4.35, postcss@^8.4.38: +postcss@^8.4.23, postcss@^8.4.38: version "8.4.38" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== @@ -12290,6 +12595,11 @@ proc-log@^3.0.0: resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== +proc-log@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" + integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== + process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -12556,9 +12866,9 @@ react-code-blocks@^0.1.6: tslib "^2.6.0" react-day-picker@^8.9.1: - version "8.10.0" - resolved "https://registry.yarnpkg.com/react-day-picker/-/react-day-picker-8.10.0.tgz#729c5b9564967a924213978fb9c0751884a60595" - integrity sha512-mz+qeyrOM7++1NCb1ARXmkjMkzWVh2GL9YiPbRjKe0zHccvekk4HE+0MPOZOrosn8r8zTHIIeOUXTmXRqmkRmg== + version "8.10.1" + resolved "https://registry.yarnpkg.com/react-day-picker/-/react-day-picker-8.10.1.tgz#4762ec298865919b93ec09ba69621580835b8e80" + integrity sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA== react-dom@18.2.0, react-dom@^18.2.0: version "18.2.0" @@ -12576,9 +12886,9 @@ react-dropdown@^1.11.0: classnames "^2.2.3" react-hook-form@^7.49.0: - version "7.51.2" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.51.2.tgz#79f7f72ee217c5114ff831012d1a7ec344096e7f" - integrity sha512-y++lwaWjtzDt/XNnyGDQy6goHskFualmDlf+jzEZvjvz6KWDf7EboL7pUvRCzPTJd0EOPpdekYaQLEvvG6m6HA== + version "7.51.3" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.51.3.tgz#7486dd2d52280b6b28048c099a98d2545931cab3" + integrity sha512-cvJ/wbHdhYx8aviSWh28w9ImjmVsb5Y05n1+FW786vEZQJV5STNM0pW6ujS+oiBecb0ARBxJFyAnXj9+GHXACQ== react-hot-toast@^2.4.1: version "2.4.1" @@ -12867,6 +13177,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -12949,7 +13266,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.3: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.3: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -13036,27 +13353,28 @@ rollup-plugin-visualizer@^5.9.2: yargs "^17.5.1" rollup@^4.0.2, rollup@^4.13.0: - version "4.14.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.14.1.tgz#228d5159c3f4d8745bd24819d734bc6c6ca87c09" - integrity sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA== + version "4.16.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.16.4.tgz#fe328eb41293f20c9593a095ec23bdc4b5d93317" + integrity sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA== dependencies: "@types/estree" "1.0.5" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.14.1" - "@rollup/rollup-android-arm64" "4.14.1" - "@rollup/rollup-darwin-arm64" "4.14.1" - "@rollup/rollup-darwin-x64" "4.14.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.14.1" - "@rollup/rollup-linux-arm64-gnu" "4.14.1" - "@rollup/rollup-linux-arm64-musl" "4.14.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.14.1" - "@rollup/rollup-linux-riscv64-gnu" "4.14.1" - "@rollup/rollup-linux-s390x-gnu" "4.14.1" - "@rollup/rollup-linux-x64-gnu" "4.14.1" - "@rollup/rollup-linux-x64-musl" "4.14.1" - "@rollup/rollup-win32-arm64-msvc" "4.14.1" - "@rollup/rollup-win32-ia32-msvc" "4.14.1" - "@rollup/rollup-win32-x64-msvc" "4.14.1" + "@rollup/rollup-android-arm-eabi" "4.16.4" + "@rollup/rollup-android-arm64" "4.16.4" + "@rollup/rollup-darwin-arm64" "4.16.4" + "@rollup/rollup-darwin-x64" "4.16.4" + "@rollup/rollup-linux-arm-gnueabihf" "4.16.4" + "@rollup/rollup-linux-arm-musleabihf" "4.16.4" + "@rollup/rollup-linux-arm64-gnu" "4.16.4" + "@rollup/rollup-linux-arm64-musl" "4.16.4" + "@rollup/rollup-linux-powerpc64le-gnu" "4.16.4" + "@rollup/rollup-linux-riscv64-gnu" "4.16.4" + "@rollup/rollup-linux-s390x-gnu" "4.16.4" + "@rollup/rollup-linux-x64-gnu" "4.16.4" + "@rollup/rollup-linux-x64-musl" "4.16.4" + "@rollup/rollup-win32-arm64-msvc" "4.16.4" + "@rollup/rollup-win32-ia32-msvc" "4.16.4" + "@rollup/rollup-win32-x64-msvc" "4.16.4" fsevents "~2.3.2" run-async@^2.4.0: @@ -13105,6 +13423,15 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" +schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + scrypt-js@3.0.1, scrypt-js@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" @@ -13169,6 +13496,13 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + serve-static@1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" @@ -13343,7 +13677,7 @@ siwe-recap@0.0.2-alpha.0: multiformats "^11.0.2" siwe "^2.1.4" -siwe@^2.0.5, siwe@^2.1.4: +siwe@^2.0.5: version "2.2.0" resolved "https://registry.yarnpkg.com/siwe/-/siwe-2.2.0.tgz#dc025007acb210179396f5f099e618f9d941cfd2" integrity sha512-P8It3ztpGJM4pum3larVVXpR6KeP7G1wnul4EEmuT3LSPVcab+kkX9reoFcErHRPcBt+eVyrEJkAYD50vVRJ0A== @@ -13353,6 +13687,16 @@ siwe@^2.0.5, siwe@^2.1.4: uri-js "^4.4.1" valid-url "^1.0.9" +siwe@^2.1.4: + version "2.3.2" + resolved "https://registry.yarnpkg.com/siwe/-/siwe-2.3.2.tgz#0794ae25f734f3068de0ab093ddd2f7867bc2d67" + integrity sha512-aSf+6+Latyttbj5nMu6GF3doMfv2UYj83hhwZgUF20ky6fTS83uVhkQABdIVnEuS8y1bBdk7p6ltb9SmlhTTlA== + dependencies: + "@spruceid/siwe-parser" "^2.1.2" + "@stablelib/random" "^1.0.1" + uri-js "^4.4.1" + valid-url "^1.0.9" + slash@3.0.0, slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -13431,6 +13775,14 @@ source-map-js@^1.0.2, source-map-js@^1.2.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map@0.8.0-beta.0: version "0.8.0-beta.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" @@ -13443,7 +13795,7 @@ source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -13578,7 +13930,16 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13622,7 +13983,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -13754,6 +14122,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -13785,11 +14160,11 @@ tailwind-merge@1.8.1: integrity sha512-+fflfPxvHFr81hTJpQ3MIwtqgvefHZFUHFiIHpVIRXvG/nX9+gu2P7JNlFu2bfDMJ+uHhi/pUgzaYacMoXv+Ww== tailwind-merge@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.2.2.tgz#87341e7604f0e20499939e152cd2841f41f7a3df" - integrity sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw== + version "2.3.0" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.3.0.tgz#27d2134fd00a1f77eca22bcaafdd67055917d286" + integrity sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA== dependencies: - "@babel/runtime" "^7.24.0" + "@babel/runtime" "^7.24.1" tailwind-variants@^0.2.0: version "0.2.1" @@ -13826,6 +14201,11 @@ tailwindcss@^3.4.3: resolve "^1.22.2" sucrase "^3.32.0" +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -13876,6 +14256,27 @@ temp-dir@1.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== +terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + +terser@^5.26.0: + version "5.30.4" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.4.tgz#62b4d16a819424e6317fd5ceffb4ee8dc769803a" + integrity sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" @@ -14351,7 +14752,7 @@ uqr@^0.1.2: resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== -uri-js@^4.4.1: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -14519,7 +14920,7 @@ viem@2.8.6: isows "1.0.3" ws "8.13.0" -viem@2.x, viem@^2.7.11: +viem@2.x: version "2.9.16" resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.16.tgz#2127871db1908a70798eddb820024b5f0ddc9152" integrity sha512-FQRfN4G7uKEUs5DYvVrH/kZmTkwcSDpTBxnadpwG1EEP8nHm57WDpSaGN7PwSPVgJ6rMo5MENT5hgnqaNTlb2w== @@ -14547,10 +14948,24 @@ viem@^1.0.0, viem@^1.1.4: isows "1.0.3" ws "8.13.0" +viem@^2.7.11: + version "2.9.25" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.25.tgz#afcf320790e175b2afc83d29819f56cb50906f0d" + integrity sha512-W0QOXCsYQppnV89PQP0EnCvfZIEsDYqmpVakLPNrok4Q4B7651M3MV/sYifYcLWv3Mn4KUyMCUlVxlej6CfC/w== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "1.0.0" + isows "1.0.3" + ws "8.13.0" + vite@^5.2.0: - version "5.2.8" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.8.tgz#a99e09939f1a502992381395ce93efa40a2844aa" - integrity sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA== + version "5.2.10" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.10.tgz#2ac927c91e99d51b376a5c73c0e4b059705f5bd7" + integrity sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw== dependencies: esbuild "^0.20.1" postcss "^8.4.38" @@ -14564,12 +14979,12 @@ void-elements@3.1.0: integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== wagmi@^2.5.7: - version "2.5.19" - resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.5.19.tgz#9b8f14d926b88a682fd191824a0c1971ed077f82" - integrity sha512-fy6s3qTuXpfrrghhoNXuV92yqOqJI7m/9iLIejHxEYxiddVDTR8BVdkt0BuBQZzoXSAutDkyIlJbtFcpX5dfrQ== + version "2.5.20" + resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.5.20.tgz#de1799c1eacb46d252b5a7838c5882f46882362d" + integrity sha512-K/9qk6+t/+NKFdbQyB7LtFgl3UXnGjvgyzAyfMQ+dF56uTSJipQwc94CSlN8kdQXTIOvhUSK2P7WJrdTEd15AA== dependencies: - "@wagmi/connectors" "4.1.25" - "@wagmi/core" "2.6.16" + "@wagmi/connectors" "4.1.26" + "@wagmi/core" "2.6.17" use-sync-external-store "1.2.0" warning@^4.0.0: @@ -14579,6 +14994,14 @@ warning@^4.0.0: dependencies: loose-envify "^1.0.0" +watchpack@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" + integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -14604,9 +15027,12 @@ webextension-polyfill-ts@^0.25.0: webextension-polyfill "^0.7.0" "webextension-polyfill@>=0.10.0 <1.0": - version "0.10.0" - resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.10.0.tgz#ccb28101c910ba8cf955f7e6a263e662d744dbb8" - integrity sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g== + version "0.11.0" + resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.11.0.tgz#1640c0d27192424fd5b420237acbe453f88c8246" + integrity sha512-YUBSKQA0iCx2YtM75VFgvvcx1hLKaGGiph6a6UaUdSgk32VT9SzrcDAKBjeGHXoAZTnNBqS5skA4VfoKMXhEBA== + dependencies: + webpack "^5.91.0" + webpack-cli "^5.1.4" webextension-polyfill@^0.7.0: version "0.7.0" @@ -14623,6 +15049,69 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.91.0: + version "5.91.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" + integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.16.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + websocket@^1.0.34: version "1.0.34" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" @@ -14729,6 +15218,11 @@ wif@^2.0.6: dependencies: bs58check "<3.0.0" +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -14739,7 +15233,7 @@ workspace@^0.0.1-preview.1: resolved "https://registry.yarnpkg.com/workspace/-/workspace-0.0.1-preview.1.tgz#0ba0a6b92b3dbc7f1502dd12bc27a37b1eec9083" integrity sha512-oPpEvU7NIQ0MW7ReL+EigMUI2JPNp05kmqzWS6zXVUaSq5KxuQzfgxGd8wuurBulBkTaOnEcGge+2rriyDVHkw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -14757,6 +15251,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 4a146817536fe525c62a6f55742f34c4283f0ad4 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Wed, 24 Apr 2024 12:18:18 -0500 Subject: [PATCH 163/251] Support process.env in frontend --- packages/frontend/vite.config.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index 4a991e0e..d88d0a91 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -23,4 +23,7 @@ export default defineConfig({ // "@snowballtools/js-sdk", ], }, + define: { + 'process.env': 'import.meta.env', + }, }); From d34a5f29cd0d55b21b38024419cfc697d5e507b5 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Wed, 24 Apr 2024 12:18:59 -0500 Subject: [PATCH 164/251] Prettier format --- packages/frontend/vite.config.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index d88d0a91..65a8bb41 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -1,15 +1,15 @@ -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react"; +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], resolve: { alias: { - utils: "/src/utils", - assets: "/src/assets", - context: "/src/context", - components: "/src/components", + utils: '/src/utils', + assets: '/src/assets', + context: '/src/context', + components: '/src/components', }, }, optimizeDeps: { From d1c3249b983b3251d3a8c2ebc96bf56cf0dda5f9 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Wed, 24 Apr 2024 12:32:09 -0500 Subject: [PATCH 165/251] Copy tweak --- packages/frontend/src/pages/auth/Done.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/auth/Done.tsx b/packages/frontend/src/pages/auth/Done.tsx index ab63b12f..f29f89a2 100644 --- a/packages/frontend/src/pages/auth/Done.tsx +++ b/packages/frontend/src/pages/auth/Done.tsx @@ -20,7 +20,7 @@ export const Done = ({ continueTo }: Props) => { You're in!
    - It's time to get your next project rolling! + It's time to get your project rolling 😎
    From 27f5c57c37c7f391b3571bc67fe6a6465a6555d0 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Wed, 24 Apr 2024 19:02:52 -0500 Subject: [PATCH 166/251] Attempt to fix prod --- packages/frontend/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index 65a8bb41..7de2e7d9 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -24,6 +24,6 @@ export default defineConfig({ ], }, define: { - 'process.env': 'import.meta.env', + 'process.env': {}, }, }); From 46476bef28d4a194bd59d018e832d14e58c84cb4 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Wed, 1 May 2024 15:00:52 -0500 Subject: [PATCH 167/251] Add bugsnag --- packages/frontend/package.json | 5 +- packages/frontend/src/index.tsx | 35 ++++++-- yarn.lock | 146 +++++++++++++++++++++++++------- 3 files changed, 148 insertions(+), 38 deletions(-) diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 56a45e44..a8c1782c 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -10,6 +10,9 @@ "preview": "vite preview" }, "dependencies": { + "@bugsnag/browser-performance": "^2.4.1", + "@bugsnag/js": "^7.22.7", + "@bugsnag/plugin-react": "^7.22.7", "@fontsource-variable/jetbrains-mono": "^5.0.19", "@fontsource/inter": "^5.0.16", "@radix-ui/react-avatar": "^1.0.4", @@ -66,8 +69,8 @@ "web-vitals": "^2.1.4" }, "devDependencies": { - "@types/lodash": "^4.17.0", "@types/jest": "^27.5.2", + "@types/lodash": "^4.17.0", "@types/luxon": "^3.3.7", "@types/node": "^16.18.68", "@types/react": "^18.2.66", diff --git a/packages/frontend/src/index.tsx b/packages/frontend/src/index.tsx index 43d476b5..dd556cc3 100644 --- a/packages/frontend/src/index.tsx +++ b/packages/frontend/src/index.tsx @@ -13,6 +13,20 @@ import reportWebVitals from './reportWebVitals'; import { GQLClientProvider } from './context/GQLClientContext'; import { SERVER_GQL_PATH } from './constants'; import { Toaster } from 'components/shared/Toast'; + +import Bugsnag from '@bugsnag/js'; +import BugsnagPluginReact from '@bugsnag/plugin-react'; +import BugsnagPerformance from '@bugsnag/browser-performance'; + +const bugsnagApiKey = import.meta.env.VITE_BUGSNAG_API_KEY; +if (bugsnagApiKey) { + Bugsnag.start({ + apiKey: bugsnagApiKey, + plugins: [new BugsnagPluginReact()], + }); + BugsnagPerformance.start({ apiKey: bugsnagApiKey }); +} + const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement, ); @@ -25,15 +39,20 @@ const gqlEndpoint = `${import.meta.env.VITE_SERVER_URL}/${SERVER_GQL_PATH}`; const gqlClient = new GQLClient({ gqlEndpoint }); +const ErrorBoundary = Bugsnag.getPlugin('react')!.createErrorBoundary(React); + root.render( - - - - - - - - , + + + + + + + + + + , + , ); // If you want to start measuring performance in your app, pass a function diff --git a/yarn.lock b/yarn.lock index b0e1bc38..576c313e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -404,6 +404,90 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@bugsnag/browser-performance@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@bugsnag/browser-performance/-/browser-performance-2.4.1.tgz#d2db494ab9201ce302509c691b46db57633934ec" + integrity sha512-bCkAQLt/nL8QagAEXo+E2RtCZDQEfvzWAdyePm2IF2b3K3mILKz/EeB8UycOu/6b3cN8d1wgVHX0sg0b7wQKRA== + dependencies: + "@bugsnag/core-performance" "^2.4.1" + "@bugsnag/cuid" "^3.1.0" + "@bugsnag/delivery-fetch-performance" "^2.4.1" + "@bugsnag/request-tracker-performance" "^2.4.1" + +"@bugsnag/browser@^7.22.7": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@bugsnag/browser/-/browser-7.22.7.tgz#ba1f9f3596b9d3cf1b4db11250f8be2f178a78c1" + integrity sha512-70jFkWKscK2osm7bnFbPLevrzHClrygM3UcKetKs/l81Xuzlxnu1SS3onN5OUl9kd9RN4XMFr46Pv5jSqWqImQ== + dependencies: + "@bugsnag/core" "^7.22.7" + +"@bugsnag/core-performance@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@bugsnag/core-performance/-/core-performance-2.4.1.tgz#ffc90a5f92c23ccce46276b094e60608332b2aa4" + integrity sha512-n9Wniy43eeluBts68t31Wm+k53D1W4FqhJJtevmN/gK7Hv9y94YSkSnam8ZnZr7fF/qrV3gogP28etlfrSogPQ== + dependencies: + "@bugsnag/cuid" "^3.1.0" + +"@bugsnag/core@^7.22.7": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@bugsnag/core/-/core-7.22.7.tgz#ea5e0822b01913c88be4dbc67d388aff8d65f26a" + integrity sha512-9DPWBkkBjhFJc5dCFy/wVC3HE0Aw3ZiLJKjyAxgywSKbILgtpD+qT1Xe8sacWyxU92znamlZ8H8ziQOe7jhhbA== + dependencies: + "@bugsnag/cuid" "^3.0.0" + "@bugsnag/safe-json-stringify" "^6.0.0" + error-stack-parser "^2.0.3" + iserror "0.0.2" + stack-generator "^2.0.3" + +"@bugsnag/cuid@^3.0.0", "@bugsnag/cuid@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@bugsnag/cuid/-/cuid-3.1.1.tgz#dbd5d76559f6b7a66306fceacf503888883da514" + integrity sha512-d2z4b0rEo3chI07FNN1Xds8v25CNeekecU6FC/2Fs9MxY2EipkZTThVcV2YinMn8dvRUlViKOyC50evoUxg8tw== + +"@bugsnag/delivery-fetch-performance@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@bugsnag/delivery-fetch-performance/-/delivery-fetch-performance-2.4.1.tgz#0ec25218ef0a7ca44969547e3d7c4950b38feb9b" + integrity sha512-Od7UYr1lmsW0lsgukKOh78m3S3FJ4WX4wpqUdjVqBCapuiorRzHx0VRZTvqY+P0flj4bwVFZAr3TBmoEwDFPdg== + dependencies: + "@bugsnag/core-performance" "^2.4.1" + +"@bugsnag/js@^7.22.7": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@bugsnag/js/-/js-7.22.7.tgz#d631584ae37803b275798544232cef4f7e5afbfc" + integrity sha512-Qq8l06rSDTZtxgNIDpTeXHrin9C30INNbPfnR2CNcEsCmfqyVQb4USPEuRb0xg5wiaLKU9r4IAatMqiCgdzG6A== + dependencies: + "@bugsnag/browser" "^7.22.7" + "@bugsnag/node" "^7.22.7" + +"@bugsnag/node@^7.22.7": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@bugsnag/node/-/node-7.22.7.tgz#85231637527eb0be9baeed4ed88ed226da7ca577" + integrity sha512-Ud8vpX9UkGxoWAk7OigyR7w1eycbsE5uv5KZx0aWiqDPXylvICd42V5ZiWstpkdm9IVFo9AQ4+gmerHPe4Lwrg== + dependencies: + "@bugsnag/core" "^7.22.7" + byline "^5.0.0" + error-stack-parser "^2.0.2" + iserror "^0.0.2" + pump "^3.0.0" + stack-generator "^2.0.3" + +"@bugsnag/plugin-react@^7.22.7": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@bugsnag/plugin-react/-/plugin-react-7.22.7.tgz#9f308cc4c043ee765d77686fca4e4404dc1c88d0" + integrity sha512-CDyCHK5+KMkpf/2vmVC7xqqP4ys25Yuj9M8xVrmP7LC02nFUPt/UzEIt43MSO4Jfw254ZimbsQrhIweabQNyxQ== + +"@bugsnag/request-tracker-performance@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@bugsnag/request-tracker-performance/-/request-tracker-performance-2.4.1.tgz#eae59cd5fff8a501a160abb022bfff96f1941e58" + integrity sha512-RFKHkX1JTe5q9h5eTndVcHGcnymfl+JbidHmGIiUuxcZ7887E6QvQF9VLfRSxWwCX/CPkO+uYLtvZZIBRcFi7g== + dependencies: + "@bugsnag/core-performance" "^2.4.1" + +"@bugsnag/safe-json-stringify@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz#22abdcd83e008c369902976730c34c150148a758" + integrity sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA== + "@coinbase/wallet-sdk@3.9.1": version "3.9.1" resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.9.1.tgz#503a14671bb392d653623ef2340934e213ac971f" @@ -4121,7 +4205,7 @@ dependencies: apg-js "^4.1.1" -"@spruceid/siwe-parser@^2.1.2": +"@spruceid/siwe-parser@^2.1.0", "@spruceid/siwe-parser@^2.1.2": version "2.1.2" resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-2.1.2.tgz#3e13e7d3ac0bfdaf109a07342590eb21daee2fc3" integrity sha512-d/r3S1LwJyMaRAKQ0awmo9whfXeE88Qt00vRj91q5uv5ATtWIQEGJ67Yr5eSZw5zp1/fZCXZYuEckt8lSkereQ== @@ -6655,6 +6739,11 @@ bundle-require@^4.0.0: dependencies: load-tsconfig "^0.2.3" +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q== + byte-size@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" @@ -7983,6 +8072,13 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +error-stack-parser@^2.0.2, error-stack-parser@^2.0.3: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + es-define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" @@ -10063,6 +10159,11 @@ isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +iserror@0.0.2, iserror@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/iserror/-/iserror-0.0.2.tgz#bd53451fe2f668b9f2402c1966787aaa2c7c0bf5" + integrity sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -13889,6 +13990,13 @@ ssri@^9.0.1: dependencies: minipass "^3.1.1" +stack-generator@^2.0.3: + version "2.0.10" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d" + integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ== + dependencies: + stackframe "^1.3.4" + stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -13896,6 +14004,11 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -13930,16 +14043,7 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13983,14 +14087,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -15233,7 +15330,7 @@ workspace@^0.0.1-preview.1: resolved "https://registry.yarnpkg.com/workspace/-/workspace-0.0.1-preview.1.tgz#0ba0a6b92b3dbc7f1502dd12bc27a37b1eec9083" integrity sha512-oPpEvU7NIQ0MW7ReL+EigMUI2JPNp05kmqzWS6zXVUaSq5KxuQzfgxGd8wuurBulBkTaOnEcGge+2rriyDVHkw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -15251,15 +15348,6 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 535c37d0b41dfb9f0b2d5a7bda51c3091b2bb394 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Wed, 1 May 2024 15:03:59 -0500 Subject: [PATCH 168/251] Support not having bugsnag available --- packages/frontend/src/index.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/frontend/src/index.tsx b/packages/frontend/src/index.tsx index dd556cc3..a1677235 100644 --- a/packages/frontend/src/index.tsx +++ b/packages/frontend/src/index.tsx @@ -39,7 +39,9 @@ const gqlEndpoint = `${import.meta.env.VITE_SERVER_URL}/${SERVER_GQL_PATH}`; const gqlClient = new GQLClient({ gqlEndpoint }); -const ErrorBoundary = Bugsnag.getPlugin('react')!.createErrorBoundary(React); +const ErrorBoundary = bugsnagApiKey + ? Bugsnag.getPlugin('react')!.createErrorBoundary(React) + : ({ children }: any) => children; root.render( From cf9fd0427263bf249749f760d2af965c9b405be4 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 1 May 2024 17:49:41 -0400 Subject: [PATCH 169/251] make private templates disabled --- .gitignore | 1 + .../src/pages/org-slug/projects/create/template/index.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 734f0ee0..82c52b21 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ yarn-error.log .yarnrc packages/backend/environments/local.toml +packages/frontend/dist/ \ No newline at end of file diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx index a0a7f0c0..0399db01 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx @@ -194,6 +194,7 @@ const CreateRepo = () => { label="Make this repo private" checked={value} onCheckedChange={onChange} + disabled={true} /> )} /> From 6cbc87a7d12f80776b2907854cb145b3d759497f Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 1 May 2024 18:23:39 -0400 Subject: [PATCH 170/251] should always be disabled --- .../src/pages/org-slug/projects/create/template/index.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx index 0399db01..6bef4562 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx @@ -189,11 +189,9 @@ const CreateRepo = () => { ( + render={({ }) => ( )} From f7d6d02b27a6b2e6fc60c6b3a8cf5eba5cf72f0d Mon Sep 17 00:00:00 2001 From: Gilbert Date: Wed, 1 May 2024 18:23:51 -0500 Subject: [PATCH 171/251] Quick error logging (will clean this up later) --- packages/frontend/src/pages/auth/Login.tsx | 3 +++ packages/frontend/src/pages/auth/SignUp.tsx | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/frontend/src/pages/auth/Login.tsx b/packages/frontend/src/pages/auth/Login.tsx index 0757cf26..b590f357 100644 --- a/packages/frontend/src/pages/auth/Login.tsx +++ b/packages/frontend/src/pages/auth/Login.tsx @@ -18,6 +18,7 @@ import { Link } from 'react-router-dom'; import { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; import { signInWithEthereum } from 'utils/siwe'; import { useSnowball } from 'utils/use-snowball'; +import { logError } from 'utils/log-error'; type Provider = 'google' | 'github' | 'apple' | 'email' | 'passkey'; @@ -52,12 +53,14 @@ export const Login = ({ onDone }: Props) => { setError(result.error); setProvider(false); wallet = undefined; + logError(new Error(result.error)); return; } } catch (err: any) { setError(err.message); console.log(err.message, err.name, err.details); setProvider(false); + logError(err); return; } } diff --git a/packages/frontend/src/pages/auth/SignUp.tsx b/packages/frontend/src/pages/auth/SignUp.tsx index bcfa48db..fa4fd4b7 100644 --- a/packages/frontend/src/pages/auth/SignUp.tsx +++ b/packages/frontend/src/pages/auth/SignUp.tsx @@ -16,6 +16,7 @@ import { Link } from 'react-router-dom'; import { useToast } from 'components/shared/Toast'; import { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; import { signInWithEthereum } from 'utils/siwe'; +import { logError } from 'utils/log-error'; type Provider = 'google' | 'github' | 'apple' | 'email'; @@ -46,11 +47,13 @@ export const SignUp = ({ onDone }: Props) => { setError({ type: 'provider', message: result.error }); setProvider(false); wallet = undefined; + logError(new Error(result.error)); return; } } catch (err: any) { setError({ type: 'provider', message: err.message }); setProvider(false); + logError(err); return; } } From 9ed52c67c96f7367f5ff8af2b932a6db49614b96 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 1 May 2024 19:27:25 -0400 Subject: [PATCH 172/251] address should be in top view formatted. not just first letter `0` --- packages/frontend/src/layouts/ProjectSearch.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/frontend/src/layouts/ProjectSearch.tsx b/packages/frontend/src/layouts/ProjectSearch.tsx index bfc5b8ce..1301b42f 100644 --- a/packages/frontend/src/layouts/ProjectSearch.tsx +++ b/packages/frontend/src/layouts/ProjectSearch.tsx @@ -7,7 +7,6 @@ import { useGQLClient } from 'context/GQLClientContext'; import { NotificationBellIcon, PlusIcon } from 'components/shared/CustomIcon'; import { Button } from 'components/shared/Button'; import { Avatar } from 'components/shared/Avatar'; -import { getInitials } from 'utils/geInitials'; import { formatAddress } from 'utils/format'; import { ProjectSearchBar } from 'components/projects/ProjectSearchBar'; @@ -63,7 +62,7 @@ const ProjectSearch = () => { {user?.name && ( )}
    From 072e2c20e3bd979afbef3f5b977c2eac18f8fbf8 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Wed, 1 May 2024 18:31:19 -0500 Subject: [PATCH 173/251] Add missing file --- packages/frontend/src/utils/log-error.ts | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/frontend/src/utils/log-error.ts diff --git a/packages/frontend/src/utils/log-error.ts b/packages/frontend/src/utils/log-error.ts new file mode 100644 index 00000000..96885cc4 --- /dev/null +++ b/packages/frontend/src/utils/log-error.ts @@ -0,0 +1,7 @@ +import Bugsnag from '@bugsnag/js'; + +export function logError(error: Error) { + if (import.meta.env.VITE_BUGSNAG_API_KEY) { + Bugsnag.notify(error); + } +} From 813cea055b1ea439c42e7a981ab23d59ae18cbf3 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 1 May 2024 20:33:32 -0400 Subject: [PATCH 174/251] project avatar --- packages/frontend/src/layouts/ProjectSearch.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/layouts/ProjectSearch.tsx b/packages/frontend/src/layouts/ProjectSearch.tsx index 1301b42f..9feca679 100644 --- a/packages/frontend/src/layouts/ProjectSearch.tsx +++ b/packages/frontend/src/layouts/ProjectSearch.tsx @@ -6,7 +6,6 @@ import HorizontalLine from 'components/HorizontalLine'; import { useGQLClient } from 'context/GQLClientContext'; import { NotificationBellIcon, PlusIcon } from 'components/shared/CustomIcon'; import { Button } from 'components/shared/Button'; -import { Avatar } from 'components/shared/Avatar'; import { formatAddress } from 'utils/format'; import { ProjectSearchBar } from 'components/projects/ProjectSearchBar'; @@ -60,10 +59,9 @@ const ProjectSearch = () => { {user?.name && ( - +

    + {formatAddress(user.name)} +

    )}
    From 808b2ad61bebdade7b68e3cfbb6aaf277cd096e1 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 1 May 2024 21:20:37 -0400 Subject: [PATCH 175/251] add space btw linked learn more --- .../src/pages/org-slug/projects/id/settings/General.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx index b819c7a0..6dd1b8f8 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx @@ -165,7 +165,7 @@ const GeneralTabPanel = () => { Transfer project Transfer this app to your personal account or a team you are a member - of. + of.{' '} Learn more From 187f75d561038a00b79cfa27d61f6e9fb70b727a Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 1 May 2024 21:31:22 -0400 Subject: [PATCH 176/251] gear icon on settings page --- .../components/shared/CustomIcon/GearIcon.tsx | 16 ++++++++++++++++ .../src/components/shared/CustomIcon/index.ts | 1 + .../src/pages/org-slug/projects/id/Settings.tsx | 11 ++++++----- 3 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 packages/frontend/src/components/shared/CustomIcon/GearIcon.tsx diff --git a/packages/frontend/src/components/shared/CustomIcon/GearIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/GearIcon.tsx new file mode 100644 index 00000000..c1ee9e6b --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/GearIcon.tsx @@ -0,0 +1,16 @@ +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const GearIcon = (props: CustomIconProps) => { + return ( + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index 4d77a8b9..805e70aa 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -62,6 +62,7 @@ export * from './WarningTriangleIcon'; export * from './CheckRadioOutlineIcon'; export * from './TrendingIcon'; export * from './ChevronDoubleDownIcon'; +export * from './GearIcon'; // Templates export * from './templates'; diff --git a/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx b/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx index 2b334c36..8b2f1f31 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx @@ -9,31 +9,32 @@ import { } from '@snowballtools/material-tailwind-react-fork'; import { OutletContextType } from '../../../../types/types'; +import { GearIcon } from '../../../../components/shared/CustomIcon/GearIcon'; const tabsData = [ { label: 'General', - icon: '^', + icon: , value: 'general', }, { label: 'Domains', - icon: '^', + icon: '', value: 'domains', }, { label: 'Git', - icon: '^', + icon: '', value: 'git', }, { label: 'Environment variables', - icon: '^', + icon: '', value: 'environment-variables', }, { label: 'Members', - icon: '^', + icon: '', value: 'members', }, ]; From 89b3cb8c31cdaca4c874f4394c50f17e41778327 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 1 May 2024 21:35:55 -0400 Subject: [PATCH 177/251] ad g around gear icon --- packages/frontend/src/components/shared/CustomIcon/GearIcon.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/frontend/src/components/shared/CustomIcon/GearIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/GearIcon.tsx index c1ee9e6b..1a6596dd 100644 --- a/packages/frontend/src/components/shared/CustomIcon/GearIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/GearIcon.tsx @@ -9,8 +9,10 @@ export const GearIcon = (props: CustomIconProps) => { fill="none" {...props} > + + ); }; From c29134bfd985f0617731141c05c3d5065544b7f9 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 1 May 2024 21:55:03 -0400 Subject: [PATCH 178/251] remove all icons for now --- packages/frontend/src/pages/org-slug/projects/id/Settings.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx b/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx index 8b2f1f31..1aad83a7 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx @@ -9,12 +9,11 @@ import { } from '@snowballtools/material-tailwind-react-fork'; import { OutletContextType } from '../../../../types/types'; -import { GearIcon } from '../../../../components/shared/CustomIcon/GearIcon'; const tabsData = [ { label: 'General', - icon: , + icon: '', value: 'general', }, { From df8bc3784a1203f501b30f054ac64b21cc3e900b Mon Sep 17 00:00:00 2001 From: Gilbert Date: Thu, 2 May 2024 10:08:02 -0500 Subject: [PATCH 179/251] Build source maps for bugsnag --- packages/frontend/vite.config.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index 7de2e7d9..9b3ae979 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -26,4 +26,7 @@ export default defineConfig({ define: { 'process.env': {}, }, + build: { + sourcemap: true, + }, }); From 56a264199b0e5128d757b69b51f311ce9934440a Mon Sep 17 00:00:00 2001 From: Gilbert Date: Thu, 2 May 2024 15:47:23 -0500 Subject: [PATCH 180/251] Fix dev script --- packages/frontend/reload-dev.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/reload-dev.sh b/packages/frontend/reload-dev.sh index 95bfa440..631837ba 100755 --- a/packages/frontend/reload-dev.sh +++ b/packages/frontend/reload-dev.sh @@ -1,6 +1,6 @@ #!/bin/bash -(cd /Users/rabbit-m2/p/snowball/snowball-ts-sdk && NO_CLEAN=1 turbo build) +(cd /Users/rabbit-m2/p/snowball/js-sdk && NO_CLEAN=1 turbo build) (cd ../.. && ./scripts/yarn-file-for-local-dev.sh) From 3ffac1a01930750a8ab2490a642a72f9b541e9f3 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Thu, 2 May 2024 15:50:20 -0500 Subject: [PATCH 181/251] ngmi --- packages/frontend/package.json | 1 - .../src/components/shared/Sidebar/Sidebar.tsx | 6 +- .../frontend/src/context/Web3Provider.tsx | 24 +- yarn.lock | 1430 +---------------- 4 files changed, 58 insertions(+), 1403 deletions(-) diff --git a/packages/frontend/package.json b/packages/frontend/package.json index a8c1782c..5d915630 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -65,7 +65,6 @@ "usehooks-ts": "^2.15.1", "uuid": "^9.0.1", "viem": "^2.7.11", - "wagmi": "^2.5.7", "web-vitals": "^2.1.4" }, "devDependencies": { diff --git a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx index d7dc4aaa..6e360cbd 100644 --- a/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx +++ b/packages/frontend/src/components/shared/Sidebar/Sidebar.tsx @@ -3,8 +3,6 @@ import { NavLink, useNavigate, useParams } from 'react-router-dom'; import { Organization, User } from 'gql-client'; import { motion } from 'framer-motion'; -import { useDisconnect } from 'wagmi'; - import { useGQLClient } from 'context/GQLClientContext'; import { GlobeIcon, @@ -31,7 +29,6 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { const { orgSlug } = useParams(); const navigate = useNavigate(); const client = useGQLClient(); - const { disconnect } = useDisconnect(); const isDesktop = useMediaQuery('(min-width: 960px)'); const [user, setUser] = useState(); @@ -90,10 +87,9 @@ export const Sidebar = ({ mobileOpen }: SidebarProps) => { method: 'POST', credentials: 'include', }); - disconnect(); localStorage.clear(); navigate('/login'); - }, [disconnect, navigate]); + }, [navigate]); return ( - {children} - + {children} ); } diff --git a/yarn.lock b/yarn.lock index 576c313e..46b938d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -273,7 +273,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15": +"@babel/helper-module-imports@^7.22.15": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== @@ -363,7 +363,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.22.15", "@babel/runtime@^7.24.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.9.2": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd" integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== @@ -488,21 +488,6 @@ resolved "https://registry.yarnpkg.com/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz#22abdcd83e008c369902976730c34c150148a758" integrity sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA== -"@coinbase/wallet-sdk@3.9.1": - version "3.9.1" - resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.9.1.tgz#503a14671bb392d653623ef2340934e213ac971f" - integrity sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA== - dependencies: - bn.js "^5.2.1" - buffer "^6.0.3" - clsx "^1.2.1" - eth-block-tracker "^7.1.0" - eth-json-rpc-filters "^6.0.0" - eventemitter3 "^5.0.1" - keccak "^3.0.3" - preact "^10.16.0" - sha.js "^2.4.11" - "@confio/ics23@^0.6.8": version "0.6.8" resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d" @@ -691,44 +676,6 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@discoveryjs/json-ext@^0.5.0": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - -"@emotion/babel-plugin@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" - integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/serialize" "^1.1.2" - babel-plugin-macros "^3.1.0" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.2.0" - -"@emotion/cache@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" - integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== - dependencies: - "@emotion/memoize" "^0.8.1" - "@emotion/sheet" "^1.2.2" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" - stylis "4.2.0" - -"@emotion/hash@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" - integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== - "@emotion/is-prop-valid@1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" @@ -743,13 +690,6 @@ dependencies: "@emotion/memoize" "0.7.4" -"@emotion/is-prop-valid@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz#d4175076679c6a26faa92b03bb786f9e52612337" - integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== - dependencies: - "@emotion/memoize" "^0.8.1" - "@emotion/memoize@0.7.4": version "0.7.4" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" @@ -760,73 +700,11 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/react@^11.10.6": - version "11.11.4" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.4.tgz#3a829cac25c1f00e126408fab7f891f00ecc3c1d" - integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/cache" "^11.11.0" - "@emotion/serialize" "^1.1.3" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" - hoist-non-react-statics "^3.3.1" - -"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3", "@emotion/serialize@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.4.tgz#fc8f6d80c492cfa08801d544a05331d1cc7cd451" - integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== - dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" - csstype "^3.0.2" - -"@emotion/sheet@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" - integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== - -"@emotion/styled@^11.10.6": - version "11.11.5" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.5.tgz#0c5c8febef9d86e8a926e663b2e5488705545dfb" - integrity sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/is-prop-valid" "^1.2.2" - "@emotion/serialize" "^1.1.4" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - "@emotion/unitless@0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== -"@emotion/unitless@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== - -"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" - integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== - -"@emotion/utils@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" - integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== - -"@emotion/weak-memoize@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" - integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== - "@esbuild/aix-ppc64@0.19.12": version "0.19.12" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" @@ -1057,30 +935,12 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== -"@ethereumjs/common@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-3.2.0.tgz#b71df25845caf5456449163012074a55f048e0a0" - integrity sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA== - dependencies: - "@ethereumjs/util" "^8.1.0" - crc-32 "^1.2.0" - "@ethereumjs/rlp@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== -"@ethereumjs/tx@^4.1.2", "@ethereumjs/tx@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-4.2.0.tgz#5988ae15daf5a3b3c815493bc6b495e76009e853" - integrity sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw== - dependencies: - "@ethereumjs/common" "^3.2.0" - "@ethereumjs/rlp" "^4.0.1" - "@ethereumjs/util" "^8.1.0" - ethereum-cryptography "^2.0.0" - -"@ethereumjs/util@^8.0.0", "@ethereumjs/util@^8.1.0": +"@ethereumjs/util@^8.0.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== @@ -1734,14 +1594,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== -"@jridgewell/source-map@^0.3.3": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" - integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" @@ -1755,7 +1607,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -2369,15 +2221,6 @@ dependencies: "@lit-labs/ssr-dom-shim" "^1.2.0" -"@metamask/eth-json-rpc-provider@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.1.tgz#3fd5316c767847f4ca107518b611b15396a5a32c" - integrity sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA== - dependencies: - "@metamask/json-rpc-engine" "^7.0.0" - "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^5.0.1" - "@metamask/eth-sig-util@5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz#c518279a6e17a88135a13d53a0b970f145ff8bce" @@ -2401,159 +2244,6 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" -"@metamask/json-rpc-engine@^7.0.0": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz#f2b30a2164558014bfcca45db10f5af291d989af" - integrity sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg== - dependencies: - "@metamask/rpc-errors" "^6.2.1" - "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^8.3.0" - -"@metamask/object-multiplex@^1.1.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@metamask/object-multiplex/-/object-multiplex-1.3.0.tgz#459de4862aa5a5a025dabceadda0ffd553ca4b25" - integrity sha512-czcQeVYdSNtabd+NcYQnrM69MciiJyd1qvKH8WM2Id3C0ZiUUX5Xa/MK+/VUk633DBhVOwdNzAKIQ33lGyA+eQ== - dependencies: - end-of-stream "^1.4.4" - once "^1.4.0" - readable-stream "^2.3.3" - -"@metamask/onboarding@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@metamask/onboarding/-/onboarding-1.0.1.tgz#14a36e1e175e2f69f09598e2008ab6dc1b3297e6" - integrity sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ== - dependencies: - bowser "^2.9.0" - -"@metamask/post-message-stream@^6.1.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-6.2.0.tgz#3db0a50adc2b2206d1bb95739e7fff49e36e0324" - integrity sha512-WunZ0bruClF862mvbKQGETn5SM0XKGmocPMQR1Ew6sYix9/FDzeoZnoI8RkXk01E+70FCdxhTE/r8kk5SFOuTw== - dependencies: - "@metamask/utils" "^5.0.0" - readable-stream "2.3.3" - -"@metamask/providers@^10.2.1": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@metamask/providers/-/providers-10.2.1.tgz#61304940adeccc7421dcda30ffd1d834273cc77b" - integrity sha512-p2TXw2a1Nb8czntDGfeIYQnk4LLVbd5vlcb3GY//lylYlKdSqp+uUTegCvxiFblRDOT68jsY8Ib1VEEzVUOolA== - dependencies: - "@metamask/object-multiplex" "^1.1.0" - "@metamask/safe-event-emitter" "^2.0.0" - "@types/chrome" "^0.0.136" - detect-browser "^5.2.0" - eth-rpc-errors "^4.0.2" - extension-port-stream "^2.0.1" - fast-deep-equal "^2.0.1" - is-stream "^2.0.0" - json-rpc-engine "^6.1.0" - json-rpc-middleware-stream "^4.2.1" - pump "^3.0.0" - webextension-polyfill-ts "^0.25.0" - -"@metamask/rpc-errors@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-6.2.1.tgz#f5daf429ededa7cb83069dc621bd5738fe2a1d80" - integrity sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw== - dependencies: - "@metamask/utils" "^8.3.0" - fast-safe-stringify "^2.0.6" - -"@metamask/safe-event-emitter@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" - integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== - -"@metamask/safe-event-emitter@^3.0.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.1.tgz#e89b840a7af8097a8ed4953d8dc8470d1302d3ef" - integrity sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw== - -"@metamask/sdk-communication-layer@0.14.3": - version "0.14.3" - resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.14.3.tgz#0e7ec8e472641273da5802f3b357687ce12369c3" - integrity sha512-yjSbj8y7fFbQXv2HBzUX6D9C8BimkCYP6BDV7hdw53W8b/GlYCtXVxUFajQ9tuO1xPTRjR/xt/dkdr2aCi6WGw== - dependencies: - bufferutil "^4.0.8" - cross-fetch "^3.1.5" - date-fns "^2.29.3" - eciesjs "^0.3.16" - eventemitter2 "^6.4.5" - socket.io-client "^4.5.1" - utf-8-validate "^6.0.3" - uuid "^8.3.2" - -"@metamask/sdk-install-modal-web@0.14.1": - version "0.14.1" - resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.14.1.tgz#c8e64b4f7d2dac262c2ec28025c541b258478c31" - integrity sha512-emT8HKbnfVwGhPxyUfMja6DWzvtJvDEBQxqCVx93H0HsyrrOzOC43iGCAosslw6o5h7gOfRKLqWmK8V7jQAS2Q== - dependencies: - "@emotion/react" "^11.10.6" - "@emotion/styled" "^11.10.6" - i18next "22.5.1" - qr-code-styling "^1.6.0-rc.1" - react "^18.2.0" - react-dom "^18.2.0" - react-i18next "^13.2.2" - -"@metamask/sdk@0.14.3": - version "0.14.3" - resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.14.3.tgz#ec1ecf00edef981fd17e2c5cf4ec40ce0a43a55c" - integrity sha512-BYLs//nY2wioVSih78gOQI6sLIYY3vWkwVqXGYUgkBV+bi49bv+9S0m+hZ2cwiRaxfMYtKs0KvhAQ8weiYwDrg== - dependencies: - "@metamask/onboarding" "^1.0.1" - "@metamask/post-message-stream" "^6.1.0" - "@metamask/providers" "^10.2.1" - "@metamask/sdk-communication-layer" "0.14.3" - "@metamask/sdk-install-modal-web" "0.14.1" - "@react-native-async-storage/async-storage" "^1.17.11" - "@types/dom-screen-wake-lock" "^1.0.0" - bowser "^2.9.0" - cross-fetch "^4.0.0" - eciesjs "^0.3.15" - eth-rpc-errors "^4.0.3" - eventemitter2 "^6.4.7" - extension-port-stream "^2.0.1" - i18next "22.5.1" - i18next-browser-languagedetector "^7.1.0" - obj-multiplex "^1.0.0" - pump "^3.0.0" - qrcode-terminal-nooctal "^0.12.1" - react-i18next "^13.2.2" - react-native-webview "^11.26.0" - readable-stream "^2.3.7" - rollup-plugin-visualizer "^5.9.2" - socket.io-client "^4.5.1" - util "^0.12.4" - uuid "^8.3.2" - -"@metamask/utils@^5.0.0", "@metamask/utils@^5.0.1": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-5.0.2.tgz#140ba5061d90d9dac0280c19cab101bc18c8857c" - integrity sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g== - dependencies: - "@ethereumjs/tx" "^4.1.2" - "@types/debug" "^4.1.7" - debug "^4.3.4" - semver "^7.3.8" - superstruct "^1.0.3" - -"@metamask/utils@^8.3.0": - version "8.4.0" - resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-8.4.0.tgz#f44812c96467a4e1b70b2edff6ee89a9caa4e354" - integrity sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg== - dependencies: - "@ethereumjs/tx" "^4.2.0" - "@noble/hashes" "^1.3.1" - "@scure/base" "^1.1.3" - "@types/debug" "^4.1.7" - debug "^4.3.4" - pony-cause "^2.1.10" - semver "^7.5.4" - superstruct "^1.0.3" - uuid "^9.0.1" - "@motionone/animation@^10.12.0", "@motionone/animation@^10.15.1", "@motionone/animation@^10.17.0": version "10.17.0" resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.17.0.tgz#7633c6f684b5fee2b61c405881b8c24662c68fca" @@ -2679,7 +2369,7 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== -"@noble/hashes@1.4.0", "@noble/hashes@^1", "@noble/hashes@^1.0.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2": +"@noble/hashes@1.4.0", "@noble/hashes@^1", "@noble/hashes@^1.0.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.2": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== @@ -3758,13 +3448,6 @@ dependencies: "@babel/runtime" "^7.13.10" -"@react-native-async-storage/async-storage@^1.17.11": - version "1.23.1" - resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.23.1.tgz#cad3cd4fab7dacfe9838dce6ecb352f79150c883" - integrity sha512-Qd2kQ3yi6Y3+AcUlrHxSLlnBvpdCEMVGFlVBneVOjaFaPU61g1huc38g339ysXspwY1QZA2aNhrk/KlHGO+ewA== - dependencies: - merge-options "^3.0.4" - "@remix-run/router@1.15.3": version "1.15.3" resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c" @@ -3850,28 +3533,7 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.4.tgz#c09ad9a132ccb5a67c4f211d909323ab1294f95f" integrity sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A== -"@safe-global/safe-apps-provider@0.18.1": - version "0.18.1" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.1.tgz#287b5a1e2ef3be630dacde54279409df3ced8202" - integrity sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg== - dependencies: - "@safe-global/safe-apps-sdk" "^8.1.0" - events "^3.3.0" - -"@safe-global/safe-apps-sdk@8.1.0", "@safe-global/safe-apps-sdk@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-8.1.0.tgz#d1d0c69cd2bf4eef8a79c5d677d16971926aa64a" - integrity sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w== - dependencies: - "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" - viem "^1.0.0" - -"@safe-global/safe-gateway-typescript-sdk@^3.5.3": - version "3.20.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.20.0.tgz#980cbae3b6342a4b1ed813d037bf580f9285e630" - integrity sha512-BUvzWY4gHBiIZv2e6EVPtv/ur7OuJuyEiiXa0qylpHQ5a9oR2yUjqtZwnFaunyNIkD98vyR/F/ql40JWn1OrTA== - -"@scure/base@^1.1.3", "@scure/base@~1.1.0", "@scure/base@~1.1.2", "@scure/base@~1.1.4": +"@scure/base@~1.1.0", "@scure/base@~1.1.2", "@scure/base@~1.1.4": version "1.1.6" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== @@ -4193,11 +3855,6 @@ alchemy-sdk "^3.2.0" viem "2.x" -"@socket.io/component-emitter@~3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz#621270c02c0a5d4f4669eb1caa9723c91cf201de" - integrity sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg== - "@spruceid/siwe-parser@1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-1.1.3.tgz#0eebe8bbd63c6de89cb44c06b6329b00b305df65" @@ -4644,14 +4301,6 @@ resolved "https://registry.yarnpkg.com/@types/btoa-lite/-/btoa-lite-1.0.2.tgz#82bb6aab00abf7cff3ca2825abe010c0cd536ae5" integrity sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg== -"@types/chrome@^0.0.136": - version "0.0.136" - resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.136.tgz#7c011b9f997b0156f25a140188a0c5689d3f368f" - integrity sha512-XDEiRhLkMd+SB7Iw3ZUIj/fov3wLd4HyTdLltVszkgl1dBfc3Rb7oPMVZ2Mz2TLqnF7Ow+StbR8E7r9lqpb4DA== - dependencies: - "@types/filesystem" "*" - "@types/har-format" "*" - "@types/connect@*": version "3.4.38" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" @@ -4672,35 +4321,14 @@ resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== -"@types/debug@^4.1.5", "@types/debug@^4.1.7": +"@types/debug@^4.1.5": version "4.1.12" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== dependencies: "@types/ms" "*" -"@types/dom-screen-wake-lock@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/dom-screen-wake-lock/-/dom-screen-wake-lock-1.0.3.tgz#c3588a5f6f40fae957f9ce5be9bc4927a61bb9a0" - integrity sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw== - -"@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.56.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" - integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.5": +"@types/estree@1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -4751,18 +4379,6 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/filesystem@*": - version "0.0.36" - resolved "https://registry.yarnpkg.com/@types/filesystem/-/filesystem-0.0.36.tgz#7227c2d76bfed1b21819db310816c7821d303857" - integrity sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA== - dependencies: - "@types/filewriter" "*" - -"@types/filewriter@*": - version "0.0.33" - resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.33.tgz#d9d611db9d9cd99ae4e458de420eeb64ad604ea8" - integrity sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g== - "@types/fs-extra@^11.0.4": version "11.0.4" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-11.0.4.tgz#e16a863bb8843fba8c5004362b5a73e17becca45" @@ -4776,11 +4392,6 @@ resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.12.tgz#eb2ba0eddd65712211a2b455dc6071d665ccf49b" integrity sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ== -"@types/har-format@*": - version "1.2.15" - resolved "https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.15.tgz#f352493638c2f89d706438a19a9eb300b493b506" - integrity sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA== - "@types/hast@^2.0.0": version "2.3.10" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.10.tgz#5c9d9e0b304bbb8879b857225c5ebab2d81d7643" @@ -4828,11 +4439,6 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.8": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - "@types/jsonfile@*": version "6.1.4" resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702" @@ -4966,7 +4572,7 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/secp256k1@^4.0.1", "@types/secp256k1@^4.0.4": +"@types/secp256k1@^4.0.1": version "4.0.6" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" integrity sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ== @@ -5097,50 +4703,6 @@ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.24.tgz#278ac71f492b392b9b17fe8fc7d324db1a8842db" integrity sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw== -"@wagmi/connectors@4.1.26": - version "4.1.26" - resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-4.1.26.tgz#dda4e2cc3c3943cff66a68e1ce382260d25cd74f" - integrity sha512-0bANLzi4gZcszPnCj3l7+DPztCG+L+W1Zm/a02YmEh2MaQC/blBsbAdb2JALdW66HJJE8m4cNZjPJPTsS2/MQQ== - dependencies: - "@coinbase/wallet-sdk" "3.9.1" - "@metamask/sdk" "0.14.3" - "@safe-global/safe-apps-provider" "0.18.1" - "@safe-global/safe-apps-sdk" "8.1.0" - "@walletconnect/ethereum-provider" "2.11.2" - "@walletconnect/modal" "2.6.2" - -"@wagmi/core@2.6.17": - version "2.6.17" - resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.6.17.tgz#46445d12bc46b1fa59d50165ccb50280eac34957" - integrity sha512-Ghr7PlD5HO1YJrsaC52j/csgaigBAiTR7cFiwrY7WdwvWLsR5na4Dv6KfHTU3d3al0CKDLanQdRS5nB4mX1M+g== - dependencies: - eventemitter3 "5.0.1" - mipd "0.0.5" - zustand "4.4.1" - -"@walletconnect/core@2.11.2": - version "2.11.2" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.11.2.tgz#35286be92c645fa461fecc0dfe25de9f076fca8f" - integrity sha512-bB4SiXX8hX3/hyBfVPC5gwZCXCl+OPj+/EDVM71iAO3TDsh78KPbrVAbDnnsbHzZVHlsMohtXX3j5XVsheN3+g== - dependencies: - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-provider" "1.0.13" - "@walletconnect/jsonrpc-types" "1.0.3" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/jsonrpc-ws-connection" "1.0.14" - "@walletconnect/keyvaluestorage" "^1.1.1" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/relay-auth" "^1.0.4" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.11.2" - "@walletconnect/utils" "2.11.2" - events "^3.3.0" - isomorphic-unfetch "3.1.0" - lodash.isequal "4.5.0" - uint8arrays "^3.1.0" - "@walletconnect/core@2.12.2": version "2.12.2" resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.12.2.tgz#12bd568b90daed876e58ebcc098c12843a3321e6" @@ -5193,22 +4755,6 @@ dependencies: tslib "1.14.1" -"@walletconnect/ethereum-provider@2.11.2": - version "2.11.2" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.11.2.tgz#914f773e37a879bc00cf367437c4e98a826247b1" - integrity sha512-BUDqee0Uy2rCZVkW5Ao3q6Ado/3fePYnFdryVF+YL6bPhj+xQZ5OfKodl+uvs7Rwq++O5wTX2RqOTzpW7+v+Mg== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.7" - "@walletconnect/jsonrpc-provider" "^1.0.13" - "@walletconnect/jsonrpc-types" "^1.0.3" - "@walletconnect/jsonrpc-utils" "^1.0.8" - "@walletconnect/modal" "^2.6.2" - "@walletconnect/sign-client" "2.11.2" - "@walletconnect/types" "2.11.2" - "@walletconnect/universal-provider" "2.11.2" - "@walletconnect/utils" "2.11.2" - events "^3.3.0" - "@walletconnect/ethereum-provider@2.9.2": version "2.9.2" resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.9.2.tgz#fb3a6fca279bb4e98e75baa2fb9730545d41bb99" @@ -5373,7 +4919,7 @@ "@walletconnect/modal-core" "2.6.1" "@walletconnect/modal-ui" "2.6.1" -"@walletconnect/modal@2.6.2", "@walletconnect/modal@^2.6.2": +"@walletconnect/modal@^2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" integrity sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA== @@ -5407,21 +4953,6 @@ dependencies: tslib "1.14.1" -"@walletconnect/sign-client@2.11.2": - version "2.11.2" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.11.2.tgz#855609653855f0d23b0502cdbdcf43402e34c459" - integrity sha512-MfBcuSz2GmMH+P7MrCP46mVE5qhP0ZyWA0FyIH6/WuxQ6G+MgKsGfaITqakpRPsykWOJq8tXMs3XvUPDU413OQ== - dependencies: - "@walletconnect/core" "2.11.2" - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.11.2" - "@walletconnect/utils" "2.11.2" - events "^3.3.0" - "@walletconnect/sign-client@2.12.2": version "2.12.2" resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.12.2.tgz#10cddcba3740f726149c33ef1a9040a808d65e08" @@ -5459,18 +4990,6 @@ dependencies: tslib "1.14.1" -"@walletconnect/types@2.11.2": - version "2.11.2" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.11.2.tgz#d0359dd4106fcaa1634241a00428d3ea08d0d3c7" - integrity sha512-p632MFB+lJbip2cvtXPBQslpUdiw1sDtQ5y855bOlAGquay+6fZ4h1DcDePeKQDQM3P77ax2a9aNPZxV6y/h1Q== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-types" "1.0.3" - "@walletconnect/keyvaluestorage" "^1.1.1" - "@walletconnect/logger" "^2.0.1" - events "^3.3.0" - "@walletconnect/types@2.12.2": version "2.12.2" resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.12.2.tgz#8b64a2015a0a96972d28acb2ff317a9a994abfdb" @@ -5495,21 +5014,6 @@ "@walletconnect/logger" "^2.0.1" events "^3.3.0" -"@walletconnect/universal-provider@2.11.2": - version "2.11.2" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.11.2.tgz#bec3038f51445d707bbec75f0cb8af0a1f1e04db" - integrity sha512-cNtIn5AVoDxKAJ4PmB8m5adnf5mYQMUamEUPKMVvOPscfGtIMQEh9peKsh2AN5xcRVDbgluC01Id545evFyymw== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.7" - "@walletconnect/jsonrpc-provider" "1.0.13" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.7" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/sign-client" "2.11.2" - "@walletconnect/types" "2.11.2" - "@walletconnect/utils" "2.11.2" - events "^3.3.0" - "@walletconnect/universal-provider@2.12.2": version "2.12.2" resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.12.2.tgz#0c855bbb5584fd11bdf2318344fe6f42fa3e91cb" @@ -5540,26 +5044,6 @@ "@walletconnect/utils" "2.9.2" events "^3.3.0" -"@walletconnect/utils@2.11.2": - version "2.11.2" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.11.2.tgz#dee0f19adf5e38543612cbe9fa4de7ed28eb7e85" - integrity sha512-LyfdmrnZY6dWqlF4eDrx5jpUwsB2bEPjoqR5Z6rXPiHJKUOdJt7az+mNOn5KTSOlRpd1DmozrBrWr+G9fFLYVw== - dependencies: - "@stablelib/chacha20poly1305" "1.0.1" - "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "^1.0.2" - "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "^1.0.3" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.11.2" - "@walletconnect/window-getters" "^1.0.1" - "@walletconnect/window-metadata" "^1.0.1" - detect-browser "5.3.0" - query-string "7.1.3" - uint8arrays "^3.1.0" - "@walletconnect/utils@2.12.2": version "2.12.2" resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.12.2.tgz#a2c349d4effef7c1c5e72e74a5483d8dfbb10918" @@ -5712,142 +5196,6 @@ "@web3modal/polyfills" "4.1.11" zod "3.22.4" -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" - integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== - -"@webpack-cli/info@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" - integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== - -"@webpack-cli/serve@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" - integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== - "@wojtekmaj/date-utils@^1.1.3": version "1.5.1" resolved "https://registry.yarnpkg.com/@wojtekmaj/date-utils/-/date-utils-1.5.1.tgz#c3cd67177ac781cfa5736219d702a55a2aea5f2b" @@ -5888,16 +5236,6 @@ dependencies: tslib "^2.3.0" -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -5931,11 +5269,6 @@ abbrev@^2.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== -abitype@0.9.8: - version "0.9.8" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.9.8.tgz#1f120b6b717459deafd213dfbf3a3dd1bf10ae8c" - integrity sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ== - abitype@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97" @@ -5954,17 +5287,12 @@ accepts@^1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - acorn-walk@^8.1.1: version "8.3.2" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.11.3, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2: +acorn@^8.11.3, acorn@^8.4.1: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -6013,21 +5341,6 @@ aggregate-error@^3.0.0, aggregate-error@^3.1.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - alchemy-sdk@^3.0.0, alchemy-sdk@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/alchemy-sdk/-/alchemy-sdk-3.2.1.tgz#23ced2b6f44ce4960ca0950b3b328c0d12b0098e" @@ -6317,13 +5630,6 @@ assert@^2.1.0: object.assign "^4.1.4" util "^0.12.5" -async-mutex@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" - integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== - dependencies: - tslib "^2.0.0" - async-retry@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" @@ -6393,15 +5699,6 @@ axios@^1.6.0, axios@^1.6.5, axios@^1.6.7: form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-plugin-macros@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -6587,11 +5884,6 @@ bottleneck@^2.15.3: resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== -bowser@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" - integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -6636,7 +5928,7 @@ browserify-aes@^1.2.0: inherits "^2.0.1" safe-buffer "^5.0.1" -browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0: +browserslist@^4.22.2, browserslist@^4.23.0: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -6713,7 +6005,7 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -bufferutil@^4.0.1, bufferutil@^4.0.8: +bufferutil@^4.0.1: version "4.0.8" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== @@ -6948,11 +6240,6 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - ci-info@^3.2.0, ci-info@^3.6.1, ci-info@^3.7.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" @@ -7058,7 +6345,7 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-deep@4.0.1, clone-deep@^4.0.1: +clone-deep@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== @@ -7072,11 +6359,6 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -clsx@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - clsx@^2.0.0, clsx@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" @@ -7121,11 +6403,6 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -colorette@^2.0.14: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - columnify@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" @@ -7146,12 +6423,7 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^2.20.0, commander@^2.20.3: +commander@^2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -7289,11 +6561,6 @@ conventional-recommended-bump@7.0.1: git-semver-tags "^5.0.0" meow "^8.1.2" -convert-source-map@^1.5.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" @@ -7363,7 +6630,7 @@ cors@^2.8.5: object-assign "^4" vary "^1" -cosmiconfig@^7.0.0, cosmiconfig@^7.1.0: +cosmiconfig@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== @@ -7408,11 +6675,6 @@ cosmjs-types@^0.7.1: long "^4.0.0" protobufjs "~6.11.2" -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -7554,13 +6816,6 @@ date-and-time@^2.4.1: resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-2.4.3.tgz#116963998a8cecd478955ae053f31a6747a988df" integrity sha512-xkS/imTmsyEdpp9ie5oV5UWolg3XkYWNySbT2W4ESWr6v4V8YrsHbhpk9fIeQcr0NFTnYbQJLXlgU1zrLItysA== -date-fns@^2.29.3: - version "2.30.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" - integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== - dependencies: - "@babel/runtime" "^7.21.0" - date-fns@^3.3.1: version "3.6.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf" @@ -7576,7 +6831,7 @@ dayjs@1.11.10, dayjs@^1.11.9: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== -debug@*, debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: +debug@*, debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -7765,7 +7020,7 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-browser@5.3.0, detect-browser@^5.2.0: +detect-browser@5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== @@ -7911,15 +7166,6 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" -eciesjs@^0.3.15, eciesjs@^0.3.16: - version "0.3.18" - resolved "https://registry.yarnpkg.com/eciesjs/-/eciesjs-0.3.18.tgz#67b5d73a8466e40a45bbc2f2a3177e71e9c0643d" - integrity sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw== - dependencies: - "@types/secp256k1" "^4.0.4" - futoin-hkdf "^1.5.3" - secp256k1 "^5.0.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -7997,37 +7243,13 @@ encoding@^0.1.13: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0, end-of-stream@^1.4.0, end-of-stream@^1.4.1, end-of-stream@^1.4.4: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -engine.io-client@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.5.3.tgz#4cf6fa24845029b238f83c628916d9149c399bc5" - integrity sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" - engine.io-parser "~5.2.1" - ws "~8.11.0" - xmlhttprequest-ssl "~2.0.0" - -engine.io-parser@~5.2.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" - integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== - -enhanced-resolve@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" - integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -8050,11 +7272,6 @@ envinfo@7.8.1: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -envinfo@^7.7.3: - version "7.12.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.12.0.tgz#b56723b39c2053d67ea5714f026d05d4f5cc7acd" - integrity sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg== - err-code@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" @@ -8106,11 +7323,6 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es-module-lexer@^1.2.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.0.tgz#4878fee3789ad99e065f975fdd3c645529ff0236" - integrity sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw== - es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: version "0.10.64" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" @@ -8206,28 +7418,15 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== esniff@^2.0.1: version "2.0.1" @@ -8244,23 +7443,6 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" @@ -8271,43 +7453,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -eth-block-tracker@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-7.1.0.tgz#dfc16085c6817cc30caabba381deb8d204c1c766" - integrity sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg== - dependencies: - "@metamask/eth-json-rpc-provider" "^1.0.0" - "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^5.0.1" - json-rpc-random-id "^1.0.1" - pify "^3.0.0" - -eth-json-rpc-filters@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-6.0.1.tgz#0b3e370f017f5c6f58d3e7bd0756d8099ed85c56" - integrity sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig== - dependencies: - "@metamask/safe-event-emitter" "^3.0.0" - async-mutex "^0.2.6" - eth-query "^2.1.2" - json-rpc-engine "^6.1.0" - pify "^5.0.0" - -eth-query@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" - integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== - dependencies: - json-rpc-random-id "^1.0.0" - xtend "^4.0.1" - -eth-rpc-errors@^4.0.2, eth-rpc-errors@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" - integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== - dependencies: - fast-safe-stringify "^2.0.6" - ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" @@ -8435,22 +7580,17 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" -eventemitter2@^6.4.5, eventemitter2@^6.4.7: - version "6.4.9" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" - integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== - -eventemitter3@5.0.1, eventemitter3@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.2.0, events@^3.3.0: +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -8607,13 +7747,6 @@ ext@^1.7.0: dependencies: type "^2.7.2" -extension-port-stream@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/extension-port-stream/-/extension-port-stream-2.1.1.tgz#ec11f2a5ed95655d8c40805d7cb0c39939ee9ef4" - integrity sha512-qknp5o5rj2J9CRKfVB8KJr+uXQlrojNZzdESUPhKYLXf97TPcGf6qWWKmpsNNtUyOdzFhab1ON0jzouNxHHvow== - dependencies: - webextension-polyfill ">=0.10.0 <1.0" - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -8623,16 +7756,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - fast-fifo@^1.0.0: version "1.3.2" resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" @@ -8649,7 +7772,7 @@ fast-glob@^3.2.9, fast-glob@^3.3.0: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -8659,16 +7782,6 @@ fast-redact@^3.0.0: resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4" integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A== -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastest-levenshtein@^1.0.12: - version "1.0.16" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" - integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== - fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -8727,11 +7840,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -8913,11 +8021,6 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -futoin-hkdf@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/futoin-hkdf/-/futoin-hkdf-1.5.3.tgz#6c8024f2e1429da086d4e18289ef2239ad33ee35" - integrity sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ== - gauge@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" @@ -9071,11 +8174,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - glob@^10.2.2, glob@^10.3.10: version "10.3.12" resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b" @@ -9181,7 +8279,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6, graceful-fs@^4.2.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== @@ -9347,7 +8445,7 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -9394,13 +8492,6 @@ hosted-git-info@^7.0.0: dependencies: lru-cache "^10.0.1" -html-parse-stringify@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" - integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== - dependencies: - void-elements "3.1.0" - http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" @@ -9477,20 +8568,6 @@ husky@^8.0.3: resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== -i18next-browser-languagedetector@^7.1.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.1.tgz#1968196d437b4c8db847410c7c33554f6c448f6f" - integrity sha512-h/pM34bcH6tbz8WgGXcmWauNpQupCGr25XPp9cZwZInR9XHSjIFDYp1SIok7zSPsTOMxdvuLyu86V+g2Kycnfw== - dependencies: - "@babel/runtime" "^7.23.2" - -i18next@22.5.1: - version "22.5.1" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.5.1.tgz#99df0b318741a506000c243429a7352e5f44d424" - integrity sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA== - dependencies: - "@babel/runtime" "^7.20.6" - iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -9547,7 +8624,7 @@ import-fresh@^3.2.1, import-fresh@^3.3.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@3.1.0, import-local@^3.0.2: +import-local@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== @@ -9658,12 +8735,7 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -interpret@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" - integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== - -invariant@2.2.4, invariant@^2.2.4: +invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -10380,15 +9452,6 @@ jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jiti@^1.21.0: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" @@ -10449,7 +9512,7 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -10459,33 +9522,6 @@ json-parse-even-better-errors@^3.0.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz#02bb29fb5da90b5444581749c22cedd3597c6cb0" integrity sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg== -json-rpc-engine@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" - integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== - dependencies: - "@metamask/safe-event-emitter" "^2.0.0" - eth-rpc-errors "^4.0.2" - -json-rpc-middleware-stream@^4.2.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/json-rpc-middleware-stream/-/json-rpc-middleware-stream-4.2.3.tgz#08340846ffaa2a60287930773546eb4b7f7dbba2" - integrity sha512-4iFb0yffm5vo3eFKDbQgke9o17XBcLQ2c3sONrXSbcOLzP8LTojqo8hRGVgtJShhm5q4ZDSNq039fAx9o65E1w== - dependencies: - "@metamask/safe-event-emitter" "^3.0.0" - json-rpc-engine "^6.1.0" - readable-stream "^2.3.3" - -json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" - integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - json-stable-stringify@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" @@ -10583,7 +9619,7 @@ jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" -keccak@^3.0.0, keccak@^3.0.3: +keccak@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== @@ -10881,11 +9917,6 @@ load-tsconfig@^0.2.3: resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -11228,7 +10259,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -11427,13 +10458,6 @@ minizlib@^2.1.1, minizlib@^2.1.2: minipass "^3.0.0" yallist "^4.0.0" -mipd@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mipd/-/mipd-0.0.5.tgz#367ee796531c23f0631f129038700b1406663aec" - integrity sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA== - dependencies: - viem "^1.1.4" - mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" @@ -11970,15 +10994,6 @@ nx@18.3.3, "nx@>=17.1.2 < 19": "@nx/nx-win32-arm64-msvc" "18.3.3" "@nx/nx-win32-x64-msvc" "18.3.3" -obj-multiplex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/obj-multiplex/-/obj-multiplex-1.0.0.tgz#2f2ae6bfd4ae11befe742ea9ea5b36636eabffc1" - integrity sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA== - dependencies: - end-of-stream "^1.4.0" - once "^1.4.0" - readable-stream "^2.3.3" - object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -12470,7 +11485,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@5.0.0, pify@^5.0.0: +pify@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== @@ -12553,11 +11568,6 @@ pngjs@^5.0.0: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== -pony-cause@^2.1.10: - version "2.1.11" - resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-2.1.11.tgz#d69a20aaccdb3bdb8f74dd59e5c68d8e6772e4bd" - integrity sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg== - popmotion@11.0.3: version "11.0.3" resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-11.0.3.tgz#565c5f6590bbcddab7a33a074bb2ba97e24b0cc9" @@ -12635,11 +11645,6 @@ postcss@^8.4.23, postcss@^8.4.38: picocolors "^1.0.0" source-map-js "^1.2.0" -preact@^10.16.0: - version "10.20.2" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.20.2.tgz#0b343299a8c020562311cc25db93b3d832ec5e71" - integrity sha512-S1d1ernz3KQ+Y2awUxKakpfOg2CEmJmwOP+6igPx6dgr6pgDvenqYviyokWso2rhHvGtTlWWnJDa7RaPbQerTg== - prebuild-install@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" @@ -12701,11 +11706,6 @@ proc-log@^4.0.0: resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -12832,23 +11832,6 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -qr-code-styling@^1.6.0-rc.1: - version "1.6.0-rc.1" - resolved "https://registry.yarnpkg.com/qr-code-styling/-/qr-code-styling-1.6.0-rc.1.tgz#6c89e185fa50cc9135101085c12ae95b06f1b290" - integrity sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q== - dependencies: - qrcode-generator "^1.4.3" - -qrcode-generator@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode-generator/-/qrcode-generator-1.4.4.tgz#63f771224854759329a99048806a53ed278740e7" - integrity sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw== - -qrcode-terminal-nooctal@^0.12.1: - version "0.12.1" - resolved "https://registry.yarnpkg.com/qrcode-terminal-nooctal/-/qrcode-terminal-nooctal-0.12.1.tgz#45016aca0d82b2818de7af0a06d072ad671fbe2e" - integrity sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg== - qrcode@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" @@ -12998,14 +11981,6 @@ react-hot-toast@^2.4.1: dependencies: goober "^2.1.10" -react-i18next@^13.2.2: - version "13.5.0" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.5.0.tgz#44198f747628267a115c565f0c736a50a76b1ab0" - integrity sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA== - dependencies: - "@babel/runtime" "^7.22.5" - html-parse-stringify "^3.0.1" - react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -13028,14 +12003,6 @@ react-native-fetch-api@^3.0.0: dependencies: p-defer "^3.0.0" -react-native-webview@^11.26.0: - version "11.26.1" - resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da" - integrity sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw== - dependencies: - escape-string-regexp "2.0.0" - invariant "2.2.4" - react-oauth-popup@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/react-oauth-popup/-/react-oauth-popup-1.0.5.tgz#e84f33995840ab66143b3d5e6f0e70f571e957a8" @@ -13202,32 +12169,6 @@ read@^3.0.1: dependencies: mute-stream "^1.0.0" -readable-stream@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - -readable-stream@^2.3.3, readable-stream@^2.3.7, readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -13247,6 +12188,19 @@ readable-stream@~1.0.31: isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@^3.6.0, readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -13278,13 +12232,6 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== - dependencies: - resolve "^1.20.0" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -13367,7 +12314,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.3: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.22.2, resolve@^1.22.3: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -13443,16 +12390,6 @@ rlp@^2.2.3: dependencies: bn.js "^5.2.0" -rollup-plugin-visualizer@^5.9.2: - version "5.12.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz#661542191ce78ee4f378995297260d0c1efb1302" - integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ== - dependencies: - open "^8.4.0" - picomatch "^2.3.1" - source-map "^0.7.4" - yargs "^17.5.1" - rollup@^4.0.2, rollup@^4.13.0: version "4.16.4" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.16.4.tgz#fe328eb41293f20c9593a095ec23bdc4b5d93317" @@ -13524,15 +12461,6 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -schema-utils@^3.1.1, schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - scrypt-js@3.0.1, scrypt-js@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" @@ -13597,13 +12525,6 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - serve-static@1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" @@ -13813,24 +12734,6 @@ smart-buffer@^4.2.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -socket.io-client@^4.5.1: - version "4.7.5" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.5.tgz#919be76916989758bdc20eec63f7ee0ae45c05b7" - integrity sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.2" - engine.io-client "~6.5.2" - socket.io-parser "~4.2.4" - -socket.io-parser@~4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" - integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" - socks-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" @@ -13876,14 +12779,6 @@ source-map-js@^1.0.2, source-map-js@^1.2.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map@0.8.0-beta.0: version "0.8.0-beta.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" @@ -13891,21 +12786,11 @@ source-map@0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" -source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0, source-map@^0.6.1: +source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" @@ -14073,13 +12958,6 @@ string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== - dependencies: - safe-buffer "~5.1.0" - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -14177,11 +13055,6 @@ styled-components@^6.1.0: stylis "4.3.1" tslib "2.5.0" -stylis@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" - integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== - stylis@4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" @@ -14200,11 +13073,6 @@ sucrase@^3.20.3, sucrase@^3.32.0: pirates "^4.0.1" ts-interface-checker "^0.1.9" -superstruct@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.4.tgz#0adb99a7578bd2f1c526220da6571b2d485d91ca" - integrity sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ== - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -14219,13 +13087,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -14298,11 +13159,6 @@ tailwindcss@^3.4.3: resolve "^1.22.2" sucrase "^3.32.0" -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -14353,27 +13209,6 @@ temp-dir@1.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== -terser-webpack-plugin@^5.3.10: - version "5.3.10" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" - -terser@^5.26.0: - version "5.30.4" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.4.tgz#62b4d16a819424e6317fd5ceffb4ee8dc769803a" - integrity sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" @@ -14849,7 +13684,7 @@ uqr@^0.1.2: resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== -uri-js@^4.2.2, uri-js@^4.4.1: +uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -14890,13 +13725,6 @@ utf-8-validate@^5.0.2: dependencies: node-gyp-build "^4.3.0" -utf-8-validate@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-6.0.3.tgz#7d8c936d854e86b24d1d655f138ee27d2636d777" - integrity sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA== - dependencies: - node-gyp-build "^4.3.0" - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -14918,11 +13746,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - uuid@^9.0.0, uuid@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" @@ -15031,20 +13854,6 @@ viem@2.x: isows "1.0.3" ws "8.13.0" -viem@^1.0.0, viem@^1.1.4: - version "1.21.4" - resolved "https://registry.yarnpkg.com/viem/-/viem-1.21.4.tgz#883760e9222540a5a7e0339809202b45fe6a842d" - integrity sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "0.9.8" - isows "1.0.3" - ws "8.13.0" - viem@^2.7.11: version "2.9.25" resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.25.tgz#afcf320790e175b2afc83d29819f56cb50906f0d" @@ -15070,20 +13879,6 @@ vite@^5.2.0: optionalDependencies: fsevents "~2.3.3" -void-elements@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" - integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== - -wagmi@^2.5.7: - version "2.5.20" - resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.5.20.tgz#de1799c1eacb46d252b5a7838c5882f46882362d" - integrity sha512-K/9qk6+t/+NKFdbQyB7LtFgl3UXnGjvgyzAyfMQ+dF56uTSJipQwc94CSlN8kdQXTIOvhUSK2P7WJrdTEd15AA== - dependencies: - "@wagmi/connectors" "4.1.26" - "@wagmi/core" "2.6.17" - use-sync-external-store "1.2.0" - warning@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" @@ -15091,14 +13886,6 @@ warning@^4.0.0: dependencies: loose-envify "^1.0.0" -watchpack@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" - integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -15116,26 +13903,6 @@ web-vitals@^3.0.4: resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-3.5.2.tgz#5bb58461bbc173c3f00c2ddff8bfe6e680999ca9" integrity sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg== -webextension-polyfill-ts@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/webextension-polyfill-ts/-/webextension-polyfill-ts-0.25.0.tgz#fff041626365dbd0e29c40b197e989a55ec221ca" - integrity sha512-ikQhwwHYkpBu00pFaUzIKY26I6L87DeRI+Q6jBT1daZUNuu8dSrg5U9l/ZbqdaQ1M/TTSPKeAa3kolP5liuedw== - dependencies: - webextension-polyfill "^0.7.0" - -"webextension-polyfill@>=0.10.0 <1.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.11.0.tgz#1640c0d27192424fd5b420237acbe453f88c8246" - integrity sha512-YUBSKQA0iCx2YtM75VFgvvcx1hLKaGGiph6a6UaUdSgk32VT9SzrcDAKBjeGHXoAZTnNBqS5skA4VfoKMXhEBA== - dependencies: - webpack "^5.91.0" - webpack-cli "^5.1.4" - -webextension-polyfill@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.7.0.tgz#0df1120ff0266056319ce1a622b09ad8d4a56505" - integrity sha512-su48BkMLxqzTTvPSE1eWxKToPS2Tv5DLGxKexLEVpwFd6Po6N8hhSLIvG6acPAg7qERoEaDL+Y5HQJeJeml5Aw== - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -15146,69 +13913,6 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-cli@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" - integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^2.1.1" - "@webpack-cli/info" "^2.0.2" - "@webpack-cli/serve" "^2.0.5" - colorette "^2.0.14" - commander "^10.0.1" - cross-spawn "^7.0.3" - envinfo "^7.7.3" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^3.1.1" - rechoir "^0.8.0" - webpack-merge "^5.7.3" - -webpack-merge@^5.7.3: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.91.0: - version "5.91.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - websocket@^1.0.34: version "1.0.34" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" @@ -15315,11 +14019,6 @@ wif@^2.0.6: dependencies: bs58check "<3.0.0" -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -15420,16 +14119,6 @@ ws@^7, ws@^7.5.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -ws@~8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" - integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== - -xmlhttprequest-ssl@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" - integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== - xss@^1.0.8: version "1.0.15" resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.15.tgz#96a0e13886f0661063028b410ed1b18670f4e59a" @@ -15446,7 +14135,7 @@ xstream@^11.14.0: globalthis "^1.0.1" symbol-observable "^2.0.3" -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -15504,7 +14193,7 @@ yargs-parser@^20.2.2, yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs@17.7.2, yargs@^17.4.1, yargs@^17.5.1, yargs@^17.6.2: +yargs@17.7.2, yargs@^17.4.1, yargs@^17.6.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -15569,13 +14258,6 @@ zod@3.22.4, zod@^3.22.4: resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== -zustand@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.4.1.tgz#0cd3a3e4756f21811bd956418fdc686877e8b3b0" - integrity sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw== - dependencies: - use-sync-external-store "1.2.0" - zustand@^4.5.2: version "4.5.2" resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848" From aaadfeab7272d9bb069efded654530570d4e36f0 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Thu, 2 May 2024 16:30:49 -0500 Subject: [PATCH 182/251] Don't need this --- packages/frontend/vite.config.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index 9b3ae979..9030db7f 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -12,17 +12,6 @@ export default defineConfig({ components: '/src/components', }, }, - optimizeDeps: { - include: [ - // "@snowballtools/types", - // "@snowballtools/utils", - // "@snowballtools/auth", - // "@snowballtools/auth-lit", - // "@snowballtools/smartwallet-alchemy-light", - // "@snowballtools/link-lit-alchemy-light", - // "@snowballtools/js-sdk", - ], - }, define: { 'process.env': {}, }, From 00199424f7094f004ad6c89f880a2fc2269b154f Mon Sep 17 00:00:00 2001 From: Gilbert Date: Thu, 2 May 2024 16:36:31 -0500 Subject: [PATCH 183/251] Improve exception handling --- packages/frontend/src/index.tsx | 22 +++--------------- packages/frontend/src/pages/auth/Login.tsx | 3 +-- packages/frontend/src/utils/log-error.ts | 27 ++++++++++++++++++++++ 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/packages/frontend/src/index.tsx b/packages/frontend/src/index.tsx index a1677235..71a96470 100644 --- a/packages/frontend/src/index.tsx +++ b/packages/frontend/src/index.tsx @@ -13,19 +13,7 @@ import reportWebVitals from './reportWebVitals'; import { GQLClientProvider } from './context/GQLClientContext'; import { SERVER_GQL_PATH } from './constants'; import { Toaster } from 'components/shared/Toast'; - -import Bugsnag from '@bugsnag/js'; -import BugsnagPluginReact from '@bugsnag/plugin-react'; -import BugsnagPerformance from '@bugsnag/browser-performance'; - -const bugsnagApiKey = import.meta.env.VITE_BUGSNAG_API_KEY; -if (bugsnagApiKey) { - Bugsnag.start({ - apiKey: bugsnagApiKey, - plugins: [new BugsnagPluginReact()], - }); - BugsnagPerformance.start({ apiKey: bugsnagApiKey }); -} +import { LogErrorBoundary } from 'utils/log-error'; const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement, @@ -39,12 +27,8 @@ const gqlEndpoint = `${import.meta.env.VITE_SERVER_URL}/${SERVER_GQL_PATH}`; const gqlClient = new GQLClient({ gqlEndpoint }); -const ErrorBoundary = bugsnagApiKey - ? Bugsnag.getPlugin('react')!.createErrorBoundary(React) - : ({ children }: any) => children; - root.render( - + @@ -54,7 +38,7 @@ root.render( , - , + , ); // If you want to start measuring performance in your app, pass a function diff --git a/packages/frontend/src/pages/auth/Login.tsx b/packages/frontend/src/pages/auth/Login.tsx index b590f357..f0b407b5 100644 --- a/packages/frontend/src/pages/auth/Login.tsx +++ b/packages/frontend/src/pages/auth/Login.tsx @@ -58,9 +58,8 @@ export const Login = ({ onDone }: Props) => { } } catch (err: any) { setError(err.message); - console.log(err.message, err.name, err.details); - setProvider(false); logError(err); + setProvider(false); return; } } diff --git a/packages/frontend/src/utils/log-error.ts b/packages/frontend/src/utils/log-error.ts index 96885cc4..1126f4b9 100644 --- a/packages/frontend/src/utils/log-error.ts +++ b/packages/frontend/src/utils/log-error.ts @@ -1,6 +1,33 @@ import Bugsnag from '@bugsnag/js'; +import BugsnagPluginReact from '@bugsnag/plugin-react'; +import BugsnagPerformance from '@bugsnag/browser-performance'; +import React from 'react'; + +const bugsnagApiKey = import.meta.env.VITE_BUGSNAG_API_KEY; + +if (bugsnagApiKey) { + Bugsnag.start({ + apiKey: bugsnagApiKey, + plugins: [new BugsnagPluginReact()], + }); + BugsnagPerformance.start({ apiKey: bugsnagApiKey }); +} + +export const errorLoggingEnabled = !!bugsnagApiKey; + +export const LogErrorBoundary = bugsnagApiKey + ? Bugsnag.getPlugin('react')!.createErrorBoundary(React) + : ({ children }: any) => children; export function logError(error: Error) { + let errors: any[] = [error]; + let safety = 0; + while (errors[errors.length - 1].cause && safety < 10) { + errors.push('::caused by::', errors[errors.length - 1].cause); + safety += 1; + } + console.error(...errors); + if (import.meta.env.VITE_BUGSNAG_API_KEY) { Bugsnag.notify(error); } From 5307eab44396e6578ba9fddbcc6a55081405d001 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 6 May 2024 13:02:37 -0400 Subject: [PATCH 184/251] update gitignore for build output --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 82c52b21..ea852060 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ yarn-error.log .yarnrc packages/backend/environments/local.toml +packages/backend/dev/ packages/frontend/dist/ \ No newline at end of file From 4f3ea09b796fa21131489b866e2187d2d7e6a23c Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 6 May 2024 13:25:26 -0400 Subject: [PATCH 185/251] Revert "Build source maps for bugsnag" This reverts commit df8bc3784a1203f501b30f054ac64b21cc3e900b. --- packages/frontend/vite.config.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index 9030db7f..6f58d61c 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -15,7 +15,4 @@ export default defineConfig({ define: { 'process.env': {}, }, - build: { - sourcemap: true, - }, }); From 3dd62114b40841a3c57c64ffdd696d970f4b0e64 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 6 May 2024 12:59:20 -0400 Subject: [PATCH 186/251] font path fix --- packages/frontend/src/index.css | 36 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/frontend/src/index.css b/packages/frontend/src/index.css index d2bf535e..1674c631 100644 --- a/packages/frontend/src/index.css +++ b/packages/frontend/src/index.css @@ -10,7 +10,7 @@ font-style: normal; font-weight: 100; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-Thin.woff2') + src: url('/fonts/InterDisplay/InterDisplay-Thin.woff2') format('woff2'); } @font-face { @@ -18,7 +18,7 @@ font-style: italic; font-weight: 100; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-ThinItalic.woff2') + src: url('/fonts/InterDisplay/InterDisplay-ThinItalic.woff2') format('woff2'); } @font-face { @@ -26,7 +26,7 @@ font-style: normal; font-weight: 200; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-ExtraLight.woff2') + src: url('/fonts/InterDisplay/InterDisplay-ExtraLight.woff2') format('woff2'); } @font-face { @@ -34,7 +34,7 @@ font-style: italic; font-weight: 200; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-ExtraLightItalic.woff2') + src: url('/fonts/InterDisplay/InterDisplay-ExtraLightItalic.woff2') format('woff2'); } @font-face { @@ -42,7 +42,7 @@ font-style: normal; font-weight: 300; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-Light.woff2') + src: url('/fonts/InterDisplay/InterDisplay-Light.woff2') format('woff2'); } @font-face { @@ -50,7 +50,7 @@ font-style: italic; font-weight: 300; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-LightItalic.woff2') + src: url('/fonts/InterDisplay/InterDisplay-LightItalic.woff2') format('woff2'); } @font-face { @@ -58,7 +58,7 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-Regular.woff2') + src: url('/fonts/InterDisplay/InterDisplay-Regular.woff2') format('woff2'); } @font-face { @@ -66,7 +66,7 @@ font-style: italic; font-weight: 400; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-Italic.woff2') + src: url('/fonts/InterDisplay/InterDisplay-Italic.woff2') format('woff2'); } @font-face { @@ -74,7 +74,7 @@ font-style: normal; font-weight: 500; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-Medium.woff2') + src: url('/fonts/InterDisplay/InterDisplay-Medium.woff2') format('woff2'); } @font-face { @@ -82,7 +82,7 @@ font-style: italic; font-weight: 500; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-MediumItalic.woff2') + src: url('/fonts/InterDisplay/InterDisplay-MediumItalic.woff2') format('woff2'); } @font-face { @@ -90,7 +90,7 @@ font-style: normal; font-weight: 600; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-SemiBold.woff2') + src: url('/fonts/InterDisplay/InterDisplay-SemiBold.woff2') format('woff2'); } @font-face { @@ -98,7 +98,7 @@ font-style: italic; font-weight: 600; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-SemiBoldItalic.woff2') + src: url('/fonts/InterDisplay/InterDisplay-SemiBoldItalic.woff2') format('woff2'); } @font-face { @@ -106,7 +106,7 @@ font-style: normal; font-weight: 700; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-Bold.woff2') + src: url('/fonts/InterDisplay/InterDisplay-Bold.woff2') format('woff2'); } @font-face { @@ -114,7 +114,7 @@ font-style: italic; font-weight: 700; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-BoldItalic.woff2') + src: url('/fonts/InterDisplay/InterDisplay-BoldItalic.woff2') format('woff2'); } @font-face { @@ -122,7 +122,7 @@ font-style: normal; font-weight: 800; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-ExtraBold.woff2') + src: url('/fonts/InterDisplay/InterDisplay-ExtraBold.woff2') format('woff2'); } @font-face { @@ -130,7 +130,7 @@ font-style: italic; font-weight: 800; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-ExtraBoldItalic.woff2') + src: url('/fonts/InterDisplay/InterDisplay-ExtraBoldItalic.woff2') format('woff2'); } @font-face { @@ -138,7 +138,7 @@ font-style: normal; font-weight: 900; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-Black.woff2') + src: url('/fonts/InterDisplay/InterDisplay-Black.woff2') format('woff2'); } @font-face { @@ -146,7 +146,7 @@ font-style: italic; font-weight: 900; font-display: swap; - src: url('../public/fonts/InterDisplay/InterDisplay-BlackItalic.woff2') + src: url('/fonts/InterDisplay/InterDisplay-BlackItalic.woff2') format('woff2'); } } From 11c8f7b09bf65f07fd0c83cb05757f9f70a190ca Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 6 May 2024 13:25:26 -0400 Subject: [PATCH 187/251] Revert "Build source maps for bugsnag" This reverts commit df8bc3784a1203f501b30f054ac64b21cc3e900b. From ed0de90118749ce59cddfd68d64745725671a5c9 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 6 May 2024 13:05:44 -0400 Subject: [PATCH 188/251] sign in with passkeys coming soon --- packages/frontend/src/pages/auth/Login.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/frontend/src/pages/auth/Login.tsx b/packages/frontend/src/pages/auth/Login.tsx index f0b407b5..215b6f50 100644 --- a/packages/frontend/src/pages/auth/Login.tsx +++ b/packages/frontend/src/pages/auth/Login.tsx @@ -137,6 +137,14 @@ export const Login = ({ onDone }: Props) => { disabled={!!loading} onClick={async () => { setProvider('passkey'); + await new Promise((resolve) => setTimeout(resolve, 800)); + setProvider(false); + toast({ + id: 'coming-soon', + title: 'Sign-in with Passkeys is coming soon!', + variant: 'info', + onDismiss() {}, + }); }} > Sign In with Passkey From b7f29781f2ce77c24b390e3303301818b8de1747 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 6 May 2024 14:55:34 -0400 Subject: [PATCH 189/251] remove unneccessary , --- packages/frontend/src/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/frontend/src/index.tsx b/packages/frontend/src/index.tsx index 71a96470..54e741c8 100644 --- a/packages/frontend/src/index.tsx +++ b/packages/frontend/src/index.tsx @@ -37,8 +37,7 @@ root.render( - , - , + ); // If you want to start measuring performance in your app, pass a function From 48552310e02a5581be5cbd3e34bd385d9b908e56 Mon Sep 17 00:00:00 2001 From: Gilbert Date: Mon, 6 May 2024 14:36:33 -0500 Subject: [PATCH 190/251] Turnkey auth --- packages/backend/package.json | 3 +- packages/backend/src/config.ts | 6 + packages/backend/src/entity/User.ts | 6 + packages/backend/src/routes/auth.ts | 59 +++---- packages/backend/src/server.ts | 8 +- packages/backend/src/service.ts | 58 ++++--- packages/backend/src/turnkey-backend.ts | 130 ++++++++++++++++ packages/frontend/package.json | 5 +- packages/frontend/src/pages/auth/SignUp.tsx | 37 ++++- .../frontend/src/utils/turnkey-frontend.ts | 144 ++++++++++++++++++ yarn.lock | 39 ++++- 11 files changed, 430 insertions(+), 65 deletions(-) create mode 100644 packages/backend/src/turnkey-backend.ts create mode 100644 packages/frontend/src/utils/turnkey-frontend.ts diff --git a/packages/backend/package.json b/packages/backend/package.json index f0fd6fbc..fdd5b247 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -3,10 +3,11 @@ "version": "1.0.0", "main": "index.js", "dependencies": { - "@snowballtools/laconic-sdk": "^0.1.17", "@graphql-tools/schema": "^10.0.2", "@graphql-tools/utils": "^10.0.12", "@octokit/oauth-app": "^6.1.0", + "@snowballtools/laconic-sdk": "^0.1.17", + "@turnkey/sdk-server": "^0.1.0", "@types/debug": "^4.1.5", "@types/express": "^4.17.21", "@types/node": "^20.11.0", diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index b4cdd8fc..2f5f1da9 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -52,4 +52,10 @@ export interface Config { gitHub: GitHubConfig; registryConfig: RegistryConfig; misc: MiscConfig; + turnkey: { + apiBaseUrl: string; + apiPublicKey: string; + apiPrivateKey: string; + defaultOrganizationId: string; + }; } diff --git a/packages/backend/src/entity/User.ts b/packages/backend/src/entity/User.ts index 69700fab..a4299245 100644 --- a/packages/backend/src/entity/User.ts +++ b/packages/backend/src/entity/User.ts @@ -39,6 +39,12 @@ export class User { @CreateDateColumn() updatedAt!: Date; + @Column() + subOrgId!: string; + + @Column() + turnkeyWalletId!: string; + @OneToMany(() => ProjectMember, (projectMember) => projectMember.project, { cascade: ['soft-remove'] }) diff --git a/packages/backend/src/routes/auth.ts b/packages/backend/src/routes/auth.ts index e1214bbc..e704b543 100644 --- a/packages/backend/src/routes/auth.ts +++ b/packages/backend/src/routes/auth.ts @@ -1,45 +1,50 @@ import { Router } from 'express'; import { SiweMessage } from 'siwe'; import { Service } from '../service'; +import { authenticateUser, createUser } from '../turnkey-backend'; const router = Router(); -router.post('/validate', async (req, res) => { - const { message, signature, action } = req.body; - const { success, data } = await new SiweMessage(message).verify({ - signature, - }); - - if (!success) { - return res.send({ success }); - } - +router.get('/registration/:email', async (req, res) => { const service: Service = req.app.get('service'); - const user = await service.getUserByEthAddress(data.address); - - if (action === 'signup') { - if (user) { - return res.send({ success: false, error: 'user_already_exists' }); - } - const newUser = await service.loadOrCreateUser(data.address); - req.session.userId = newUser.id; - } else if (action === 'login') { - if (!user) { - return res.send({ success: false, error: 'user_not_found' }); - } - req.session.userId = user.id; + const user = await service.getUserByEmail(req.params.email); + if (user) { + return res.send({ subOrganizationId: user?.subOrgId }); + } else { + return res.sendStatus(204); } +}); - req.session.address = data.address; +router.post('/register', async (req, res) => { + const { email, challenge, attestation } = req.body; + const user = await createUser(req.app.get('service'), { + challenge, + attestation, + userEmail: email, + userName: email.split('@')[0], + }); + req.session.userId = user.id; + res.sendStatus(200); +}); - res.send({ success }); +router.post('/authenticate', async (req, res) => { + const { signedWhoamiRequest } = req.body; + const user = await authenticateUser( + req.app.get('service'), + signedWhoamiRequest, + ); + if (user) { + req.session.userId = user.id; + res.sendStatus(200); + } else { + res.sendStatus(401); + } }); router.get('/session', (req, res) => { - if (req.session.address) { + if (req.session.userId) { res.send({ userId: req.session.userId, - address: req.session.address, }); } else { res.status(401).send({ error: 'Unauthorized: No active session' }); diff --git a/packages/backend/src/server.ts b/packages/backend/src/server.ts index fa8b7d46..74f7e5ed 100644 --- a/packages/backend/src/server.ts +++ b/packages/backend/src/server.ts @@ -24,7 +24,6 @@ const log = debug('snowball:server'); declare module 'express-session' { interface SessionData { userId: string; - address: string; } } @@ -54,14 +53,13 @@ export const createAndStartServer = async ( context: async ({ req }) => { // https://www.apollographql.com/docs/apollo-server/v3/security/authentication#api-wide-authorization - const { address } = req.session; + const { userId } = req.session; - if (!address) { + if (!userId) { throw new AuthenticationError('Unauthorized: No active session'); } - // Find/create user from ETH address in request session - const user = await service.loadOrCreateUser(address); + const user = await service.getUser(userId); return { user }; }, diff --git a/packages/backend/src/service.ts b/packages/backend/src/service.ts index ff304fde..bfee7702 100644 --- a/packages/backend/src/service.ts +++ b/packages/backend/src/service.ts @@ -161,6 +161,22 @@ export class Service { }); } + async getUserByEmail(email: string): Promise { + return await this.db.getUser({ + where: { + email + } + }); + } + + async getUserBySubOrgId(subOrgId: string): Promise { + return await this.db.getUser({ + where: { + subOrgId + } + }); + } + async getUserByEthAddress (ethAddress: string): Promise { return await this.db.getUser({ where: { @@ -169,28 +185,30 @@ export class Service { }); } - async loadOrCreateUser (ethAddress: string): Promise { - // Get user by ETH address - let user = await this.getUserByEthAddress(ethAddress); + async createUser (params: { + name: string + email: string + subOrgId: string + ethAddress: string + turnkeyWalletId: string + }): Promise { + const [org] = await this.db.getOrganizations({}); + assert(org, 'No organizations exists in database'); - if (!user) { - const [org] = await this.db.getOrganizations({}); - assert(org, 'No organizations exists in database'); + // Create user with new address + const user = await this.db.addUser({ + email: params.email, + name: params.name, + subOrgId: params.subOrgId, + ethAddress: params.ethAddress, + isVerified: true, + }); - // Create user with new address - user = await this.db.addUser({ - email: `${ethAddress}@example.com`, - name: ethAddress, - isVerified: true, - ethAddress - }); - - await this.db.addUserOrganization({ - member: user, - organization: org, - role: Role.Owner - }); - } + await this.db.addUserOrganization({ + member: user, + organization: org, + role: Role.Owner + }); return user; } diff --git a/packages/backend/src/turnkey-backend.ts b/packages/backend/src/turnkey-backend.ts new file mode 100644 index 00000000..541f76ff --- /dev/null +++ b/packages/backend/src/turnkey-backend.ts @@ -0,0 +1,130 @@ +import { Turnkey, TurnkeyApiTypes } from '@turnkey/sdk-server'; + +// Default path for the first Ethereum address in a new HD wallet. +// See https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki, paths are in the form: +// m / purpose' / coin_type' / account' / change / address_index +// - Purpose is a constant set to 44' following the BIP43 recommendation. +// - Coin type is set to 60 (ETH) -- see https://github.com/satoshilabs/slips/blob/master/slip-0044.md +// - Account, Change, and Address Index are set to 0 +import { DEFAULT_ETHEREUM_ACCOUNTS } from '@turnkey/sdk-server'; +import { getConfig } from './utils'; +import { Service } from './service'; + +type TAttestation = TurnkeyApiTypes['v1Attestation']; + +type CreateUserParams = { + userName: string; + userEmail: string; + challenge: string; + attestation: TAttestation; +}; + +export async function createUser( + service: Service, + { userName, userEmail, challenge, attestation }: CreateUserParams, +) { + try { + if (await service.getUserByEmail(userEmail)) { + throw new Error(`User already exists: ${userEmail}`); + } + + const config = await getConfig(); + const turnkey = new Turnkey(config.turnkey); + + const apiClient = turnkey.api(); + + const walletName = `Default ETH Wallet`; + + const createSubOrgResponse = await apiClient.createSubOrganization({ + subOrganizationName: `Default SubOrg for ${userEmail}`, + rootQuorumThreshold: 1, + rootUsers: [ + { + userName, + userEmail, + apiKeys: [], + authenticators: [ + { + authenticatorName: 'Passkey', + challenge, + attestation, + }, + ], + }, + ], + wallet: { + walletName: walletName, + accounts: DEFAULT_ETHEREUM_ACCOUNTS, + }, + }); + + const subOrgId = refineNonNull(createSubOrgResponse.subOrganizationId); + const wallet = refineNonNull(createSubOrgResponse.wallet); + + const result = { + id: wallet.walletId, + address: wallet.addresses[0], + subOrgId: subOrgId, + }; + console.log('Turnkey success', result); + + const user = await service.createUser({ + name: userName, + email: userEmail, + subOrgId, + ethAddress: wallet.addresses[0], + turnkeyWalletId: wallet.walletId, + }); + console.log('New user', user); + + return user; + } catch (e) { + console.error('Failed to create user:', e); + throw e; + } +} + +export async function authenticateUser( + service: Service, + signedWhoamiRequest: { + url: string; + body: any; + stamp: { + stampHeaderName: string; + stampHeaderValue: string; + }; + }, +) { + try { + const tkRes = await fetch(signedWhoamiRequest.url, { + method: 'POST', + body: signedWhoamiRequest.body, + headers: { + [signedWhoamiRequest.stamp.stampHeaderName]: + signedWhoamiRequest.stamp.stampHeaderValue, + }, + }); + console.log('AUTH RESULT', tkRes.status); + if (tkRes.status !== 200) { + console.log(await tkRes.text()); + return null; + } + const orgId = (await tkRes.json()).organizationId; + const user = await service.getUserBySubOrgId(orgId); + return user; + } catch (e) { + console.error('Failed to authenticate:', e); + throw e; + } +} + +function refineNonNull( + input: T | null | undefined, + errorMessage?: string, +): T { + if (input == null) { + throw new Error(errorMessage ?? `Unexpected ${JSON.stringify(input)}`); + } + + return input; +} diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 5d915630..1484e705 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -36,6 +36,9 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "@turnkey/http": "^2.10.0", + "@turnkey/sdk-react": "^0.1.0", + "@turnkey/webauthn-stamper": "^0.5.0", "@walletconnect/ethereum-provider": "^2.12.2", "@web3modal/siwe": "^4.0.5", "@web3modal/wagmi": "^4.0.5", @@ -83,4 +86,4 @@ "typescript": "^5.3.3", "vite": "^5.2.0" } -} +} \ No newline at end of file diff --git a/packages/frontend/src/pages/auth/SignUp.tsx b/packages/frontend/src/pages/auth/SignUp.tsx index fa4fd4b7..eb945fcc 100644 --- a/packages/frontend/src/pages/auth/SignUp.tsx +++ b/packages/frontend/src/pages/auth/SignUp.tsx @@ -9,7 +9,6 @@ import { DotBorder } from 'components/shared/DotBorder'; import { WavyBorder } from 'components/shared/WavyBorder'; import { useEffect, useState } from 'react'; import { useSnowball } from 'utils/use-snowball'; -import { CreatePasskey } from './CreatePasskey'; import { Input } from 'components/shared/Input'; import { AppleIcon } from 'components/shared/CustomIcon/AppleIcon'; import { Link } from 'react-router-dom'; @@ -17,6 +16,11 @@ import { useToast } from 'components/shared/Toast'; import { PKPEthersWallet } from '@lit-protocol/pkp-ethers'; import { signInWithEthereum } from 'utils/siwe'; import { logError } from 'utils/log-error'; +import { + subOrganizationIdForEmail, + turnkeySignin, + turnkeySignup, +} from 'utils/turnkey-frontend'; type Provider = 'google' | 'github' | 'apple' | 'email'; @@ -81,6 +85,23 @@ export const SignUp = ({ onDone }: Props) => { } } + async function authEmail() { + setProvider('email'); + try { + const orgId = await subOrganizationIdForEmail(email); + console.log('orgId', orgId); + if (orgId) { + await turnkeySignin(orgId); + window.location.href = '/dashboard'; + } else { + await turnkeySignup(email); + onDone(); + } + } catch (err: any) { + setError({ type: 'email', message: err.message }); + } + } + useEffect(() => { handleSignupRedirect(); }, []); @@ -88,10 +109,6 @@ export const SignUp = ({ onDone }: Props) => { const loading = provider; const emailValid = /.@./.test(email); - if (provider === 'email') { - return ; - } - return (
    @@ -200,9 +217,15 @@ export const SignUp = ({ onDone }: Props) => { />
    {user?.name && ( -

    - {formatAddress(user.name)} -

    +

    + {formatAddress(user.name)} +

    )}
    diff --git a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx index a044944f..e5381337 100644 --- a/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/create/template/index.tsx @@ -196,11 +196,8 @@ const CreateRepo = () => { ( - + render={({}) => ( + )} />
    diff --git a/packages/frontend/tailwind.config.js b/packages/frontend/tailwind.config.js index 15e99e8a..7ad42dca 100644 --- a/packages/frontend/tailwind.config.js +++ b/packages/frontend/tailwind.config.js @@ -1,5 +1,5 @@ import withMT from '@snowballtools/material-tailwind-react-fork/utils/withMT'; -import colors from 'tailwindcss/colors' +import colors from 'tailwindcss/colors'; /** @type {import('tailwindcss').Config} */ export default withMT({ @@ -14,7 +14,7 @@ export default withMT({ xxs: '400px', xs: '480px', }, - zIndex: { + zIndex: { tooltip: '52', }, letterSpacing: { @@ -181,8 +181,8 @@ export default withMT({ toast: '9999', }, animation: { - 'spin': 'spin 3s linear infinite', - } + spin: 'spin 3s linear infinite', + }, }, }, plugins: [], From 99cc35459be983b48bf5e51a901c97d03dee71f5 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Thu, 9 May 2024 12:31:01 -0400 Subject: [PATCH 195/251] format prettier From 1bba82ee863dbdf1be100e7d95447edbe6ea4982 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 6 May 2024 16:16:29 -0400 Subject: [PATCH 196/251] storybook --- packages/frontend/.eslintrc.cjs | 1 + packages/frontend/.gitignore | 3 +- packages/frontend/.storybook/main.ts | 29 + packages/frontend/.storybook/preview.ts | 16 + packages/frontend/chromatic.config.json | 4 + packages/frontend/package.json | 16 +- .../src/stories/AuthHeader.stories.ts | 18 + packages/frontend/src/stories/AuthHeader.tsx | 12 + .../frontend/src/stories/Avatar.stories.tsx | 75 + .../frontend/src/stories/Button.stories.tsx | 131 + .../src/stories/ComponentsAll.stories.tsx | 13 + .../src/stories/assets/accessibility.png | Bin 0 -> 42336 bytes .../src/stories/assets/accessibility.svg | 5 + .../src/stories/assets/addon-library.png | Bin 0 -> 467366 bytes .../frontend/src/stories/assets/assets.png | Bin 0 -> 3899 bytes .../src/stories/assets/avif-test-image.avif | Bin 0 -> 829 bytes .../frontend/src/stories/assets/context.png | Bin 0 -> 6119 bytes .../frontend/src/stories/assets/discord.svg | 15 + packages/frontend/src/stories/assets/docs.png | Bin 0 -> 27875 bytes .../src/stories/assets/figma-plugin.png | Bin 0 -> 44246 bytes .../frontend/src/stories/assets/github.svg | 3 + .../frontend/src/stories/assets/share.png | Bin 0 -> 40767 bytes .../frontend/src/stories/assets/styling.png | Bin 0 -> 7237 bytes .../frontend/src/stories/assets/testing.png | Bin 0 -> 49313 bytes .../frontend/src/stories/assets/theming.png | Bin 0 -> 44374 bytes .../frontend/src/stories/assets/tutorials.svg | 12 + .../frontend/src/stories/assets/youtube.svg | 4 + yarn.lock | 3242 ++++++++++++++++- 28 files changed, 3491 insertions(+), 108 deletions(-) create mode 100644 packages/frontend/.storybook/main.ts create mode 100644 packages/frontend/.storybook/preview.ts create mode 100644 packages/frontend/chromatic.config.json create mode 100644 packages/frontend/src/stories/AuthHeader.stories.ts create mode 100644 packages/frontend/src/stories/AuthHeader.tsx create mode 100644 packages/frontend/src/stories/Avatar.stories.tsx create mode 100644 packages/frontend/src/stories/Button.stories.tsx create mode 100644 packages/frontend/src/stories/ComponentsAll.stories.tsx create mode 100644 packages/frontend/src/stories/assets/accessibility.png create mode 100644 packages/frontend/src/stories/assets/accessibility.svg create mode 100644 packages/frontend/src/stories/assets/addon-library.png create mode 100644 packages/frontend/src/stories/assets/assets.png create mode 100644 packages/frontend/src/stories/assets/avif-test-image.avif create mode 100644 packages/frontend/src/stories/assets/context.png create mode 100644 packages/frontend/src/stories/assets/discord.svg create mode 100644 packages/frontend/src/stories/assets/docs.png create mode 100644 packages/frontend/src/stories/assets/figma-plugin.png create mode 100644 packages/frontend/src/stories/assets/github.svg create mode 100644 packages/frontend/src/stories/assets/share.png create mode 100644 packages/frontend/src/stories/assets/styling.png create mode 100644 packages/frontend/src/stories/assets/testing.png create mode 100644 packages/frontend/src/stories/assets/theming.png create mode 100644 packages/frontend/src/stories/assets/tutorials.svg create mode 100644 packages/frontend/src/stories/assets/youtube.svg diff --git a/packages/frontend/.eslintrc.cjs b/packages/frontend/.eslintrc.cjs index 4c99537a..ecec3ee4 100644 --- a/packages/frontend/.eslintrc.cjs +++ b/packages/frontend/.eslintrc.cjs @@ -5,6 +5,7 @@ module.exports = { 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', + 'plugin:storybook/recommended', ], ignorePatterns: ['dist', '.eslintrc.cjs'], parser: '@typescript-eslint/parser', diff --git a/packages/frontend/.gitignore b/packages/frontend/.gitignore index eb14a767..05a41290 100644 --- a/packages/frontend/.gitignore +++ b/packages/frontend/.gitignore @@ -21,4 +21,5 @@ npm-debug.log* yarn-debug.log* -yarn-error.log* \ No newline at end of file +yarn-error.log* +*storybook.log \ No newline at end of file diff --git a/packages/frontend/.storybook/main.ts b/packages/frontend/.storybook/main.ts new file mode 100644 index 00000000..36ed544c --- /dev/null +++ b/packages/frontend/.storybook/main.ts @@ -0,0 +1,29 @@ +import type { StorybookConfig } from '@storybook/react-vite'; + +import { join, dirname } from 'path'; + +/** + * This function is used to resolve the absolute path of a package. + * It is needed in projects that use Yarn PnP or are set up within a monorepo. + */ +function getAbsolutePath(value: string): any { + return dirname(require.resolve(join(value, 'package.json'))); +} +const config: StorybookConfig = { + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: [ + getAbsolutePath('@storybook/addon-onboarding'), + getAbsolutePath('@storybook/addon-links'), + getAbsolutePath('@storybook/addon-essentials'), + getAbsolutePath('@chromatic-com/storybook'), + getAbsolutePath('@storybook/addon-interactions'), + ], + framework: { + name: getAbsolutePath('@storybook/react-vite'), + options: {}, + }, + docs: { + autodocs: 'tag', + }, +}; +export default config; diff --git a/packages/frontend/.storybook/preview.ts b/packages/frontend/.storybook/preview.ts new file mode 100644 index 00000000..6725718c --- /dev/null +++ b/packages/frontend/.storybook/preview.ts @@ -0,0 +1,16 @@ +import type { Preview } from '@storybook/react'; + +import '../src/index.css'; + +const preview: Preview = { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + }, +}; + +export default preview; diff --git a/packages/frontend/chromatic.config.json b/packages/frontend/chromatic.config.json new file mode 100644 index 00000000..347f20fc --- /dev/null +++ b/packages/frontend/chromatic.config.json @@ -0,0 +1,4 @@ +{ + "projectId": "Project:663d04870db27ed66a48e466", + "zip": true +} diff --git a/packages/frontend/package.json b/packages/frontend/package.json index d277f44d..3f139699 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -8,7 +8,9 @@ "build": "vite build", "lint": "tsc --noEmit", "preview": "vite preview", - "format": "prettier --write ." + "format": "prettier --write .", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build" }, "dependencies": { "@bugsnag/browser-performance": "^2.4.1", @@ -72,6 +74,15 @@ "web-vitals": "^2.1.4" }, "devDependencies": { + "@chromatic-com/storybook": "^1.3.3", + "@storybook/addon-essentials": "^8.0.10", + "@storybook/addon-interactions": "^8.0.10", + "@storybook/addon-links": "^8.0.10", + "@storybook/addon-onboarding": "^8.0.10", + "@storybook/blocks": "^8.0.10", + "@storybook/react": "^8.0.10", + "@storybook/react-vite": "^8.0.10", + "@storybook/test": "^8.0.10", "@types/jest": "^27.5.2", "@types/lodash": "^4.17.0", "@types/luxon": "^3.3.7", @@ -81,8 +92,11 @@ "@types/uuid": "^9.0.8", "@vitejs/plugin-react": "^4.2.1", "autoprefixer": "^10.4.19", + "chromatic": "^11.3.2", + "eslint-plugin-storybook": "^0.8.0", "postcss": "^8.4.38", "prettier": "^3.1.0", + "storybook": "^8.0.10", "tailwindcss": "^3.4.3", "typescript": "^5.3.3", "vite": "^5.2.0" diff --git a/packages/frontend/src/stories/AuthHeader.stories.ts b/packages/frontend/src/stories/AuthHeader.stories.ts new file mode 100644 index 00000000..7c9fd2bb --- /dev/null +++ b/packages/frontend/src/stories/AuthHeader.stories.ts @@ -0,0 +1,18 @@ +import type { Meta, StoryObj } from '@storybook/react'; + +import { Header } from './AuthHeader'; + +const meta = { + title: 'Auth/Header', + component: Header, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs + tags: ['autodocs'], + parameters: { + layout: 'centered', + }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/frontend/src/stories/AuthHeader.tsx b/packages/frontend/src/stories/AuthHeader.tsx new file mode 100644 index 00000000..226186c8 --- /dev/null +++ b/packages/frontend/src/stories/AuthHeader.tsx @@ -0,0 +1,12 @@ +interface HeaderProps {} + +export const Header = ({}: HeaderProps) => ( +
    +
    + snowball logo +
    + Snowball +
    +
    +
    +); diff --git a/packages/frontend/src/stories/Avatar.stories.tsx b/packages/frontend/src/stories/Avatar.stories.tsx new file mode 100644 index 00000000..0183667a --- /dev/null +++ b/packages/frontend/src/stories/Avatar.stories.tsx @@ -0,0 +1,75 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { Avatar, AvatarVariants } from 'components/shared/Avatar'; +import { avatars, avatarsFallback } from '../pages/components/renders/avatar'; + +const avatarSizes: AvatarVariants['size'][] = [18, 20, 24, 28, 32, 36, 40, 44]; +const avatarVariants: AvatarVariants['type'][] = ['gray', 'orange', 'blue']; + +const meta: Meta = { + component: Avatar, + title: 'Components/Avatar', + tags: ['autodocs'], + argTypes: { + size: { + control: 'select', + options: avatarSizes, + }, + imageSrc: { + control: 'text', + }, + initials: { + control: 'text', + }, + type: { + control: 'select', + options: avatarVariants, + }, + }, +}; +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ initials, imageSrc, size, type, ...arg }) => ( + + ), +}; + +export const Fallback: Story = { + render: ({ initials, imageSrc, size, type, ...arg }) => ( + + ), + args: { + initials: 'SY', + }, +}; + +export const Sizes: Story = { + render: () => ( +
    + {avatars.map((avatar) => avatar)} +
    + ), +}; + +export const FallbackAll: Story = { + render: () => ( +
    + {avatarsFallback.map((avatar) => avatar)} +
    + ), +}; diff --git a/packages/frontend/src/stories/Button.stories.tsx b/packages/frontend/src/stories/Button.stories.tsx new file mode 100644 index 00000000..3e2d45fd --- /dev/null +++ b/packages/frontend/src/stories/Button.stories.tsx @@ -0,0 +1,131 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { Button } from 'components/shared/Button'; +import { PlusIcon } from 'components/shared/CustomIcon'; +import { + renderButtonIcons, + renderButtons, + renderDisabledButtons, + renderLinks, +} from '../pages/components/renders/button'; + +const meta: Meta = { + title: 'Components/Button', + component: Button, + tags: ['autodocs'], + argTypes: { + size: { + control: 'select', + options: ['lg', 'md', 'sm', 'xs'], + }, + variant: { + control: 'select', + options: [ + 'primary', + 'secondary', + 'tertiary', + 'ghost', + 'danger', + 'danger-ghost', + 'link', + 'link-emphasized', + ], + }, + fullWidth: { + control: 'boolean', + }, + iconOnly: { + control: { type: 'boolean' }, + }, + shape: { + control: 'select', + options: ['default', 'rounded'], + }, + children: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ children, size, variant, iconOnly, fullWidth, shape }) => ( + + ), + args: { + children: 'Button', + size: 'md', + variant: 'primary', + fullWidth: false, + shape: 'rounded', + iconOnly: false, + }, +}; + +export const WithIcons: Story = { + args: { + ...Default.args, + leftIcon: , + rightIcon: , + }, +}; + +export const FullWidth: Story = { + args: { + ...Default.args, + fullWidth: true, + }, +}; + +export const IconOnly: Story = { + render: ({ leftIcon }) => , + args: { + ...Default.args, + leftIcon: , + }, +}; + +export const ButtonAll: Story = { + render: () => ( +
    + {/* Button */} +

    Button

    +
    + {renderButtons()} + {renderButtonIcons()} +
    + + {/* Link */} +
    +

    Link

    +
    + {renderLinks()} +
    +
    + + {/* Disabled button, icon only, and link */} +
    +
    +

    Disabled

    +

    + Button - icon only - link +

    +
    +
    + {renderDisabledButtons()} +
    +
    +
    + ), +}; diff --git a/packages/frontend/src/stories/ComponentsAll.stories.tsx b/packages/frontend/src/stories/ComponentsAll.stories.tsx new file mode 100644 index 00000000..89244265 --- /dev/null +++ b/packages/frontend/src/stories/ComponentsAll.stories.tsx @@ -0,0 +1,13 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import Page from '../pages/components'; + +const meta: Meta = { + component: Page, + title: 'Components/All', +}; +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/frontend/src/stories/assets/accessibility.png b/packages/frontend/src/stories/assets/accessibility.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffe6feabdc17f715771b69fd7f33ec2c57e7c30 GIT binary patch literal 42336 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

    V}AC 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 literal 0 HcmV?d00001 diff --git a/packages/frontend/src/stories/assets/accessibility.svg b/packages/frontend/src/stories/assets/accessibility.svg new file mode 100644 index 00000000..a3288830 --- /dev/null +++ b/packages/frontend/src/stories/assets/accessibility.svg @@ -0,0 +1,5 @@ + + Accessibility + + + \ No newline at end of file diff --git a/packages/frontend/src/stories/assets/addon-library.png b/packages/frontend/src/stories/assets/addon-library.png new file mode 100644 index 0000000000000000000000000000000000000000..95deb38a88de416671e20ebc28dcd397d6910331 GIT binary patch literal 467366 zcmY(pWmp?s)HMtgDJ}^PEgqy$oZ#*dBv8CiifeEvP~4?JC>q?oSkYp^OL2<3Lvbip z;NyOt_p|vk*U33ES$mze_MYralqN(GABPGD1qB6PSxHVC1%(8Lf`UEw^2PHf)^0V7 zC@3#bG}UzEpNErsw;Q#}zkk#YE&j33oH^|^Lk{&lH4%PQ3E|}vx9E_dW8&V(%VcAh zni!trNf;+20xph?pJd2@zAXQq+knq5-F5T56V8ko&mNSJG5*<3P`N#3S3X_%^n5(u zAH<=%bo97)^FTpCfnIh%&%iKW^K{v+{8)`bM$O3_`t;N(#`(&ZgM;Hue48Al^7Wj~ zPa$yNTs}Zh@=4HP%p&7y3^iRwLsV3BIN?b*T~Td&Z}V7EY3XGkDGpM+j`s{dV0K@;FN>bu025@kbl~*-ww1qejk0yBOozi z`gcU@K^pUEdgCdrwS4aDG6whK1UC}ptwZ1A=½zy!j8k^D_+Xmby+9Nl|wWphp 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

      wyQuQbqeDC?b4FVon9>0iW}N&#hIJCuHi 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

      dk-)duz~D_SQhJOz!_4iA-bxFdQMD2V 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%0D8UB5C69Q~b=MLW-x{a!p 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


      61#osMoUDN;g&I5i2>jx!~^YnweY`Mk-ISn1mks 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 + + + + + + + + + + + + + + diff --git a/packages/frontend/src/stories/assets/docs.png b/packages/frontend/src/stories/assets/docs.png new file mode 100644 index 0000000000000000000000000000000000000000..a749629df9ef3b4e20b86ab1a2482040df3ce8dd GIT binary patch literal 27875 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

      hxL-UTbgFOs%C>cNb?R-MvpJYh!+yR< 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 TCS{<%00000NkvXXu0mjfa^c^P literal 0 HcmV?d00001 diff --git a/packages/frontend/src/stories/assets/figma-plugin.png b/packages/frontend/src/stories/assets/figma-plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..8f79b08cdf28f568a9bfc9d2fee39bd85d4831e3 GIT binary patch literal 44246 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 isSD^m{OQ5>%G^J3Sw0|FW7|9c0000 + + diff --git a/packages/frontend/src/stories/assets/share.png b/packages/frontend/src/stories/assets/share.png new file mode 100644 index 0000000000000000000000000000000000000000..8097a370777a782bbe52082a338584d04e62e796 GIT binary patch literal 40767 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 MsOkXq$~KYz50#aYqW}N^ literal 0 HcmV?d00001 diff --git a/packages/frontend/src/stories/assets/testing.png b/packages/frontend/src/stories/assets/testing.png new file mode 100644 index 0000000000000000000000000000000000000000..d4ac39a0ced924068b7625735c9bccac7b17f45d GIT binary patch literal 49313 zcmbqYWm6nXvn5Ed0Kt863mQm*F0R2LI4r?~yDjeS3GVLhun^qcZE;vE*e((R+~@rb z_e)px>8dl`GiRixqtsO7aIh$_kdTmY6y&8fkdRQoNJz*S7%2ZCc<=2#{pZlDDSeaq z&)q#f-#t3pJ3jl*?i`)&9G-1&U;YQ~A6@*1Y#*HL9-X|tzW%v=xVX80ettf`zB{`@ zSoVtSAD_QUBb{BspPrsh{@lVYZVnF*udlC< JACFEikIt@6Pfrg{{#;&Oa(xoW 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�B6};G&Xp9}-Hnlio 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

      {/* Button */} -

      Button

      +

      + Button +

      {renderButtons()} {renderButtonIcons()} diff --git a/packages/frontend/src/stories/ComponentsAll.stories.tsx b/packages/frontend/src/stories/Components/ComponentsAll.stories.tsx similarity index 85% rename from packages/frontend/src/stories/ComponentsAll.stories.tsx rename to packages/frontend/src/stories/Components/ComponentsAll.stories.tsx index 89244265..aeeb0d28 100644 --- a/packages/frontend/src/stories/ComponentsAll.stories.tsx +++ b/packages/frontend/src/stories/Components/ComponentsAll.stories.tsx @@ -1,11 +1,12 @@ import { Meta, StoryObj } from '@storybook/react'; -import Page from '../pages/components'; +import Page from 'pages/components'; const meta: Meta = { component: Page, title: 'Components/All', }; + export default meta; type Story = StoryObj; From 090a9054e4a171fa72a3337c2e27b6f16c0bf73a Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Tue, 14 May 2024 12:08:31 -0400 Subject: [PATCH 199/251] Button strories lint --- .../src/components/shared/Badge/index.ts | 1 + .../src/stories/Components/Badge.stories.tsx | 76 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 packages/frontend/src/stories/Components/Badge.stories.tsx diff --git a/packages/frontend/src/components/shared/Badge/index.ts b/packages/frontend/src/components/shared/Badge/index.ts index 9c8edca2..0c6caa07 100644 --- a/packages/frontend/src/components/shared/Badge/index.ts +++ b/packages/frontend/src/components/shared/Badge/index.ts @@ -1 +1,2 @@ export * from './Badge'; +export * from './Badge.theme'; diff --git a/packages/frontend/src/stories/Components/Badge.stories.tsx b/packages/frontend/src/stories/Components/Badge.stories.tsx new file mode 100644 index 00000000..36cdb617 --- /dev/null +++ b/packages/frontend/src/stories/Components/Badge.stories.tsx @@ -0,0 +1,76 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { Badge, BadgeTheme } from 'components/shared/Badge'; + +const badgeVariants: BadgeTheme['variant'][] = [ + 'primary', + 'secondary', + 'tertiary', + 'inset', +]; +const badgeSizes: BadgeTheme['size'][] = ['xs', 'sm']; + +const meta: Meta = { + title: 'Components/Badge', + component: Badge, + tags: ['autodocs'], + argTypes: { + variant: { + control: 'select', + options: badgeVariants, + }, + size: { + control: 'select', + options: badgeSizes, + }, + children: { + control: 'object', + }, + }, + args: { + variant: 'primary', + size: 'sm', + children: '1', + }, +} as Meta; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ variant, size, children, ...args }) => ( + + {children} + + ), + args: { + variant: 'primary', + size: 'sm', + children: '1', + }, +}; + +export const Primary: Story = { + args: { + ...Default.args, + children: '1', + }, +}; + +export const All: Story = { + render: () => ( + <> + {badgeVariants.map((variant, index) => ( +
      + {badgeSizes.map((size) => ( + + {size} + + ))} + {variant} +
      + ))} + + ), +}; From 5ebdd3003a20b807d792260a023998747dda7e7c Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Thu, 9 May 2024 16:47:05 -0400 Subject: [PATCH 200/251] Badges --- .../src/stories/{ => Pages/Auth}/AuthHeader.stories.ts | 8 ++++---- .../frontend/src/stories/{ => Pages/Auth}/AuthHeader.tsx | 0 2 files changed, 4 insertions(+), 4 deletions(-) rename packages/frontend/src/stories/{ => Pages/Auth}/AuthHeader.stories.ts (58%) rename packages/frontend/src/stories/{ => Pages/Auth}/AuthHeader.tsx (100%) diff --git a/packages/frontend/src/stories/AuthHeader.stories.ts b/packages/frontend/src/stories/Pages/Auth/AuthHeader.stories.ts similarity index 58% rename from packages/frontend/src/stories/AuthHeader.stories.ts rename to packages/frontend/src/stories/Pages/Auth/AuthHeader.stories.ts index 7c9fd2bb..ae99eaef 100644 --- a/packages/frontend/src/stories/AuthHeader.stories.ts +++ b/packages/frontend/src/stories/Pages/Auth/AuthHeader.stories.ts @@ -2,17 +2,17 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Header } from './AuthHeader'; -const meta = { - title: 'Auth/Header', +const meta: Meta = { + title: 'Pages/Auth/Header', component: Header, - // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs tags: ['autodocs'], parameters: { layout: 'centered', }, -} satisfies Meta; +}; export default meta; + type Story = StoryObj; export const Default: Story = {}; diff --git a/packages/frontend/src/stories/AuthHeader.tsx b/packages/frontend/src/stories/Pages/Auth/AuthHeader.tsx similarity index 100% rename from packages/frontend/src/stories/AuthHeader.tsx rename to packages/frontend/src/stories/Pages/Auth/AuthHeader.tsx From 60a66e94bd025ce7612bdead71f89d925ac3f1ed Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Tue, 14 May 2024 13:41:37 -0400 Subject: [PATCH 201/251] [3/n][Storybook] Radio --- .../src/components/shared/Radio/index.ts | 1 + .../src/stories/Components/Radio.stories.tsx | 75 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 packages/frontend/src/stories/Components/Radio.stories.tsx diff --git a/packages/frontend/src/components/shared/Radio/index.ts b/packages/frontend/src/components/shared/Radio/index.ts index 6d49f1a8..ec3b5175 100644 --- a/packages/frontend/src/components/shared/Radio/index.ts +++ b/packages/frontend/src/components/shared/Radio/index.ts @@ -1,2 +1,3 @@ export * from './Radio'; export * from './RadioItem'; +export * from './Radio.theme'; diff --git a/packages/frontend/src/stories/Components/Radio.stories.tsx b/packages/frontend/src/stories/Components/Radio.stories.tsx new file mode 100644 index 00000000..d8dba202 --- /dev/null +++ b/packages/frontend/src/stories/Components/Radio.stories.tsx @@ -0,0 +1,75 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { Radio, RadioTheme } from 'components/shared/Radio'; + +const radioOrientation: RadioTheme['orientation'][] = [ + 'horizontal', + 'vertical', +]; + +const meta: Meta = { + title: 'Components/Radio', + component: Radio, + tags: ['autodocs'], + argTypes: { + options: { + control: 'object', + }, + orientation: { + control: 'radio', + options: radioOrientation, + }, + value: { + control: 'text', + }, + onValueChange: { + action: 'onValueChange', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ options, orientation, value, onValueChange }) => ( + + ), + args: { + options: [ + { label: 'Option 1', value: 'option1' }, + { label: 'Option 2', value: 'option2' }, + { label: 'Option 3', value: 'option3' }, + ], + orientation: 'horizontal', + value: 'option1', + onValueChange: (value: string) => console.log(value), + }, +}; + +export const Vertical: Story = { + render: ({ options, orientation, value, onValueChange }) => ( + + ), + args: { + options: [ + { label: 'Option 1', value: 'option1' }, + { label: 'Option 2', value: 'option2' }, + { label: 'Option 3', value: 'option3' }, + ], + orientation: 'vertical', + value: 'option1', + onValueChange: (value: string) => console.log(value), + }, +}; From 756cc52e1cfc03bc7d9c48edb685b0041e00cb05 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Fri, 10 May 2024 16:52:26 -0400 Subject: [PATCH 202/251] [1/n] storybook components start --- packages/frontend/.storybook/main.ts | 1 + .../src/components/shared/CustomIcon/index.ts | 4 + .../src/components/shared/Select/index.ts | 1 + .../src/components/shared/Tooltip/index.ts | 1 + .../src/stories/Components/Avatar.stories.tsx | 1 + .../stories/Components/Calendar.stories.tsx | 44 +++++++ .../stories/Components/Checkbox.stories.tsx | 41 ++++++ .../stories/Components/DatePicker.stories.tsx | 25 ++++ .../stories/Components/DotBorder.stories.tsx | 15 +++ .../stories/Components/Heading.stories.tsx | 15 +++ .../Components/IconWithFrame.stories.tsx | 32 +++++ .../Components/Icons/AppleIcon.stories.tsx | 29 +++++ .../ArrowLeftCircleFilledIcon.stories.tsx | 31 +++++ .../ArrowRightCircleFilledIcon.stories.tsx | 31 +++++ .../Icons/ArrowRightCircleIcon.stories.tsx | 29 +++++ .../Components/Icons/BranchIcon.stories.tsx | 29 +++++ .../Icons/BranchStrokeIcon.stories.tsx | 29 +++++ .../Components/Icons/BuildingIcon.stories.tsx | 29 +++++ .../Icons/CalendarDaysIcon.stories.tsx | 29 +++++ .../Components/Icons/CalendarIcon.stories.tsx | 29 +++++ .../Components/Icons/CheckIcon.stories.tsx | 29 +++++ .../Icons/CheckRadioIcon.stories.tsx | 29 +++++ .../Icons/CheckRadioOutlineIcon.stories.tsx | 29 +++++ .../Icons/CheckRoundFilledIcon.stories.tsx | 29 +++++ .../Icons/ChevronDoubleDownIcon.stories.tsx | 29 +++++ .../Icons/ChevronDownIcon.stories.tsx | 29 +++++ .../ChevronGrabberHorizontal.stories.tsx | 31 +++++ .../Components/Icons/ChevronLeft.stories.tsx | 29 +++++ .../Components/Icons/ChevronRight.stories.tsx | 25 ++++ .../Icons/ChevronUpDown.stories.tsx | 25 ++++ .../Icons/CirclePlaceholderOnIcon.stories.tsx | 31 +++++ .../Components/Icons/ClockIcon.stories.tsx | 29 +++++ .../Icons/ClockOutlineIcon.stories.tsx | 29 +++++ .../Components/Icons/CommitIcon.stories.tsx | 29 +++++ .../Components/Icons/CopyIcon.stories.tsx | 29 +++++ .../Icons/CrossCircleIcon.stories.tsx | 29 +++++ .../Components/Icons/CrossIcon.stories.tsx | 29 +++++ .../Icons/CursorBoxIcon.stories.tsx | 29 +++++ .../Components/Icons/EllipseIcon.stories.tsx | 29 +++++ .../Components/Icons/EllipsesIcon.stories.tsx | 29 +++++ .../Components/Icons/FolderIcon.stories.tsx | 29 +++++ .../Components/Icons/GearIcon.stories.tsx | 29 +++++ .../Components/Icons/GitHubLogo.stories.tsx | 29 +++++ .../Components/Icons/GitIcon.stories.tsx | 29 +++++ .../Components/Icons/GitTeaIcon.stories.tsx | 29 +++++ .../Components/Icons/GithubIcon.stories.tsx | 29 +++++ .../Icons/GithubStrokeIcon.stories.tsx | 29 +++++ .../Components/Icons/GlobeIcon.stories.tsx | 29 +++++ .../Components/Icons/GoogleIcon.stories.tsx | 29 +++++ .../Icons/HorizontalDotIcon.stories.tsx | 29 +++++ .../Icons/InfoRoundFilledIcon.stories.tsx | 29 +++++ .../Icons/InfoSquareIcon.stories.tsx | 29 +++++ .../Components/Icons/KeyIcon.stories.tsx | 29 +++++ .../Components/Icons/LifeBuoyIcon.stories.tsx | 29 +++++ .../Icons/LinkChainIcon.stories.tsx | 29 +++++ .../Components/Icons/LinkIcon.stories.tsx | 29 +++++ .../Components/Icons/LoaderIcon.stories.tsx | 29 +++++ .../Components/Icons/LoadingIcon.stories.tsx | 29 +++++ .../Components/Icons/LockIcon.stories.tsx | 29 +++++ .../Components/Icons/LogoutIcon.stories.tsx | 29 +++++ .../Components/Icons/MenuIcon.stories.tsx | 29 +++++ .../Icons/MinusCircleIcon.stories.tsx | 29 +++++ .../Icons/NotificationBellIcon.stories.tsx | 29 +++++ .../Components/Icons/PencilIcon.stories.tsx | 29 +++++ .../Components/Icons/PlusIcon.stories.tsx | 29 +++++ .../QuestionMarkRoundFilledIcon.stories.tsx | 31 +++++ .../Icons/QuestionMarkRoundIcon.stories.tsx | 29 +++++ .../Components/Icons/RefreshIcon.stories.tsx | 29 +++++ .../Components/Icons/RocketIcon.stories.tsx | 29 +++++ .../Components/Icons/SearchIcon.stories.tsx | 29 +++++ .../Icons/SettingsSlidersIcon.stories.tsx | 29 +++++ .../Components/Icons/SnowballIcon.stories.tsx | 29 +++++ .../Components/Icons/StorageIcon.stories.tsx | 29 +++++ .../Components/Icons/TrendingIcon.stories.tsx | 29 +++++ .../Components/Icons/UndoIcon.stories.tsx | 29 +++++ .../Icons/WarningDiamondIcon.stories.tsx | 29 +++++ .../Components/Icons/WarningIcon.stories.tsx | 29 +++++ .../Icons/WarningTriangleIcon.stories.tsx | 29 +++++ .../Components/InlineNotification.stories.tsx | 89 +++++++++++++ .../src/stories/Components/Input.stories.tsx | 123 ++++++++++++++++++ .../src/stories/Components/Modal.stories.tsx | 36 +++++ .../Components/OverflownText.stories.tsx | 33 +++++ .../Components/SegmentedControls.stories.tsx | 38 ++++++ .../src/stories/Components/Select.stories.tsx | 105 +++++++++++++++ .../src/stories/Components/Steps.stories.tsx | 74 +++++++++++ .../src/stories/Components/Switch.stories.tsx | 51 ++++++++ .../src/stories/Components/Tabs.stories.tsx | 85 ++++++++++++ .../src/stories/Components/Tag.stories.tsx | 77 +++++++++++ .../src/stories/Components/Toast.stories.tsx | 101 ++++++++++++++ .../stories/Components/Tooltip.stories.tsx | 71 ++++++++++ .../stories/Components/WavyBorder.stories.tsx | 20 +++ yarn.lock | 88 ++++--------- 92 files changed, 3053 insertions(+), 63 deletions(-) create mode 100644 packages/frontend/src/stories/Components/Calendar.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Checkbox.stories.tsx create mode 100644 packages/frontend/src/stories/Components/DatePicker.stories.tsx create mode 100644 packages/frontend/src/stories/Components/DotBorder.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Heading.stories.tsx create mode 100644 packages/frontend/src/stories/Components/IconWithFrame.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/AppleIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ArrowLeftCircleFilledIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ArrowRightCircleFilledIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ArrowRightCircleIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/BranchIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/BranchStrokeIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/BuildingIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CalendarDaysIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CalendarIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CheckIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CheckRadioIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CheckRadioOutlineIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CheckRoundFilledIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ChevronDoubleDownIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ChevronDownIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ChevronGrabberHorizontal.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ChevronLeft.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ChevronRight.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ChevronUpDown.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CirclePlaceholderOnIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ClockIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ClockOutlineIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CommitIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CopyIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CrossCircleIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CrossIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/CursorBoxIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/EllipseIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/EllipsesIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/FolderIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/GearIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/GitHubLogo.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/GitIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/GitTeaIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/GithubIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/GithubStrokeIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/GlobeIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/GoogleIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/HorizontalDotIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/InfoRoundFilledIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/InfoSquareIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/KeyIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/LifeBuoyIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/LinkChainIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/LinkIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/LoaderIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/LoadingIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/LockIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/LogoutIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/MenuIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/MinusCircleIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/NotificationBellIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/PencilIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/PlusIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/QuestionMarkRoundFilledIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/QuestionMarkRoundIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/RefreshIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/RocketIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/SearchIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/SettingsSlidersIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/SnowballIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/StorageIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/TrendingIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/UndoIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/WarningDiamondIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/WarningIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/WarningTriangleIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/InlineNotification.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Input.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Modal.stories.tsx create mode 100644 packages/frontend/src/stories/Components/OverflownText.stories.tsx create mode 100644 packages/frontend/src/stories/Components/SegmentedControls.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Select.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Steps.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Switch.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Tabs.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Tag.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Toast.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Tooltip.stories.tsx create mode 100644 packages/frontend/src/stories/Components/WavyBorder.stories.tsx diff --git a/packages/frontend/.storybook/main.ts b/packages/frontend/.storybook/main.ts index 36ed544c..1035220a 100644 --- a/packages/frontend/.storybook/main.ts +++ b/packages/frontend/.storybook/main.ts @@ -26,4 +26,5 @@ const config: StorybookConfig = { autodocs: 'tag', }, }; + export default config; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index 805e70aa..02c372df 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -63,6 +63,10 @@ export * from './CheckRadioOutlineIcon'; export * from './TrendingIcon'; export * from './ChevronDoubleDownIcon'; export * from './GearIcon'; +export * from './AppleIcon'; +export * from './CalendarDaysIcon'; +export * from './GoogleIcon'; +export * from './KeyIcon'; // Templates export * from './templates'; diff --git a/packages/frontend/src/components/shared/Select/index.ts b/packages/frontend/src/components/shared/Select/index.ts index 7868ecba..7669724a 100644 --- a/packages/frontend/src/components/shared/Select/index.ts +++ b/packages/frontend/src/components/shared/Select/index.ts @@ -1 +1,2 @@ export * from './Select'; +export * from './SelectItem'; diff --git a/packages/frontend/src/components/shared/Tooltip/index.ts b/packages/frontend/src/components/shared/Tooltip/index.ts index a51f2a31..77078f8f 100644 --- a/packages/frontend/src/components/shared/Tooltip/index.ts +++ b/packages/frontend/src/components/shared/Tooltip/index.ts @@ -1,2 +1,3 @@ export * from './Tooltip'; export * from './TooltipBase'; +export * from './TooltipContent'; diff --git a/packages/frontend/src/stories/Components/Avatar.stories.tsx b/packages/frontend/src/stories/Components/Avatar.stories.tsx index 5d48298e..d9bfdfd2 100644 --- a/packages/frontend/src/stories/Components/Avatar.stories.tsx +++ b/packages/frontend/src/stories/Components/Avatar.stories.tsx @@ -27,6 +27,7 @@ const meta: Meta = { }, }, }; + export default meta; type Story = StoryObj; diff --git a/packages/frontend/src/stories/Components/Calendar.stories.tsx b/packages/frontend/src/stories/Components/Calendar.stories.tsx new file mode 100644 index 00000000..9e214b0d --- /dev/null +++ b/packages/frontend/src/stories/Components/Calendar.stories.tsx @@ -0,0 +1,44 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { Calendar } from 'components/shared/Calendar'; + +const meta: Meta = { + title: 'Components/Calendar', + component: Calendar, + tags: ['autodocs'], + args: { + wrapperProps: 'any' as unknown as any, + calendarWrapperProps: 'any' as unknown as any, + footerProps: 'any' as unknown as any, + actions: 'any' as unknown as any, + onSelect: () => {}, + onCancel: () => {}, + onReset: () => {}, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ + wrapperProps, + calendarWrapperProps, + footerProps, + actions, + onSelect, + onCancel, + onReset, + }) => ( + + ), +}; diff --git a/packages/frontend/src/stories/Components/Checkbox.stories.tsx b/packages/frontend/src/stories/Components/Checkbox.stories.tsx new file mode 100644 index 00000000..75794575 --- /dev/null +++ b/packages/frontend/src/stories/Components/Checkbox.stories.tsx @@ -0,0 +1,41 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { Checkbox } from 'components/shared/Checkbox'; + +const meta: Meta = { + title: 'Components/Checkbox', + component: Checkbox, + tags: ['autodocs'], + args: { + label: 'string', + description: 'string', + checked: 'CheckedState' as unknown as any, + defaultChecked: 'CheckedState' as unknown as any, + required: 'boolean' as unknown as any, + onCheckedChange: '(checked: CheckedState) => void' as unknown as any, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ + label, + description, + checked, + defaultChecked, + required, + onCheckedChange, + }) => ( + + ), +}; diff --git a/packages/frontend/src/stories/Components/DatePicker.stories.tsx b/packages/frontend/src/stories/Components/DatePicker.stories.tsx new file mode 100644 index 00000000..f05e1d24 --- /dev/null +++ b/packages/frontend/src/stories/Components/DatePicker.stories.tsx @@ -0,0 +1,25 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { DatePicker } from 'components/shared/DatePicker'; + +const meta: Meta = { + title: 'Components/DatePicker', + component: DatePicker, + tags: ['autodocs'], +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ calendarProps, onChange, value, selectRange, onReset }) => ( + + ), +}; diff --git a/packages/frontend/src/stories/Components/DotBorder.stories.tsx b/packages/frontend/src/stories/Components/DotBorder.stories.tsx new file mode 100644 index 00000000..6d8f17b4 --- /dev/null +++ b/packages/frontend/src/stories/Components/DotBorder.stories.tsx @@ -0,0 +1,15 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { DotBorder } from 'components/shared/DotBorder'; + +const meta: Meta = { + title: 'Components/DotBorder', + component: DotBorder, + tags: ['autodocs'], +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/frontend/src/stories/Components/Heading.stories.tsx b/packages/frontend/src/stories/Components/Heading.stories.tsx new file mode 100644 index 00000000..1218725c --- /dev/null +++ b/packages/frontend/src/stories/Components/Heading.stories.tsx @@ -0,0 +1,15 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { Heading } from 'components/shared/Heading'; + +const meta: Meta = { + title: 'Components/Heading', + component: Heading, + tags: ['autodocs'], +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/frontend/src/stories/Components/IconWithFrame.stories.tsx b/packages/frontend/src/stories/Components/IconWithFrame.stories.tsx new file mode 100644 index 00000000..7c4a5ff9 --- /dev/null +++ b/packages/frontend/src/stories/Components/IconWithFrame.stories.tsx @@ -0,0 +1,32 @@ +import { StoryObj, Meta } from '@storybook/react'; +import { PlusIcon } from 'components/shared/CustomIcon'; + +import { IconWithFrame } from 'components/shared/IconWithFrame'; + +const meta: Meta = { + title: 'Components/IconWithFrame', + component: IconWithFrame, + tags: ['autodocs'], + argTypes: { + icon: { + control: 'object', + }, + hasHighlight: { + control: 'boolean', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ icon, hasHighlight }) => ( + + ), + args: { + hasHighlight: true, + icon: , + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/AppleIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/AppleIcon.stories.tsx new file mode 100644 index 00000000..a84c618d --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/AppleIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { AppleIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/AppleIcon', + component: AppleIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ArrowLeftCircleFilledIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/ArrowLeftCircleFilledIcon.stories.tsx new file mode 100644 index 00000000..e0eab680 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ArrowLeftCircleFilledIcon.stories.tsx @@ -0,0 +1,31 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ArrowLeftCircleFilledIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ArrowLeftCircleFilledIcon', + component: ArrowLeftCircleFilledIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => ( + + ), + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ArrowRightCircleFilledIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/ArrowRightCircleFilledIcon.stories.tsx new file mode 100644 index 00000000..ed6cf924 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ArrowRightCircleFilledIcon.stories.tsx @@ -0,0 +1,31 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ArrowRightCircleFilledIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ArrowRightCircleFilledIcon', + component: ArrowRightCircleFilledIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => ( + + ), + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ArrowRightCircleIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/ArrowRightCircleIcon.stories.tsx new file mode 100644 index 00000000..6f3741ee --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ArrowRightCircleIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ArrowRightCircleIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ArrowRightCircleIcon', + component: ArrowRightCircleIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/BranchIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/BranchIcon.stories.tsx new file mode 100644 index 00000000..35c8dc14 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/BranchIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { BranchIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/BranchIcon', + component: BranchIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/BranchStrokeIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/BranchStrokeIcon.stories.tsx new file mode 100644 index 00000000..1bf5af0a --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/BranchStrokeIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { BranchStrokeIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/BranchStrokeIcon', + component: BranchStrokeIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/BuildingIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/BuildingIcon.stories.tsx new file mode 100644 index 00000000..0870ac04 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/BuildingIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { BuildingIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/BuildingIcon', + component: BuildingIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CalendarDaysIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CalendarDaysIcon.stories.tsx new file mode 100644 index 00000000..dc217884 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CalendarDaysIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CalendarDaysIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CalendarDaysIcon', + component: CalendarDaysIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CalendarIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CalendarIcon.stories.tsx new file mode 100644 index 00000000..9346fad1 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CalendarIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CalendarIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CalendarIcon', + component: CalendarIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CheckIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CheckIcon.stories.tsx new file mode 100644 index 00000000..7aba4e46 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CheckIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CheckIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CheckIcon', + component: CheckIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CheckRadioIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CheckRadioIcon.stories.tsx new file mode 100644 index 00000000..987f4d7f --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CheckRadioIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CheckRadioIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CheckRadioIcon', + component: CheckRadioIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CheckRadioOutlineIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CheckRadioOutlineIcon.stories.tsx new file mode 100644 index 00000000..8355ce62 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CheckRadioOutlineIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CheckRadioOutlineIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CheckRadioOutlineIcon', + component: CheckRadioOutlineIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CheckRoundFilledIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CheckRoundFilledIcon.stories.tsx new file mode 100644 index 00000000..7f5d083d --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CheckRoundFilledIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CheckRoundFilledIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CheckRoundFilledIcon', + component: CheckRoundFilledIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ChevronDoubleDownIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/ChevronDoubleDownIcon.stories.tsx new file mode 100644 index 00000000..95106e7d --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ChevronDoubleDownIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ChevronDoubleDownIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ChevronDoubleDownIcon', + component: ChevronDoubleDownIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ChevronDownIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/ChevronDownIcon.stories.tsx new file mode 100644 index 00000000..9f65f9c4 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ChevronDownIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ChevronDownIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ChevronDownIcon', + component: ChevronDownIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ChevronGrabberHorizontal.stories.tsx b/packages/frontend/src/stories/Components/Icons/ChevronGrabberHorizontal.stories.tsx new file mode 100644 index 00000000..239b975d --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ChevronGrabberHorizontal.stories.tsx @@ -0,0 +1,31 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ChevronGrabberHorizontal } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ChevronGrabberHorizontal', + component: ChevronGrabberHorizontal, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => ( + + ), + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ChevronLeft.stories.tsx b/packages/frontend/src/stories/Components/Icons/ChevronLeft.stories.tsx new file mode 100644 index 00000000..0cd4dec8 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ChevronLeft.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ChevronLeft } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ChevronLeft', + component: ChevronLeft, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ChevronRight.stories.tsx b/packages/frontend/src/stories/Components/Icons/ChevronRight.stories.tsx new file mode 100644 index 00000000..c73cb39e --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ChevronRight.stories.tsx @@ -0,0 +1,25 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ChevronRight } from '../../../components/shared/CustomIcon/ChevronRight'; + +const meta: Meta = { + title: 'Icons/ChevronRight', + component: ChevronRight, + tags: ['autodocs'], + args: { + size: 'string | number' as unknown as any, + name: 'string', + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ChevronUpDown.stories.tsx b/packages/frontend/src/stories/Components/Icons/ChevronUpDown.stories.tsx new file mode 100644 index 00000000..2b7a692c --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ChevronUpDown.stories.tsx @@ -0,0 +1,25 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ChevronUpDown } from 'components/shared/CustomIcon/ChevronUpDown'; + +const meta: Meta = { + title: 'Icons/ChevronUpDown', + component: ChevronUpDown, + tags: ['autodocs'], + args: { + size: 'string | number' as unknown as any, + name: 'string', + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CirclePlaceholderOnIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CirclePlaceholderOnIcon.stories.tsx new file mode 100644 index 00000000..4d08db6e --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CirclePlaceholderOnIcon.stories.tsx @@ -0,0 +1,31 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CirclePlaceholderOnIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CirclePlaceholderOnIcon', + component: CirclePlaceholderOnIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => ( + + ), + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ClockIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/ClockIcon.stories.tsx new file mode 100644 index 00000000..9850d00b --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ClockIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ClockIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ClockIcon', + component: ClockIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ClockOutlineIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/ClockOutlineIcon.stories.tsx new file mode 100644 index 00000000..d9dc2231 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ClockOutlineIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ClockOutlineIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ClockOutlineIcon', + component: ClockOutlineIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CommitIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CommitIcon.stories.tsx new file mode 100644 index 00000000..e5a69c0e --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CommitIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CommitIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CommitIcon', + component: CommitIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CopyIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CopyIcon.stories.tsx new file mode 100644 index 00000000..5b0a2af0 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CopyIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CopyIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CopyIcon', + component: CopyIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CrossCircleIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CrossCircleIcon.stories.tsx new file mode 100644 index 00000000..3cfa9b87 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CrossCircleIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CrossCircleIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CrossCircleIcon', + component: CrossCircleIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CrossIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CrossIcon.stories.tsx new file mode 100644 index 00000000..073f8b37 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CrossIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CrossIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CrossIcon', + component: CrossIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/CursorBoxIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CursorBoxIcon.stories.tsx new file mode 100644 index 00000000..eb321b9b --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CursorBoxIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CursorBoxIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/CursorBoxIcon', + component: CursorBoxIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/EllipseIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/EllipseIcon.stories.tsx new file mode 100644 index 00000000..87553828 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/EllipseIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { EllipseIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/EclipseIcon', + component: EllipseIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/EllipsesIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/EllipsesIcon.stories.tsx new file mode 100644 index 00000000..71de09b5 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/EllipsesIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { EllipsesIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/EllipsesIcon', + component: EllipsesIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/FolderIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/FolderIcon.stories.tsx new file mode 100644 index 00000000..83a53afc --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/FolderIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { FolderIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/FolderIcon', + component: FolderIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/GearIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/GearIcon.stories.tsx new file mode 100644 index 00000000..8451df52 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/GearIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { GearIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/GearIcon', + component: GearIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/GitHubLogo.stories.tsx b/packages/frontend/src/stories/Components/Icons/GitHubLogo.stories.tsx new file mode 100644 index 00000000..2768d670 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/GitHubLogo.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { GitHubLogo } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/GitHubLogo', + component: GitHubLogo, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/GitIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/GitIcon.stories.tsx new file mode 100644 index 00000000..63930831 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/GitIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { GitIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/GitIcon', + component: GitIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/GitTeaIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/GitTeaIcon.stories.tsx new file mode 100644 index 00000000..27ba59ff --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/GitTeaIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { GitTeaIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/GitTeaIcon', + component: GitTeaIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/GithubIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/GithubIcon.stories.tsx new file mode 100644 index 00000000..cc0b0f8b --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/GithubIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { GithubIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/GithubIcon', + component: GithubIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/GithubStrokeIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/GithubStrokeIcon.stories.tsx new file mode 100644 index 00000000..acbec55e --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/GithubStrokeIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { GithubStrokeIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/GithubStrokeLogo', + component: GithubStrokeIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/GlobeIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/GlobeIcon.stories.tsx new file mode 100644 index 00000000..454ed3d5 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/GlobeIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { GlobeIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/GlobeIcon', + component: GlobeIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/GoogleIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/GoogleIcon.stories.tsx new file mode 100644 index 00000000..baea62bc --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/GoogleIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { GoogleIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/GoogleIcon', + component: GoogleIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/HorizontalDotIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/HorizontalDotIcon.stories.tsx new file mode 100644 index 00000000..63d4b016 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/HorizontalDotIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { HorizontalDotIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/HorizontalDotIcon', + component: HorizontalDotIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/InfoRoundFilledIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/InfoRoundFilledIcon.stories.tsx new file mode 100644 index 00000000..2a743f44 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/InfoRoundFilledIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { InfoRoundFilledIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/InfoRoundFilledIcon', + component: InfoRoundFilledIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/InfoSquareIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/InfoSquareIcon.stories.tsx new file mode 100644 index 00000000..e6b49140 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/InfoSquareIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { InfoSquareIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/InfoSquareIcon', + component: InfoSquareIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/KeyIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/KeyIcon.stories.tsx new file mode 100644 index 00000000..de89ac93 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/KeyIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { KeyIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/KeyIcon', + component: KeyIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/LifeBuoyIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/LifeBuoyIcon.stories.tsx new file mode 100644 index 00000000..882985ea --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/LifeBuoyIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { LifeBuoyIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/LifeBuoyIcon', + component: LifeBuoyIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/LinkChainIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/LinkChainIcon.stories.tsx new file mode 100644 index 00000000..bc799ebe --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/LinkChainIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { LinkChainIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/LinkChainIcon', + component: LinkChainIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/LinkIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/LinkIcon.stories.tsx new file mode 100644 index 00000000..3710efac --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/LinkIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { LinkIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/LinkIcon', + component: LinkIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/LoaderIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/LoaderIcon.stories.tsx new file mode 100644 index 00000000..85d3a587 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/LoaderIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { LoaderIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/LoaderIcon', + component: LoaderIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/LoadingIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/LoadingIcon.stories.tsx new file mode 100644 index 00000000..59a0cd0f --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/LoadingIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { LoadingIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/LoadingIcon', + component: LoadingIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/LockIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/LockIcon.stories.tsx new file mode 100644 index 00000000..262bdf53 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/LockIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { LockIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/LockIcon', + component: LockIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/LogoutIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/LogoutIcon.stories.tsx new file mode 100644 index 00000000..50e4cac1 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/LogoutIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { LogoutIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/LogoutIcon', + component: LogoutIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/MenuIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/MenuIcon.stories.tsx new file mode 100644 index 00000000..65f2c9c8 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/MenuIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { MenuIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/MenuIcon', + component: MenuIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/MinusCircleIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/MinusCircleIcon.stories.tsx new file mode 100644 index 00000000..ec05322f --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/MinusCircleIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { MinusCircleIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/MinusCircleIcon', + component: MinusCircleIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/NotificationBellIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/NotificationBellIcon.stories.tsx new file mode 100644 index 00000000..697c3ae7 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/NotificationBellIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { NotificationBellIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/NotificationBellIcon', + component: NotificationBellIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/PencilIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/PencilIcon.stories.tsx new file mode 100644 index 00000000..333ebaa2 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/PencilIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { PencilIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/PencilIcon', + component: PencilIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/PlusIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/PlusIcon.stories.tsx new file mode 100644 index 00000000..9a4260ca --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/PlusIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { PlusIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/PlusIcon', + component: PlusIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/QuestionMarkRoundFilledIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/QuestionMarkRoundFilledIcon.stories.tsx new file mode 100644 index 00000000..f834e962 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/QuestionMarkRoundFilledIcon.stories.tsx @@ -0,0 +1,31 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { QuestionMarkRoundFilledIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/QuestionMarkRoundFilledIcon', + component: QuestionMarkRoundFilledIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => ( + + ), + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/QuestionMarkRoundIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/QuestionMarkRoundIcon.stories.tsx new file mode 100644 index 00000000..3ce8a42e --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/QuestionMarkRoundIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { QuestionMarkRoundIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/QuestionMarkRoundIcon', + component: QuestionMarkRoundIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/RefreshIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/RefreshIcon.stories.tsx new file mode 100644 index 00000000..38a80063 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/RefreshIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { RefreshIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/RefreshIcon', + component: RefreshIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/RocketIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/RocketIcon.stories.tsx new file mode 100644 index 00000000..13dc9888 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/RocketIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { RocketIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/RocketIcon', + component: RocketIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/SearchIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/SearchIcon.stories.tsx new file mode 100644 index 00000000..8c6eb826 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/SearchIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { SearchIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/SearchIcon', + component: SearchIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/SettingsSlidersIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/SettingsSlidersIcon.stories.tsx new file mode 100644 index 00000000..ed9c7455 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/SettingsSlidersIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { SettingsSlidersIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/SettingsSlidersIcon', + component: SettingsSlidersIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/SnowballIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/SnowballIcon.stories.tsx new file mode 100644 index 00000000..ce42ded4 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/SnowballIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { SnowballIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/SnowballIcon', + component: SnowballIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/StorageIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/StorageIcon.stories.tsx new file mode 100644 index 00000000..0dc8e35b --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/StorageIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { StorageIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/StorageIcon', + component: StorageIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/TrendingIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/TrendingIcon.stories.tsx new file mode 100644 index 00000000..25406e51 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/TrendingIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { TrendingIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/TrendingIcon', + component: TrendingIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/UndoIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/UndoIcon.stories.tsx new file mode 100644 index 00000000..65120489 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/UndoIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { UndoIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/UndoIcon', + component: UndoIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/WarningDiamondIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/WarningDiamondIcon.stories.tsx new file mode 100644 index 00000000..a4b336aa --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/WarningDiamondIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { WarningDiamondIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/WarningDiamondIcon', + component: WarningDiamondIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/WarningIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/WarningIcon.stories.tsx new file mode 100644 index 00000000..ef0c3816 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/WarningIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { WarningIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/WarningIcon', + component: WarningIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/WarningTriangleIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/WarningTriangleIcon.stories.tsx new file mode 100644 index 00000000..41d1c4da --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/WarningTriangleIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { WarningTriangleIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/WarningTriangleIcon', + component: WarningTriangleIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/InlineNotification.stories.tsx b/packages/frontend/src/stories/Components/InlineNotification.stories.tsx new file mode 100644 index 00000000..a96b8f7d --- /dev/null +++ b/packages/frontend/src/stories/Components/InlineNotification.stories.tsx @@ -0,0 +1,89 @@ +import { StoryObj, Meta } from '@storybook/react'; +import { PlusIcon } from 'components/shared/CustomIcon'; + +import { InlineNotification } from 'components/shared/InlineNotification'; + +const inlineNotificationVariants = [ + 'info', + 'danger', + 'warning', + 'success', + 'generic', +]; +const inlineNotificationSizes = ['md', 'sm']; + +const meta: Meta = { + title: 'Components/InlineNotification', + component: InlineNotification, + tags: ['autodocs'], + argTypes: { + title: { + control: 'text', + }, + description: { + control: 'text', + }, + icon: { + control: 'object', + }, + variant: { + control: 'select', + options: inlineNotificationVariants, + }, + size: { + control: 'select', + options: inlineNotificationSizes, + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ title, description, icon, variant, ...args }) => ( + + ), + args: { + title: 'title is required', + variant: 'generic', + size: 'md', + }, +}; + +export const WithDescription: Story = { + render: ({ title, description, icon, ...args }) => ( + + ), + args: { + ...Default.args, + description: 'string', + }, +}; + +export const WithIcon: Story = { + render: ({ title, description, icon, ...args }) => ( + + ), + args: { + ...Default.args, + icon: , + }, +}; diff --git a/packages/frontend/src/stories/Components/Input.stories.tsx b/packages/frontend/src/stories/Components/Input.stories.tsx new file mode 100644 index 00000000..907042d9 --- /dev/null +++ b/packages/frontend/src/stories/Components/Input.stories.tsx @@ -0,0 +1,123 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { Input } from 'components/shared/Input'; +import { PlusIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Components/Input', + component: Input, + tags: ['autodocs'], + argTypes: { + label: { + control: 'text', + }, + description: { + control: 'text', + }, + helperText: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ label, description, leftIcon, rightIcon, helperText }) => ( + + ), +}; + +export const WithLeftIcon: Story = { + render: ({ label, description, leftIcon }) => ( + + ), + args: { + ...Default.args, + leftIcon: , + }, +}; + +export const WithRightIcon: Story = { + render: ({ label, description, rightIcon }) => ( + + ), + args: { + ...Default.args, + rightIcon: , + }, +}; + +export const WithLeftAndRightIcon: Story = { + render: ({ label, description, leftIcon, rightIcon }) => ( + + ), + args: { + ...Default.args, + leftIcon: , + rightIcon: , + }, +}; + +export const WithDescription: Story = { + render: ({ label, description }) => ( + + ), + args: { + ...Default.args, + description: 'description', + }, +}; + +export const WithHelperText: Story = { + render: ({ helperText }) => , + args: { + ...Default.args, + helperText: 'helper text', + }, +}; + +export const WithLabel: Story = { + render: ({ label }) => , + args: { + ...Default.args, + label: 'label', + }, +}; + +export const WithPlaceholder: Story = { + render: ({ placeholder }) => , + args: { + ...Default.args, + placeholder: 'placeholder', + }, +}; + +export const WithValue: Story = { + render: ({ value }) => , + args: { + ...Default.args, + value: 'Value', + }, +}; + +export const WithDisabled: Story = { + render: ({ disabled }) => , + args: { + ...Default.args, + disabled: true, + }, +}; diff --git a/packages/frontend/src/stories/Components/Modal.stories.tsx b/packages/frontend/src/stories/Components/Modal.stories.tsx new file mode 100644 index 00000000..3d3d4edc --- /dev/null +++ b/packages/frontend/src/stories/Components/Modal.stories.tsx @@ -0,0 +1,36 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { Modal } from 'components/shared/Modal'; +import { Button } from 'components/shared/Button'; + +const meta: Meta = { + component: Modal, + title: 'Components/Modal', + tags: ['autodocs'], + argTypes: {}, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: () => { + return ( + + + + + + Modal title + +

      Modal content

      +
      + + + +
      +
      + ); + }, +}; diff --git a/packages/frontend/src/stories/Components/OverflownText.stories.tsx b/packages/frontend/src/stories/Components/OverflownText.stories.tsx new file mode 100644 index 00000000..63a31639 --- /dev/null +++ b/packages/frontend/src/stories/Components/OverflownText.stories.tsx @@ -0,0 +1,33 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { OverflownText } from 'components/shared/OverflownText'; + +const meta: Meta = { + title: 'Components/OverflownText', + component: OverflownText, + tags: ['autodocs'], + argTypes: { + content: { + control: 'text', + }, + children: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ children, content }) => ( + {children} + ), + args: { + children: + 'This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. ', + content: + 'This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. This is an overflown text. ', + }, +}; diff --git a/packages/frontend/src/stories/Components/SegmentedControls.stories.tsx b/packages/frontend/src/stories/Components/SegmentedControls.stories.tsx new file mode 100644 index 00000000..4deb0447 --- /dev/null +++ b/packages/frontend/src/stories/Components/SegmentedControls.stories.tsx @@ -0,0 +1,38 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { SegmentedControls } from 'components/shared/SegmentedControls'; + +const meta: Meta = { + title: 'Components/SegmentedControls', + component: SegmentedControls, + tags: ['autodocs'], + argTypes: { + options: { + control: 'object', + }, + value: { + control: 'text', + }, + onChange: { + action: 'onChange', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ options, value, onChange }) => ( + + ), + args: { + options: [ + { label: 'Option 1', value: '1' }, + { label: 'Option 2', value: '2' }, + { label: 'Option 3', value: '3' }, + ], + value: '1', + }, +}; diff --git a/packages/frontend/src/stories/Components/Select.stories.tsx b/packages/frontend/src/stories/Components/Select.stories.tsx new file mode 100644 index 00000000..488f6717 --- /dev/null +++ b/packages/frontend/src/stories/Components/Select.stories.tsx @@ -0,0 +1,105 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { Select } from 'components/shared/Select'; + +const meta: Meta = { + title: 'Components/Select', + component: Select, + tags: ['autodocs'], + argTypes: { + options: { + control: 'object', + }, + label: { + control: 'text', + }, + description: { + control: 'text', + }, + multiple: { + control: 'boolean', + }, + searchable: { + control: 'boolean', + }, + clearable: { + control: 'boolean', + }, + leftIcon: { + control: 'text', + }, + rightIcon: { + control: 'text', + }, + helperText: { + control: 'text', + }, + hideValues: { + control: 'boolean', + }, + value: { + control: 'object', + }, + onClear: { + action: 'clear', + }, + onChange: { + action: 'change', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ + options, + label, + description, + multiple, + searchable, + clearable, + leftIcon, + rightIcon, + helperText, + hideValues, + value, + onClear, + onChange, + }) => ( + - - Description (Optional) - - - - Project ID - } + label="Description (Optional)" + {...register('description')} /> +
      { + navigator.clipboard.writeText(project.id); + toast({ + id: 'copied_project_id', + title: 'Project ID copied to clipboard', + variant: 'success', + onDismiss() {}, + }); + }} + > + } + /> +
      -
      - Transfer project - +
      { + setSelectedTransferOrganization(org.org); + setOpenTransferDialog(!openTransferDialog); + })} + className="self-stretch space-y-3 px-2" + > + + Transfer project + +

      Transfer this app to your personal account or a team you are a member - of.{' '} - - Learn more - - - { - setSelectedTransferOrganization(orgId); - setOpenTransferDialog(!openTransferDialog); - })} - > - - Choose team - - ( - - {transferOrganizations.map((org, key) => ( - - ))} - - )} - /> - - - setOpenTransferDialog(!openTransferDialog)} - open={openTransferDialog} - handleConfirm={handleTransferProject} - projectName={project.name} - from={project.organization.name} - to={selectedUserOrgName} + of. +

      +
      - Value
      - onDelete()} disabled={isDeleteDisabled} > - {'>'} - + +
      ); diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx index 2be3dcd7..5cdf4850 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx @@ -5,19 +5,19 @@ import { useParams } from 'react-router-dom'; import { Environment, EnvironmentVariable } from 'gql-client'; import { - Typography, Collapse, Card, - Button, - Checkbox, Chip, } from '@snowballtools/material-tailwind-react-fork'; -import AddEnvironmentVariableRow from '../../../../../components/projects/project/settings/AddEnvironmentVariableRow'; -import DisplayEnvironmentVariables from '../../../../../components/projects/project/settings/DisplayEnvironmentVariables'; -import HorizontalLine from '../../../../../components/HorizontalLine'; import { useGQLClient } from '../../../../../context/GQLClientContext'; -import { EnvironmentVariablesFormValues } from '../../../../../types/types'; +import { EnvironmentVariablesFormValues } from '../../../../../types'; +import AddEnvironmentVariableRow from 'components/projects/project/settings/AddEnvironmentVariableRow'; +import DisplayEnvironmentVariables from 'components/projects/project/settings/DisplayEnvironmentVariables'; +import HorizontalLine from 'components/HorizontalLine'; +import { Heading } from 'components/shared/Heading'; +import { Button } from 'components/shared/Button'; +import { Checkbox } from 'components/shared/Checkbox'; export const EnvironmentVariablesTabPanel = () => { const { id } = useParams(); @@ -132,11 +132,13 @@ export const EnvironmentVariablesTabPanel = () => { ); return ( - <> - Environment variables - +
      + + Environment variables + +

      A new deployment is required for your changes to take effect. - +

      { })}
      {/* TODO: Implement import environment varible functionality */} -
      {isFieldEmpty && ( @@ -202,7 +203,7 @@ export const EnvironmentVariablesTabPanel = () => { />
      -
      @@ -235,6 +236,6 @@ export const EnvironmentVariablesTabPanel = () => { }} />
      - +
      ); }; From 8aa1362be6fc4c6ebc5c2494953caf4242a6838b Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Sat, 11 May 2024 21:17:56 -0400 Subject: [PATCH 205/251] [3/n][project settings ui] Domains cleanup --- .../org-slug/projects/id/settings/Domains.tsx | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx index ff39baf4..11039d0e 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx @@ -1,17 +1,14 @@ import { RequestError } from 'octokit'; import { useCallback, useEffect, useState } from 'react'; -import { Link, useOutletContext } from 'react-router-dom'; +import { useOutletContext } from 'react-router-dom'; import { Domain } from 'gql-client'; -import { - Button, - Typography, -} from '@snowballtools/material-tailwind-react-fork'; - -import DomainCard from '../../../../../components/projects/project/settings/DomainCard'; +import DomainCard from 'components/projects/project/settings/DomainCard'; import { useGQLClient } from '../../../../../context/GQLClientContext'; -import { OutletContextType } from '../../../../../types/types'; +import { OutletContextType } from '../../../../../types'; import { useOctokit } from '../../../../../context/OctokitContext'; +import { Heading } from 'components/shared/Heading'; +import { Button } from 'components/shared/Button'; const Domains = () => { const client = useGQLClient(); @@ -61,13 +58,13 @@ const Domains = () => { return ( <> -
      - Domain - - - +
      + + Domains + +
      {domains.map((domain) => { From 9f46290ecc0611391e91ee7cf56dd6a000f2110c Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Sat, 11 May 2024 21:18:35 -0400 Subject: [PATCH 206/251] [4/n][project settings ui] GitTabPanel cleanup --- .../org-slug/projects/id/settings/Git.tsx | 174 +++++++++++------- 1 file changed, 111 insertions(+), 63 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx index aa83bb65..b753b7ad 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx @@ -1,18 +1,15 @@ -import { useCallback, useEffect } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useOutletContext } from 'react-router-dom'; import { SubmitHandler, useForm } from 'react-hook-form'; -import toast from 'react-hot-toast'; -import { - Button, - Input, - Switch, - Typography, -} from '@snowballtools/material-tailwind-react-fork'; - -import WebhookCard from '../../../../../components/projects/project/settings/WebhookCard'; +import WebhookCard from 'components/projects/project/settings/WebhookCard'; import { useGQLClient } from '../../../../../context/GQLClientContext'; -import { OutletContextType } from '../../../../../types/types'; +import { OutletContextType } from '../../../../../types'; +import { Button } from 'components/shared/Button'; +import { Input } from 'components/shared/Input'; +import { Switch } from 'components/shared/Switch'; +import { Heading } from 'components/shared/Heading'; +import { useToast } from 'components/shared/Toast'; type UpdateProdBranchValues = { prodBranch: string; @@ -24,8 +21,12 @@ type UpdateWebhooksValues = { const GitTabPanel = () => { const client = useGQLClient(); + const { toast } = useToast(); const { project, onUpdate } = useOutletContext(); + const [pullRequestComments, updatePullRequestComments] = useState(true); + const [commitComments, updateCommitComments] = useState(false); + const { register: registerProdBranch, handleSubmit: handleSubmitProdBranch, @@ -45,9 +46,19 @@ const GitTabPanel = () => { if (updateProject) { await onUpdate(); - toast.success('Production branch upadated successfully'); + toast({ + id: 'prod_branch_updated', + title: 'Production branch updated successfully', + variant: 'success', + onDismiss() {}, + }); } else { - toast.error('Error updating production branch'); + toast({ + id: 'prod_branch_update_failed', + title: 'Error updating production branch', + variant: 'error', + onDismiss() {}, + }); } }, [project], @@ -72,9 +83,19 @@ const GitTabPanel = () => { if (updateProject) { await onUpdate(); - toast.success('Webhook added successfully'); + toast({ + id: 'webhook_added', + title: 'Webhook added successfully', + variant: 'success', + onDismiss() {}, + }); } else { - toast.error('Error adding webhook'); + toast({ + id: 'webhook_add_failed', + title: 'Error adding webhook', + variant: 'error', + onDismiss() {}, + }); } resetWebhooks(); @@ -96,80 +117,107 @@ const GitTabPanel = () => { if (updateProject) { await onUpdate(); - toast.success('Webhook deleted successfully'); + toast({ + id: 'webhook_deleted', + title: 'Webhook deleted successfully', + variant: 'success', + onDismiss() {}, + }); } else { - toast.error('Error deleting webhook'); + toast({ + id: 'webhook_delete_failed', + title: 'Error deleting webhook', + variant: 'error', + onDismiss() {}, + }); } }; return ( - <> -
      - +
      +
      + Git repository - +
      - Pull request comments +

      + Pull request comments +

      - + updatePullRequestComments(!pullRequestComments)} + />
      - Commit comments +

      + Commit comments +

      - + updateCommitComments(!commitComments)} + />
      -
      -
      - - Production branch - - - By default, each commit pushed to the{' '} - {project.prodBranch} branch - initiates a production deployment. You can opt for a different - branch for deployment in the settings. - - Branch name - - -
      + + + Production branch + +

      + By default, each commit pushed to the{' '} + {project.prodBranch} branch + initiates a production deployment. You can opt for a different branch + for deployment in the settings. +

      +

      + Branch name +

      + +
      -
      -
      - - Deploy webhooks - - - Webhooks configured to trigger when there is a change in a - project's build or deployment status. - -
      -
      - Webhook URL - -
      -
      - -
      + + + Deploy webhooks + +

      + {' '} + Webhooks configured to trigger when there is a change in a + project's build or deployment status. +

      +
      +
      +

      + Webhook URL +

      + +
      +
      +
      -
      +
      {project.webhooks.map((webhookUrl, index) => { return ( { ); })}
      - +
      ); }; From 47b322c212fa888d3bcdb729e51ad4eeacccac4e Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Sat, 11 May 2024 21:43:22 -0400 Subject: [PATCH 207/251] [5/n][project setting ui] MembersTabPanel cleanip --- .../org-slug/projects/id/settings/Members.tsx | 93 ++++++++++++------- 1 file changed, 60 insertions(+), 33 deletions(-) diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx index 273ff23c..7f118fff 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx @@ -1,23 +1,22 @@ import { useCallback, useEffect, useState } from 'react'; import { useOutletContext } from 'react-router-dom'; -import toast from 'react-hot-toast'; import { Permission, AddProjectMemberInput, ProjectMember } from 'gql-client'; -import { - Chip, - Button, - Typography, -} from '@snowballtools/material-tailwind-react-fork'; - import MemberCard from '../../../../../components/projects/project/settings/MemberCard'; import AddMemberDialog from '../../../../../components/projects/project/settings/AddMemberDialog'; import { useGQLClient } from '../../../../../context/GQLClientContext'; -import { OutletContextType } from '../../../../../types/types'; +import { OutletContextType } from '../../../../../types'; +import { useToast } from '../../../../../components/shared/Toast'; +import { Button } from 'components/shared/Button'; +import { PlusIcon } from 'components/shared/CustomIcon'; +import { Badge } from 'components/shared/Badge'; +import { Heading } from 'components/shared/Heading'; const FIRST_MEMBER_CARD = 0; const MembersTabPanel = () => { const client = useGQLClient(); + const { toast } = useToast(); const { project } = useOutletContext(); const [addmemberDialogOpen, setAddMemberDialogOpen] = useState(false); @@ -36,9 +35,19 @@ const MembersTabPanel = () => { if (isProjectMemberAdded) { await fetchProjectMembers(); - toast.success('Invitation sent'); + toast({ + id: 'member_added', + title: 'Member added to project', + variant: 'success', + onDismiss() {}, + }); } else { - toast.error('Invitation not sent'); + toast({ + id: 'member_not_added', + title: 'Invitation not sent', + variant: 'error', + onDismiss() {}, + }); } }, [project], @@ -50,9 +59,19 @@ const MembersTabPanel = () => { if (isMemberRemoved) { await fetchProjectMembers(); - toast.success('Member removed from project'); + toast({ + id: 'member_removed', + title: 'Member removed from project', + variant: 'success', + onDismiss() {}, + }); } else { - toast.error('Not able to remove member'); + toast({ + id: 'member_not_removed', + title: 'Not able to remove member', + variant: 'error', + onDismiss() {}, + }); } }; @@ -63,9 +82,19 @@ const MembersTabPanel = () => { if (isProjectMemberUpdated) { await fetchProjectMembers(); - toast.success('Project member permission updated'); + toast({ + id: 'member_permission_updated', + title: 'Project member permission updated', + variant: 'success', + onDismiss() {}, + }); } else { - toast.error('Project member permission not updated'); + toast({ + id: 'member_permission_not_updated', + title: 'Project member permission not updated', + variant: 'error', + onDismiss() {}, + }); } }, [], @@ -76,26 +105,24 @@ const MembersTabPanel = () => { }, [project.id, fetchProjectMembers]); return ( -
      -
      -
      - Members -
      - -
      -
      -
      - +
      +
      +
      + + Collaborators + + + {projectMembers.length + 1} +
      +
      Date: Sat, 11 May 2024 22:31:58 -0400 Subject: [PATCH 208/251] [6/n][project settings ui] collaborators ui --- .../projects/ProjectCard/ProjectCard.tsx | 4 +- .../shared/CustomIcon/BranchStrokeIcon.tsx | 11 ++-- .../shared/CustomIcon/CollaboratorsIcon.tsx | 19 ++++++ .../{GitHubLogo.tsx => GitHubLogoIcon.tsx} | 2 +- .../shared/CustomIcon/SwitchIcon.tsx | 22 +++++++ .../src/components/shared/CustomIcon/index.ts | 4 +- .../src/components/shared/Tabs/index.ts | 3 + .../org-slug/projects/id/Deployments.tsx | 2 +- .../pages/org-slug/projects/id/Overview.tsx | 5 +- .../pages/org-slug/projects/id/Settings.tsx | 59 ++++++++++--------- .../src/pages/org-slug/projects/id/routes.tsx | 6 +- .../{Members.tsx => Collaborators.tsx} | 10 ++-- .../Icons/CollaboratorsIcon.stories.tsx | 29 +++++++++ .../Icons/GithubLogoIcon.stories.tsx | 29 +++++++++ ...ogo.stories.tsx => SwitchIcon.stories.tsx} | 12 ++-- 15 files changed, 159 insertions(+), 58 deletions(-) create mode 100644 packages/frontend/src/components/shared/CustomIcon/CollaboratorsIcon.tsx rename packages/frontend/src/components/shared/CustomIcon/{GitHubLogo.tsx => GitHubLogoIcon.tsx} (97%) create mode 100644 packages/frontend/src/components/shared/CustomIcon/SwitchIcon.tsx rename packages/frontend/src/pages/org-slug/projects/id/settings/{Members.tsx => Collaborators.tsx} (93%) create mode 100644 packages/frontend/src/stories/Components/Icons/CollaboratorsIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/GithubLogoIcon.stories.tsx rename packages/frontend/src/stories/Components/Icons/{GitHubLogo.stories.tsx => SwitchIcon.stories.tsx} (53%) diff --git a/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx b/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx index 84a34b4f..c15d2db7 100644 --- a/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx +++ b/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx @@ -12,7 +12,7 @@ import { Button } from 'components/shared/Button'; import { BranchIcon, ClockIcon, - GitHubLogo, + GithubLogoIcon, HorizontalDotIcon, WarningDiamondIcon, } from 'components/shared/CustomIcon'; @@ -118,7 +118,7 @@ export const ProjectCard = ({
      {hasDeployment ? ( <> - + {relativeTimeMs(project.deployments[0].createdAt)} on {project.deployments[0].branch} diff --git a/packages/frontend/src/components/shared/CustomIcon/BranchStrokeIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/BranchStrokeIcon.tsx index 0348e35d..4ccb3590 100644 --- a/packages/frontend/src/components/shared/CustomIcon/BranchStrokeIcon.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/BranchStrokeIcon.tsx @@ -3,16 +3,15 @@ import { CustomIcon, CustomIconProps } from './CustomIcon'; export const BranchStrokeIcon = (props: CustomIconProps) => { return ( ); diff --git a/packages/frontend/src/components/shared/CustomIcon/CollaboratorsIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CollaboratorsIcon.tsx new file mode 100644 index 00000000..ee1e05ec --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/CollaboratorsIcon.tsx @@ -0,0 +1,19 @@ +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const CollaboratorsIcon = (props: CustomIconProps) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/GitHubLogo.tsx b/packages/frontend/src/components/shared/CustomIcon/GitHubLogoIcon.tsx similarity index 97% rename from packages/frontend/src/components/shared/CustomIcon/GitHubLogo.tsx rename to packages/frontend/src/components/shared/CustomIcon/GitHubLogoIcon.tsx index f870f83a..3793e04f 100644 --- a/packages/frontend/src/components/shared/CustomIcon/GitHubLogo.tsx +++ b/packages/frontend/src/components/shared/CustomIcon/GitHubLogoIcon.tsx @@ -1,6 +1,6 @@ import { CustomIcon, CustomIconProps } from './CustomIcon'; -export const GitHubLogo = (props: CustomIconProps) => { +export const GithubLogoIcon = (props: CustomIconProps) => { return ( { + return ( + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index f271b978..5e16803e 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -32,7 +32,7 @@ export * from './BuildingIcon'; export * from './CheckRadioIcon'; export * from './ChevronDownIcon'; export * from './BranchIcon'; -export * from './GitHubLogo'; +export * from './GitHubLogoIcon'; export * from './ClockIcon'; export * from './HorizontalDotIcon'; export * from './WarningDiamondIcon'; @@ -69,6 +69,8 @@ export * from './GoogleIcon'; export * from './KeyIcon'; export * from './TrashIcon'; export * from './CopyUnfilledIcon'; +export * from './SwitchIcon'; +export * from './CollaboratorsIcon'; // Templates export * from './templates'; diff --git a/packages/frontend/src/components/shared/Tabs/index.ts b/packages/frontend/src/components/shared/Tabs/index.ts index 856dbbb3..a28a031c 100644 --- a/packages/frontend/src/components/shared/Tabs/index.ts +++ b/packages/frontend/src/components/shared/Tabs/index.ts @@ -1 +1,4 @@ export * from './Tabs'; +export { default as TabsList } from './TabsList'; +export { default as TabsTrigger } from './TabsTrigger'; +export { default as TabsContent } from './TabsContent'; diff --git a/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx b/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx index 1775576e..66638354 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Deployments.tsx @@ -7,7 +7,7 @@ import FilterForm, { FilterValue, StatusOptions, } from 'components/projects/project/deployments/FilterForm'; -import { OutletContextType } from '../../../../types/types'; +import { OutletContextType } from '../../../../types'; import { useGQLClient } from 'context/GQLClientContext'; import { Button } from 'components/shared/Button'; import { RefreshIcon } from 'components/shared/CustomIcon'; diff --git a/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx b/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx index 75e3153e..2de55d8c 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Overview.tsx @@ -4,10 +4,7 @@ import { Link, useNavigate, useOutletContext } from 'react-router-dom'; import { RequestError } from 'octokit'; import { useOctokit } from '../../../../context/OctokitContext'; -import { - GitCommitWithBranch, - OutletContextType, -} from '../../../../types/types'; +import { GitCommitWithBranch, OutletContextType } from '../../../../types'; import { useGQLClient } from '../../../../context/GQLClientContext'; import { Button } from 'components/shared/Button'; import { Heading } from 'components/shared/Heading'; diff --git a/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx b/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx index 1aad83a7..8f6367be 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/Settings.tsx @@ -1,40 +1,46 @@ import { useMemo } from 'react'; import { Link, Outlet, useLocation, useOutletContext } from 'react-router-dom'; +import { OutletContextType } from '../../../../types'; import { Tabs, - TabsHeader, - TabsBody, - Tab, -} from '@snowballtools/material-tailwind-react-fork'; - -import { OutletContextType } from '../../../../types/types'; + TabsContent, + TabsList, + TabsTrigger, +} from 'components/shared/Tabs'; +import { + BranchStrokeIcon, + CollaboratorsIcon, + GearIcon, + GlobeIcon, + SwitchIcon, +} from 'components/shared/CustomIcon'; const tabsData = [ { label: 'General', - icon: '', + icon: , value: 'general', }, { label: 'Domains', - icon: '', + icon: , value: 'domains', }, { label: 'Git', - icon: '', + icon: , value: 'git', }, { label: 'Environment variables', - icon: '', + icon: , value: 'environment-variables', }, { - label: 'Members', - icon: '', - value: 'members', + label: 'Collaborators', + icon: , + value: 'collaborators', }, ]; @@ -57,31 +63,26 @@ const SettingsTabPanel = () => { - + {tabsData.map(({ label, value, icon }) => ( - -
      -
      {icon}
      -
      {label}
      +
      +
      {icon}
      +
      {label}
      - + ))} - - + + - + ); diff --git a/packages/frontend/src/pages/org-slug/projects/id/routes.tsx b/packages/frontend/src/pages/org-slug/projects/id/routes.tsx index 78b15816..4ae7e81d 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/routes.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/routes.tsx @@ -4,7 +4,7 @@ import SettingsTabPanel from './Settings'; import GeneralTabPanel from './settings/General'; import GitTabPanel from './settings/Git'; import { EnvironmentVariablesTabPanel } from './settings/EnvironmentVariables'; -import MembersTabPanel from './settings/Members'; +import CollaboratorsTabPanel from './settings/Collaborators'; import Domains from './settings/Domains'; const Integrations = () => ( @@ -34,8 +34,8 @@ export const settingsTabRoutes = [ element: , }, { - path: 'members', - element: , + path: 'collaborators', + element: , }, ]; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/Collaborators.tsx similarity index 93% rename from packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx rename to packages/frontend/src/pages/org-slug/projects/id/settings/Collaborators.tsx index 7f118fff..9a343a34 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/Members.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/Collaborators.tsx @@ -2,11 +2,11 @@ import { useCallback, useEffect, useState } from 'react'; import { useOutletContext } from 'react-router-dom'; import { Permission, AddProjectMemberInput, ProjectMember } from 'gql-client'; -import MemberCard from '../../../../../components/projects/project/settings/MemberCard'; -import AddMemberDialog from '../../../../../components/projects/project/settings/AddMemberDialog'; +import MemberCard from 'components/projects/project/settings/MemberCard'; +import AddMemberDialog from 'components/projects/project/settings/AddMemberDialog'; import { useGQLClient } from '../../../../../context/GQLClientContext'; import { OutletContextType } from '../../../../../types'; -import { useToast } from '../../../../../components/shared/Toast'; +import { useToast } from 'components/shared/Toast'; import { Button } from 'components/shared/Button'; import { PlusIcon } from 'components/shared/CustomIcon'; import { Badge } from 'components/shared/Badge'; @@ -14,7 +14,7 @@ import { Heading } from 'components/shared/Heading'; const FIRST_MEMBER_CARD = 0; -const MembersTabPanel = () => { +const CollaboratorsTabPanel = () => { const client = useGQLClient(); const { toast } = useToast(); const { project } = useOutletContext(); @@ -160,4 +160,4 @@ const MembersTabPanel = () => { ); }; -export default MembersTabPanel; +export default CollaboratorsTabPanel; diff --git a/packages/frontend/src/stories/Components/Icons/CollaboratorsIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/CollaboratorsIcon.stories.tsx new file mode 100644 index 00000000..3541b0a4 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/CollaboratorsIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { CollaboratorsIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Components/CollaboratorsIcon', + component: CollaboratorsIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/GithubLogoIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/GithubLogoIcon.stories.tsx new file mode 100644 index 00000000..ee5bb425 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/GithubLogoIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { GithubLogoIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/GithubLogoIcon', + component: GithubLogoIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/GitHubLogo.stories.tsx b/packages/frontend/src/stories/Components/Icons/SwitchIcon.stories.tsx similarity index 53% rename from packages/frontend/src/stories/Components/Icons/GitHubLogo.stories.tsx rename to packages/frontend/src/stories/Components/Icons/SwitchIcon.stories.tsx index 2768d670..f8b3ded9 100644 --- a/packages/frontend/src/stories/Components/Icons/GitHubLogo.stories.tsx +++ b/packages/frontend/src/stories/Components/Icons/SwitchIcon.stories.tsx @@ -1,10 +1,10 @@ import { Meta, StoryObj } from '@storybook/react'; -import { GitHubLogo } from 'components/shared/CustomIcon'; +import { SwitchIcon } from 'components/shared/CustomIcon'; -const meta: Meta = { - title: 'Icons/GitHubLogo', - component: GitHubLogo, +const meta: Meta = { + title: 'Icons/SwitchIcon', + component: SwitchIcon, tags: ['autodocs'], argTypes: { size: { @@ -18,10 +18,10 @@ const meta: Meta = { export default meta; -type Story = StoryObj; +type Story = StoryObj; export const Default: Story = { - render: ({ size, name }) => , + render: ({ size, name }) => , args: { size: '24px', name: 'plus', From 2d0de785f95574a411a490ecb565fe22a4cbb440 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Sun, 12 May 2024 00:28:21 -0400 Subject: [PATCH 209/251] ui cleanup --- .../settings/AddEnvironmentVariableRow.tsx | 39 +++++++--------- .../project/settings/DeleteProjectDialog.tsx | 11 ++++- .../settings/DisplayEnvironmentVariables.tsx | 26 +++++------ .../projects/project/settings/DomainCard.tsx | 17 +++++-- .../settings/EditEnvironmentVariableRow.tsx | 4 +- .../project/settings/GitSelectionSection.tsx | 2 +- .../projects/project/settings/MemberCard.tsx | 10 ++--- .../projects/project/settings/WebhookCard.tsx | 5 +-- .../CustomIcon/ChevronDownSmallIcon.tsx | 20 +++++++++ .../shared/CustomIcon/ChevronUpSmallIcon.tsx | 20 +++++++++ .../src/components/shared/CustomIcon/index.ts | 2 + .../id/settings/EnvironmentVariables.tsx | 44 +++++++++---------- .../Icons/ChevronDownSmallIcon.stories.tsx | 25 +++++++++++ .../Icons/ChevronUpDown.stories.tsx | 2 +- .../Icons/ChevronUpSmallIcon.stories.tsx | 25 +++++++++++ 15 files changed, 176 insertions(+), 76 deletions(-) create mode 100644 packages/frontend/src/components/shared/CustomIcon/ChevronDownSmallIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/ChevronUpSmallIcon.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ChevronDownSmallIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ChevronUpSmallIcon.stories.tsx diff --git a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx index 1611f984..31d9e5bb 100644 --- a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx +++ b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx @@ -1,10 +1,9 @@ import { UseFormRegister } from 'react-hook-form'; -import { Input } from 'components/shared/Input'; - import { EnvironmentVariablesFormValues } from '../../../../types'; import { Button } from 'components/shared/Button'; import { TrashIcon } from 'components/shared/CustomIcon'; +import { Input } from 'components/shared/Input'; interface AddEnvironmentVariableRowProps { onDelete: () => void; @@ -20,28 +19,24 @@ const AddEnvironmentVariableRow = ({ isDeleteDisabled, }: AddEnvironmentVariableRowProps) => { return ( -
      -
      - -
      -
      - -
      +
      + +
      - { setRemoveMemberDialogOpen((prevVal) => !prevVal); }} > D - +
      )} diff --git a/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx b/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx index c0ecbf80..352856f6 100644 --- a/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx @@ -1,9 +1,8 @@ import { useState } from 'react'; import toast from 'react-hot-toast'; -import { Button } from '@snowballtools/material-tailwind-react-fork'; - import { DeleteWebhookDialog } from 'components/projects/Dialog/DeleteWebhookDialog'; +import { Button } from 'components/shared/Button'; interface WebhookCardProps { webhookUrl: string; @@ -26,8 +25,8 @@ const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => { C {/* TODO: Implement import environment varible functionality */} -
      {isFieldEmpty && ( - )} -
      +
      {
      - +
      diff --git a/packages/frontend/src/stories/Components/Icons/ChevronDownSmallIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/ChevronDownSmallIcon.stories.tsx new file mode 100644 index 00000000..b2cb4329 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ChevronDownSmallIcon.stories.tsx @@ -0,0 +1,25 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ChevronDownSmallIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ChevronDownSmallIcon', + component: ChevronDownSmallIcon, + tags: ['autodocs'], + args: { + size: 'string | number' as unknown as any, + name: 'string', + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ChevronUpDown.stories.tsx b/packages/frontend/src/stories/Components/Icons/ChevronUpDown.stories.tsx index 2b7a692c..f9c5ce01 100644 --- a/packages/frontend/src/stories/Components/Icons/ChevronUpDown.stories.tsx +++ b/packages/frontend/src/stories/Components/Icons/ChevronUpDown.stories.tsx @@ -1,6 +1,6 @@ import { Meta, StoryObj } from '@storybook/react'; -import { ChevronUpDown } from 'components/shared/CustomIcon/ChevronUpDown'; +import { ChevronUpDown } from 'components/shared/CustomIcon'; const meta: Meta = { title: 'Icons/ChevronUpDown', diff --git a/packages/frontend/src/stories/Components/Icons/ChevronUpSmallIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/ChevronUpSmallIcon.stories.tsx new file mode 100644 index 00000000..cbe2a93a --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ChevronUpSmallIcon.stories.tsx @@ -0,0 +1,25 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ChevronUpSmallIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Components/ChevronUpSmallIcon', + component: ChevronUpSmallIcon, + tags: ['autodocs'], + args: { + size: 'string | number' as unknown as any, + name: 'string', + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'chevron-up', + }, +}; From 6e7385b118416094ee46bf72a0b519240afeac77 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 13 May 2024 13:13:20 -0400 Subject: [PATCH 210/251] input forward ref react-hook-form --- .../src/components/shared/Input/Input.tsx | 192 ++++++++++-------- .../src/components/shared/Table/Table.tsx | 51 +++++ .../src/components/shared/Table/index.ts | 1 + .../id/settings/domains/add/Config.tsx | 56 ++--- .../src/stories/Components/Table.stories.tsx | 48 +++++ 5 files changed, 239 insertions(+), 109 deletions(-) create mode 100644 packages/frontend/src/components/shared/Table/Table.tsx create mode 100644 packages/frontend/src/components/shared/Table/index.ts create mode 100644 packages/frontend/src/stories/Components/Table.stories.tsx diff --git a/packages/frontend/src/components/shared/Input/Input.tsx b/packages/frontend/src/components/shared/Input/Input.tsx index e8252281..503e3d32 100644 --- a/packages/frontend/src/components/shared/Input/Input.tsx +++ b/packages/frontend/src/components/shared/Input/Input.tsx @@ -1,11 +1,18 @@ -import { ReactNode, useMemo } from 'react'; -import { ComponentPropsWithoutRef } from 'react'; -import { InputTheme, inputTheme } from './Input.theme'; +import { + forwardRef, + ReactNode, + useMemo, + ComponentPropsWithoutRef, +} from 'react'; +import { FieldValues, UseFormRegister } from 'react-hook-form'; + import { WarningIcon } from 'components/shared/CustomIcon'; import { cloneIcon } from 'utils/cloneIcon'; import { cn } from 'utils/classnames'; -export interface InputProps +import { InputTheme, inputTheme } from './Input.theme'; + +export interface InputProps extends InputTheme, Omit, 'size'> { label?: string; @@ -13,93 +20,108 @@ export interface InputProps leftIcon?: ReactNode; rightIcon?: ReactNode; helperText?: string; + + // react-hook-form optional register + register?: ReturnType>; } -export const Input = ({ - className, - label, - description, - leftIcon, - rightIcon, - helperText, - size, - state, - appearance, - ...props -}: InputProps) => { - const styleProps = useMemo( - () => ({ - size: size || 'md', - state: state || 'default', - appearance, // Pass appearance to inputTheme - }), - [size, state, appearance], - ); +const Input = forwardRef( + ( + { + className, + label, + description, + leftIcon, + rightIcon, + helperText, + register, + size, + state, + appearance, + ...props + }, + ref, + ) => { + const styleProps = useMemo( + () => ({ + size: size || 'md', + state: state || 'default', + appearance, // Pass appearance to inputTheme + }), + [size, state, appearance], + ); - const { - container: containerCls, - label: labelCls, - description: descriptionCls, - input: inputCls, - icon: iconCls, - iconContainer: iconContainerCls, - helperText: helperTextCls, - helperIcon: helperIconCls, - } = inputTheme({ ...styleProps }); + const { + container: containerCls, + label: labelCls, + description: descriptionCls, + input: inputCls, + icon: iconCls, + iconContainer: iconContainerCls, + helperText: helperTextCls, + helperIcon: helperIconCls, + } = inputTheme({ ...styleProps }); + + const renderLabels = useMemo(() => { + if (!label && !description) return null; + return ( +
      +

      {label}

      +

      {description}

      +
      + ); + }, [labelCls, descriptionCls, label, description]); + + const renderLeftIcon = useMemo(() => { + return ( +
      + {cloneIcon(leftIcon, { className: iconCls(), 'aria-hidden': true })} +
      + ); + }, [cloneIcon, iconCls, iconContainerCls, leftIcon]); + + const renderRightIcon = useMemo(() => { + return ( +
      + {cloneIcon(rightIcon, { className: iconCls(), 'aria-hidden': true })} +
      + ); + }, [cloneIcon, iconCls, iconContainerCls, rightIcon]); + + const renderHelperText = useMemo(() => { + if (!helperText) return null; + return ( +
      + {state && + cloneIcon(, { + 'aria-hidden': true, + })} +

      {helperText}

      +
      + ); + }, [cloneIcon, state, helperIconCls, helperText, helperTextCls]); - const renderLabels = useMemo(() => { - if (!label && !description) return null; return ( -
      -

      {label}

      -

      {description}

      +
      + {renderLabels} +
      + {leftIcon && renderLeftIcon} + + {rightIcon && renderRightIcon} +
      + {renderHelperText}
      ); - }, [labelCls, descriptionCls, label, description]); + }, +); - const renderLeftIcon = useMemo(() => { - return ( -
      - {cloneIcon(leftIcon, { className: iconCls(), 'aria-hidden': true })} -
      - ); - }, [cloneIcon, iconCls, iconContainerCls, leftIcon]); +Input.displayName = 'Input'; - const renderRightIcon = useMemo(() => { - return ( -
      - {cloneIcon(rightIcon, { className: iconCls(), 'aria-hidden': true })} -
      - ); - }, [cloneIcon, iconCls, iconContainerCls, rightIcon]); - - const renderHelperText = useMemo(() => { - if (!helperText) return null; - return ( -
      - {state && - cloneIcon(, { - 'aria-hidden': true, - })} -

      {helperText}

      -
      - ); - }, [cloneIcon, state, helperIconCls, helperText, helperTextCls]); - - return ( -
      - {renderLabels} -
      - {leftIcon && renderLeftIcon} - - {rightIcon && renderRightIcon} -
      - {renderHelperText} -
      - ); -}; +export { Input }; diff --git a/packages/frontend/src/components/shared/Table/Table.tsx b/packages/frontend/src/components/shared/Table/Table.tsx new file mode 100644 index 00000000..7f5fd5bc --- /dev/null +++ b/packages/frontend/src/components/shared/Table/Table.tsx @@ -0,0 +1,51 @@ +import React from 'react'; + +const Header: React.FC<{ children: React.ReactNode }> = ({ children }) => ( + {children} +); +const Body: React.FC<{ children: React.ReactNode }> = ({ children }) => ( + {children} +); +const Row: React.FC<{ children: React.ReactNode }> = ({ children }) => ( + {children} +); +const ColumnHeaderCell: React.FC<{ children: React.ReactNode }> = ({ + children, +}) => ( + + {children} + +); +const RowHeaderCell: React.FC<{ children: React.ReactNode }> = ({ + children, +}) => ( + + {children} + +); +const Cell: React.FC<{ children: React.ReactNode }> = ({ children }) => ( + + {children} + +); + +const Table: React.FC<{ children: React.ReactNode }> & { + Header: typeof Header; + Body: typeof Body; + Row: typeof Row; + ColumnHeaderCell: typeof ColumnHeaderCell; + RowHeaderCell: typeof RowHeaderCell; + Cell: typeof Cell; +} = ({ children }) => {children}
      ; + +Table.Header = Header; +Table.Body = Body; +Table.Row = Row; +Table.ColumnHeaderCell = ColumnHeaderCell; +Table.RowHeaderCell = RowHeaderCell; +Table.Cell = Cell; + +export { Table }; diff --git a/packages/frontend/src/components/shared/Table/index.ts b/packages/frontend/src/components/shared/Table/index.ts new file mode 100644 index 00000000..75193adc --- /dev/null +++ b/packages/frontend/src/components/shared/Table/index.ts @@ -0,0 +1 @@ +export * from './Table'; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx index e0b1edd2..ea850e94 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx @@ -1,12 +1,13 @@ import toast from 'react-hot-toast'; import { useNavigate, useParams, useSearchParams } from 'react-router-dom'; import { - Typography, Alert, Button, } from '@snowballtools/material-tailwind-react-fork'; import { useGQLClient } from '../../../../../../../context/GQLClientContext'; +import { Heading } from 'components/shared/Heading'; +import { Table } from 'components/shared/Table'; const Config = () => { const { id, orgSlug } = useParams(); @@ -38,37 +39,44 @@ const Config = () => { } }; + // TODO: Figure out DNS Provider if possible and update appropriatly return (
      - Configure DNS - + + Setup domain name + +

      Add the following records to your domain.  - Go to NameCheap ^ + Go to NameCheap - +

      - - - - - - - - - - - - - - - - - - -
      TypeNameValue
      A@56.49.19.21
      CNAMEwwwcname.snowballtools.xyz
      + + + + Type + Host + Value + + + + + + A + @ + 56.49.19.21 + + + + CNAME + www + cname.snowballtools.xyz + + +
      ^It can take up to 48 hours for these updates to reflect diff --git a/packages/frontend/src/stories/Components/Table.stories.tsx b/packages/frontend/src/stories/Components/Table.stories.tsx new file mode 100644 index 00000000..ce6aa33d --- /dev/null +++ b/packages/frontend/src/stories/Components/Table.stories.tsx @@ -0,0 +1,48 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { Table } from 'components/shared/Table'; + +const meta: Meta = { + title: 'Components/Table', + component: Table, + tags: ['autodocs'], +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({}) => ( + + + + Full name + Email + Group + + + + + + Danilo Sousa + danilo@example.com + Developer + + + + Zahra Ambessa + zahra@example.com + Admin + + + + Jasper Eriksson + jasper@example.com + Developer + + +
      + ), + args: {}, +}; From 947337acb1b898d800cb1cc9aef05b85dda216b5 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 13 May 2024 15:28:24 -0400 Subject: [PATCH 211/251] table basic component --- .../components/shared/Table/Table.theme.ts | 35 ++++++++ .../src/components/shared/Table/Table.tsx | 81 +++++++++++-------- 2 files changed, 83 insertions(+), 33 deletions(-) create mode 100644 packages/frontend/src/components/shared/Table/Table.theme.ts diff --git a/packages/frontend/src/components/shared/Table/Table.theme.ts b/packages/frontend/src/components/shared/Table/Table.theme.ts new file mode 100644 index 00000000..664433a6 --- /dev/null +++ b/packages/frontend/src/components/shared/Table/Table.theme.ts @@ -0,0 +1,35 @@ +interface ThemeProps { + base: string; + header: string; + row: string; + columnHeaderCell: string; + rowHeaderCell: string; + cell: string; +} + +const primaryTheme: ThemeProps = { + base: 'min-w-full border-collapse', + header: 'border-b border-sky-950/opacity-5 font-medium leading-tight', + row: 'border-b border-sky-950/opacity-5', + columnHeaderCell: + 'p-4 text-sky-950 text-sm font-medium uppercase tracking-wider text-left', + rowHeaderCell: + 'p-4 text-slate-600 text-sm font-normal leading-tight text-left', + cell: 'p-4 whitespace-nowrap text-sm text-slate-600 font-normal text-left', +}; + +const secondaryTheme: ThemeProps = { + base: 'min-w-full border-collapse', + header: + 'p-2 border-b border-sky-950/5 text-sky-950 text-sm font-medium leading-tight', + row: 'text-left border-b border-gray-300/50', + columnHeaderCell: + 'px-6 py-3 text-xs font-medium uppercase tracking-wider text-gray-800', + rowHeaderCell: 'px-6 py-4 font-medium whitespace-nowrap text-gray-800', + cell: 'px-6 py-4 whitespace-nowrap text-sm text-gray-600', +}; + +export const tableTheme = { + primary: primaryTheme, + secondary: secondaryTheme, +}; diff --git a/packages/frontend/src/components/shared/Table/Table.tsx b/packages/frontend/src/components/shared/Table/Table.tsx index 7f5fd5bc..b04128f7 100644 --- a/packages/frontend/src/components/shared/Table/Table.tsx +++ b/packages/frontend/src/components/shared/Table/Table.tsx @@ -1,45 +1,60 @@ import React from 'react'; +import { tableTheme } from './Table.theme'; -const Header: React.FC<{ children: React.ReactNode }> = ({ children }) => ( - {children} -); -const Body: React.FC<{ children: React.ReactNode }> = ({ children }) => ( - {children} -); -const Row: React.FC<{ children: React.ReactNode }> = ({ children }) => ( - {children} -); -const ColumnHeaderCell: React.FC<{ children: React.ReactNode }> = ({ - children, -}) => ( - - {children} - -); -const RowHeaderCell: React.FC<{ children: React.ReactNode }> = ({ - children, -}) => ( - - {children} - -); -const Cell: React.FC<{ children: React.ReactNode }> = ({ children }) => ( - - {children} - -); +type TableComponentProps = { + children: React.ReactNode; + variant?: keyof typeof tableTheme; +}; -const Table: React.FC<{ children: React.ReactNode }> & { +const useTheme = (variant: 'primary' | 'secondary' = 'primary') => + tableTheme[variant]; + +const Table: React.FC & { Header: typeof Header; Body: typeof Body; Row: typeof Row; ColumnHeaderCell: typeof ColumnHeaderCell; RowHeaderCell: typeof RowHeaderCell; Cell: typeof Cell; -} = ({ children }) => {children}
      ; +} = ({ children, variant = 'primary' }) => { + const theme = useTheme(variant); + return {children}
      ; +}; + +const Header: React.FC = ({ children, variant }) => { + const theme = useTheme(variant); + return {children}; +}; + +const Body: React.FC = ({ children }) => { + return {children}; +}; + +const Row: React.FC = ({ children, variant }) => { + const theme = useTheme(variant); + return {children}; +}; + +const ColumnHeaderCell: React.FC = ({ + children, + variant, +}) => { + const theme = useTheme(variant); + return {children}; +}; + +const RowHeaderCell: React.FC = ({ + children, + variant, +}) => { + const theme = useTheme(variant); + return {children}; +}; + +const Cell: React.FC = ({ children, variant }) => { + const theme = useTheme(variant); + return {children}; +}; Table.Header = Header; Table.Body = Body; From dc91fa0d7fc0b15fe7abed373af1ff18a8ba6732 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 13 May 2024 15:31:34 -0400 Subject: [PATCH 212/251] storybook config domains and react dom context --- packages/frontend/.storybook/main.ts | 1 + packages/frontend/package.json | 1 + .../project/settings/RepoConnectedSection.tsx | 16 +-- .../projects/project/settings/SetupDomain.tsx | 122 +++++++++--------- .../projects/project/settings/WebhookCard.tsx | 13 +- .../id/settings/domains/add/Config.tsx | 25 ++-- .../Project/Settings/Config.stories.tsx | 30 +++++ .../Project/Settings/SetupDomains.stories.tsx | 30 +++++ yarn.lock | 18 +++ 9 files changed, 170 insertions(+), 86 deletions(-) create mode 100644 packages/frontend/src/stories/Project/Settings/Config.stories.tsx create mode 100644 packages/frontend/src/stories/Project/Settings/SetupDomains.stories.tsx diff --git a/packages/frontend/.storybook/main.ts b/packages/frontend/.storybook/main.ts index 1035220a..4feb3df9 100644 --- a/packages/frontend/.storybook/main.ts +++ b/packages/frontend/.storybook/main.ts @@ -17,6 +17,7 @@ const config: StorybookConfig = { getAbsolutePath('@storybook/addon-essentials'), getAbsolutePath('@chromatic-com/storybook'), getAbsolutePath('@storybook/addon-interactions'), + getAbsolutePath('storybook-addon-remix-react-router'), ], framework: { name: getAbsolutePath('@storybook/react-vite'), diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 3f139699..3833e1ae 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -97,6 +97,7 @@ "postcss": "^8.4.38", "prettier": "^3.1.0", "storybook": "^8.0.10", + "storybook-addon-remix-react-router": "^3.0.0", "tailwindcss": "^3.4.3", "typescript": "^5.3.3", "vite": "^5.2.0" diff --git a/packages/frontend/src/components/projects/project/settings/RepoConnectedSection.tsx b/packages/frontend/src/components/projects/project/settings/RepoConnectedSection.tsx index bd9dbf77..a26c3789 100644 --- a/packages/frontend/src/components/projects/project/settings/RepoConnectedSection.tsx +++ b/packages/frontend/src/components/projects/project/settings/RepoConnectedSection.tsx @@ -1,12 +1,10 @@ import { useState } from 'react'; -import { - Button, - Typography, -} from '@snowballtools/material-tailwind-react-fork'; +import { Typography } from '@snowballtools/material-tailwind-react-fork'; -import { GitRepositoryDetails } from '../../../../types/types'; +import { GitRepositoryDetails } from '../../../../types'; import { DisconnectRepositoryDialog } from 'components/projects/Dialog/DisconnectRepositoryDialog'; +import { Button } from 'components/shared/Button'; const RepoConnectedSection = ({ linkedRepo, @@ -24,12 +22,8 @@ const RepoConnectedSection = ({ Connected just now
      -
      { const { @@ -17,32 +20,38 @@ const SetupDomain = () => { formState: { isValid }, watch, setValue, - } = useForm({ + } = useForm({ defaultValues: { domainName: '', isWWW: 'false', }, + mode: 'onChange', }); - const [domainStr, setDomainStr] = useState(''); + const [domainStr, setDomainStr] = useState(''); const navigate = useNavigate(); + const isWWWRadioOptions = [ + { label: domainStr, value: 'false' }, + { label: `www.${domainStr}`, value: 'true' }, + ]; useEffect(() => { const subscription = watch((value, { name }) => { if (name === 'domainName' && value.domainName) { const domainArr = value.domainName.split('www.'); - setDomainStr(domainArr.length > 1 ? domainArr[1] : domainArr[0]); + const cleanedDomain = + domainArr.length > 1 ? domainArr[1] : domainArr[0]; + setDomainStr(cleanedDomain); - if (value.domainName.startsWith('www.')) { - setValue('isWWW', 'true'); - } else { - setValue('isWWW', 'false'); - } + setValue( + 'isWWW', + value.domainName.startsWith('www.') ? 'true' : 'false', + ); } }); return () => subscription.unsubscribe(); - }, [watch]); + }, [watch, setValue]); return (
      { className="flex flex-col gap-6 w-full" >
      - Setup domain name - + + Setup domain name + +

      Add your domain and setup redirects - +

      -
      - Domain name - -
      + {isValid && ( -
      - Primary domain -
      - - -
      - - ^ For simplicity, we’ll redirect the{' '} - {watch('isWWW') === 'true' - ? `non-www variant to www.${domainStr}` - : `www variant to ${domainStr}`} - . Redirect preferences can be changed later - +
      + + Primary domain + + setValue('isWWW', value)} + value={watch('isWWW')} + /> +
      )} - +
      + +
      ); }; diff --git a/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx b/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx index 352856f6..145087ac 100644 --- a/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/WebhookCard.tsx @@ -1,8 +1,8 @@ import { useState } from 'react'; -import toast from 'react-hot-toast'; import { DeleteWebhookDialog } from 'components/projects/Dialog/DeleteWebhookDialog'; import { Button } from 'components/shared/Button'; +import { useToast } from 'components/shared/Toast'; interface WebhookCardProps { webhookUrl: string; @@ -10,6 +10,8 @@ interface WebhookCardProps { } const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => { + const { toast, dismiss } = useToast(); + const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); return (
      @@ -19,10 +21,15 @@ const WebhookCard = ({ webhookUrl, onDelete }: WebhookCardProps) => { size="sm" onClick={() => { navigator.clipboard.writeText(webhookUrl); - toast.success('Copied to clipboard'); + toast({ + id: 'webhook_copied', + title: 'Webhook copied to clipboard', + variant: 'success', + onDismiss: dismiss, + }); }} > - C + Copy
      ); diff --git a/packages/frontend/src/stories/Project/Settings/Config.stories.tsx b/packages/frontend/src/stories/Project/Settings/Config.stories.tsx new file mode 100644 index 00000000..de831625 --- /dev/null +++ b/packages/frontend/src/stories/Project/Settings/Config.stories.tsx @@ -0,0 +1,30 @@ +import { Meta, StoryObj } from '@storybook/react'; +import { + reactRouterParameters, + withRouter, +} from 'storybook-addon-remix-react-router'; + +import Config from '../../../pages/org-slug/projects/id/settings/domains/add/Config'; + +const meta: Meta = { + title: 'Project/Settings/Config', + component: Config, + tags: ['autodocs'], + decorators: [withRouter], + parameters: { + reactRouter: reactRouterParameters({ + location: { + pathParams: { userId: 'me' }, + }, + routing: { + path: '/snowball-tools-1/projects/6bb3bec2-d71b-4fc0-9e32-4767f68668f4/settings/domains/add/config', + }, + }), + }, +} as Meta; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/frontend/src/stories/Project/Settings/SetupDomains.stories.tsx b/packages/frontend/src/stories/Project/Settings/SetupDomains.stories.tsx new file mode 100644 index 00000000..560dbe74 --- /dev/null +++ b/packages/frontend/src/stories/Project/Settings/SetupDomains.stories.tsx @@ -0,0 +1,30 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import SetupDomain from 'components/projects/project/settings/SetupDomain'; +import { + reactRouterParameters, + withRouter, +} from 'storybook-addon-remix-react-router'; + +const meta: Meta = { + title: 'Project/Settings/SetupDomain', + component: SetupDomain, + tags: ['autodocs'], + decorators: [withRouter], + parameters: { + reactRouter: reactRouterParameters({ + location: { + pathParams: { userId: 'me' }, + }, + routing: { + path: '/snowball-tools-1/projects/6bb3bec2-d71b-4fc0-9e32-4767f68668f4/settings/domains/add', + }, + }), + }, +} as Meta; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/yarn.lock b/yarn.lock index ee490751..b79a3f6c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8530,6 +8530,11 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" +compare-versions@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.0.tgz#3f2131e3ae93577df111dba133e6db876ffe127a" + integrity sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg== + compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -14701,6 +14706,11 @@ react-hot-toast@^2.4.1: dependencies: goober "^2.1.10" +react-inspector@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.2.tgz#aa3028803550cb6dbd7344816d5c80bf39d07e9d" + integrity sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ== + react-is@18.1.0: version "18.1.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" @@ -15764,6 +15774,14 @@ store2@^2.14.2: resolved "https://registry.yarnpkg.com/store2/-/store2-2.14.3.tgz#24077d7ba110711864e4f691d2af941ec533deb5" integrity sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg== +storybook-addon-remix-react-router@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/storybook-addon-remix-react-router/-/storybook-addon-remix-react-router-3.0.0.tgz#e31e3b1ba51481de7c3daaac9f43f72e9c4f00bc" + integrity sha512-0D7VDVf6uX6vgegpCb3v1/TIADxRWomycyj0ZNuVjrCO6w6FwfZ9CHlCK7k9v6CB2uqKjPiaBwmT7odHyy1qYA== + dependencies: + compare-versions "^6.0.0" + react-inspector "6.0.2" + storybook@^8.0.10: version "8.0.10" resolved "https://registry.yarnpkg.com/storybook/-/storybook-8.0.10.tgz#397e7a95641421610ba4741bc63adbb380eed01f" From 2719b3e38531e2350c3235a1ad57996c05c1f3ae Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 13 May 2024 16:44:01 -0400 Subject: [PATCH 213/251] ProjectSettingContainer --- .../settings/ProjectSettingContainer.tsx | 32 +++++++++++++++++++ .../project/settings/ProjectSettingHeader.tsx | 30 +++++++++++++++++ .../projects/id/settings/Collaborators.tsx | 27 ++++++++-------- .../org-slug/projects/id/settings/Domains.tsx | 25 +++++++++------ .../id/settings/EnvironmentVariables.tsx | 8 ++--- .../org-slug/projects/id/settings/General.tsx | 10 +++--- .../org-slug/projects/id/settings/Git.tsx | 25 ++++++--------- .../id/settings/domains/add/Config.tsx | 23 ++++++------- .../id/settings/domains/add/index.tsx | 2 +- 9 files changed, 116 insertions(+), 66 deletions(-) create mode 100644 packages/frontend/src/components/projects/project/settings/ProjectSettingContainer.tsx create mode 100644 packages/frontend/src/components/projects/project/settings/ProjectSettingHeader.tsx diff --git a/packages/frontend/src/components/projects/project/settings/ProjectSettingContainer.tsx b/packages/frontend/src/components/projects/project/settings/ProjectSettingContainer.tsx new file mode 100644 index 00000000..4d2ae098 --- /dev/null +++ b/packages/frontend/src/components/projects/project/settings/ProjectSettingContainer.tsx @@ -0,0 +1,32 @@ +import { PropsWithChildren } from 'react'; + +import { ProjectSettingHeader } from './ProjectSettingHeader'; + +export interface ProjectSettingContainerProps extends PropsWithChildren { + headingText: string; + className?: string; + button?: React.ReactNode; + badge?: React.ReactNode; +} + +const ProjectSettingContainer: React.FC = ({ + headingText, + className, + button, + children, + badge, + ...props +}: ProjectSettingContainerProps) => { + return ( +
      + + {children} +
      + ); +}; + +export { ProjectSettingContainer }; diff --git a/packages/frontend/src/components/projects/project/settings/ProjectSettingHeader.tsx b/packages/frontend/src/components/projects/project/settings/ProjectSettingHeader.tsx new file mode 100644 index 00000000..f2229cc4 --- /dev/null +++ b/packages/frontend/src/components/projects/project/settings/ProjectSettingHeader.tsx @@ -0,0 +1,30 @@ +import { PropsWithChildren } from 'react'; + +import { Heading } from 'components/shared/Heading'; + +export interface ProjectSettingHeaderProps extends PropsWithChildren { + headingText: string; + button?: React.ReactNode; + badge?: React.ReactNode; +} + +const ProjectSettingHeader: React.FC = ({ + headingText, + button, + badge, + ...props +}) => { + return ( +
      +
      + + {headingText} + + {badge} +
      + {button ?? button} +
      + ); +}; + +export { ProjectSettingHeader }; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/Collaborators.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/Collaborators.tsx index 9a343a34..e28a56b5 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/Collaborators.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/Collaborators.tsx @@ -6,11 +6,11 @@ import MemberCard from 'components/projects/project/settings/MemberCard'; import AddMemberDialog from 'components/projects/project/settings/AddMemberDialog'; import { useGQLClient } from '../../../../../context/GQLClientContext'; import { OutletContextType } from '../../../../../types'; -import { useToast } from 'components/shared/Toast'; +import { useToast } from '../../../../../components/shared/Toast'; import { Button } from 'components/shared/Button'; import { PlusIcon } from 'components/shared/CustomIcon'; import { Badge } from 'components/shared/Badge'; -import { Heading } from 'components/shared/Heading'; +import { ProjectSettingContainer } from 'components/projects/project/settings/ProjectSettingContainer'; const FIRST_MEMBER_CARD = 0; @@ -105,16 +105,14 @@ const CollaboratorsTabPanel = () => { }, [project.id, fetchProjectMembers]); return ( -
      -
      -
      - - Collaborators - - - {projectMembers.length + 1} - -
      + + {projectMembers.length + 1} + + } + button={ -
      + } + > { open={addmemberDialogOpen} handleAddMember={addMemberHandler} /> -
      + ); }; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx index 11039d0e..0de97ac0 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/Domains.tsx @@ -7,8 +7,9 @@ import DomainCard from 'components/projects/project/settings/DomainCard'; import { useGQLClient } from '../../../../../context/GQLClientContext'; import { OutletContextType } from '../../../../../types'; import { useOctokit } from '../../../../../context/OctokitContext'; -import { Heading } from 'components/shared/Heading'; import { Button } from 'components/shared/Button'; +import { PlusIcon } from 'components/shared/CustomIcon'; +import { ProjectSettingContainer } from 'components/projects/project/settings/ProjectSettingContainer'; const Domains = () => { const client = useGQLClient(); @@ -57,16 +58,20 @@ const Domains = () => { }, []); return ( - <> -
      - - Domains - - -
      - + } + > {domains.map((domain) => { return ( { /> ); })} - + ); }; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx index 4f07241f..7975bd18 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/EnvironmentVariables.tsx @@ -16,6 +16,7 @@ import { Button } from 'components/shared/Button'; import { Checkbox } from 'components/shared/Checkbox'; import { PlusIcon } from 'components/shared/CustomIcon'; import { InlineNotification } from 'components/shared/InlineNotification'; +import { ProjectSettingContainer } from 'components/projects/project/settings/ProjectSettingContainer'; export const EnvironmentVariablesTabPanel = () => { const { id } = useParams(); @@ -130,10 +131,7 @@ export const EnvironmentVariablesTabPanel = () => { ); return ( -
      - - Environment variables - +

      A new deployment is required for your changes to take effect.

      @@ -236,6 +234,6 @@ export const EnvironmentVariablesTabPanel = () => { }} />
      -
      + ); }; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx index b6e31c9a..25302ae8 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/General.tsx @@ -12,6 +12,7 @@ import { Button } from 'components/shared/Button'; import { Select, SelectOption } from 'components/shared/Select'; import { TrashIcon, CopyUnfilledIcon } from 'components/shared/CustomIcon'; import { useToast } from 'components/shared/Toast'; +import { ProjectSettingContainer } from 'components/projects/project/settings/ProjectSettingContainer'; const GeneralTabPanel = () => { const client = useGQLClient(); @@ -109,7 +110,7 @@ const GeneralTabPanel = () => { }, [project]); return ( -
      +
      { const { updateProject } = await client.updateProject(project.id, { @@ -120,11 +121,8 @@ const GeneralTabPanel = () => { await onUpdate(); } })} - className="self-stretch space-y-3 px-2" + className="self-stretch space-y-3" > - - Project Info - { project={project} />
      -
      + ); }; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx index b753b7ad..325d0923 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/Git.tsx @@ -8,8 +8,9 @@ import { OutletContextType } from '../../../../../types'; import { Button } from 'components/shared/Button'; import { Input } from 'components/shared/Input'; import { Switch } from 'components/shared/Switch'; -import { Heading } from 'components/shared/Heading'; import { useToast } from 'components/shared/Toast'; +import { ProjectSettingContainer } from 'components/projects/project/settings/ProjectSettingContainer'; +import { ProjectSettingHeader } from 'components/projects/project/settings/ProjectSettingHeader'; type UpdateProdBranchValues = { prodBranch: string; @@ -134,12 +135,8 @@ const GitTabPanel = () => { }; return ( -
      -
      - - Git repository - - + +

      @@ -171,11 +168,9 @@ const GitTabPanel = () => { - - Production branch - +

      By default, each commit pushed to the{' '} {project.prodBranch} branch @@ -193,11 +188,9 @@ const GitTabPanel = () => { - - Deploy webhooks - +

      {' '} Webhooks configured to trigger when there is a change in a @@ -228,7 +221,7 @@ const GitTabPanel = () => { ); })}

      -
      + ); }; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx index e22abfa7..3bc0ae67 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/Config.tsx @@ -2,11 +2,11 @@ import toast from 'react-hot-toast'; import { useNavigate, useParams, useSearchParams } from 'react-router-dom'; import { useGQLClient } from '../../../../../../../context/GQLClientContext'; -import { Heading } from 'components/shared/Heading'; import { Table } from 'components/shared/Table'; import { Button } from 'components/shared/Button'; import { InlineNotification } from 'components/shared/InlineNotification'; import { ArrowRightCircleIcon } from 'components/shared/CustomIcon'; +import { ProjectSettingContainer } from 'components/projects/project/settings/ProjectSettingContainer'; const Config = () => { const { id, orgSlug } = useParams(); @@ -40,18 +40,13 @@ const Config = () => { // TODO: Figure out DNS Provider if possible and update appropriatly return ( -
      - + +

      + Add the following records to your domain.  + + Go to NameCheap + +

      @@ -90,7 +85,7 @@ const Config = () => { > Finish - + ); }; diff --git a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/index.tsx b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/index.tsx index e2b6708c..12afcc96 100644 --- a/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/index.tsx +++ b/packages/frontend/src/pages/org-slug/projects/id/settings/domains/add/index.tsx @@ -5,7 +5,7 @@ import { IconButton, } from '@snowballtools/material-tailwind-react-fork'; -import Stepper from '../../../../../../../components/Stepper'; +import Stepper from 'components/Stepper'; const AddDomain = () => { const { id, orgSlug } = useParams(); From 6ae04251d2dcdcdde36516493ebb00123331deb5 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 13 May 2024 17:28:37 -0400 Subject: [PATCH 214/251] cleanup dialogs --- .../project/settings/AddMemberDialog.tsx | 110 ++++++-------- .../projects/project/settings/DomainCard.tsx | 7 +- .../project/settings/EditDomainDialog.tsx | 137 ++++++++---------- .../settings/ProjectSettingContainer.tsx | 5 +- .../Project/Settings/General.stories.tsx | 30 ++++ 5 files changed, 146 insertions(+), 143 deletions(-) create mode 100644 packages/frontend/src/stories/Project/Settings/General.stories.tsx diff --git a/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx b/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx index 3f8372c3..6c85705b 100644 --- a/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx +++ b/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx @@ -2,16 +2,12 @@ import { useCallback } from 'react'; import { useForm } from 'react-hook-form'; import { AddProjectMemberInput, Permission } from 'gql-client'; -import { - Button, - Dialog, - DialogHeader, - DialogBody, - DialogFooter, - Input, - Typography, - Checkbox, -} from '@snowballtools/material-tailwind-react-fork'; +import { Typography } from '@snowballtools/material-tailwind-react-fork'; + +import { Button } from 'components/shared/Button'; +import { Modal } from 'components/shared/Modal'; +import { Input } from 'components/shared/Input'; +import { Checkbox } from 'components/shared/Checkbox'; interface AddMemberDialogProp { open: boolean; @@ -61,59 +57,47 @@ const AddMemberDialog = ({ }, []); return ( - - -
      Add member
      - -
      - - - - We will send an invitation link to this email address. - - Email address - - Permissions - - You can change this later if required. - - - - - - - - - -
      + + + Add member +
      + + + We will send an invitation link to this email address. + + Email address + + Permissions + + You can change this later if required. + + + + + + + + + +
      +
      ); }; diff --git a/packages/frontend/src/components/projects/project/settings/DomainCard.tsx b/packages/frontend/src/components/projects/project/settings/DomainCard.tsx index 01de9d01..95247075 100644 --- a/packages/frontend/src/components/projects/project/settings/DomainCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/DomainCard.tsx @@ -115,13 +115,13 @@ const DomainCard = ({ setEditDialogOpen((preVal) => !preVal); }} > - ^ Edit domain + Edit Domain setDeleteDialogOpen((preVal) => !preVal)} > - ^ Delete domain + Delete domain @@ -141,7 +141,7 @@ const DomainCard = ({ Production {domain.status === DomainStatus.Pending && ( - + {refreshStatus === RefreshStatus.IDLE ? ( ^ Add these records to your domain and refresh to check @@ -152,7 +152,6 @@ const DomainCard = ({ ) : (
      -
      ^
      Failed to verify records. DNS propagation can take up to 48 hours. Please ensure you added the correct records and refresh. diff --git a/packages/frontend/src/components/projects/project/settings/EditDomainDialog.tsx b/packages/frontend/src/components/projects/project/settings/EditDomainDialog.tsx index 113b10aa..44a285b8 100644 --- a/packages/frontend/src/components/projects/project/settings/EditDomainDialog.tsx +++ b/packages/frontend/src/components/projects/project/settings/EditDomainDialog.tsx @@ -4,18 +4,15 @@ import toast from 'react-hot-toast'; import { Domain } from 'gql-client'; import { - Button, - Dialog, - DialogHeader, - DialogBody, - DialogFooter, - Input, Typography, Select, Option, } from '@snowballtools/material-tailwind-react-fork'; import { useGQLClient } from '../../../../context/GQLClientContext'; +import { Modal } from 'components/shared/Modal'; +import { Button } from 'components/shared/Button'; +import { Input } from 'components/shared/Input'; const DEFAULT_REDIRECT_OPTIONS = ['none']; @@ -122,77 +119,67 @@ const EditDomainDialog = ({ }, [domain]); return ( - - -
      Edit domain
      - -
      -
      - - Domain name - - Redirect to - ( - + + + Edit domain + + + Domain name + + Redirect to + ( + + )} + /> + {isDisableDropdown && ( +
      +
      ^
      + + Domain “ + {domainRedirectedFrom ? domainRedirectedFrom.name : ''}” + redirects to this domain so you can not redirect this doman + further. + +
      )} - /> - {isDisableDropdown && ( -
      -
      ^
      - - Domain “{domainRedirectedFrom ? domainRedirectedFrom.name : ''}” - redirects to this domain so you can not redirect this doman - further. + Git branch + + Boolean(branches.length) ? branches.includes(value) : true, + })} + disabled={ + !Boolean(branches.length) || + watch('redirectedTo') !== DEFAULT_REDIRECT_OPTIONS[0] + } + /> + {!isValid && ( + + We couldn't find this branch in the connected Git + repository. -
      - )} - Git branch - - Boolean(branches.length) ? branches.includes(value) : true, - })} - disabled={ - !Boolean(branches.length) || - watch('redirectedTo') !== DEFAULT_REDIRECT_OPTIONS[0] - } - /> - {!isValid && ( - - We couldn't find this branch in the connected Git repository. - - )} -
      - - - - - -
      + )} + + + + + + + + ); }; diff --git a/packages/frontend/src/components/projects/project/settings/ProjectSettingContainer.tsx b/packages/frontend/src/components/projects/project/settings/ProjectSettingContainer.tsx index 4d2ae098..f48675b5 100644 --- a/packages/frontend/src/components/projects/project/settings/ProjectSettingContainer.tsx +++ b/packages/frontend/src/components/projects/project/settings/ProjectSettingContainer.tsx @@ -18,7 +18,10 @@ const ProjectSettingContainer: React.FC = ({ ...props }: ProjectSettingContainerProps) => { return ( -
      +
      = { + title: 'Project/Settings/AddEnvironmentVariableRow', + component: AddEnvironmentVariableRow, + tags: ['autodocs'], + decorators: [withRouter], + parameters: { + reactRouter: reactRouterParameters({ + location: { + pathParams: { userId: 'me' }, + }, + routing: { + path: '/snowball-tools-1/projects/6bb3bec2-d71b-4fc0-9e32-4767f68668f4/settings', + }, + }), + }, +} as Meta; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; From 57601e6b4be34b8c943308b7e120e4d6083be034 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Mon, 13 May 2024 17:35:19 -0400 Subject: [PATCH 215/251] env var needs fixing --- .../project/settings/AddEnvironmentVariableRow.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx index 31d9e5bb..5775b9f4 100644 --- a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx +++ b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx @@ -19,10 +19,10 @@ const AddEnvironmentVariableRow = ({ isDeleteDisabled, }: AddEnvironmentVariableRowProps) => { return ( -
      +
      @@ -38,7 +38,7 @@ const AddEnvironmentVariableRow = ({
      {children}
      ; +} = ({ children }) => { + const theme = tableTheme(); + return {children}
      ; }; -const Header: React.FC = ({ children, variant }) => { - const theme = useTheme(variant); - return {children}; +const Header: React.FC = ({ children }) => { + const theme = tableTheme(); + return {children}; }; const Body: React.FC = ({ children }) => { - return {children}; + const theme = tableTheme(); + return {children}; }; -const Row: React.FC = ({ children, variant }) => { - const theme = useTheme(variant); - return {children}; +const Row: React.FC = ({ children }) => { + const theme = tableTheme(); + return {children}; }; -const ColumnHeaderCell: React.FC = ({ - children, - variant, -}) => { - const theme = useTheme(variant); - return {children}; +const ColumnHeaderCell: React.FC = ({ children }) => { + const theme = tableTheme(); + return {children}; }; -const RowHeaderCell: React.FC = ({ - children, - variant, -}) => { - const theme = useTheme(variant); - return {children}; +const RowHeaderCell: React.FC = ({ children }) => { + const theme = tableTheme(); + return {children}; }; -const Cell: React.FC = ({ children, variant }) => { - const theme = useTheme(variant); - return {children}; +const Cell: React.FC = ({ children }) => { + const theme = tableTheme(); + return {children}; }; Table.Header = Header; From 3668a8edf73dce73613eaa9480a32f4bfd75ba86 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Tue, 14 May 2024 18:53:04 -0400 Subject: [PATCH 233/251] [19/n][Storybook] Tag with typed themes --- .../src/stories/Components/Tag.stories.tsx | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/packages/frontend/src/stories/Components/Tag.stories.tsx b/packages/frontend/src/stories/Components/Tag.stories.tsx index e65b31fd..79d0ea65 100644 --- a/packages/frontend/src/stories/Components/Tag.stories.tsx +++ b/packages/frontend/src/stories/Components/Tag.stories.tsx @@ -1,7 +1,17 @@ import { StoryObj, Meta } from '@storybook/react'; -import { Tag } from 'components/shared/Tag'; -import { CheckIcon, PlusIcon } from 'components/shared/CustomIcon'; +import { Tag, TagTheme } from 'components/shared/Tag'; +import { PlusIcon } from 'components/shared/CustomIcon'; + +const tagTypes: TagTheme['type'][] = [ + 'attention', + 'negative', + 'positive', + 'emphasized', + 'neutral', +]; +const tagStyles: TagTheme['style'][] = ['default', 'minimal']; +const tagSizes: TagTheme['size'][] = ['xs', 'sm']; const meta: Meta = { title: 'Components/Tag', @@ -12,7 +22,7 @@ const meta: Meta = { }, argTypes: { children: { - control: 'text', + control: 'object', }, leftIcon: { control: 'object', @@ -22,15 +32,15 @@ const meta: Meta = { }, type: { control: 'select', - options: ['attention', 'negative', 'positive', 'emphasized', 'neutral'], + options: tagTypes, }, style: { control: 'select', - options: ['default', 'outlined'], + options: tagStyles, }, size: { control: 'select', - options: ['xs', 'sm'], + options: tagSizes, }, }, }; @@ -40,18 +50,6 @@ export default meta; type Story = StoryObj; export const Default: Story = { - render: ({ children, leftIcon, rightIcon, type, style, size, ...arg }) => ( - - {children} - - ), args: { children: 'Tag', style: 'default', @@ -61,15 +59,13 @@ export const Default: Story = { }; export const WithLeftIcon: Story = { - render: ({ ...arg }) => , args: { ...Default.args, - leftIcon: , + leftIcon: , }, }; export const WithRightIcon: Story = { - render: ({ ...arg }) => , args: { ...Default.args, rightIcon: , From 7c8e9f24486fbf8c40d35bc724dafd1619092440 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Tue, 14 May 2024 18:53:50 -0400 Subject: [PATCH 234/251] Tabs component export TabsTheme --- packages/frontend/src/components/shared/Tabs/Tabs.theme.ts | 2 ++ packages/frontend/src/components/shared/Tabs/index.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/frontend/src/components/shared/Tabs/Tabs.theme.ts b/packages/frontend/src/components/shared/Tabs/Tabs.theme.ts index 7fe66671..31b12cef 100644 --- a/packages/frontend/src/components/shared/Tabs/Tabs.theme.ts +++ b/packages/frontend/src/components/shared/Tabs/Tabs.theme.ts @@ -92,3 +92,5 @@ export const tabsTheme = tv({ fillWidth: false, }, }); + +export type TabsTheme = VariantProps; diff --git a/packages/frontend/src/components/shared/Tabs/index.ts b/packages/frontend/src/components/shared/Tabs/index.ts index a28a031c..b1aada61 100644 --- a/packages/frontend/src/components/shared/Tabs/index.ts +++ b/packages/frontend/src/components/shared/Tabs/index.ts @@ -1,4 +1,5 @@ export * from './Tabs'; +export * from './Tabs.theme'; export { default as TabsList } from './TabsList'; export { default as TabsTrigger } from './TabsTrigger'; export { default as TabsContent } from './TabsContent'; From 050f4047763793e324f5bef6596e0e7e26ba3e8f Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Tue, 14 May 2024 19:01:44 -0400 Subject: [PATCH 235/251] [19/n][Storybook] CloudyFlow --- .../frontend/src/components/CloudyFlow.tsx | 1 + .../stories/Components/CloudyFlow.stories.tsx | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 packages/frontend/src/stories/Components/CloudyFlow.stories.tsx diff --git a/packages/frontend/src/components/CloudyFlow.tsx b/packages/frontend/src/components/CloudyFlow.tsx index fb34990a..479779f8 100644 --- a/packages/frontend/src/components/CloudyFlow.tsx +++ b/packages/frontend/src/components/CloudyFlow.tsx @@ -1,4 +1,5 @@ import React from 'react'; + type Props = React.PropsWithChildren<{ className?: string; snowZIndex?: number; diff --git a/packages/frontend/src/stories/Components/CloudyFlow.stories.tsx b/packages/frontend/src/stories/Components/CloudyFlow.stories.tsx new file mode 100644 index 00000000..d3e90cbd --- /dev/null +++ b/packages/frontend/src/stories/Components/CloudyFlow.stories.tsx @@ -0,0 +1,27 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import { CloudyFlow } from 'components/CloudyFlow'; + +const meta: Meta = { + title: 'Components/CloudyFlow', + component: CloudyFlow, + tags: ['autodocs'], + argTypes: { + className: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ ...arg }) => { + return ; + }, + args: { + className: 'flex flex-col min-h-screen', + }, +}; From 0fb1127b96528c212ee13fb9bae976f17f3ad086 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Tue, 14 May 2024 19:09:58 -0400 Subject: [PATCH 236/251] [20/n][Storybook] SearchBar --- .../src/stories/Components/SearchBar.stories.tsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 packages/frontend/src/stories/Components/SearchBar.stories.tsx diff --git a/packages/frontend/src/stories/Components/SearchBar.stories.tsx b/packages/frontend/src/stories/Components/SearchBar.stories.tsx new file mode 100644 index 00000000..15cb0034 --- /dev/null +++ b/packages/frontend/src/stories/Components/SearchBar.stories.tsx @@ -0,0 +1,15 @@ +import { StoryObj, Meta } from '@storybook/react'; + +import SearchBar from 'components/SearchBar'; + +const meta: Meta = { + title: 'Components/SearchBar', + component: SearchBar, + tags: ['autodocs'], +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; From ad69ebe4a0081ca7fede7c740ecd32849bc51a5d Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Tue, 14 May 2024 19:10:30 -0400 Subject: [PATCH 237/251] [21/n][Storybook] AuthPage --- .../stories/Pages/Auth/AuthPage.stories.tsx | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 packages/frontend/src/stories/Pages/Auth/AuthPage.stories.tsx diff --git a/packages/frontend/src/stories/Pages/Auth/AuthPage.stories.tsx b/packages/frontend/src/stories/Pages/Auth/AuthPage.stories.tsx new file mode 100644 index 00000000..4cf8eb76 --- /dev/null +++ b/packages/frontend/src/stories/Pages/Auth/AuthPage.stories.tsx @@ -0,0 +1,45 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import { + reactRouterParameters, + withRouter, +} from 'storybook-addon-remix-react-router'; + +import AuthPage from 'pages/AuthPage'; + +const meta: Meta = { + title: 'Pages/Auth/AuthPage', + component: AuthPage, + tags: ['autodocs'], +}; + +export default meta; + +type Story = StoryObj; + +export const Login: Story = { + decorators: [withRouter], + parameters: { + reactRouter: reactRouterParameters({ + location: { + pathParams: { userId: 'me' }, + }, + routing: { + path: '/login', + }, + }), + }, +}; + +export const SignUp: Story = { + decorators: [withRouter], + parameters: { + reactRouter: reactRouterParameters({ + location: { + pathParams: { userId: 'me' }, + }, + routing: { + path: '/signup', + }, + }), + }, +}; From 04b6a84440a047ff556c4e84016865803c3641b8 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Tue, 14 May 2024 20:07:02 -0400 Subject: [PATCH 238/251] env var fix --- .../projects/project/settings/AddEnvironmentVariableRow.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx index 5775b9f4..b29b4aa4 100644 --- a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx +++ b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx @@ -22,7 +22,7 @@ const AddEnvironmentVariableRow = ({
      From e12c94e08733ec77aeb59ed4926b61be14fc891e Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 15 May 2024 17:07:13 -0400 Subject: [PATCH 239/251] AddMemberDialog remove footer styling from old component (#63) ### TL;DR This PR involves a minor change on the AddMemberDialog component style. ### What changed? The 'justify-start' class was removed from the Modal.Footer in the AddMemberDialog.tsx. ### How to test? Check the AddMemberDialog on the project settings page to make sure the style changes reflect accurately. ### Why make this change? It's not specified the specific reason for the change, However, it's aimed towards improving the component's layout and presentation in the project settings page. --- --- .../components/projects/project/settings/AddMemberDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx b/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx index 6c85705b..66fe97e5 100644 --- a/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx +++ b/packages/frontend/src/components/projects/project/settings/AddMemberDialog.tsx @@ -87,7 +87,7 @@ const AddMemberDialog = ({ color="blue" /> - + From 583c0b9d26aebc9beeeab89b21d158ba9b788273 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Wed, 15 May 2024 17:18:32 -0400 Subject: [PATCH 240/251] MemberCard for owner disabled (#66) * AddMemberDialog remove footer styling from old component * MemberCard for owner disabled (#64) --- .../projects/project/settings/MemberCard.tsx | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/frontend/src/components/projects/project/settings/MemberCard.tsx b/packages/frontend/src/components/projects/project/settings/MemberCard.tsx index 8a1f8e0c..d31d47f6 100644 --- a/packages/frontend/src/components/projects/project/settings/MemberCard.tsx +++ b/packages/frontend/src/components/projects/project/settings/MemberCard.tsx @@ -8,6 +8,7 @@ import { Button } from 'components/shared/Button'; import { Permission, User } from 'gql-client'; import { formatAddress } from 'utils/format'; import { Tag } from 'components/shared/Tag'; +import { Input } from 'components/shared/Input'; const PERMISSION_OPTIONS: SelectOption[] = [ { @@ -79,9 +80,8 @@ const MemberCard = ({ return (
      -
      ^
      {member.name && ( @@ -96,14 +96,19 @@ const MemberCard = ({
      {!isPending ? ( - + ) : ( + value === project.name, - })} - /> - - ^ Deleting your project is irreversible. - - - - - - - - + + + Delete project? +
      + + value === project.name, + })} + helperText="Deleting your project is irreversible." + /> + + + + + +
      +
      +
      ); }; From c72cbce61502ab3c7d7bc221b3a2f7d66fca3603 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Thu, 16 May 2024 20:29:35 -0400 Subject: [PATCH 246/251] AddEnvironmentVariableRow padding (#71) --- .../settings/AddEnvironmentVariableRow.tsx | 15 ++++----------- .../settings/EditEnvironmentVariableRow.tsx | 2 +- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx index b29b4aa4..68c52d64 100644 --- a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx +++ b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx @@ -19,7 +19,7 @@ const AddEnvironmentVariableRow = ({ isDeleteDisabled, }: AddEnvironmentVariableRowProps) => { return ( -
      +
      -
      - -
      +
      ); }; diff --git a/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx b/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx index 95661806..fe93e7ad 100644 --- a/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx +++ b/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx @@ -86,7 +86,7 @@ const EditEnvironmentVariableRow = ({ return ( <> -
      +
      Key From 17cf878168d478c69703435c1be1aa1fc6f354f7 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Thu, 16 May 2024 20:33:33 -0400 Subject: [PATCH 247/251] [1/n][Storybook] Settings (#72) --- packages/frontend/package.json | 2 +- .../frontend/src/stories/MockStoriesData.ts | 65 +++++++++++++++++++ ... => AddEnvironmentVariableRow.stories.tsx} | 37 ++++++++++- .../Settings/AddMemberDialog.stories.tsx | 31 +++++++++ .../Settings/DeleteProjectDialog.stories.tsx | 50 ++++++++++++++ .../DisplayEnvironmentVariables.stories.tsx | 29 +++++++++ 6 files changed, 212 insertions(+), 2 deletions(-) create mode 100644 packages/frontend/src/stories/MockStoriesData.ts rename packages/frontend/src/stories/Project/Settings/{General.stories.tsx => AddEnvironmentVariableRow.stories.tsx} (63%) create mode 100644 packages/frontend/src/stories/Project/Settings/AddMemberDialog.stories.tsx create mode 100644 packages/frontend/src/stories/Project/Settings/DeleteProjectDialog.stories.tsx create mode 100644 packages/frontend/src/stories/Project/Settings/DisplayEnvironmentVariables.stories.tsx diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 0f741c0c..0ae20f9b 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -102,4 +102,4 @@ "typescript": "^5.3.3", "vite": "^5.2.0" } -} \ No newline at end of file +} diff --git a/packages/frontend/src/stories/MockStoriesData.ts b/packages/frontend/src/stories/MockStoriesData.ts new file mode 100644 index 00000000..ce8e90c6 --- /dev/null +++ b/packages/frontend/src/stories/MockStoriesData.ts @@ -0,0 +1,65 @@ +import { + User, + Project, + Organization, + Role, + OrganizationMember, + ProjectMember, +} from 'gql-client'; + +export const user: User = { + id: '1', + email: 'helloworld@helloworld.com', + isVerified: true, + createdAt: '2021-08-01T00:00:00.000Z', + name: 'Hello World', + updatedAt: '2021-08-01T00:00:00.000Z', + gitHubToken: 'GitHub Token', +}; + +const organizationMember: OrganizationMember = { + id: '1', + member: user, + role: Role.Owner, + createdAt: '2021-08-01T00:00:00.000Z', + updatedAt: '2021-08-01T00:00:00.000Z', +}; + +export const organization: Organization = { + id: '1', + name: 'Organization', + slug: 'organization', + createdAt: '2021-08-01T00:00:00.000Z', + updatedAt: '2021-08-01T00:00:00.000Z', + members: [organizationMember], + projects: [], +}; + +const member: ProjectMember = { + id: '1', + member: user, + permissions: [], + isPending: false, + createdAt: '2021-08-01T00:00:00.000Z', + updatedAt: '2021-08-01T00:00:00.000Z', +}; + +export const project: Project = { + id: '1', + name: 'Project', + owner: user, + deployments: [], + repository: 'Repository', + prodBranch: 'Prod Branch', + description: 'Description', + createdAt: '2021-08-01T00:00:00.000Z', + updatedAt: '2021-08-01T00:00:00.000Z', + framework: 'NextJS', + environmentVariables: [], + organization: organization, + template: 'Template', + members: [member], + webhooks: ['beepboop'], + icon: 'Icon', + subDomain: 'SubDomain', +}; diff --git a/packages/frontend/src/stories/Project/Settings/General.stories.tsx b/packages/frontend/src/stories/Project/Settings/AddEnvironmentVariableRow.stories.tsx similarity index 63% rename from packages/frontend/src/stories/Project/Settings/General.stories.tsx rename to packages/frontend/src/stories/Project/Settings/AddEnvironmentVariableRow.stories.tsx index 9851e20b..20fef69d 100644 --- a/packages/frontend/src/stories/Project/Settings/General.stories.tsx +++ b/packages/frontend/src/stories/Project/Settings/AddEnvironmentVariableRow.stories.tsx @@ -21,10 +21,45 @@ const meta: Meta = { }, }), }, -} as Meta; + argTypes: { + onDelete: { + action: 'delete', + }, + register: { + action: 'register', + }, + index: { + type: 'number', + }, + isDeleteDisabled: { + type: 'boolean', + }, + }, + args: { + isDeleteDisabled: false, + }, +}; export default meta; type Story = StoryObj; export const Default: Story = {}; + +export const DisabledDelete: Story = { + args: { + isDeleteDisabled: true, + }, +}; + +export const First: Story = { + args: { + index: 0, + }, +}; + +export const Second: Story = { + args: { + index: 1, + }, +}; diff --git a/packages/frontend/src/stories/Project/Settings/AddMemberDialog.stories.tsx b/packages/frontend/src/stories/Project/Settings/AddMemberDialog.stories.tsx new file mode 100644 index 00000000..8c7a55c8 --- /dev/null +++ b/packages/frontend/src/stories/Project/Settings/AddMemberDialog.stories.tsx @@ -0,0 +1,31 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import AddMemberDialog from 'components/projects/project/settings/AddMemberDialog'; + +const meta: Meta = { + title: 'Project/Settings/AddMemberDialog', + component: AddMemberDialog, + tags: ['autodocs'], + argTypes: { + open: { + control: { + type: 'boolean', + }, + }, + handleOpen: { + action: 'open', + }, + handleAddMember: { + action: 'addMember', + }, + }, + args: { + open: true, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/frontend/src/stories/Project/Settings/DeleteProjectDialog.stories.tsx b/packages/frontend/src/stories/Project/Settings/DeleteProjectDialog.stories.tsx new file mode 100644 index 00000000..025a61dd --- /dev/null +++ b/packages/frontend/src/stories/Project/Settings/DeleteProjectDialog.stories.tsx @@ -0,0 +1,50 @@ +import { Meta, StoryObj } from '@storybook/react'; +import { + reactRouterParameters, + withRouter, +} from 'storybook-addon-remix-react-router'; + +import DeleteProjectDialog from 'components/projects/project/settings/DeleteProjectDialog'; +import { project } from '../../MockStoriesData'; + +const meta: Meta = { + title: 'Project/Settings/DeleteProjectDialog', + component: DeleteProjectDialog, + tags: ['autodocs'], + decorators: [withRouter], + parameters: { + reactRouter: reactRouterParameters({ + location: { + pathParams: { userId: 'me' }, + }, + routing: { + path: '/snowball-tools-1/projects/6bb3bec2-d71b-4fc0-9e32-4767f68668f4/settings/domains/add/config', + }, + }), + }, + argTypes: { + open: { + control: { + type: 'boolean', + }, + }, + handleOpen: { + action: 'open', + }, + project: { + control: { + type: 'object', + }, + }, + }, + args: { + open: true, + project: project, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/frontend/src/stories/Project/Settings/DisplayEnvironmentVariables.stories.tsx b/packages/frontend/src/stories/Project/Settings/DisplayEnvironmentVariables.stories.tsx new file mode 100644 index 00000000..3548a35b --- /dev/null +++ b/packages/frontend/src/stories/Project/Settings/DisplayEnvironmentVariables.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import DisplayEnvironmentVariables from 'components/projects/project/settings/DisplayEnvironmentVariables'; + +const meta: Meta = { + title: 'Project/Settings/DisplayEnvironmentVariables', + component: DisplayEnvironmentVariables, + argTypes: { + environment: { + control: { + type: 'object', + }, + }, + variables: { + control: { + type: 'object', + }, + }, + onUpdate: { + action: 'update', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; From 41666568f523bba3b4c0427683aae5b7534de501 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Thu, 16 May 2024 20:36:31 -0400 Subject: [PATCH 248/251] AddEnvironmentVariableRow button alignment to bottom (#73) --- .../projects/project/settings/AddEnvironmentVariableRow.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx index 68c52d64..016e852b 100644 --- a/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx +++ b/packages/frontend/src/components/projects/project/settings/AddEnvironmentVariableRow.tsx @@ -19,7 +19,7 @@ const AddEnvironmentVariableRow = ({ isDeleteDisabled, }: AddEnvironmentVariableRowProps) => { return ( -
      +
      Date: Thu, 16 May 2024 20:39:42 -0400 Subject: [PATCH 249/251] EditEnvironmentVariableRow cleanup (#74) --- .../settings/EditEnvironmentVariableRow.tsx | 174 ++++++++++-------- .../shared/CustomIcon/EditBigIcon.tsx | 26 +++ .../shared/CustomIcon/HideEyeOffIcon.tsx | 18 ++ .../shared/CustomIcon/ShowEyeIcon.tsx | 18 ++ .../src/components/shared/CustomIcon/index.ts | 3 + .../Components/Icons/EditBigIcon.stories.tsx | 29 +++ .../Icons/HideEyeOffIcon.stories.tsx | 29 +++ .../Components/Icons/ShowEyeIcon.stories.tsx | 29 +++ .../frontend/src/stories/MockStoriesData.ts | 59 +++++- .../EditEnvironmentVariableRow.stories.tsx | 28 +++ 10 files changed, 328 insertions(+), 85 deletions(-) create mode 100644 packages/frontend/src/components/shared/CustomIcon/EditBigIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/HideEyeOffIcon.tsx create mode 100644 packages/frontend/src/components/shared/CustomIcon/ShowEyeIcon.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/EditBigIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/HideEyeOffIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Components/Icons/ShowEyeIcon.stories.tsx create mode 100644 packages/frontend/src/stories/Project/Settings/EditEnvironmentVariableRow.stories.tsx diff --git a/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx b/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx index fe93e7ad..7f7a519e 100644 --- a/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx +++ b/packages/frontend/src/components/projects/project/settings/EditEnvironmentVariableRow.tsx @@ -1,16 +1,20 @@ import { useCallback, useEffect, useState } from 'react'; import { useForm } from 'react-hook-form'; -import toast from 'react-hot-toast'; -import { EnvironmentVariable } from 'gql-client'; - -import { - IconButton, - Typography, -} from '@snowballtools/material-tailwind-react-fork'; import { useGQLClient } from 'context/GQLClientContext'; import { DeleteVariableDialog } from 'components/projects/Dialog/DeleteVariableDialog'; import { Input } from 'components/shared/Input'; +import { Button } from 'components/shared/Button'; +import { + CheckRoundFilledIcon, + CrossIcon, + EditBigIcon, + HideEyeOffIcon, + ShowEyeIcon, + TrashIcon, +} from 'components/shared/CustomIcon'; +import { EnvironmentVariable } from 'gql-client'; +import { useToast } from 'components/shared/Toast'; const ShowPasswordIcon = ({ handler, @@ -26,19 +30,24 @@ const ShowPasswordIcon = ({ }} className="cursor-pointer" > - {isVisible ? '-' : '+'} + {isVisible ? : } ); }; +export interface EditEnvironmentVariableRowProps { + variable: EnvironmentVariable; + onUpdate: () => Promise; + isFirstVariable?: boolean; +} + const EditEnvironmentVariableRow = ({ variable, onUpdate, -}: { - variable: EnvironmentVariable; - onUpdate: () => Promise; -}) => { + isFirstVariable = false, +}: EditEnvironmentVariableRowProps) => { const client = useGQLClient(); + const { toast, dismiss } = useToast(); const { handleSubmit, register, reset } = useForm({ defaultValues: { @@ -58,9 +67,19 @@ const EditEnvironmentVariableRow = ({ if (isEnvironmentVariableRemoved) { await onUpdate(); setDeleteDialogOpen((preVal) => !preVal); - toast.success('Variable deleted'); + toast({ + id: 'variable_deleted', + title: 'Variable deleted', + variant: 'success', + onDismiss: dismiss, + }); } else { - toast.error('Variable not deleted'); + toast({ + id: 'variable_not_deleted', + title: 'Variable not deleted', + variant: 'error', + onDismiss: dismiss, + }); } }, [variable, onUpdate]); @@ -71,10 +90,21 @@ const EditEnvironmentVariableRow = ({ if (isEnvironmentVariableUpdated) { await onUpdate(); - toast.success('Variable edited'); + toast({ + id: 'variable_updated', + title: 'Variable edited', + variant: 'success', + onDismiss: dismiss, + }); + setEdit((preVal) => !preVal); } else { - toast.error('Variable not edited'); + toast({ + id: 'variable_not_updated', + title: 'Variable not edited', + variant: 'error', + onDismiss: dismiss, + }); } }, [variable, onUpdate], @@ -86,71 +116,55 @@ const EditEnvironmentVariableRow = ({ return ( <> -
      -
      - Key - -
      -
      - Value - { - setShowPassword((prevShowPassword) => !prevShowPassword); - }} - isVisible={showPassword} - /> +
      + + { + setShowPassword((prevShowPassword) => !prevShowPassword); + }} + isVisible={showPassword || edit} + /> + } + {...register(`value`)} + /> + +
      - {edit ? ( - <> -
      - - {'S'} - -
      -
      - { - reset(); - setEdit((preVal) => !preVal); - }} - > - {'C'} - -
      - - ) : ( - <> -
      - { - setEdit((preVal) => !preVal); - }} - > - {'E'} - -
      -
      - setDeleteDialogOpen((preVal) => !preVal)} - > - {'D'} - -
      - - )} + }} + > + {edit ? : } +
      setDeleteDialogOpen((preVal) => !preVal)} diff --git a/packages/frontend/src/components/shared/CustomIcon/EditBigIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/EditBigIcon.tsx new file mode 100644 index 00000000..0e69acef --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/EditBigIcon.tsx @@ -0,0 +1,26 @@ +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const EditBigIcon: React.FC = (props) => { + return ( + + + + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/HideEyeOffIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/HideEyeOffIcon.tsx new file mode 100644 index 00000000..dd95373f --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/HideEyeOffIcon.tsx @@ -0,0 +1,18 @@ +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const HideEyeOffIcon: React.FC = (props) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/ShowEyeIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/ShowEyeIcon.tsx new file mode 100644 index 00000000..17aa1744 --- /dev/null +++ b/packages/frontend/src/components/shared/CustomIcon/ShowEyeIcon.tsx @@ -0,0 +1,18 @@ +import { CustomIcon, CustomIconProps } from './CustomIcon'; + +export const ShowEyeIcon: React.FC = (props) => { + return ( + + + + ); +}; diff --git a/packages/frontend/src/components/shared/CustomIcon/index.ts b/packages/frontend/src/components/shared/CustomIcon/index.ts index cfa0f2dc..2a7feddf 100644 --- a/packages/frontend/src/components/shared/CustomIcon/index.ts +++ b/packages/frontend/src/components/shared/CustomIcon/index.ts @@ -73,6 +73,9 @@ export * from './SwitchIcon'; export * from './CollaboratorsIcon'; export * from './ChevronUpSmallIcon'; export * from './ChevronDownSmallIcon'; +export * from './EditBigIcon'; +export * from './ShowEyeIcon'; +export * from './HideEyeOffIcon'; // Templates export * from './templates'; diff --git a/packages/frontend/src/stories/Components/Icons/EditBigIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/EditBigIcon.stories.tsx new file mode 100644 index 00000000..d91df2b9 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/EditBigIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { EditBigIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/EditBigIcon', + component: EditBigIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/HideEyeOffIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/HideEyeOffIcon.stories.tsx new file mode 100644 index 00000000..ba8e2817 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/HideEyeOffIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { HideEyeOffIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/HideEyeOffIcon', + component: HideEyeOffIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/Components/Icons/ShowEyeIcon.stories.tsx b/packages/frontend/src/stories/Components/Icons/ShowEyeIcon.stories.tsx new file mode 100644 index 00000000..dbe81967 --- /dev/null +++ b/packages/frontend/src/stories/Components/Icons/ShowEyeIcon.stories.tsx @@ -0,0 +1,29 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { ShowEyeIcon } from 'components/shared/CustomIcon'; + +const meta: Meta = { + title: 'Icons/ShowEyeIcon', + component: ShowEyeIcon, + tags: ['autodocs'], + argTypes: { + size: { + control: 'text', + }, + name: { + control: 'text', + }, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: ({ size, name }) => , + args: { + size: '24px', + name: 'plus', + }, +}; diff --git a/packages/frontend/src/stories/MockStoriesData.ts b/packages/frontend/src/stories/MockStoriesData.ts index ce8e90c6..c3e3ac25 100644 --- a/packages/frontend/src/stories/MockStoriesData.ts +++ b/packages/frontend/src/stories/MockStoriesData.ts @@ -5,6 +5,12 @@ import { Role, OrganizationMember, ProjectMember, + EnvironmentVariable, + Deployment, + DeploymentStatus, + DomainStatus, + Domain, + Environment, } from 'gql-client'; export const user: User = { @@ -17,7 +23,7 @@ export const user: User = { gitHubToken: 'GitHub Token', }; -const organizationMember: OrganizationMember = { +export const organizationMember: OrganizationMember = { id: '1', member: user, role: Role.Owner, @@ -35,7 +41,7 @@ export const organization: Organization = { projects: [], }; -const member: ProjectMember = { +export const member: ProjectMember = { id: '1', member: user, permissions: [], @@ -44,18 +50,61 @@ const member: ProjectMember = { updatedAt: '2021-08-01T00:00:00.000Z', }; +export const environmentVariable0: EnvironmentVariable = { + id: '1', + key: 'API_KEY', + value: '123456', + environment: Environment.Development, + createdAt: '2021-08-01T00:00:00.000Z', + updatedAt: '2021-08-01T00:00:00.000Z', +}; + +export const environmentVariable1: EnvironmentVariable = { + id: '2', + key: 'API_KEY_2', + value: '123456', + environment: Environment.Development, + createdAt: '2021-08-01T00:00:00.000Z', + updatedAt: '2021-08-01T00:00:00.000Z', +}; + +export const domain0: Domain = { + id: '1', + name: 'Domain', + createdAt: '2021-08-01T00:00:00.000Z', + updatedAt: '2021-08-01T00:00:00.000Z', + branch: 'Branch', + status: DomainStatus.Live, + redirectTo: null, +}; + +export const deployment0: Deployment = { + id: '1', + url: 'https://deployment.com', + status: DeploymentStatus.Ready, + createdAt: '2021-08-01T00:00:00.000Z', + updatedAt: '2021-08-01T00:00:00.000Z', + branch: 'Branch', + environment: Environment.Development, + isCurrent: true, + commitHash: 'Commit Hash', + domain: domain0, + commitMessage: 'Commit Message', + createdBy: user, +}; + export const project: Project = { id: '1', - name: 'Project', + name: 'GithubUsername-ProjectName', owner: user, - deployments: [], + deployments: [deployment0], repository: 'Repository', prodBranch: 'Prod Branch', description: 'Description', createdAt: '2021-08-01T00:00:00.000Z', updatedAt: '2021-08-01T00:00:00.000Z', framework: 'NextJS', - environmentVariables: [], + environmentVariables: [environmentVariable0, environmentVariable1], organization: organization, template: 'Template', members: [member], diff --git a/packages/frontend/src/stories/Project/Settings/EditEnvironmentVariableRow.stories.tsx b/packages/frontend/src/stories/Project/Settings/EditEnvironmentVariableRow.stories.tsx new file mode 100644 index 00000000..811b0ea4 --- /dev/null +++ b/packages/frontend/src/stories/Project/Settings/EditEnvironmentVariableRow.stories.tsx @@ -0,0 +1,28 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import EditEnvironmentVariableRow from 'components/projects/project/settings/EditEnvironmentVariableRow'; +import { environmentVariable0 } from '../../MockStoriesData'; + +const meta: Meta = { + title: 'Project/Settings/EditEnvironmentVariableRow', + component: EditEnvironmentVariableRow, + argTypes: { + variable: { + control: { + type: 'object', + }, + }, + onUpdate: { + action: 'update', + }, + }, + args: { + variable: environmentVariable0, + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; From f01bdf2de775c2b7e7cd9141441590f80db77fcf Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Thu, 16 May 2024 20:42:29 -0400 Subject: [PATCH 250/251] [2/n][Storybook] Settings - EnvironmentVariables (#75) --- .../Settings/AddEnvironmentVariableRow.stories.tsx | 4 ++-- .../Settings/DisplayEnvironmentVariables.stories.tsx | 9 +++++++++ packages/frontend/vite.config.ts | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/frontend/src/stories/Project/Settings/AddEnvironmentVariableRow.stories.tsx b/packages/frontend/src/stories/Project/Settings/AddEnvironmentVariableRow.stories.tsx index 20fef69d..458bfa70 100644 --- a/packages/frontend/src/stories/Project/Settings/AddEnvironmentVariableRow.stories.tsx +++ b/packages/frontend/src/stories/Project/Settings/AddEnvironmentVariableRow.stories.tsx @@ -29,10 +29,10 @@ const meta: Meta = { action: 'register', }, index: { - type: 'number', + type: 'number', }, isDeleteDisabled: { - type: 'boolean', + type: 'boolean', }, }, args: { diff --git a/packages/frontend/src/stories/Project/Settings/DisplayEnvironmentVariables.stories.tsx b/packages/frontend/src/stories/Project/Settings/DisplayEnvironmentVariables.stories.tsx index 3548a35b..a3ccc0a8 100644 --- a/packages/frontend/src/stories/Project/Settings/DisplayEnvironmentVariables.stories.tsx +++ b/packages/frontend/src/stories/Project/Settings/DisplayEnvironmentVariables.stories.tsx @@ -1,6 +1,11 @@ import { Meta, StoryObj } from '@storybook/react'; import DisplayEnvironmentVariables from 'components/projects/project/settings/DisplayEnvironmentVariables'; +import { + environmentVariable0, + environmentVariable1, +} from '../../MockStoriesData'; +import { Environment } from 'gql-client'; const meta: Meta = { title: 'Project/Settings/DisplayEnvironmentVariables', @@ -20,6 +25,10 @@ const meta: Meta = { action: 'update', }, }, + args: { + environment: Environment.Development, + variables: [environmentVariable0, environmentVariable1], + }, }; export default meta; diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index d9bb608b..e40bea3b 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -1,9 +1,9 @@ -import { defineConfig } from 'vite'; +import { defineConfig, PluginOption } from 'vite'; import react from '@vitejs/plugin-react'; // https://vitejs.dev/config/ export default defineConfig({ - plugins: [react()], + plugins: [react()] as PluginOption[], resolve: { alias: { utils: '/src/utils', From 2074e08a0c405251ed947e997c0a235b68ab3083 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Thu, 16 May 2024 20:45:32 -0400 Subject: [PATCH 251/251] [3/n][Storybook] Settings - Delete Project Dialog (#76) --- .../stories/Project/Settings/DeleteProjectDialog.stories.tsx | 2 +- .../src/stories/Project/Settings/SetupDomains.stories.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/stories/Project/Settings/DeleteProjectDialog.stories.tsx b/packages/frontend/src/stories/Project/Settings/DeleteProjectDialog.stories.tsx index 025a61dd..e3fe7f7e 100644 --- a/packages/frontend/src/stories/Project/Settings/DeleteProjectDialog.stories.tsx +++ b/packages/frontend/src/stories/Project/Settings/DeleteProjectDialog.stories.tsx @@ -18,7 +18,7 @@ const meta: Meta = { pathParams: { userId: 'me' }, }, routing: { - path: '/snowball-tools-1/projects/6bb3bec2-d71b-4fc0-9e32-4767f68668f4/settings/domains/add/config', + path: '/snowball-tools-1/projects/6bb3bec2-d71b-4fc0-9e32-4767f68668f4/settings', }, }), }, diff --git a/packages/frontend/src/stories/Project/Settings/SetupDomains.stories.tsx b/packages/frontend/src/stories/Project/Settings/SetupDomains.stories.tsx index 560dbe74..7c416099 100644 --- a/packages/frontend/src/stories/Project/Settings/SetupDomains.stories.tsx +++ b/packages/frontend/src/stories/Project/Settings/SetupDomains.stories.tsx @@ -17,7 +17,7 @@ const meta: Meta = { pathParams: { userId: 'me' }, }, routing: { - path: '/snowball-tools-1/projects/6bb3bec2-d71b-4fc0-9e32-4767f68668f4/settings/domains/add', + path: '/snowball-tools-1/projects/6bb3bec2-d71b-4fc0-9e32-4767f68668f4/settings/domains', }, }), },

      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 + + + + + + + + + + + diff --git a/packages/frontend/src/stories/assets/youtube.svg b/packages/frontend/src/stories/assets/youtube.svg new file mode 100644 index 00000000..33a3a61f --- /dev/null +++ b/packages/frontend/src/stories/assets/youtube.svg @@ -0,0 +1,4 @@ + + + + diff --git a/yarn.lock b/yarn.lock index ba3a8f9c..b570ea6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@adobe/css-tools@^4.0.1": +"@adobe/css-tools@^4.0.1", "@adobe/css-tools@^4.3.2": version "4.3.3" resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== @@ -198,6 +198,13 @@ resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== +"@aw-web-design/x-default-browser@1.4.126": + version "1.4.126" + resolved "https://registry.yarnpkg.com/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz#43e4bd8f0314ed907a8718d7e862a203af79bc16" + integrity sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug== + dependencies: + default-browser-id "3.0.0" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" @@ -206,11 +213,32 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" -"@babel/compat-data@^7.23.5": +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== +"@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.23.9": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" + integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helpers" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/core@^7.23.5": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" @@ -232,6 +260,16 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/generator@^7.23.0", "@babel/generator@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" + integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== + dependencies: + "@babel/types" "^7.24.5" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/generator@^7.24.1", "@babel/generator@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" @@ -242,7 +280,21 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.23.6": +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== @@ -253,6 +305,41 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" + integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.24.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" @@ -273,7 +360,14 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.22.15": +"@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" + integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== @@ -291,11 +385,52 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/helper-module-transforms@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" + integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-simple-access" "^7.24.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/helper-validator-identifier" "^7.24.5" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" + integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== + "@babel/helper-plugin-utils@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== +"@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" + integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -303,6 +438,20 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-simple-access@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" + integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -310,7 +459,14 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.23.4": +"@babel/helper-split-export-declaration@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" + integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-string-parser@^7.23.4", "@babel/helper-string-parser@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== @@ -320,11 +476,25 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" + integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== + "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== +"@babel/helper-wrap-function@^7.22.20": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09" + integrity sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw== + dependencies: + "@babel/helper-function-name" "^7.23.0" + "@babel/template" "^7.24.0" + "@babel/types" "^7.24.5" + "@babel/helpers@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" @@ -334,6 +504,15 @@ "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" +"@babel/helpers@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" + integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + "@babel/highlight@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" @@ -349,6 +528,509 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== +"@babel/parser@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" + integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" + integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" + integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" + integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" + integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" + integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-assertions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" + integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-attributes@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" + integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.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" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" + integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" + integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-async-generator-functions@^7.24.3": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" + integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" + integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== + dependencies: + "@babel/helper-module-imports" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" + integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-block-scoping@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" + integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-class-properties@^7.22.5", "@babel/plugin-transform-class-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" + integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" + integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-split-export-declaration" "^7.24.5" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" + integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/template" "^7.24.0" + +"@babel/plugin-transform-destructuring@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" + integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-dotall-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" + integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-duplicate-keys@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" + integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-dynamic-import@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" + integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" + integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-export-namespace-from@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" + integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" + integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-flow" "^7.24.1" + +"@babel/plugin-transform-for-of@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" + integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" + integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-json-strings@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" + integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" + integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-logical-assignment-operators@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" + integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" + integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-amd@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" + integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" + integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" + integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" + integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" + integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11", "@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" + integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" + integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" + integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.5" + +"@babel/plugin-transform-object-super@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" + integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" + +"@babel/plugin-transform-optional-catch-binding@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" + integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.23.0", "@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" + integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" + integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" + integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-private-property-in-object@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" + integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" + integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-react-jsx-self@^7.23.3": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz#a21d866d8167e752c6a7c4555dba8afcdfce6268" @@ -363,6 +1045,230 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" +"@babel/plugin-transform-regenerator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" + integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" + integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-shorthand-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" + integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" + integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" + integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-template-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" + integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-typeof-symbol@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" + integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-typescript@^7.24.1": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8" + integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-typescript" "^7.24.1" + +"@babel/plugin-transform-unicode-escapes@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" + integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-property-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" + integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" + integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-sets-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" + integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/preset-env@^7.23.2": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" + integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== + dependencies: + "@babel/compat-data" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@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.24.1" + "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@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-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.1" + "@babel/plugin-transform-async-generator-functions" "^7.24.3" + "@babel/plugin-transform-async-to-generator" "^7.24.1" + "@babel/plugin-transform-block-scoped-functions" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.5" + "@babel/plugin-transform-class-properties" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" + "@babel/plugin-transform-classes" "^7.24.5" + "@babel/plugin-transform-computed-properties" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.5" + "@babel/plugin-transform-dotall-regex" "^7.24.1" + "@babel/plugin-transform-duplicate-keys" "^7.24.1" + "@babel/plugin-transform-dynamic-import" "^7.24.1" + "@babel/plugin-transform-exponentiation-operator" "^7.24.1" + "@babel/plugin-transform-export-namespace-from" "^7.24.1" + "@babel/plugin-transform-for-of" "^7.24.1" + "@babel/plugin-transform-function-name" "^7.24.1" + "@babel/plugin-transform-json-strings" "^7.24.1" + "@babel/plugin-transform-literals" "^7.24.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" + "@babel/plugin-transform-member-expression-literals" "^7.24.1" + "@babel/plugin-transform-modules-amd" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-modules-systemjs" "^7.24.1" + "@babel/plugin-transform-modules-umd" "^7.24.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.24.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" + "@babel/plugin-transform-numeric-separator" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.5" + "@babel/plugin-transform-object-super" "^7.24.1" + "@babel/plugin-transform-optional-catch-binding" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.5" + "@babel/plugin-transform-private-methods" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.5" + "@babel/plugin-transform-property-literals" "^7.24.1" + "@babel/plugin-transform-regenerator" "^7.24.1" + "@babel/plugin-transform-reserved-words" "^7.24.1" + "@babel/plugin-transform-shorthand-properties" "^7.24.1" + "@babel/plugin-transform-spread" "^7.24.1" + "@babel/plugin-transform-sticky-regex" "^7.24.1" + "@babel/plugin-transform-template-literals" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.5" + "@babel/plugin-transform-unicode-escapes" "^7.24.1" + "@babel/plugin-transform-unicode-property-regex" "^7.24.1" + "@babel/plugin-transform-unicode-regex" "^7.24.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-flow@^7.22.15": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.24.1.tgz#da7196c20c2d7dd4e98cfd8b192fe53b5eb6f0bb" + integrity sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-transform-flow-strip-types" "^7.24.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.23.0": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" + integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-syntax-jsx" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-typescript" "^7.24.1" + +"@babel/register@^7.22.15": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.23.7.tgz#485a5e7951939d21304cae4af1719fdb887bc038" + integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.6" + source-map-support "^0.5.16" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.22.15", "@babel/runtime@^7.24.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.9.2": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd" @@ -370,6 +1276,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.17.8", "@babel/runtime@^7.8.4": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" + integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.15", "@babel/template@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" @@ -379,6 +1292,22 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" +"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" + integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== + dependencies: + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/types" "^7.24.5" + debug "^4.3.1" + globals "^11.1.0" + "@babel/traverse@^7.23.2", "@babel/traverse@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" @@ -404,6 +1333,20 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.18.9", "@babel/types@^7.22.15", "@babel/types@^7.24.5", "@babel/types@^7.4.4": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" + integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== + dependencies: + "@babel/helper-string-parser" "^7.24.1" + "@babel/helper-validator-identifier" "^7.24.5" + 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" + integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== + "@bugsnag/browser-performance@^2.4.1": version "2.4.1" resolved "https://registry.yarnpkg.com/@bugsnag/browser-performance/-/browser-performance-2.4.1.tgz#d2db494ab9201ce302509c691b46db57633934ec" @@ -488,6 +1431,22 @@ resolved "https://registry.yarnpkg.com/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz#22abdcd83e008c369902976730c34c150148a758" integrity sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA== +"@chromatic-com/storybook@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@chromatic-com/storybook/-/storybook-1.3.3.tgz#102d173d7e67cbc7f974648eaa459aa3d3d53f91" + integrity sha512-1y9r691T5vVGDZ0HY3YrCXUnvtrT2YrhDuvDZSvYSNUVpM/Imz6i1dnNMKb3eoI1qRsH55mI4zCt+Iq94NLedQ== + dependencies: + chromatic "^11.3.0" + filesize "^10.0.12" + jsonfile "^6.1.0" + react-confetti "^6.1.0" + strip-ansi "^7.1.0" + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@confio/ics23@^0.6.8": version "0.6.8" resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d" @@ -676,6 +1635,11 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@discoveryjs/json-ext@^0.5.3": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + "@emotion/is-prop-valid@1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" @@ -705,6 +1669,11 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== + "@esbuild/aix-ppc64@0.19.12": version "0.19.12" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" @@ -935,6 +1904,13 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + "@ethereumjs/rlp@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" @@ -1342,6 +2318,11 @@ link-module-alias "^1.2.0" shx "^0.3.4" +"@fal-works/esbuild-plugin-global-externals@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" + integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== + "@floating-ui/core@^1.0.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" @@ -1575,6 +2556,16 @@ resolved "https://registry.yarnpkg.com/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== +"@joshwooding/vite-plugin-react-docgen-typescript@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.3.0.tgz#67599fca260c2eafdaf234a944f9d471e6d53b08" + integrity sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA== + dependencies: + glob "^7.2.0" + glob-promise "^4.2.0" + magic-string "^0.27.0" + react-docgen-typescript "^2.2.2" + "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" @@ -1594,7 +2585,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -2221,6 +3212,13 @@ dependencies: "@lit-labs/ssr-dom-shim" "^1.2.0" +"@mdx-js/react@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.0.1.tgz#997a19b3a5b783d936c75ae7c47cfe62f967f746" + integrity sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A== + dependencies: + "@types/mdx" "^2.0.0" + "@metamask/eth-sig-util@5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz#c518279a6e17a88135a13d53a0b970f145ff8bce" @@ -2333,6 +3331,15 @@ multiformats "^13.0.0" murmurhash3js-revisited "^3.0.0" +"@ndelangen/get-tarball@^3.0.7": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz#727ff4454e65f34707e742a59e5e6b1f525d8964" + integrity sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA== + dependencies: + gunzip-maybe "^1.4.2" + pump "^3.0.0" + tar-fs "^2.1.1" + "@noble/curves@1.2.0", "@noble/curves@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -3305,7 +4312,7 @@ "@radix-ui/react-use-callback-ref" "1.0.1" "@radix-ui/react-use-controllable-state" "1.0.1" -"@radix-ui/react-slot@1.0.2": +"@radix-ui/react-slot@1.0.2", "@radix-ui/react-slot@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.2.tgz#a9ff4423eade67f501ffb32ec22064bc9d3099ab" integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg== @@ -3453,6 +4460,15 @@ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c" integrity sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w== +"@rollup/pluginutils@^5.0.2": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@rollup/rollup-android-arm-eabi@4.16.4": version "4.16.4" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.4.tgz#5e8930291f1e5ead7fb1171d53ba5c87718de062" @@ -4011,6 +5027,643 @@ "@stablelib/random" "^1.0.2" "@stablelib/wipe" "^1.0.1" +"@storybook/addon-actions@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.0.10.tgz#df9fde0d234174eda5eb1c7af942da8e01924b50" + integrity sha512-IEuc30UAFl7Ws0GwaY/whjBnGaViVEVjmPc+MXUym2wwwJbnCbI+BKJxPoYi/I7QJb5aUNToAE6pl2pDda2g3Q== + dependencies: + "@storybook/core-events" "8.0.10" + "@storybook/global" "^5.0.0" + "@types/uuid" "^9.0.1" + dequal "^2.0.2" + polished "^4.2.2" + uuid "^9.0.0" + +"@storybook/addon-backgrounds@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-8.0.10.tgz#27bb1af354d0c2e68933d5b2795f9008b84b1ec5" + integrity sha512-445SUQqOH5xFJWlNeMu74FEgk26O9Zm/5aqnvmeteB0Q2JLaw7k2q9i/W6XFu97QkRxqA1EGbDxLR3+e1xCjaA== + dependencies: + "@storybook/global" "^5.0.0" + memoizerific "^1.11.3" + ts-dedent "^2.0.0" + +"@storybook/addon-controls@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-8.0.10.tgz#49eaa9bc914f9462d56dbefc07ba2f8cf9d5a7a9" + integrity sha512-MAUtIJGayNSsfn3VZ6SjQwpRkb4ky+10oVfos+xX9GQ5+7RCs+oYMuE4+aiQvvfXNdV8v0pUGPUPeUzqfJmhOA== + dependencies: + "@storybook/blocks" "8.0.10" + lodash "^4.17.21" + ts-dedent "^2.0.0" + +"@storybook/addon-docs@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-8.0.10.tgz#57aa3bfec25995c89d17f1af92c4cb26a1f92ea3" + integrity sha512-y+Agoez/hXZHKUMIZHU96T5V1v0cs4ArSNfjqDg9DPYcyQ88ihJNb6ZabIgzmEaJF/NncCW+LofWeUtkTwalkw== + dependencies: + "@babel/core" "^7.12.3" + "@mdx-js/react" "^3.0.0" + "@storybook/blocks" "8.0.10" + "@storybook/client-logger" "8.0.10" + "@storybook/components" "8.0.10" + "@storybook/csf-plugin" "8.0.10" + "@storybook/csf-tools" "8.0.10" + "@storybook/global" "^5.0.0" + "@storybook/node-logger" "8.0.10" + "@storybook/preview-api" "8.0.10" + "@storybook/react-dom-shim" "8.0.10" + "@storybook/theming" "8.0.10" + "@storybook/types" "8.0.10" + "@types/react" "^16.8.0 || ^17.0.0 || ^18.0.0" + fs-extra "^11.1.0" + react "^16.8.0 || ^17.0.0 || ^18.0.0" + react-dom "^16.8.0 || ^17.0.0 || ^18.0.0" + rehype-external-links "^3.0.0" + rehype-slug "^6.0.0" + ts-dedent "^2.0.0" + +"@storybook/addon-essentials@^8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-8.0.10.tgz#49029b2da6d61a0ced867d4fc83b14fe98f2cb76" + integrity sha512-Uy3+vm7QX+b/9rhW/iFa3EYAAbV1T2LljY9Bj4aTPZHas9Bpvl5ZPnOm/PhybcE8UFHEoVTJ0v3uWb0dsUEigw== + dependencies: + "@storybook/addon-actions" "8.0.10" + "@storybook/addon-backgrounds" "8.0.10" + "@storybook/addon-controls" "8.0.10" + "@storybook/addon-docs" "8.0.10" + "@storybook/addon-highlight" "8.0.10" + "@storybook/addon-measure" "8.0.10" + "@storybook/addon-outline" "8.0.10" + "@storybook/addon-toolbars" "8.0.10" + "@storybook/addon-viewport" "8.0.10" + "@storybook/core-common" "8.0.10" + "@storybook/manager-api" "8.0.10" + "@storybook/node-logger" "8.0.10" + "@storybook/preview-api" "8.0.10" + ts-dedent "^2.0.0" + +"@storybook/addon-highlight@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-8.0.10.tgz#bb7b4db944ca6e2a406c3ff2a6e77a339544aeb7" + integrity sha512-40GB82t1e2LCCjqXcC6Z5lq1yIpA1+Yl5E2tKeggOVwg5HHAX02ESNDdBaIOlCqMkU3WKzjGPurDNOLUAbsV2g== + dependencies: + "@storybook/global" "^5.0.0" + +"@storybook/addon-interactions@^8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-8.0.10.tgz#3f24344afc175cfef8bde9e9474521fa2628c908" + integrity sha512-6yFNmk6+7082/8TRVyjUsKlwumalEdO0XQ5amPbVGuECzc3HFn0ELwzPrQ4TBlN5MRtX4+buoh5dc/1RUDrh9w== + dependencies: + "@storybook/global" "^5.0.0" + "@storybook/instrumenter" "8.0.10" + "@storybook/test" "8.0.10" + "@storybook/types" "8.0.10" + polished "^4.2.2" + ts-dedent "^2.2.0" + +"@storybook/addon-links@^8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-8.0.10.tgz#6852c5a046df137f1d16dd971b14ef4191f4f79e" + integrity sha512-+mIyH2UcrgQfAyRM4+ARkB/D0OOY8UMwkZsD8dD23APZ8oru7W/NHX3lXl0WjPfQcOIx/QwWNWI3+DgVZJY3jw== + dependencies: + "@storybook/csf" "^0.1.4" + "@storybook/global" "^5.0.0" + ts-dedent "^2.0.0" + +"@storybook/addon-measure@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-8.0.10.tgz#e59121634ee35c6fe128292456df4faaed0fed01" + integrity sha512-quXQwmZJUhOxDIlbXTH6aKYQkwkDpL0UQRkUZn1xuZ2sVKJeaee73QSWqw8HDD4Rz9huS+OrAdVoq/Cz5FoC6A== + dependencies: + "@storybook/global" "^5.0.0" + tiny-invariant "^1.3.1" + +"@storybook/addon-onboarding@^8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-onboarding/-/addon-onboarding-8.0.10.tgz#578f8b004e65882906f52157ae9ebf6e1966125d" + integrity sha512-pcSBjOi944rg52bzaEt5jveFNTPbENna1FDUti8PK+vXgg7iAK6pIoZZiy7APU2N/YO/DxLgT276auVbPweEZg== + +"@storybook/addon-outline@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-8.0.10.tgz#d520e6ff4afea51efb056eeca88032df88c85394" + integrity sha512-1eDO2s/vHhhSJo7W5SetqjleUBTZLI08VNP89c4j7vdRKiMZ1DYhr0dqUGIC3w7cDsawI/nQ24wancHHayAnqw== + dependencies: + "@storybook/global" "^5.0.0" + ts-dedent "^2.0.0" + +"@storybook/addon-toolbars@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-8.0.10.tgz#753c7d3895ad84d8589fbf7c29baaf64249688b7" + integrity sha512-67HP6mTJU/gjRju01Z5HjeqoRiJMDlrMvMvjGBg7w5+tPNtjYqdelfe2+kcfU+Hf6dfcuqaBDwaUUGSv+RYtRQ== + +"@storybook/addon-viewport@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-8.0.10.tgz#791dddd48507f63de3f909e08a28e4f1b24f0db5" + integrity sha512-NJ88Nd/tXreHLyLeF3VP+b8Fu2KtUuJ0L4JYpEMmcdaejGARTrJJOU+pcZBiUqEHFeXQ8rDY8DKXhUJZQFQ1Wg== + dependencies: + memoizerific "^1.11.3" + +"@storybook/blocks@8.0.10", "@storybook/blocks@^8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-8.0.10.tgz#af87b7f4ec5b1f9a9195b1f993feea7b13475786" + integrity sha512-LOaxvcO2d4dT4YoWlQ0bq/c8qA3aHoqtyuvBjwbVn+359bjMtgj/91YuP9Y2+ggZZ4p+ttgvk39PcmJlNXlJsw== + dependencies: + "@storybook/channels" "8.0.10" + "@storybook/client-logger" "8.0.10" + "@storybook/components" "8.0.10" + "@storybook/core-events" "8.0.10" + "@storybook/csf" "^0.1.4" + "@storybook/docs-tools" "8.0.10" + "@storybook/global" "^5.0.0" + "@storybook/icons" "^1.2.5" + "@storybook/manager-api" "8.0.10" + "@storybook/preview-api" "8.0.10" + "@storybook/theming" "8.0.10" + "@storybook/types" "8.0.10" + "@types/lodash" "^4.14.167" + color-convert "^2.0.1" + dequal "^2.0.2" + lodash "^4.17.21" + markdown-to-jsx "7.3.2" + memoizerific "^1.11.3" + polished "^4.2.2" + react-colorful "^5.1.2" + telejson "^7.2.0" + tocbot "^4.20.1" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/builder-manager@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-8.0.10.tgz#13af1624813fc26c221c88a0c27091ac48b05781" + integrity sha512-lo57jeeYuYCKYrmGOdLg25rMyiGYSTwJ+zYsQ3RvClVICjP6X0I1RCKAJDzkI0BixH6s1+w5ynD6X3PtDnhUuw== + dependencies: + "@fal-works/esbuild-plugin-global-externals" "^2.1.2" + "@storybook/core-common" "8.0.10" + "@storybook/manager" "8.0.10" + "@storybook/node-logger" "8.0.10" + "@types/ejs" "^3.1.1" + "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" + browser-assert "^1.2.1" + ejs "^3.1.8" + esbuild "^0.18.0 || ^0.19.0 || ^0.20.0" + esbuild-plugin-alias "^0.2.1" + express "^4.17.3" + fs-extra "^11.1.0" + process "^0.11.10" + util "^0.12.4" + +"@storybook/builder-vite@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-8.0.10.tgz#ee6cc2736ed7a01b29786c51844cf778d4eecfb0" + integrity sha512-Rod/2jYvF4Ng1MjIMZEXe/3z0lPuxkRtetCTr3ECPgi83lHXpHJ+N0NVfJEMs+pXsVqkLP3iGt2hLn6D6yFMwA== + dependencies: + "@storybook/channels" "8.0.10" + "@storybook/client-logger" "8.0.10" + "@storybook/core-common" "8.0.10" + "@storybook/core-events" "8.0.10" + "@storybook/csf-plugin" "8.0.10" + "@storybook/node-logger" "8.0.10" + "@storybook/preview" "8.0.10" + "@storybook/preview-api" "8.0.10" + "@storybook/types" "8.0.10" + "@types/find-cache-dir" "^3.2.1" + browser-assert "^1.2.1" + es-module-lexer "^0.9.3" + express "^4.17.3" + find-cache-dir "^3.0.0" + fs-extra "^11.1.0" + magic-string "^0.30.0" + ts-dedent "^2.0.0" + +"@storybook/channels@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-8.0.10.tgz#56141b44001693ff99e2828deec685b7c12ff2c6" + integrity sha512-3JLxfD7czlx31dAGvAYJ4J4BNE/Y2+hhj/dsV3xlQTHKVpnWknaoeYEC1a6YScyfsH6W+XmP2rzZKzH4EkLSGQ== + dependencies: + "@storybook/client-logger" "8.0.10" + "@storybook/core-events" "8.0.10" + "@storybook/global" "^5.0.0" + telejson "^7.2.0" + tiny-invariant "^1.3.1" + +"@storybook/cli@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-8.0.10.tgz#1377749f546bc38912289072233059e0da5bcffc" + integrity sha512-KUZEO2lyvOS2sRJEFXovt6+5b65iWsh7F8e8S1cM20fCM1rZAlWtwmoxmDVXDmyEp0wTrq4FrRxKnbo9UO518w== + dependencies: + "@babel/core" "^7.23.0" + "@babel/types" "^7.23.0" + "@ndelangen/get-tarball" "^3.0.7" + "@storybook/codemod" "8.0.10" + "@storybook/core-common" "8.0.10" + "@storybook/core-events" "8.0.10" + "@storybook/core-server" "8.0.10" + "@storybook/csf-tools" "8.0.10" + "@storybook/node-logger" "8.0.10" + "@storybook/telemetry" "8.0.10" + "@storybook/types" "8.0.10" + "@types/semver" "^7.3.4" + "@yarnpkg/fslib" "2.10.3" + "@yarnpkg/libzip" "2.3.0" + chalk "^4.1.0" + commander "^6.2.1" + cross-spawn "^7.0.3" + detect-indent "^6.1.0" + envinfo "^7.7.3" + execa "^5.0.0" + find-up "^5.0.0" + fs-extra "^11.1.0" + get-npm-tarball-url "^2.0.3" + giget "^1.0.0" + globby "^11.0.2" + jscodeshift "^0.15.1" + leven "^3.1.0" + ora "^5.4.1" + prettier "^3.1.1" + prompts "^2.4.0" + read-pkg-up "^7.0.1" + semver "^7.3.7" + strip-json-comments "^3.0.1" + tempy "^1.0.1" + tiny-invariant "^1.3.1" + ts-dedent "^2.0.0" + +"@storybook/client-logger@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-8.0.10.tgz#d3de8377f41f6c76657ba75c729596dc67c5ffcb" + integrity sha512-u38SbZNAunZzxZNHMJb9jkUwFkLyWxmvp4xtiRM3u9sMUShXoTnzbw1yKrxs+kYJjg+58UQPZ1JhEBRcHt5Oww== + dependencies: + "@storybook/global" "^5.0.0" + +"@storybook/codemod@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-8.0.10.tgz#cb5a553814d4512e5f05f3d3a20d07349c6dbcf9" + integrity sha512-t45jKGs/eyR/nKVX6QgRtMZSAjJo5aXWWk3B24xVbW6ywr0jt1LC100FkHG4Af8cApIfh8uUmS9X05hMG5zGGA== + dependencies: + "@babel/core" "^7.23.2" + "@babel/preset-env" "^7.23.2" + "@babel/types" "^7.23.0" + "@storybook/csf" "^0.1.4" + "@storybook/csf-tools" "8.0.10" + "@storybook/node-logger" "8.0.10" + "@storybook/types" "8.0.10" + "@types/cross-spawn" "^6.0.2" + cross-spawn "^7.0.3" + globby "^11.0.2" + jscodeshift "^0.15.1" + lodash "^4.17.21" + prettier "^3.1.1" + recast "^0.23.5" + tiny-invariant "^1.3.1" + +"@storybook/components@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-8.0.10.tgz#74c50658cfce9e2039e0eb5d0a51ebb9b717e9af" + integrity sha512-eo+oDDcm35YBB3dtDYDfcjJypNVPmRty85VWpAOBsJXpwp/fgU8csx0DM3KmhrQ4cWLf2WzcFowJwI1w+J88Sw== + dependencies: + "@radix-ui/react-slot" "^1.0.2" + "@storybook/client-logger" "8.0.10" + "@storybook/csf" "^0.1.4" + "@storybook/global" "^5.0.0" + "@storybook/icons" "^1.2.5" + "@storybook/theming" "8.0.10" + "@storybook/types" "8.0.10" + memoizerific "^1.11.3" + util-deprecate "^1.0.2" + +"@storybook/core-common@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-8.0.10.tgz#44e4c5d6ba50013012156ffbdc2fb02e92011af2" + integrity sha512-hsFlPieputaDQoxstnPa3pykTc4bUwEDgCHf8U43+/Z7qmLOQ9fpG+2CFW930rsCRghYpPreOvsmhY7lsGKWLQ== + dependencies: + "@storybook/core-events" "8.0.10" + "@storybook/csf-tools" "8.0.10" + "@storybook/node-logger" "8.0.10" + "@storybook/types" "8.0.10" + "@yarnpkg/fslib" "2.10.3" + "@yarnpkg/libzip" "2.3.0" + chalk "^4.1.0" + cross-spawn "^7.0.3" + esbuild "^0.18.0 || ^0.19.0 || ^0.20.0" + esbuild-register "^3.5.0" + execa "^5.0.0" + file-system-cache "2.3.0" + find-cache-dir "^3.0.0" + find-up "^5.0.0" + fs-extra "^11.1.0" + glob "^10.0.0" + handlebars "^4.7.7" + lazy-universal-dotenv "^4.0.0" + node-fetch "^2.0.0" + picomatch "^2.3.0" + pkg-dir "^5.0.0" + pretty-hrtime "^1.0.3" + resolve-from "^5.0.0" + semver "^7.3.7" + tempy "^1.0.1" + tiny-invariant "^1.3.1" + ts-dedent "^2.0.0" + util "^0.12.4" + +"@storybook/core-events@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-8.0.10.tgz#03c70ca44816078e8a3479e6322a1d1f586da88a" + integrity sha512-TuHPS6p5ZNr4vp4butLb4R98aFx0NRYCI/7VPhJEUH5rPiqNzE3PZd8DC8rnVxavsJ+jO1/y+egNKXRYkEcoPQ== + dependencies: + ts-dedent "^2.0.0" + +"@storybook/core-server@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-8.0.10.tgz#9e75a5c47299f447b9a9056482ff99482b7f873c" + integrity sha512-HYDw2QFBxg1X/d6g0rUhirOB5Jq6g90HBnyrZzxKoqKWJCNsCADSgM+h9HgtUw0jA97qBpIqmNO9n3mXFPWU/Q== + dependencies: + "@aw-web-design/x-default-browser" "1.4.126" + "@babel/core" "^7.23.9" + "@discoveryjs/json-ext" "^0.5.3" + "@storybook/builder-manager" "8.0.10" + "@storybook/channels" "8.0.10" + "@storybook/core-common" "8.0.10" + "@storybook/core-events" "8.0.10" + "@storybook/csf" "^0.1.4" + "@storybook/csf-tools" "8.0.10" + "@storybook/docs-mdx" "3.0.0" + "@storybook/global" "^5.0.0" + "@storybook/manager" "8.0.10" + "@storybook/manager-api" "8.0.10" + "@storybook/node-logger" "8.0.10" + "@storybook/preview-api" "8.0.10" + "@storybook/telemetry" "8.0.10" + "@storybook/types" "8.0.10" + "@types/detect-port" "^1.3.0" + "@types/node" "^18.0.0" + "@types/pretty-hrtime" "^1.0.0" + "@types/semver" "^7.3.4" + better-opn "^3.0.2" + chalk "^4.1.0" + cli-table3 "^0.6.1" + compression "^1.7.4" + detect-port "^1.3.0" + express "^4.17.3" + fs-extra "^11.1.0" + globby "^11.0.2" + ip "^2.0.1" + lodash "^4.17.21" + open "^8.4.0" + pretty-hrtime "^1.0.3" + prompts "^2.4.0" + read-pkg-up "^7.0.1" + semver "^7.3.7" + telejson "^7.2.0" + tiny-invariant "^1.3.1" + ts-dedent "^2.0.0" + util "^0.12.4" + util-deprecate "^1.0.2" + watchpack "^2.2.0" + ws "^8.2.3" + +"@storybook/csf-plugin@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.0.10.tgz#a2b04df70820140f5a3fb82d2227675641585adc" + integrity sha512-0EsyEx/06sCjI8sn40r7cABtBU1vUKPMPD+S5mJiZymm73BgdARj0qZOlLoK2LP+t2pcaB/Cn7KX/uyhhv7M2g== + dependencies: + "@storybook/csf-tools" "8.0.10" + unplugin "^1.3.1" + +"@storybook/csf-tools@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-8.0.10.tgz#f797c281fb10f9cb6382dc6d4ca55542f75a3c38" + integrity sha512-xUc6fVIKoCujf/7JZhkYjrVXeNsTSoDrZFNmqLEmtfktJVqYdXY4LuSAtlBmAIyETi09ULTuuVexrcKFwjzuBA== + dependencies: + "@babel/generator" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + "@storybook/csf" "^0.1.4" + "@storybook/types" "8.0.10" + fs-extra "^11.1.0" + recast "^0.23.5" + ts-dedent "^2.0.0" + +"@storybook/csf@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" + integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== + dependencies: + lodash "^4.17.15" + +"@storybook/csf@^0.1.4": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.7.tgz#dcc6c16a353bc09c8c619ba1a23ba93b2aab0b9d" + integrity sha512-53JeLZBibjQxi0Ep+/AJTfxlofJlxy1jXcSKENlnKxHjWEYyHQCumMP5yTFjf7vhNnMjEpV3zx6t23ssFiGRyw== + dependencies: + type-fest "^2.19.0" + +"@storybook/docs-mdx@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-3.0.0.tgz#5c9b5ce35dcb00ad8aa5dddbabf52ad09fab3974" + integrity sha512-NmiGXl2HU33zpwTv1XORe9XG9H+dRUC1Jl11u92L4xr062pZtrShLmD4VKIsOQujxhhOrbxpwhNOt+6TdhyIdQ== + +"@storybook/docs-tools@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-8.0.10.tgz#8ab6f9ce2485814288de25a57ca16c842cc214d3" + integrity sha512-rg9KS81vEh13VMr4mAgs+7L4kYqoRtG7kVfV1WHxzJxjR3wYcVR0kP9gPTWV4Xha/TA3onHu9sxKxMTWha0urQ== + dependencies: + "@storybook/core-common" "8.0.10" + "@storybook/core-events" "8.0.10" + "@storybook/preview-api" "8.0.10" + "@storybook/types" "8.0.10" + "@types/doctrine" "^0.0.3" + assert "^2.1.0" + doctrine "^3.0.0" + lodash "^4.17.21" + +"@storybook/global@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" + integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== + +"@storybook/icons@^1.2.5": + version "1.2.9" + resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.2.9.tgz#bb4a51a79e186b62e2dd0e04928b8617ac573838" + integrity sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg== + +"@storybook/instrumenter@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-8.0.10.tgz#6ecff32206b0409969cb02e5e61f5c54db6e7da5" + integrity sha512-6IYjWeQFA5x68xRoW5dU4yAc1Hwq1ZBkZbXVgJbr5LJw5x+y8eKdZzIaOmSsSKOI96R7J5YWWd2WA1Q0nRurtg== + dependencies: + "@storybook/channels" "8.0.10" + "@storybook/client-logger" "8.0.10" + "@storybook/core-events" "8.0.10" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "8.0.10" + "@vitest/utils" "^1.3.1" + util "^0.12.4" + +"@storybook/manager-api@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.0.10.tgz#af71d280b84e45146342ff890fa5799a0c31c52d" + integrity sha512-LLu6YKQLWf5QB3h3RO8IevjLrSOew7aidIQPr9DIr9xC8wA7N2fQabr+qrJdE306p3cHZ0nzhYNYZxSjm4Dvdw== + dependencies: + "@storybook/channels" "8.0.10" + "@storybook/client-logger" "8.0.10" + "@storybook/core-events" "8.0.10" + "@storybook/csf" "^0.1.4" + "@storybook/global" "^5.0.0" + "@storybook/icons" "^1.2.5" + "@storybook/router" "8.0.10" + "@storybook/theming" "8.0.10" + "@storybook/types" "8.0.10" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + store2 "^2.14.2" + telejson "^7.2.0" + ts-dedent "^2.0.0" + +"@storybook/manager@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-8.0.10.tgz#c3c6229d7f2cfb47f65dc68572f42cce2661e79f" + integrity sha512-bojGglUQNry48L4siURc2zQKswavLzMh69rqsfL3ZXx+i+USfRfB7593azTlaZh0q6HO4bUAjB24RfQCyifLLQ== + +"@storybook/node-logger@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-8.0.10.tgz#dc48f174b26e44a7fbfbbc497797496dd208fcb9" + integrity sha512-UMmaUaA3VOX/mKLsSvOnbZre2/1tZ6hazA6H0eAnClKb51jRD1AJrsBYK+uHr/CAp7t710bB5U8apPov7hayDw== + +"@storybook/preview-api@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.0.10.tgz#daee994663fff358de4ceb0ce1108e2c099dfb42" + integrity sha512-uZ6btF7Iloz9TnDcKLQ5ydi2YK0cnulv/8FLQhBCwSrzLLLb+T2DGz0cAeuWZEvMUNWNmkWJ9PAFQFs09/8p/Q== + dependencies: + "@storybook/channels" "8.0.10" + "@storybook/client-logger" "8.0.10" + "@storybook/core-events" "8.0.10" + "@storybook/csf" "^0.1.4" + "@storybook/global" "^5.0.0" + "@storybook/types" "8.0.10" + "@types/qs" "^6.9.5" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + qs "^6.10.0" + tiny-invariant "^1.3.1" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/preview@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-8.0.10.tgz#3fc29ae45f1b95fc5ccb90f1d474df25449b118f" + integrity sha512-op7gZqop8PSFyPA4tc1Zds8jG6VnskwpYUUsa44pZoEez9PKEFCf4jE+7AQwbBS3hnuCb0CKBfASN8GRyoznbw== + +"@storybook/react-dom-shim@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.0.10.tgz#79311caf5bd4e01f9770038069c299921e2c1ad7" + integrity sha512-3x8EWEkZebpWpp1pwXEzdabGINwOQt8odM5+hsOlDRtFZBmUqmmzK0rtn7orlcGlOXO4rd6QuZj4Tc5WV28dVQ== + +"@storybook/react-vite@^8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-8.0.10.tgz#13d8d74e5e2d7398558898894a35e0f112c01253" + integrity sha512-J0Tw1jWSQYzc37AWaJCbrFQLlWsCHby0ie0yPx8DVehlnTT6xZWkohiKBq5iwMyYfF9SGrOfZ/dVRiB5q2sOIA== + dependencies: + "@joshwooding/vite-plugin-react-docgen-typescript" "0.3.0" + "@rollup/pluginutils" "^5.0.2" + "@storybook/builder-vite" "8.0.10" + "@storybook/node-logger" "8.0.10" + "@storybook/react" "8.0.10" + find-up "^5.0.0" + magic-string "^0.30.0" + react-docgen "^7.0.0" + resolve "^1.22.8" + tsconfig-paths "^4.2.0" + +"@storybook/react@8.0.10", "@storybook/react@^8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-8.0.10.tgz#2a6b67f5f320bc10800d197bc4585c0c4f1e6d27" + integrity sha512-/MIMc02TNmiNXDzk55dm9+ujfNE5LVNeqqK+vxXWLlCZ0aXRAd1/ZLYeRFuYLgEETB7mh7IP8AXjvM68NX5HYg== + dependencies: + "@storybook/client-logger" "8.0.10" + "@storybook/docs-tools" "8.0.10" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "8.0.10" + "@storybook/react-dom-shim" "8.0.10" + "@storybook/types" "8.0.10" + "@types/escodegen" "^0.0.6" + "@types/estree" "^0.0.51" + "@types/node" "^18.0.0" + acorn "^7.4.1" + acorn-jsx "^5.3.1" + acorn-walk "^7.2.0" + escodegen "^2.1.0" + html-tags "^3.1.0" + lodash "^4.17.21" + prop-types "^15.7.2" + react-element-to-jsx-string "^15.0.0" + semver "^7.3.7" + ts-dedent "^2.0.0" + type-fest "~2.19" + util-deprecate "^1.0.2" + +"@storybook/router@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-8.0.10.tgz#07b3744f53fe3d0dfb1f7ef15442f6d81287127a" + integrity sha512-AZhgiet+EK0ZsPbaDgbbVTAHW2LAMCP1z/Un2uMBbdDeD0Ys29Af47AbEj/Ome5r1cqasLvzq2WXJlVXPNB0Zw== + dependencies: + "@storybook/client-logger" "8.0.10" + memoizerific "^1.11.3" + qs "^6.10.0" + +"@storybook/telemetry@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-8.0.10.tgz#a22234c3f8273bbea0766359309f60325fe2bb57" + integrity sha512-s4Uc+KZQkdmD2d+64Qf8wYknhQZwmjf2CxjIjv9b4KLsU/nyfDheK7Fzd1jhBKb2UQUlLW5HhZkBgs1RsZcDHA== + dependencies: + "@storybook/client-logger" "8.0.10" + "@storybook/core-common" "8.0.10" + "@storybook/csf-tools" "8.0.10" + chalk "^4.1.0" + detect-package-manager "^2.0.1" + fetch-retry "^5.0.2" + fs-extra "^11.1.0" + read-pkg-up "^7.0.1" + +"@storybook/test@8.0.10", "@storybook/test@^8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.0.10.tgz#69f67ff85968e900f683a706717b6fafc6daa217" + integrity sha512-VqjzKJiOCjaZ0CjLeKygYk8uetiaiKbpIox+BrND9GtpEBHcRZA5AeFY2P1aSCOhsaDwuh4KRBxJWFug7DhWGQ== + dependencies: + "@storybook/client-logger" "8.0.10" + "@storybook/core-events" "8.0.10" + "@storybook/instrumenter" "8.0.10" + "@storybook/preview-api" "8.0.10" + "@testing-library/dom" "^9.3.4" + "@testing-library/jest-dom" "^6.4.2" + "@testing-library/user-event" "^14.5.2" + "@vitest/expect" "1.3.1" + "@vitest/spy" "^1.3.1" + util "^0.12.4" + +"@storybook/theming@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.0.10.tgz#bc8a3fe98fc83e9751eeabd789be4acc05a10c8a" + integrity sha512-7NHt7bMC7lPkwz9KdDpa6DkLoQZz5OV6jsx/qY91kcdLo1rpnRPAiVlJvmWesFxi1oXOpVDpHHllWzf8KDBv8A== + dependencies: + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@storybook/client-logger" "8.0.10" + "@storybook/global" "^5.0.0" + memoizerific "^1.11.3" + +"@storybook/types@8.0.10": + version "8.0.10" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-8.0.10.tgz#99864aa267d9761e649b28a8b26a782f78c29de7" + integrity sha512-S/hKS7+SqNnYIehwxdQ4M2nnlfGDdYWAXdtPCVJCmS+YF2amgAxeuisiHbUg7eypds6VL0Oxk/j2nPEHOHk9pg== + dependencies: + "@storybook/channels" "8.0.10" + "@types/express" "^4.7.0" + file-system-cache "2.3.0" + "@tanstack/query-core@5.32.0": version "5.32.0" resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.32.0.tgz#e097ec2b394a2f64de33c98cd8baf3525c99641a" @@ -4037,6 +5690,20 @@ lz-string "^1.5.0" pretty-format "^27.0.2" +"@testing-library/dom@^9.3.4": + version "9.3.4" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.4.tgz#50696ec28376926fec0a1bf87d9dbac5e27f60ce" + integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.1.3" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" + "@testing-library/jest-dom@^5.17.0": version "5.17.0" resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz#5e97c8f9a15ccf4656da00fecab505728de81e0c" @@ -4052,6 +5719,20 @@ lodash "^4.17.15" redent "^3.0.0" +"@testing-library/jest-dom@^6.4.2": + version "6.4.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz#badb40296477149136dabef32b572ddd3b56adf1" + integrity sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A== + dependencies: + "@adobe/css-tools" "^4.3.2" + "@babel/runtime" "^7.9.2" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.6.3" + lodash "^4.17.21" + redent "^3.0.0" + "@testing-library/react@^13.4.0": version "13.4.0" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.4.0.tgz#6a31e3bf5951615593ad984e96b9e5e2d9380966" @@ -4068,6 +5749,11 @@ dependencies: "@babel/runtime" "^7.12.5" +"@testing-library/user-event@^14.5.2": + version "14.5.2" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" + integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ== + "@tharsis/address-converter@^0.1.7": version "0.1.8" resolved "https://registry.yarnpkg.com/@tharsis/address-converter/-/address-converter-0.1.8.tgz#15323e25f6b41d9a4741627f5a1b4ed4547d23f6" @@ -4271,7 +5957,7 @@ resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.137.tgz#c9998a944541afdd6df0d159e9ec9c23dfe5fb40" integrity sha512-YNFwzVarXAOXkjuFxONyDw1vgRNzyH8AuyN19s0bM+ChSu/bzxb5XPxYFLXoqoM+tvgzwR3k7fXcEOW125yJxg== -"@types/babel__core@^7.20.5": +"@types/babel__core@^7.18.0", "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -4297,7 +5983,7 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*": +"@types/babel__traverse@*", "@types/babel__traverse@^7.18.0": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== @@ -4352,6 +6038,13 @@ resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== +"@types/cross-spawn@^6.0.2": + version "6.0.6" + resolved "https://registry.yarnpkg.com/@types/cross-spawn/-/cross-spawn-6.0.6.tgz#0163d0b79a6f85409e0decb8dcca17147f81fd22" + integrity sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA== + dependencies: + "@types/node" "*" + "@types/debug@^4.1.5": version "4.1.12" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" @@ -4359,11 +6052,46 @@ dependencies: "@types/ms" "*" -"@types/estree@1.0.5": +"@types/detect-port@^1.3.0": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.5.tgz#deecde143245989dee0e82115f3caba5ee0ea747" + integrity sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA== + +"@types/doctrine@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.3.tgz#e892d293c92c9c1d3f9af72c15a554fbc7e0895a" + integrity sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA== + +"@types/doctrine@^0.0.9": + version "0.0.9" + resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.9.tgz#d86a5f452a15e3e3113b99e39616a9baa0f9863f" + integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA== + +"@types/ejs@^3.1.1": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.5.tgz#49d738257cc73bafe45c13cb8ff240683b4d5117" + integrity sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg== + +"@types/emscripten@^1.39.6": + version "1.39.11" + resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.39.11.tgz#8f8c40cb831a2406c0ee5b0c6e847b3bf659c2e3" + integrity sha512-dOeX2BeNA7j6BTEqJQL3ut0bRCfsyQMd5i4FT8JfHfYhAOuJPCGh0dQFbxVJxUyQ+75x6enhDdndGb624/QszA== + +"@types/escodegen@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@types/escodegen/-/escodegen-0.0.6.tgz#5230a9ce796e042cda6f086dbf19f22ea330659c" + integrity sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig== + +"@types/estree@1.0.5", "@types/estree@^1.0.0": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + "@types/express-serve-static-core@4.17.31": version "4.17.31" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" @@ -4390,7 +6118,7 @@ dependencies: "@types/express" "*" -"@types/express@*", "@types/express@^4.17.21": +"@types/express@*", "@types/express@^4.17.21", "@types/express@^4.7.0": version "4.17.21" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -4410,6 +6138,11 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/find-cache-dir@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz#7b959a4b9643a1e6a1a5fe49032693cc36773501" + integrity sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw== + "@types/fs-extra@^11.0.4": version "11.0.4" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-11.0.4.tgz#e16a863bb8843fba8c5004362b5a73e17becca45" @@ -4418,6 +6151,14 @@ "@types/jsonfile" "*" "@types/node" "*" +"@types/glob@^7.1.3": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/google-protobuf@^3.15.5": version "3.15.12" resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.12.tgz#eb2ba0eddd65712211a2b455dc6071d665ccf49b" @@ -4430,6 +6171,13 @@ dependencies: "@types/unist" "^2" +"@types/hast@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== + dependencies: + "@types/unist" "*" + "@types/http-errors@*": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" @@ -4470,6 +6218,11 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" +"@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/jsonfile@*": version "6.1.4" resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702" @@ -4489,6 +6242,11 @@ resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.6.tgz#1749535181a2a9b02ac04a797550a8787345b740" integrity sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ== +"@types/lodash@^4.14.167": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.1.tgz#0fabfcf2f2127ef73b119d98452bd317c4a17eb8" + integrity sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q== + "@types/lodash@^4.17.0": version "4.17.0" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.0.tgz#d774355e41f372d5350a4d0714abb48194a489c3" @@ -4504,11 +6262,21 @@ resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-3.4.2.tgz#e4fc7214a420173cea47739c33cdf10874694db7" integrity sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA== +"@types/mdx@^2.0.0": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.13.tgz#68f6877043d377092890ff5b298152b0a21671bd" + integrity sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw== + "@types/mime@^1": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + "@types/minimatch@^3.0.3", "@types/minimatch@^3.0.4": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -4556,6 +6324,13 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== +"@types/node@^18.0.0": + version "18.19.32" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.32.tgz#96e4c80dca0ccf48505add2a399f36465955e0be" + integrity sha512-2bkg93YBSDKk8DLmmHnmj/Rwr18TLx7/n+I23BigFwgexUJoMHZOd8X1OFxuF/W3NN0S2W2E5sVabI5CPinNvA== + dependencies: + undici-types "~5.26.4" + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" @@ -4573,12 +6348,17 @@ dependencies: "@types/node" "*" +"@types/pretty-hrtime@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#ee1bd8c9f7a01b3445786aad0ef23aba5f511a44" + integrity sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA== + "@types/prop-types@*": version "15.7.12" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== -"@types/qs@*": +"@types/qs@*", "@types/qs@^6.9.5": version "6.9.15" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== @@ -4603,6 +6383,19 @@ "@types/prop-types" "*" csstype "^3.0.2" +"@types/react@^16.8.0 || ^17.0.0 || ^18.0.0": + version "18.3.1" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.1.tgz#fed43985caa834a2084d002e4771e15dfcbdbe8e" + integrity sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/resolve@^1.20.2": + version "1.20.6" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.6.tgz#e6e60dad29c2c8c206c026e6dd8d6d1bdda850b8" + integrity sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ== + "@types/secp256k1@^4.0.1": version "4.0.6" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" @@ -4610,7 +6403,7 @@ dependencies: "@types/node" "*" -"@types/semver@^7.5.8": +"@types/semver@^7.3.12", "@types/semver@^7.3.4", "@types/semver@^7.5.8": version "7.5.8" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== @@ -4654,12 +6447,17 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== +"@types/unist@*", "@types/unist@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20" + integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== + "@types/unist@^2": version "2.0.10" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== -"@types/uuid@^9.0.8": +"@types/uuid@^9.0.1", "@types/uuid@^9.0.8": version "9.0.8" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== @@ -4676,6 +6474,59 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@^5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@ungap/structured-clone@^1.0.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@vitejs/plugin-react@^4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" @@ -4687,6 +6538,49 @@ "@types/babel__core" "^7.20.5" react-refresh "^0.14.0" +"@vitest/expect@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.3.1.tgz#d4c14b89c43a25fd400a6b941f51ba27fe0cb918" + integrity sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw== + dependencies: + "@vitest/spy" "1.3.1" + "@vitest/utils" "1.3.1" + chai "^4.3.10" + +"@vitest/spy@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.3.1.tgz#814245d46d011b99edd1c7528f5725c64e85a88b" + integrity sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig== + dependencies: + tinyspy "^2.2.0" + +"@vitest/spy@^1.3.1": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.6.0.tgz#362cbd42ccdb03f1613798fde99799649516906d" + integrity sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw== + dependencies: + tinyspy "^2.2.0" + +"@vitest/utils@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.3.1.tgz#7b05838654557544f694a372de767fcc9594d61a" + integrity sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ== + dependencies: + diff-sequences "^29.6.3" + estree-walker "^3.0.3" + loupe "^2.3.7" + pretty-format "^29.7.0" + +"@vitest/utils@^1.3.1": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.6.0.tgz#5c5675ca7d6f546a7b4337de9ae882e6c57896a1" + integrity sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw== + dependencies: + diff-sequences "^29.6.3" + estree-walker "^3.0.3" + loupe "^2.3.7" + pretty-format "^29.7.0" + "@vue/compiler-core@3.4.24": version "3.4.24" resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.24.tgz#6b4a5ffddcd874a692f2acfa68981201bcd7096b" @@ -5267,6 +7161,29 @@ dependencies: tslib "^2.3.0" +"@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10": + version "3.0.0-rc.15" + resolved "https://registry.yarnpkg.com/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz#4e40e7d2eb28825c9a35ab9d04c363931d7c0e67" + integrity sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA== + dependencies: + tslib "^2.4.0" + +"@yarnpkg/fslib@2.10.3": + version "2.10.3" + resolved "https://registry.yarnpkg.com/@yarnpkg/fslib/-/fslib-2.10.3.tgz#a8c9893df5d183cf6362680b9f1c6d7504dd5717" + integrity sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A== + dependencies: + "@yarnpkg/libzip" "^2.3.0" + tslib "^1.13.0" + +"@yarnpkg/libzip@2.3.0", "@yarnpkg/libzip@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/libzip/-/libzip-2.3.0.tgz#fe1e762e47669f6e2c960fc118436608d834e3be" + integrity sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg== + dependencies: + "@types/emscripten" "^1.39.6" + tslib "^1.13.0" + "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -5310,7 +7227,7 @@ abitype@^0.8.3: resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.11.tgz#66e1cf2cbf46f48d0e57132d7c1c392447536cc1" integrity sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A== -accepts@^1.3.5, accepts@~1.3.8: +accepts@^1.3.5, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -5318,11 +7235,26 @@ accepts@^1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + acorn-walk@^8.1.1: version "8.3.2" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== +acorn@^7.4.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + acorn@^8.11.3, acorn@^8.4.1: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" @@ -5333,6 +7265,11 @@ add-stream@^1.0.0: resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== +address@^1.0.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -5551,6 +7488,11 @@ apollo-server-types@^3.8.0: apollo-reporting-protobuf "^3.4.0" apollo-server-env "^4.2.1" +app-root-dir@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" + integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== + app-root-path@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" @@ -5661,6 +7603,18 @@ assert@^2.1.0: object.assign "^4.1.4" util "^0.12.5" +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +ast-types@^0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" + integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== + dependencies: + tslib "^2.0.1" + async-retry@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" @@ -5730,6 +7684,35 @@ axios@^1.6.0, axios@^1.6.5, axios@^1.6.7: form-data "^4.0.0" proxy-from-env "^1.1.0" +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" + +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -5772,6 +7755,13 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== +better-opn@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-3.0.2.tgz#f96f35deaaf8f34144a4102651babcf00d1d8817" + integrity sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ== + dependencies: + open "^8.0.4" + better-sqlite3@^9.2.2: version "9.5.0" resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-9.5.0.tgz#0e10766cfb7f9b8916be3ab95ad9d5bcc4e6e6fd" @@ -5785,6 +7775,11 @@ big-integer@1.6.36: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== +big-integer@^1.6.44: + version "1.6.52" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" + integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== + bignumber.js@9.1.2: version "9.1.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" @@ -5915,6 +7910,13 @@ bottleneck@^2.15.3: resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -5942,6 +7944,11 @@ brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== +browser-assert@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" + integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== + browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" @@ -5959,6 +7966,13 @@ browserify-aes@^1.2.0: inherits "^2.0.1" safe-buffer "^5.0.1" +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + integrity sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ== + dependencies: + pako "~0.2.0" + browserslist@^4.22.2, browserslist@^4.23.0: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" @@ -6072,6 +8086,11 @@ byte-size@8.1.1: resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" integrity sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg== +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -6193,6 +8212,19 @@ cborg@^1.5.4, cborg@^1.6.0: resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== +chai@^4.3.10: + version "4.4.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.0.8" + chalk@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -6246,6 +8278,13 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + chokidar@^3.5.1, chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" @@ -6271,6 +8310,16 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +chromatic@^11.3.0: + version "11.3.0" + resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-11.3.0.tgz#d46b7aac1a0eaed29a765645eaf93c484220174c" + integrity sha512-q1ZtJDJrjLGnz60ivpC16gmd7KFzcaA4eTb7gcytCqbaKqlHhCFr1xQmcUDsm14CK7JsqdkFU6S+JQdOd2ZNJg== + +chromatic@^11.3.2: + version "11.3.2" + resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-11.3.2.tgz#e95a5eba9a1f3d10761335aba2b986c4436dde7a" + integrity sha512-0PuHl49VvBMoDHEfmNjC/bim9YYNhWF3axTZlFuatC0avwr2Xw4GDqJDG9fArEWN8oM8VtYHkE9D7qc87dmz2w== + ci-info@^3.2.0, ci-info@^3.6.1, ci-info@^3.7.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" @@ -6335,6 +8384,15 @@ cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== +cli-table3@^0.6.1: + version "0.6.4" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.4.tgz#d1c536b8a3f2e7bec58f67ac9e5769b1b30088b0" + integrity sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -6376,7 +8434,7 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-deep@4.0.1: +clone-deep@4.0.1, clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== @@ -6464,6 +8522,16 @@ commander@^4.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + compare-func@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" @@ -6472,6 +8540,26 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + compute-scroll-into-view@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz#753f11d972596558d8fe7c6bcbc8497690ab4c87" @@ -6648,6 +8736,13 @@ copyfiles@^2.4.1: untildify "^4.0.0" yargs "^16.1.0" +core-js-compat@^3.31.0, core-js-compat@^3.36.1: + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73" + integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA== + dependencies: + browserslist "^4.23.0" + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -6782,6 +8877,11 @@ crypto-addr-codec@^0.1.7: safe-buffer "^5.2.0" sha3 "^2.1.1" +crypto-random-string@^2.0.0: + version "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-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" @@ -6913,6 +9013,13 @@ dedent@0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +deep-eql@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" + deep-equal@^2.0.5: version "2.2.3" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" @@ -6947,6 +9054,14 @@ deepmerge@4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +default-browser-id@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + defaults@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" @@ -6982,6 +9097,20 @@ defu@^6.1.3, defu@^6.1.4: resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== +del@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -7036,7 +9165,7 @@ deps-regex@^0.2.0: resolved "https://registry.yarnpkg.com/deps-regex/-/deps-regex-0.2.0.tgz#3ee7ddae5fd784f3accf29d5a711aa6e10044137" integrity sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q== -dequal@^2.0.3: +dequal@^2.0.2, dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== @@ -7066,6 +9195,11 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== +detect-indent@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -7081,6 +9215,21 @@ detect-node-es@^1.1.0: resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== +detect-package-manager@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" + integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== + dependencies: + execa "^5.1.1" + +detect-port@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + dependencies: + address "^1.0.1" + debug "4" + didyoumean@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" @@ -7127,11 +9276,23 @@ dns-over-http-resolver@^1.2.3: native-fetch "^3.0.0" receptacle "^1.3.2" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: version "0.5.16" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== + dot-prop@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -7139,12 +9300,12 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -dotenv-expand@~10.0.0: +dotenv-expand@^10.0.0, dotenv-expand@~10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== -dotenv@^16.0.3: +dotenv@^16.0.0, dotenv@^16.0.3: version "16.4.5" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== @@ -7175,6 +9336,16 @@ duplexer@^0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +duplexify@^3.5.0, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + duplexify@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f" @@ -7202,7 +9373,7 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -ejs@^3.1.7: +ejs@^3.1.7, ejs@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== @@ -7274,7 +9445,7 @@ encoding@^0.1.13: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -7303,6 +9474,11 @@ envinfo@7.8.1: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +envinfo@^7.7.3: + version "7.13.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + err-code@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" @@ -7354,6 +9530,11 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" +es-module-lexer@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: version "0.10.64" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" @@ -7381,6 +9562,47 @@ es6-symbol@^3.1.1, es6-symbol@^3.1.3: d "^1.0.2" ext "^1.7.0" +esbuild-plugin-alias@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz#45a86cb941e20e7c2bc68a2bea53562172494fcb" + integrity sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ== + +esbuild-register@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.5.0.tgz#449613fb29ab94325c722f560f800dd946dc8ea8" + integrity sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A== + dependencies: + debug "^4.3.4" + +"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0", esbuild@^0.20.1: + version "0.20.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" + integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.20.2" + "@esbuild/android-arm" "0.20.2" + "@esbuild/android-arm64" "0.20.2" + "@esbuild/android-x64" "0.20.2" + "@esbuild/darwin-arm64" "0.20.2" + "@esbuild/darwin-x64" "0.20.2" + "@esbuild/freebsd-arm64" "0.20.2" + "@esbuild/freebsd-x64" "0.20.2" + "@esbuild/linux-arm" "0.20.2" + "@esbuild/linux-arm64" "0.20.2" + "@esbuild/linux-ia32" "0.20.2" + "@esbuild/linux-loong64" "0.20.2" + "@esbuild/linux-mips64el" "0.20.2" + "@esbuild/linux-ppc64" "0.20.2" + "@esbuild/linux-riscv64" "0.20.2" + "@esbuild/linux-s390x" "0.20.2" + "@esbuild/linux-x64" "0.20.2" + "@esbuild/netbsd-x64" "0.20.2" + "@esbuild/openbsd-x64" "0.20.2" + "@esbuild/sunos-x64" "0.20.2" + "@esbuild/win32-arm64" "0.20.2" + "@esbuild/win32-ia32" "0.20.2" + "@esbuild/win32-x64" "0.20.2" + esbuild@^0.19.2: version "0.19.12" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" @@ -7410,35 +9632,6 @@ esbuild@^0.19.2: "@esbuild/win32-ia32" "0.19.12" "@esbuild/win32-x64" "0.19.12" -esbuild@^0.20.1: - version "0.20.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" - integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== - optionalDependencies: - "@esbuild/aix-ppc64" "0.20.2" - "@esbuild/android-arm" "0.20.2" - "@esbuild/android-arm64" "0.20.2" - "@esbuild/android-x64" "0.20.2" - "@esbuild/darwin-arm64" "0.20.2" - "@esbuild/darwin-x64" "0.20.2" - "@esbuild/freebsd-arm64" "0.20.2" - "@esbuild/freebsd-x64" "0.20.2" - "@esbuild/linux-arm" "0.20.2" - "@esbuild/linux-arm64" "0.20.2" - "@esbuild/linux-ia32" "0.20.2" - "@esbuild/linux-loong64" "0.20.2" - "@esbuild/linux-mips64el" "0.20.2" - "@esbuild/linux-ppc64" "0.20.2" - "@esbuild/linux-riscv64" "0.20.2" - "@esbuild/linux-s390x" "0.20.2" - "@esbuild/linux-x64" "0.20.2" - "@esbuild/netbsd-x64" "0.20.2" - "@esbuild/openbsd-x64" "0.20.2" - "@esbuild/sunos-x64" "0.20.2" - "@esbuild/win32-arm64" "0.20.2" - "@esbuild/win32-ia32" "0.20.2" - "@esbuild/win32-x64" "0.20.2" - escalade@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" @@ -7459,6 +9652,40 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escodegen@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +eslint-plugin-storybook@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-0.8.0.tgz#23185ecabdc289cae55248c090f0c1d8fbae6c41" + integrity sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA== + dependencies: + "@storybook/csf" "^0.0.1" + "@typescript-eslint/utils" "^5.62.0" + requireindex "^1.2.0" + ts-dedent "^2.2.0" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^3.3.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + esniff@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" @@ -7469,16 +9696,45 @@ esniff@^2.0.1: event-emitter "^0.3.5" type "^2.7.2" -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -7662,7 +9918,7 @@ execa@5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -execa@^5.0.0: +execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -7734,7 +9990,7 @@ express-session@^1.18.0: safe-buffer "5.2.1" uid-safe "~2.1.5" -express@^4.18.2: +express@^4.17.3, express@^4.18.2: version "4.19.2" resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== @@ -7827,6 +10083,11 @@ fault@^1.0.0: dependencies: format "^0.2.0" +fetch-retry@^5.0.2: + version "5.0.6" + resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.6.tgz#17d0bc90423405b7a88b74355bf364acd2a7fa56" + integrity sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ== + figures@3.2.0, figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -7834,6 +10095,14 @@ figures@3.2.0, figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" +file-system-cache@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.3.0.tgz#201feaf4c8cd97b9d0d608e96861bb6005f46fe6" + integrity sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ== + dependencies: + fs-extra "11.1.1" + ramda "0.29.0" + file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -7846,6 +10115,11 @@ filelist@^1.0.4: dependencies: minimatch "^5.0.1" +filesize@^10.0.12: + version "10.1.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-10.1.1.tgz#eb98ce885aa73741199748e70e5b7339cc22c5ff" + integrity sha512-L0cdwZrKlwZQkMSFnCflJ6J2Y+5egO/p3vgRSDQGxQt++QbUZe5gMbRO6kg6gzwQDPvq2Fk9AmoxUNfZ5gdqaQ== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -7871,6 +10145,24 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.0.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -7878,6 +10170,13 @@ find-up@^2.0.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -7886,6 +10185,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-yarn-workspace-root@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" @@ -7908,6 +10215,11 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +flow-parser@0.*: + version "0.235.1" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.235.1.tgz#469c70adfa3c156f3a1792e7b6d7017f01f45f1d" + integrity sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ== + follow-redirects@^1.14.0, follow-redirects@^1.14.8, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" @@ -7990,6 +10302,15 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -8076,6 +10397,11 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" @@ -8097,6 +10423,11 @@ get-nonce@^1.0.0: resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== +get-npm-tarball-url@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz#cbd6bb25884622bc3191c761466c93ac83343213" + integrity sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA== + get-pkg-repo@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" @@ -8139,6 +10470,20 @@ get-user-locale@^2.2.1: dependencies: mem "^8.0.0" +giget@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/giget/-/giget-1.2.3.tgz#ef6845d1140e89adad595f7f3bb60aa31c672cb6" + integrity sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA== + dependencies: + citty "^0.1.6" + consola "^3.2.3" + defu "^6.1.4" + node-fetch-native "^1.6.3" + nypm "^0.3.8" + ohash "^1.1.3" + pathe "^1.1.2" + tar "^6.2.0" + git-raw-commits@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-3.0.0.tgz#5432f053a9744f67e8db03dbc48add81252cfdeb" @@ -8191,6 +10536,11 @@ github-from-package@0.0.0: resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== +github-slugger@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-2.0.0.tgz#52cf2f9279a21eb6c59dd385b410f0c0adda8f1a" + integrity sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw== + glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -8205,7 +10555,19 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@^10.2.2, glob@^10.3.10: +glob-promise@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" + integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== + dependencies: + "@types/glob" "^7.1.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^10.0.0, glob@^10.2.2, glob@^10.3.10: version "10.3.12" resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b" integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg== @@ -8216,7 +10578,7 @@ glob@^10.2.2, glob@^10.3.10: minipass "^7.0.4" path-scurry "^1.10.2" -glob@^7.0.0, glob@^7.0.5, glob@^7.1.3: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.3, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -8281,7 +10643,7 @@ globalthis@^1.0.1: dependencies: define-properties "^1.1.3" -globby@11.1.0, globby@^11.0.3: +globby@11.1.0, globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -8310,7 +10672,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.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== @@ -8332,6 +10694,18 @@ graphql@^16.8.1: resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== +gunzip-maybe@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac" + integrity sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw== + dependencies: + browserify-zlib "^0.1.4" + is-deflate "^1.0.0" + is-gzip "^1.0.0" + peek-stream "^1.1.0" + pumpify "^1.3.3" + through2 "^2.0.3" + h3@^1.10.2, h3@^1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/h3/-/h3-1.11.1.tgz#e9414ae6f2a076a345ea07256b320edb29bab9f7" @@ -8441,11 +10815,32 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" +hast-util-heading-rank@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz#2d5c6f2807a7af5c45f74e623498dd6054d2aba8" + integrity sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-is-element@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz#6e31a6532c217e5b533848c7e52c9d9369ca0932" + integrity sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g== + dependencies: + "@types/hast" "^3.0.0" + hast-util-parse-selector@^2.0.0: version "2.2.5" resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== +hast-util-to-string@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz#2a131948b4b1b26461a2c8ac876e2c88d02946bd" + integrity sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA== + dependencies: + "@types/hast" "^3.0.0" + hastscript@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" @@ -8523,6 +10918,11 @@ hosted-git-info@^7.0.0: dependencies: lru-cache "^10.0.1" +html-tags@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" + integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== + http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" @@ -8786,6 +11186,11 @@ ip-regex@^4.0.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== +ip@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105" + integrity sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -8916,6 +11321,11 @@ iron-webcrypto@^1.0.0: resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.1.1.tgz#245c9d467075ee810343ddfa53dd4909616aaf33" integrity sha512-5xGwQUWHQSy039rFr+5q/zOmj7GP0Ypzvo34Ep+61bPIhaLduEDp/PvLGlU3awD2mzWUR0weN2vJ1mILydFPEg== +is-absolute-url@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-4.0.1.tgz#16e4d487d4fded05cfe0685e53ec86804a5e94dc" + integrity sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A== + is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" @@ -9003,6 +11413,11 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-deflate@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14" + integrity sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ== + is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" @@ -9042,6 +11457,11 @@ is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-gzip@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" + integrity sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ== + is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" @@ -9106,6 +11526,16 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -9116,6 +11546,11 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +is-plain-object@5.0.0, is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -9123,11 +11558,6 @@ is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -9533,11 +11963,42 @@ jsbn@1.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== +jscodeshift@^0.15.1: + version "0.15.2" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.15.2.tgz#145563860360b4819a558c75c545f39683e5a0be" + integrity sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA== + dependencies: + "@babel/core" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.23.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/preset-flow" "^7.22.15" + "@babel/preset-typescript" "^7.23.0" + "@babel/register" "^7.22.15" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.23.3" + temp "^0.8.4" + write-file-atomic "^2.3.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -9578,7 +12039,7 @@ jsonc-parser@3.2.0: resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== -jsonfile@^6.0.1: +jsonfile@^6.0.1, jsonfile@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== @@ -9683,6 +12144,20 @@ klaw-sync@^6.0.0: dependencies: graceful-fs "^4.1.11" +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +lazy-universal-dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz#0b220c264e89a042a37181a4928cdd298af73422" + integrity sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg== + dependencies: + app-root-dir "^1.0.2" + dotenv "^16.0.0" + dotenv-expand "^10.0.0" + lerna@^8.0.0: version "8.1.2" resolved "https://registry.yarnpkg.com/lerna/-/lerna-8.1.2.tgz#441e8078d0b68557b4ef5b33202a16a6bc2a50d3" @@ -9763,6 +12238,11 @@ lerna@^8.0.0: yargs "17.7.2" yargs-parser "21.1.1" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + libnpmaccess@7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-7.0.2.tgz#7f056c8c933dd9c8ba771fa6493556b53c5aac52" @@ -9956,6 +12436,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -9963,6 +12451,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash-clean@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/lodash-clean/-/lodash-clean-2.2.3.tgz#eb72801ba9ebfb2771bed3cc971d9e7835a78611" @@ -10072,6 +12567,13 @@ lottie-web@^5.10.2: resolved "https://registry.yarnpkg.com/lottie-web/-/lottie-web-5.12.2.tgz#579ca9fe6d3fd9e352571edd3c0be162492f68e5" integrity sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg== +loupe@^2.3.6, loupe@^2.3.7: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + lowlight@^1.17.0: version "1.20.0" resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888" @@ -10119,7 +12621,14 @@ lz-string@^1.5.0: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== -magic-string@^0.30.10: +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + +magic-string@^0.30.0, magic-string@^0.30.10: version "0.30.10" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== @@ -10133,7 +12642,7 @@ make-dir@4.0.0: dependencies: semver "^7.5.3" -make-dir@^2.1.0: +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -10141,6 +12650,13 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" @@ -10201,6 +12717,16 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +map-or-similar@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" + integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== + +markdown-to-jsx@7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz#f286b4d112dad3028acc1e77dfe1f653b347e131" + integrity sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q== + material-ripple-effects@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/material-ripple-effects/-/material-ripple-effects-2.0.1.tgz#47803d2ab1561698d930e2524a7a9a19fb2829b7" @@ -10228,6 +12754,13 @@ mem@^8.0.0: map-age-cleaner "^0.1.3" mimic-fn "^3.1.0" +memoizerific@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" + integrity sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog== + dependencies: + map-or-similar "^1.5.0" + meow@^8.1.2: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -10285,7 +12818,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -10327,7 +12860,7 @@ mimic-response@^3.1.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -min-indent@^1.0.0: +min-indent@^1.0.0, min-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== @@ -10356,7 +12889,7 @@ minimatch@9.0.3: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -10670,7 +13203,7 @@ negotiator@0.6.3, negotiator@^0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.2: +neo-async@^2.5.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -10707,6 +13240,13 @@ node-addon-api@^7.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + node-fetch-native@^1.6.1, node-fetch-native@^1.6.2, node-fetch-native@^1.6.3: version "1.6.4" resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e" @@ -10719,7 +13259,7 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.8: +node-fetch@^2.0.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.8: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -11025,6 +13565,17 @@ nx@18.3.3, "nx@>=17.1.2 < 19": "@nx/nx-win32-arm64-msvc" "18.3.3" "@nx/nx-win32-x64-msvc" "18.3.3" +nypm@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/nypm/-/nypm-0.3.8.tgz#a16b078b161be5885351e72cf0b97326973722bf" + integrity sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og== + dependencies: + citty "^0.1.6" + consola "^3.2.3" + execa "^8.0.1" + pathe "^1.1.2" + ufo "^1.4.0" + object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -11139,7 +13690,7 @@ open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^8.4.0: +open@^8.0.4, open@^8.4.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== @@ -11222,13 +13773,20 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -11236,6 +13794,13 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -11243,6 +13808,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map-series@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" @@ -11326,6 +13898,11 @@ pako@^2.1.0: resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== +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== + pako@~1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -11495,6 +14072,11 @@ pathe@^1.1.1, pathe@^1.1.2: resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + pbkdf2@^3.0.17: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -11506,12 +14088,21 @@ pbkdf2@^3.0.17: safe-buffer "^5.0.1" sha.js "^2.4.8" +peek-stream@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" + integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA== + dependencies: + buffer-from "^1.0.0" + duplexify "^3.5.0" + through2 "^2.0.3" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -11566,18 +14157,32 @@ pino@7.11.0: sonic-boom "^2.2.1" thread-stream "^0.15.1" -pirates@^4.0.1: +pirates@^4.0.1, pirates@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== -pkg-dir@^4.2.0: +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + pkg-types@^1.0.3: version "1.1.0" resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.0.tgz#3ec1bf33379030fd0a34c227b6c650e8ea7ca271" @@ -11599,6 +14204,13 @@ pngjs@^5.0.0: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== +polished@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.3.1.tgz#5a00ae32715609f83d89f6f31d0f0261c6170548" + integrity sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA== + dependencies: + "@babel/runtime" "^7.17.8" + popmotion@11.0.3: version "11.0.3" resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-11.0.3.tgz#565c5f6590bbcddab7a33a074bb2ba97e24b0cc9" @@ -11717,6 +14329,11 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== + prismjs@^1.27.0: version "1.29.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" @@ -11747,6 +14364,11 @@ process-warning@^1.0.0: resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + promise-fs@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/promise-fs/-/promise-fs-2.1.1.tgz#0b725a592c165ff16157d1f13640ba390637e557" @@ -11767,6 +14389,14 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" +prompts@^2.4.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + promzard@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/promzard/-/promzard-1.0.1.tgz#3b77251a24f988c0886f5649d4f642bcdd53e558" @@ -11850,6 +14480,14 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -11858,6 +14496,15 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -11880,6 +14527,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@^6.10.0: + version "6.12.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" + integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== + dependencies: + side-channel "^1.0.6" + query-string@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" @@ -11922,6 +14576,11 @@ radix3@^1.1.0: resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" integrity sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA== +ramda@0.29.0: + version "0.29.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" + integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== + random-bytes@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" @@ -11980,11 +14639,44 @@ react-code-blocks@^0.1.6: styled-components "^6.1.0" tslib "^2.6.0" +react-colorful@^5.1.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" + integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== + +react-confetti@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-confetti/-/react-confetti-6.1.0.tgz#03dc4340d955acd10b174dbf301f374a06e29ce6" + integrity sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw== + dependencies: + tween-functions "^1.2.0" + react-day-picker@^8.9.1: version "8.10.1" resolved "https://registry.yarnpkg.com/react-day-picker/-/react-day-picker-8.10.1.tgz#4762ec298865919b93ec09ba69621580835b8e80" integrity sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA== +react-docgen-typescript@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" + integrity sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg== + +react-docgen@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-7.0.3.tgz#f811b785f07b1f2023cb899b6bcf9d522b21b95d" + integrity sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ== + dependencies: + "@babel/core" "^7.18.9" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@types/babel__core" "^7.18.0" + "@types/babel__traverse" "^7.18.0" + "@types/doctrine" "^0.0.9" + "@types/resolve" "^1.20.2" + doctrine "^3.0.0" + resolve "^1.22.1" + strip-indent "^4.0.0" + react-dom@18.2.0, react-dom@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" @@ -11993,6 +14685,14 @@ react-dom@18.2.0, react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0": + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.2" + react-dropdown@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/react-dropdown/-/react-dropdown-1.11.0.tgz#b9576de17efd28e5684d101b3f58dfe784af242c" @@ -12000,6 +14700,15 @@ react-dropdown@^1.11.0: dependencies: classnames "^2.2.3" +react-element-to-jsx-string@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" + integrity sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ== + dependencies: + "@base2/pretty-print-object" "1.0.1" + is-plain-object "5.0.0" + react-is "18.1.0" + react-hook-form@^7.49.0: version "7.51.3" resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.51.3.tgz#7486dd2d52280b6b28048c099a98d2545931cab3" @@ -12012,6 +14721,11 @@ react-hot-toast@^2.4.1: dependencies: goober "^2.1.10" +react-is@18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" + integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== + react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -12110,6 +14824,13 @@ react@18.2.0, react@^18.2.0: dependencies: loose-envify "^1.1.0" +"react@^16.8.0 || ^17.0.0 || ^18.0.0": + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -12200,6 +14921,19 @@ read@^3.0.1: dependencies: mute-stream "^1.0.0" +readable-stream@^2.0.0, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -12219,19 +14953,6 @@ readable-stream@~1.0.31: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readdirp@^3.6.0, readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -12249,6 +14970,17 @@ real-require@^0.1.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== +recast@^0.23.3, recast@^0.23.5: + version "0.23.6" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.6.tgz#198fba74f66143a30acc81929302d214ce4e3bfa" + integrity sha512-9FHoNjX1yjuesMwuthAmPKabxYQdOgihFYmT5ebXfYGBcnqXZf3WOVz+5foEZ8Y83P4ZY6yQD5GMmtV+pgCCAQ== + dependencies: + ast-types "^0.16.1" + esprima "~4.0.0" + source-map "~0.6.1" + tiny-invariant "^1.3.3" + tslib "^2.0.1" + receptacle@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" @@ -12285,11 +15017,30 @@ refractor@^3.6.0: parse-entities "^2.0.0" prismjs "~1.27.0" +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + regexp.prototype.flags@^1.5.1: version "1.5.2" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" @@ -12300,11 +15051,53 @@ regexp.prototype.flags@^1.5.1: es-errors "^1.3.0" set-function-name "^2.0.1" +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + rehackt@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/rehackt/-/rehackt-0.0.6.tgz#7a0a2247f2295e7548915417e44fbbf03bf004f4" integrity sha512-l3WEzkt4ntlEc/IB3/mF6SRgNHA6zfQR7BlGOgBTOmx7IJJXojDASav+NsgXHFjHn+6RmwqsGPFgZpabWpeOdw== +rehype-external-links@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rehype-external-links/-/rehype-external-links-3.0.0.tgz#2b28b5cda1932f83f045b6f80a3e1b15f168c6f6" + integrity sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw== + dependencies: + "@types/hast" "^3.0.0" + "@ungap/structured-clone" "^1.0.0" + hast-util-is-element "^3.0.0" + is-absolute-url "^4.0.0" + space-separated-tokens "^2.0.0" + unist-util-visit "^5.0.0" + +rehype-slug@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/rehype-slug/-/rehype-slug-6.0.0.tgz#1d21cf7fc8a83ef874d873c15e6adaee6344eaf1" + integrity sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A== + dependencies: + "@types/hast" "^3.0.0" + github-slugger "^2.0.0" + hast-util-heading-rank "^3.0.0" + hast-util-to-string "^3.0.0" + unist-util-visit "^5.0.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -12320,6 +15113,11 @@ require-package-name@^2.0.1: resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" integrity sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q== +requireindex@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" + integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -12345,7 +15143,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.22.2, resolve@^1.22.3: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.3, resolve@^1.22.8: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -12394,6 +15192,13 @@ rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rimraf@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" @@ -12401,6 +15206,13 @@ rimraf@^4.4.1: dependencies: glob "^9.2.0" +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + ripemd160-min@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" @@ -12465,16 +15277,16 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - safe-stable-stringify@^2.1.0: version "2.4.3" resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" @@ -12492,6 +15304,13 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + scrypt-js@3.0.1, scrypt-js@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" @@ -12525,7 +15344,7 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.3.1: +semver@^6.0.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -12664,7 +15483,7 @@ shx@^0.3.4: minimist "^1.2.3" shelljs "^0.8.5" -side-channel@^1.0.4: +side-channel@^1.0.4, side-channel@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== @@ -12721,6 +15540,11 @@ simple-get@^4.0.0: once "^1.3.1" simple-concat "^1.0.0" +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + siwe-recap@0.0.2-alpha.0: version "0.0.2-alpha.0" resolved "https://registry.yarnpkg.com/siwe-recap/-/siwe-recap-0.0.2-alpha.0.tgz#75a0902c10a8ba5b4471f40e4eafb0afb2f8db59" @@ -12810,6 +15634,14 @@ source-map-js@^1.0.2, source-map-js@^1.2.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-support@^0.5.16: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map@0.8.0-beta.0: version "0.8.0-beta.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" @@ -12817,7 +15649,7 @@ source-map@0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" -source-map@^0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -12827,6 +15659,11 @@ space-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + sparse-array@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" @@ -12942,7 +15779,19 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" -stream-shift@^1.0.2: +store2@^2.14.2: + version "2.14.3" + resolved "https://registry.yarnpkg.com/store2/-/store2-2.14.3.tgz#24077d7ba110711864e4f691d2af941ec533deb5" + integrity sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg== + +storybook@^8.0.10: + version "8.0.10" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-8.0.10.tgz#397e7a95641421610ba4741bc63adbb380eed01f" + integrity sha512-9/4oxISopLyr5xz7Du27mmQgcIfB7UTLlNzkK4IklWTiSgsOgYgZpsmIwymoXNtkrvh+QsqskdcUP1C7nNiEtw== + dependencies: + "@storybook/cli" "8.0.10" + +stream-shift@^1.0.0, stream-shift@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== @@ -13003,7 +15852,7 @@ string_decoder@~1.1.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: +strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== @@ -13044,6 +15893,18 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +strip-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" + integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA== + dependencies: + min-indent "^1.0.1" + +strip-json-comments@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -13190,7 +16051,7 @@ tailwindcss@^3.4.3: resolve "^1.22.2" sucrase "^3.32.0" -tar-fs@^2.0.0: +tar-fs@^2.0.0, tar-fs@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== @@ -13223,7 +16084,7 @@ tar@6.1.11: mkdirp "^1.0.3" yallist "^4.0.0" -tar@^6.1.11, tar@^6.1.2: +tar@^6.1.11, tar@^6.1.2, tar@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== @@ -13235,11 +16096,41 @@ tar@^6.1.11, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" +telejson@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.2.0.tgz#3994f6c9a8f8d7f2dba9be2c7c5bbb447e876f32" + integrity sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ== + dependencies: + memoizerific "^1.11.3" + temp-dir@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +tempy@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.1.tgz#30fe901fd869cfb36ee2bd999805aa72fbb035de" + integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" @@ -13266,7 +16157,7 @@ thread-stream@^0.15.1: dependencies: real-require "^0.1.0" -through2@^2.0.0, through2@^2.0.1: +through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -13286,6 +16177,11 @@ timeout-abort-controller@^3.0.0: dependencies: retimer "^3.0.0" +tiny-invariant@^1.3.1, tiny-invariant@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== + tiny-secp256k1@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" @@ -13297,6 +16193,11 @@ tiny-secp256k1@^1.1.6: elliptic "^6.4.0" nan "^2.13.2" +tinyspy@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" + integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -13321,6 +16222,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +tocbot@^4.20.1: + version "4.27.19" + resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.27.19.tgz#e288dc2a81332e05cdeb68438d5aa859733f3dbd" + integrity sha512-0yu8k0L3gCQ1OVNZnKqpbZp+kLd6qtlNEBxsb+e0G/bS0EXMl2tWqWi1Oy9knRX8rTPYfOxd/sI/OzAj3JowGg== + toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -13353,6 +16259,11 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +ts-dedent@^2.0.0, ts-dedent@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" + integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -13384,7 +16295,7 @@ ts-node@^10.9.2: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tsconfig-paths@^4.1.2: +tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== @@ -13393,7 +16304,7 @@ tsconfig-paths@^4.1.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@1.14.1: +tslib@1.14.1, tslib@^1.13.0, tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -13408,7 +16319,7 @@ tslib@2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0, tslib@^2.6.2: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -13438,6 +16349,13 @@ tsup@^8.0.2: sucrase "^3.20.3" tree-kill "^1.2.2" +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + tuf-js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" @@ -13463,6 +16381,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tween-functions@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tween-functions/-/tween-functions-1.2.0.tgz#1ae3a50e7c60bb3def774eac707acbca73bbc3ff" + integrity sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA== + tweetnacl-util@^0.13.3: version "0.13.5" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.13.5.tgz#e39cd5d99709ee7125a18b03895b45a1299e475f" @@ -13478,6 +16401,16 @@ tweetnacl@^1.0.3: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== +type-detect@^4.0.0, type-detect@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" @@ -13503,6 +16436,11 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^2.19.0, type-fest@~2.19: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -13630,6 +16568,29 @@ unfetch@^4.2.0: resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.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== + unique-filename@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" @@ -13644,6 +16605,37 @@ unique-slug@^4.0.0: dependencies: imurmurhash "^0.1.4" +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +unist-util-is@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-visit-parents@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + +unist-util-visit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + universal-github-app-jwt@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/universal-github-app-jwt/-/universal-github-app-jwt-1.1.2.tgz#8c1867a394d7d9d42cda34f11d1bcb023797d8df" @@ -13667,6 +16659,16 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== +unplugin@^1.3.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.10.1.tgz#8ceda065dc71bc67d923dea0920f05c67f2cd68c" + integrity sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg== + dependencies: + acorn "^8.11.3" + chokidar "^3.6.0" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.6.1" + unstorage@^1.9.0: version "1.10.2" resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.10.2.tgz#fb7590ada8b30e83be9318f85100158b02a76dae" @@ -13917,6 +16919,14 @@ warning@^4.0.0: dependencies: loose-envify "^1.0.0" +watchpack@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" + integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -13944,6 +16954,16 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz#ac6fdb9c5adb8caecd82ec241c9631b7a3681b6f" + integrity sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg== + websocket@^1.0.34: version "1.0.34" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" @@ -14100,7 +17120,7 @@ write-file-atomic@5.0.1: imurmurhash "^0.1.4" signal-exit "^4.0.1" -write-file-atomic@^2.4.2: +write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== @@ -14150,6 +17170,11 @@ ws@^7, ws@^7.5.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +ws@^8.2.3: + version "8.17.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== + xss@^1.0.8: version "1.0.15" resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.15.tgz#96a0e13886f0661063028b410ed1b18670f4e59a" @@ -14272,6 +17297,11 @@ yn@3.1.1: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + zen-observable-ts@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" From 37c250873cfd78d5a9f132b1b5fdc78d43942d21 Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Tue, 14 May 2024 13:07:32 -0400 Subject: [PATCH 197/251] resolve aliases --- packages/frontend/tsconfig.json | 3 ++- packages/frontend/vite.config.ts | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/frontend/tsconfig.json b/packages/frontend/tsconfig.json index e0ae2860..10167203 100644 --- a/packages/frontend/tsconfig.json +++ b/packages/frontend/tsconfig.json @@ -27,7 +27,8 @@ "utils/*": ["./src/utils/*"], "assets/*": ["./src/assets/*"], "context/*": ["./src/context/*"], - "components/*": ["./src/components/*"] + "components/*": ["./src/components/*"], + "pages/*": ["./src/pages/*"] } }, "include": ["src"], diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index 6f58d61c..d9bb608b 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -10,6 +10,8 @@ export default defineConfig({ assets: '/src/assets', context: '/src/context', components: '/src/components', + pages: '/src/pages', + types: '/src/types', }, }, define: { From 928958131ce81b57fb9bce9c5f51cf219452610d Mon Sep 17 00:00:00 2001 From: Vivian Phung Date: Tue, 14 May 2024 13:08:10 -0400 Subject: [PATCH 198/251] component story directory --- .../src/stories/{ => Components}/Avatar.stories.tsx | 2 +- .../src/stories/{ => Components}/Button.stories.tsx | 6 ++++-- .../src/stories/{ => Components}/ComponentsAll.stories.tsx | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) rename packages/frontend/src/stories/{ => Components}/Avatar.stories.tsx (95%) rename packages/frontend/src/stories/{ => Components}/Button.stories.tsx (97%) rename packages/frontend/src/stories/{ => Components}/ComponentsAll.stories.tsx (85%) diff --git a/packages/frontend/src/stories/Avatar.stories.tsx b/packages/frontend/src/stories/Components/Avatar.stories.tsx similarity index 95% rename from packages/frontend/src/stories/Avatar.stories.tsx rename to packages/frontend/src/stories/Components/Avatar.stories.tsx index 0183667a..5d48298e 100644 --- a/packages/frontend/src/stories/Avatar.stories.tsx +++ b/packages/frontend/src/stories/Components/Avatar.stories.tsx @@ -1,7 +1,7 @@ import { Meta, StoryObj } from '@storybook/react'; import { Avatar, AvatarVariants } from 'components/shared/Avatar'; -import { avatars, avatarsFallback } from '../pages/components/renders/avatar'; +import { avatars, avatarsFallback } from 'pages/components/renders/avatar'; const avatarSizes: AvatarVariants['size'][] = [18, 20, 24, 28, 32, 36, 40, 44]; const avatarVariants: AvatarVariants['type'][] = ['gray', 'orange', 'blue']; diff --git a/packages/frontend/src/stories/Button.stories.tsx b/packages/frontend/src/stories/Components/Button.stories.tsx similarity index 97% rename from packages/frontend/src/stories/Button.stories.tsx rename to packages/frontend/src/stories/Components/Button.stories.tsx index 3e2d45fd..eb9c3052 100644 --- a/packages/frontend/src/stories/Button.stories.tsx +++ b/packages/frontend/src/stories/Components/Button.stories.tsx @@ -7,7 +7,7 @@ import { renderButtons, renderDisabledButtons, renderLinks, -} from '../pages/components/renders/button'; +} from 'pages/components/renders/button'; const meta: Meta = { title: 'Components/Button', @@ -100,7 +100,9 @@ export const ButtonAll: Story = { render: () => (