diff --git a/.vscode/settings.json b/.vscode/settings.json index 3b157a8bda..a366193c02 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,5 +3,5 @@ "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, "editor.formatOnSaveMode": "file", - "cSpell.words": ["blocksuite", "livedemo", "pnpm", "testid"] + "cSpell.words": ["blocksuite", "datacenter", "livedemo", "pnpm", "testid"] } diff --git a/package.json b/package.json index 4dfae84b48..1abcf66a9b 100644 --- a/package.json +++ b/package.json @@ -7,12 +7,12 @@ "scripts": { "dev": "pnpm --filter=!@affine/app build && pnpm --filter @affine/app dev", "dev:ac": "pnpm --filter=!@affine/app build && pnpm --filter @affine/app dev:ac", - "build": " pnpm --filter=!@affine/app build && pnpm --filter!=@affine/data-services -r build", + "build": " pnpm --filter=!@affine/app build && pnpm --filter!=@affine/datacenter -r build", "export": "pnpm --filter @affine/app export", "start": "pnpm --filter @affine/app start", "lint": "pnpm --filter @affine/app lint", "test": "playwright test", - "test:dc": "pnpm --filter @affine/data-services test", + "test:dc": "pnpm --filter @affine/datacenter test", "test:e2e:codegen": "npx playwright codegen http://localhost:8080", "test:unit": "jest", "postinstall": "husky install", diff --git a/packages/app/next.config.js b/packages/app/next.config.js index 31828afee2..20f12e5770 100644 --- a/packages/app/next.config.js +++ b/packages/app/next.config.js @@ -19,6 +19,7 @@ const nextConfig = { EDITOR_VERSION: dependencies['@blocksuite/editor'], }, webpack: config => { + config.experiments = { ...config.experiments, topLevelAwait: true }; config.resolve.alias['yjs'] = require.resolve('yjs'); config.module.rules.push({ test: /\.md$/i, diff --git a/packages/app/package.json b/packages/app/package.json index dc313f8f01..00b96a7fd1 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -10,11 +10,11 @@ "lint": "next lint" }, "dependencies": { - "@affine/data-services": "workspace:*", - "@blocksuite/blocks": "0.3.0-20221230100352-5dfe65e", - "@blocksuite/editor": "0.3.0-20221230100352-5dfe65e", + "@affine/datacenter": "workspace:*", + "@blocksuite/blocks": "0.3.1", + "@blocksuite/editor": "0.3.1", "@blocksuite/icons": "^2.0.2", - "@blocksuite/store": "0.3.0-20221230100352-5dfe65e", + "@blocksuite/store": "0.3.1", "@emotion/css": "^11.10.0", "@emotion/react": "^11.10.4", "@emotion/server": "^11.10.0", diff --git a/packages/app/public/.gitignore b/packages/app/public/.gitignore new file mode 100644 index 0000000000..69a24fb744 --- /dev/null +++ b/packages/app/public/.gitignore @@ -0,0 +1,2 @@ +*.js +*.map \ No newline at end of file diff --git a/packages/app/src/components/header/header-right-items/editor-option-menu.tsx b/packages/app/src/components/header/header-right-items/editor-option-menu.tsx index 24a07245ee..ea71aef757 100644 --- a/packages/app/src/components/header/header-right-items/editor-option-menu.tsx +++ b/packages/app/src/components/header/header-right-items/editor-option-menu.tsx @@ -87,7 +87,7 @@ const PopoverContent = () => { confirmType: 'danger', }).then(confirm => { confirm && toggleDeletePage(id); - toast('Moved to Trash'); + confirm && toast('Moved to Trash'); }); }} icon={} diff --git a/packages/app/src/components/invite-members/index.tsx b/packages/app/src/components/invite-members/index.tsx index 1cf5951237..f06674cb6b 100644 --- a/packages/app/src/components/invite-members/index.tsx +++ b/packages/app/src/components/invite-members/index.tsx @@ -4,7 +4,7 @@ import { Modal, ModalWrapper, ModalCloseButton } from '@/ui/modal'; import { Button } from '@/ui/button'; import Input from '@/ui/input'; import { useState } from 'react'; -import { inviteMember, getUserByEmail } from '@affine/data-services'; +import { getDataCenter } from '@affine/datacenter'; import { Avatar } from '@mui/material'; interface LoginModalProps { open: boolean; @@ -60,15 +60,19 @@ export const InviteMembers = ({ setShowTip(false); debounce( () => { - getUserByEmail({ - email: value, - workspace_id: workspaceId, - }).then(data => { - if (data?.name) { - setUserData(data); - setShowTip(false); - } - }); + getDataCenter() + .then(dc => + dc.apis.getUserByEmail({ + email: value, + workspace_id: workspaceId, + }) + ) + .then(data => { + if (data?.name) { + setUserData(data); + setShowTip(false); + } + }); }, 300, true @@ -130,7 +134,8 @@ export const InviteMembers = ({ shape="circle" type="primary" onClick={() => { - inviteMember({ id: workspaceId, email: email }) + getDataCenter() + .then(dc => dc.apis.inviteMember({ id: workspaceId, email })) .then(() => { onClose(); onInviteSuccess && onInviteSuccess(); diff --git a/packages/app/src/components/login-modal/LoginOptionButton.tsx b/packages/app/src/components/login-modal/LoginOptionButton.tsx index 298fbd86ba..e04d8fecc7 100644 --- a/packages/app/src/components/login-modal/LoginOptionButton.tsx +++ b/packages/app/src/components/login-modal/LoginOptionButton.tsx @@ -1,4 +1,4 @@ -import { signInWithGoogle } from '@affine/data-services'; +import { getDataCenter } from '@affine/datacenter'; import { styled } from '@/styles'; import { Button } from '@/ui/button'; import { useModal } from '@/providers/global-modal-provider'; @@ -9,7 +9,8 @@ export const GoogleLoginButton = () => { return ( { - signInWithGoogle() + getDataCenter() + .then(dc => dc.apis.signInWithGoogle?.()) .then(() => { triggerLoginModal(); }) diff --git a/packages/app/src/components/workspace-setting/general/delete/delete.tsx b/packages/app/src/components/workspace-setting/general/delete/delete.tsx index 2d0663d734..7fd14ef818 100644 --- a/packages/app/src/components/workspace-setting/general/delete/delete.tsx +++ b/packages/app/src/components/workspace-setting/general/delete/delete.tsx @@ -11,7 +11,7 @@ import { import { useState } from 'react'; import { ModalCloseButton } from '@/ui/modal'; import { Button } from '@/ui/button'; -import { deleteWorkspace } from '@affine/data-services'; +import { getDataCenter } from '@affine/datacenter'; import { useRouter } from 'next/router'; import { useAppState } from '@/providers/app-state-provider'; @@ -39,7 +39,8 @@ export const WorkspaceDelete = ({ }; const handleDelete = async () => { - await deleteWorkspace({ id: workspaceId }); + const dc = await getDataCenter(); + await dc.apis.deleteWorkspace({ id: workspaceId }); router.push(`/workspace/${nextWorkSpaceId}`); refreshWorkspacesMeta(); onClose(); diff --git a/packages/app/src/components/workspace-setting/general/general.tsx b/packages/app/src/components/workspace-setting/general/general.tsx index 74f355fd12..cef2daccb7 100644 --- a/packages/app/src/components/workspace-setting/general/general.tsx +++ b/packages/app/src/components/workspace-setting/general/general.tsx @@ -9,7 +9,7 @@ import { StyledSettingH2 } from '../style'; import { useState } from 'react'; import { Button } from '@/ui/button'; import Input from '@/ui/input'; -import { uploadBlob, Workspace, WorkspaceType } from '@affine/data-services'; +import { getDataCenter, Workspace, WorkspaceType } from '@affine/datacenter'; import { useAppState } from '@/providers/app-state-provider'; import { WorkspaceDetails } from '@/components/workspace-slider-bar/WorkspaceSelector/SelectorPopperContent'; import { WorkspaceDelete } from './delete'; @@ -74,9 +74,11 @@ export const GeneralPage = ({ const fileChange = async (file: File) => { setUploading(true); const blob = new Blob([file], { type: file.type }); - const blobId = await uploadBlob({ blob }).finally(() => { - setUploading(false); - }); + const blobId = await getDataCenter() + .then(dc => dc.apis.uploadBlob({ blob })) + .finally(() => { + setUploading(false); + }); if (blobId) { currentWorkspace?.meta.setAvatar(blobId); workspaces[workspace.id]?.meta.setAvatar(blobId); diff --git a/packages/app/src/components/workspace-setting/general/leave/leave.tsx b/packages/app/src/components/workspace-setting/general/leave/leave.tsx index 41fae82d07..3c2cf8ce22 100644 --- a/packages/app/src/components/workspace-setting/general/leave/leave.tsx +++ b/packages/app/src/components/workspace-setting/general/leave/leave.tsx @@ -7,7 +7,7 @@ import { } from './style'; import { ModalCloseButton } from '@/ui/modal'; import { Button } from '@/ui/button'; -import { leaveWorkspace } from '@affine/data-services'; +import { getDataCenter } from '@affine/datacenter'; import { useRouter } from 'next/router'; import { useAppState } from '@/providers/app-state-provider'; @@ -28,7 +28,8 @@ export const WorkspaceLeave = ({ const router = useRouter(); const { refreshWorkspacesMeta } = useAppState(); const handleLeave = async () => { - await leaveWorkspace({ id: workspaceId }); + const dc = await getDataCenter(); + await dc.apis.leaveWorkspace({ id: workspaceId }); router.push(`/workspace/${nextWorkSpaceId}`); refreshWorkspacesMeta(); onClose(); diff --git a/packages/app/src/components/workspace-setting/workspace-setting.tsx b/packages/app/src/components/workspace-setting/workspace-setting.tsx index ee67205ed9..c1b07e2441 100644 --- a/packages/app/src/components/workspace-setting/workspace-setting.tsx +++ b/packages/app/src/components/workspace-setting/workspace-setting.tsx @@ -36,13 +36,7 @@ import { useCallback, useEffect, useState } from 'react'; import { Button, IconButton } from '@/ui/button'; import Input from '@/ui/input'; import { InviteMembers } from '../invite-members/index'; -import { - getWorkspaceMembers, - Workspace, - Member, - removeMember, - updateWorkspace, -} from '@affine/data-services'; +import { Workspace, Member, getDataCenter } from '@affine/datacenter'; import { Avatar } from '@mui/material'; import { Menu, MenuItem } from '@/ui/menu'; import { toast } from '@/ui/toast'; @@ -169,9 +163,12 @@ const MembersPage = ({ workspace }: { workspace: Workspace }) => { const [isInviteModalShow, setIsInviteModalShow] = useState(false); const [members, setMembers] = useState([]); const refreshMembers = useCallback(() => { - getWorkspaceMembers({ - id: workspace.id, - }) + getDataCenter() + .then(dc => + dc.apis.getWorkspaceMembers({ + id: workspace.id, + }) + ) .then(data => { setMembers(data); }) @@ -236,13 +233,17 @@ const MembersPage = ({ workspace }: { workspace: Workspace }) => { // confirmText: 'Delete', // confirmType: 'danger', // }).then(confirm => { - removeMember({ - permissionId: member.id, - }).then(() => { - // console.log('data: ', data); - toast('Moved to Trash'); - refreshMembers(); - }); + getDataCenter() + .then(dc => + dc.apis.removeMember({ + permissionId: member.id, + }) + ) + .then(() => { + // console.log('data: ', data); + toast('Moved to Trash'); + refreshMembers(); + }); // }); }} icon={} @@ -297,13 +298,17 @@ const PublishPage = ({ workspace }: { workspace: Workspace }) => { workspace.public ); const togglePublic = (flag: boolean) => { - updateWorkspace({ - id: workspace.id, - public: flag, - }).then(data => { - setPublicStatus(data?.public); - toast('Updated Public Status Success'); - }); + getDataCenter() + .then(dc => + dc.apis.updateWorkspace({ + id: workspace.id, + public: flag, + }) + ) + .then(data => { + setPublicStatus(data?.public); + toast('Updated Public Status Success'); + }); }; const copyUrl = () => { navigator.clipboard.writeText(shareUrl); diff --git a/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/SelectorPopperContent.tsx b/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/SelectorPopperContent.tsx index 161f6dc19b..8e101307bb 100644 --- a/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/SelectorPopperContent.tsx +++ b/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/SelectorPopperContent.tsx @@ -12,7 +12,7 @@ import { } from './WorkspaceItem'; import { WorkspaceSetting } from '@/components/workspace-setting'; import { useCallback, useEffect, useState } from 'react'; -import { getWorkspaceDetail, WorkspaceType } from '@affine/data-services'; +import { getDataCenter, WorkspaceType } from '@affine/datacenter'; import { useModal } from '@/providers/global-modal-provider'; export type WorkspaceDetails = Record< @@ -54,7 +54,8 @@ export const SelectorPopperContent = ({ if (type === WorkspaceType.Private) { return { id, member_count: 1, owner: user }; } else { - const data = await getWorkspaceDetail({ id }); + const dc = await getDataCenter(); + const data = await dc.apis.getWorkspaceDetail({ id }); return { id, ...data } || { id, member_count: 0, owner: user }; } } diff --git a/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/CreateWorkspaceItem/workspace-create/workspace-create.tsx b/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/CreateWorkspaceItem/workspace-create/workspace-create.tsx index d2cf9f58ef..b07fdeecac 100644 --- a/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/CreateWorkspaceItem/workspace-create/workspace-create.tsx +++ b/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/CreateWorkspaceItem/workspace-create/workspace-create.tsx @@ -1,4 +1,4 @@ -import { createWorkspace, uploadBlob } from '@affine/data-services'; +import { getDataCenter } from '@affine/datacenter'; import Modal from '@/ui/modal'; import Input from '@/ui/input'; import { @@ -52,7 +52,9 @@ export const WorkspaceCreate = ({ open, onClose }: WorkspaceCreateProps) => { ctx.fillText(workspaceName[0], 50, 50); canvas.toBlob(blob => { if (blob) { - const blobId = uploadBlob({ blob }); + const blobId = getDataCenter().then(dc => + dc.apis.uploadBlob({ blob }) + ); resolve(blobId); } else { reject(); @@ -69,7 +71,10 @@ export const WorkspaceCreate = ({ open, onClose }: WorkspaceCreateProps) => { setCreating(false); }); if (blobId) { - createWorkspace({ name: workspaceName, avatar: blobId }) + getDataCenter() + .then(dc => + dc.apis.createWorkspace({ name: workspaceName, avatar: blobId }) + ) .then(async data => { await refreshWorkspacesMeta(); // eslint-disable-next-line @typescript-eslint/ban-ts-comment diff --git a/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/WorkspaceItem/WorkspaceItem.tsx b/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/WorkspaceItem/WorkspaceItem.tsx index 12f0ba59ca..31c2a22250 100644 --- a/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/WorkspaceItem/WorkspaceItem.tsx +++ b/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/WorkspaceItem/WorkspaceItem.tsx @@ -7,7 +7,7 @@ import { } from '../styles'; import { FooterSetting } from './FooterSetting'; import { FooterUsers } from './FooterUsers'; -import { WorkspaceType } from '@affine/data-services'; +import { WorkspaceType } from '@affine/datacenter'; import { useAppState } from '@/providers/app-state-provider'; interface WorkspaceItemProps { diff --git a/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceSelector.tsx b/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceSelector.tsx index 0e574cebbd..4e0299888f 100644 --- a/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceSelector.tsx +++ b/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceSelector.tsx @@ -3,7 +3,7 @@ import { Avatar, WorkspaceName, SelectorWrapper } from './styles'; import { SelectorPopperContent } from './SelectorPopperContent'; import { useState } from 'react'; import { useAppState } from '@/providers/app-state-provider'; -import { WorkspaceType } from '@affine/data-services'; +import { WorkspaceType } from '@affine/datacenter'; import { AffineIcon } from '../icons/icons'; export const WorkspaceSelector = () => { diff --git a/packages/app/src/components/workspace-slider-bar/icons/icons.tsx b/packages/app/src/components/workspace-slider-bar/icons/icons.tsx index 2fee60b0f5..a4dd37aedd 100644 --- a/packages/app/src/components/workspace-slider-bar/icons/icons.tsx +++ b/packages/app/src/components/workspace-slider-bar/icons/icons.tsx @@ -17,8 +17,8 @@ export const AffineIcon = () => { fill="#FFF" /> diff --git a/packages/app/src/components/workspace-slider-bar/index.tsx b/packages/app/src/components/workspace-slider-bar/index.tsx index b2f2ef9bdd..559e0b983a 100644 --- a/packages/app/src/components/workspace-slider-bar/index.tsx +++ b/packages/app/src/components/workspace-slider-bar/index.tsx @@ -6,7 +6,6 @@ import { StyledListItem, StyledListItemForWorkspace, StyledNewPageButton, - StyledQuickSearch, StyledSliderBar, StyledSliderBarWrapper, StyledSubListItem, @@ -32,11 +31,7 @@ import { IconButton } from '@/ui/button'; import useLocalStorage from '@/hooks/use-local-storage'; import usePageMetaList from '@/hooks/use-page-meta-list'; import { usePageHelper } from '@/hooks/use-page-helper'; -import { getUaHelper } from '@/utils'; -const isMac = () => { - return getUaHelper().isMacOs; -}; const FavoriteList = ({ showList }: { showList: boolean }) => { const { openPage } = usePageHelper(); const pageList = usePageMetaList(); @@ -117,7 +112,7 @@ export const WorkSpaceSliderBar = () => { - { @@ -126,8 +121,7 @@ export const WorkSpaceSliderBar = () => { > Quick search - {isMac() ? '⌘ + K' : 'Ctrl + K'} - + All pages diff --git a/packages/app/src/components/workspace-slider-bar/style.ts b/packages/app/src/components/workspace-slider-bar/style.ts index 3ee270f3d4..f29de60a1e 100644 --- a/packages/app/src/components/workspace-slider-bar/style.ts +++ b/packages/app/src/components/workspace-slider-bar/style.ts @@ -21,6 +21,7 @@ export const StyledSliderBarWrapper = styled.div(() => { height: '100%', overflowX: 'hidden', overflowY: 'auto', + position: 'relative', }; }); @@ -141,34 +142,3 @@ export const StyledSubListItem = styled.button<{ }, }; }); - -export const StyledQuickSearch = styled.div(({ theme }) => { - return { - width: '296px', - height: '32px', - marginTop: '12px', - fontSize: theme.font.sm, - backgroundColor: theme.colors.hoverBackground, - color: theme.colors.popoverColor, - paddingLeft: '12px', - borderRadius: '5px', - ...displayFlex('flex-start', 'center'), - '>svg': { - fontSize: '20px', - marginRight: '12px', - }, - '>span': { - fontSize: theme.font.xs, - margin: 'auto', - marginRight: '12px', - color: theme.colors.hoverBackground, - transition: 'all .15s', - }, - ':hover': { - color: theme.colors.popoverColor, - '>span': { - color: theme.colors.popoverColor, - }, - }, - }; -}); diff --git a/packages/app/src/hooks/use-ensure-workspace.ts b/packages/app/src/hooks/use-ensure-workspace.ts index 848c1cc428..a340b78a48 100644 --- a/packages/app/src/hooks/use-ensure-workspace.ts +++ b/packages/app/src/hooks/use-ensure-workspace.ts @@ -30,18 +30,18 @@ export const useEnsureWorkspace = () => { return; } // If user is not login and input a custom workspaceId, jump to 404 page - if ( - !user && - router.query.workspaceId && - router.query.workspaceId !== defaultOutLineWorkspaceId - ) { - router.push('/404'); - return; - } + // if ( + // !user && + // router.query.workspaceId && + // router.query.workspaceId !== defaultOutLineWorkspaceId + // ) { + // router.push('/404'); + // return; + // } const workspaceId = user - ? (router.query.workspaceId as string) || workspacesMeta?.[0]?.id - : defaultOutLineWorkspaceId; + ? (router.query.workspaceId as string) || workspacesMeta[0]?.id + : (router.query.workspaceId as string) || defaultOutLineWorkspaceId; loadWorkspace(workspaceId).finally(() => { setWorkspaceLoaded(true); diff --git a/packages/app/src/pages/invite/[invite_code].tsx b/packages/app/src/pages/invite/[invite_code].tsx index b0f8fece67..c6ef0b6b4e 100644 --- a/packages/app/src/pages/invite/[invite_code].tsx +++ b/packages/app/src/pages/invite/[invite_code].tsx @@ -1,7 +1,7 @@ import { styled } from '@/styles'; import { Empty } from '@/ui/empty'; import { Avatar } from '@mui/material'; -import { acceptInviting } from '@affine/data-services'; +import { getDataCenter } from '@affine/datacenter'; import { useRouter } from 'next/router'; import { useEffect, useState } from 'react'; @@ -24,7 +24,12 @@ export default function DevPage() { // eslint-disable-next-line @typescript-eslint/no-explicit-any const [inviteData, setInviteData] = useState(null); useEffect(() => { - acceptInviting({ invitingCode: router.query.invite_code as string }) + getDataCenter() + .then(dc => + dc.apis.acceptInviting({ + invitingCode: router.query.invite_code as string, + }) + ) .then(data => { setSuccessInvited(true); setInviteData(data); diff --git a/packages/app/src/pages/workspace/[workspaceId]/[pageId].tsx b/packages/app/src/pages/workspace/[workspaceId]/[pageId].tsx index 726a23b677..971e950f8b 100644 --- a/packages/app/src/pages/workspace/[workspaceId]/[pageId].tsx +++ b/packages/app/src/pages/workspace/[workspaceId]/[pageId].tsx @@ -68,6 +68,7 @@ const Page: NextPageWithLayout = () => { } } + document.title = currentPage?.meta.title || 'Untitled'; return ret; }, [currentWorkspace, currentPage, createEditor, setEditor]); diff --git a/packages/app/src/providers/app-state-provider/context.ts b/packages/app/src/providers/app-state-provider/context.ts index 5dda7ddbd6..ee6b41d05a 100644 --- a/packages/app/src/providers/app-state-provider/context.ts +++ b/packages/app/src/providers/app-state-provider/context.ts @@ -1,6 +1,5 @@ import { createContext, MutableRefObject, useContext } from 'react'; -import type { Workspace } from '@affine/data-services'; -import { AccessTokenMessage } from '@affine/data-services'; +import type { AccessTokenMessage, Workspace } from '@affine/datacenter'; import type { Page as StorePage, Workspace as StoreWorkspace, @@ -8,7 +7,6 @@ import type { import type { EditorContainer } from '@blocksuite/editor'; export type LoadWorkspaceHandler = ( workspaceId: string, - websocket?: boolean, user?: AccessTokenMessage | null ) => Promise | null; export type CreateEditorHandler = (page: StorePage) => EditorContainer | null; diff --git a/packages/app/src/providers/app-state-provider/dynamic-blocksuite.tsx b/packages/app/src/providers/app-state-provider/dynamic-blocksuite.tsx index d30e0e02a1..3a8fb7671c 100644 --- a/packages/app/src/providers/app-state-provider/dynamic-blocksuite.tsx +++ b/packages/app/src/providers/app-state-provider/dynamic-blocksuite.tsx @@ -1,13 +1,9 @@ import { useEffect } from 'react'; import type { Page } from '@blocksuite/store'; -import { - IndexedDBDocProvider, - Workspace as StoreWorkspace, -} from '@blocksuite/store'; import '@blocksuite/blocks'; import { EditorContainer } from '@blocksuite/editor'; -import { BlockSchema } from '@blocksuite/blocks/models'; import type { LoadWorkspaceHandler, CreateEditorHandler } from './context'; +import { getDataCenter } from '@affine/datacenter'; interface Props { setLoadWorkspaceHandler: (handler: LoadWorkspaceHandler) => void; @@ -19,66 +15,14 @@ const DynamicBlocksuite = ({ setCreateEditorHandler, }: Props) => { useEffect(() => { - const openWorkspace: LoadWorkspaceHandler = ( - workspaceId: string, - websocket = false, - user - ) => - // eslint-disable-next-line no-async-promise-executor - new Promise(async resolve => { - const workspace = new StoreWorkspace({ - room: workspaceId, - providers: [IndexedDBDocProvider], - }).register(BlockSchema); - console.log('websocket', websocket); - console.log('user', user); - - // if (websocket && token.refresh) { - // // FIXME: if add websocket provider, the first page will be blank - // const ws = new WebsocketProvider( - // `ws${window.location.protocol === 'https:' ? 's' : ''}://${ - // window.location.host - // }/api/sync/`, - // workspaceId, - // workspace.doc, - // { - // params: { - // token: token.refresh, - // }, - // awareness: workspace.meta.awareness.awareness, - // } - // ); - // - // ws.shouldConnect = false; - // - // // FIXME: there needs some method to destroy websocket. - // // Or we need a manager to manage websocket. - // // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // // @ts-expect-error - // workspace.__ws__ = ws; - // } - - const indexDBProvider = workspace.providers.find( - p => p instanceof IndexedDBDocProvider - ); - // if (user) { - // const updates = await downloadWorkspace({ workspaceId }); - // updates && - // StoreWorkspace.Y.applyUpdate( - // workspace.doc, - // new Uint8Array(updates) - // ); - // // if after update, the space:meta is empty, then we need to get map with doc - // workspace.doc.getMap('space:meta'); - // } - if (indexDBProvider) { - (indexDBProvider as IndexedDBDocProvider).whenSynced.then(() => { - resolve(workspace); - }); - } else { - resolve(workspace); - } - }); + const openWorkspace: LoadWorkspaceHandler = async (workspaceId: string) => { + if (workspaceId) { + const dc = await getDataCenter(); + return dc.load(workspaceId, { providerId: 'affine' }); + } else { + return null; + } + }; setLoadWorkspaceHandler(openWorkspace); }, [setLoadWorkspaceHandler]); diff --git a/packages/app/src/providers/app-state-provider/hooks/use-sync-data.ts b/packages/app/src/providers/app-state-provider/hooks/use-sync-data.ts deleted file mode 100644 index ae1d37fe7e..0000000000 --- a/packages/app/src/providers/app-state-provider/hooks/use-sync-data.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { useEffect } from 'react'; -import { - AccessTokenMessage, - getWorkspaces, - token, -} from '@affine/data-services'; -import { LoadWorkspaceHandler } from '../context'; - -export const useSyncData = ({ - loadWorkspaceHandler, -}: { - loadWorkspaceHandler: LoadWorkspaceHandler; -}) => { - useEffect(() => { - if (!loadWorkspaceHandler) { - return; - } - const start = async () => { - const isLogin = await token.refreshToken().catch(() => false); - return isLogin; - }; - start(); - - const callback = async (user: AccessTokenMessage | null) => { - const workspacesMeta = user - ? await getWorkspaces().catch(() => { - return []; - }) - : []; - // setState(state => ({ - // ...state, - // user: user, - // workspacesMeta, - // synced: true, - // })); - return workspacesMeta; - }; - - token.onChange(callback); - token.refreshToken().catch(err => { - // FIXME: should resolve invalid refresh token - console.log(err); - }); - return () => { - token.offChange(callback); - }; - }, [loadWorkspaceHandler]); -}; diff --git a/packages/app/src/providers/app-state-provider/provider.tsx b/packages/app/src/providers/app-state-provider/provider.tsx index 44971a002a..daa60ff85e 100644 --- a/packages/app/src/providers/app-state-provider/provider.tsx +++ b/packages/app/src/providers/app-state-provider/provider.tsx @@ -1,7 +1,7 @@ import { useMemo, useState, useEffect, useCallback, useRef } from 'react'; import type { ReactNode } from 'react'; import dynamic from 'next/dynamic'; -import { getWorkspaces } from '@affine/data-services'; +import { getDataCenter } from '@affine/datacenter'; import { AppState, AppStateContext } from './context'; import type { AppStateValue, @@ -16,7 +16,8 @@ const DynamicBlocksuite = dynamic(() => import('./dynamic-blocksuite'), { export const AppStateProvider = ({ children }: { children?: ReactNode }) => { const refreshWorkspacesMeta = async () => { - const workspacesMeta = await getWorkspaces().catch(() => { + const dc = await getDataCenter(); + const workspacesMeta = await dc.apis.getWorkspaces().catch(() => { return []; }); setState(state => ({ ...state, workspacesMeta })); @@ -41,7 +42,7 @@ export const AppStateProvider = ({ children }: { children?: ReactNode }) => { const workspacesList = await Promise.all( state.workspacesMeta.map(async ({ id }) => { const workspace = - (await loadWorkspaceHandler?.(id, false, state.user)) || null; + (await loadWorkspaceHandler?.(id, state.user)) || null; return { id, workspace }; }) ); @@ -84,7 +85,7 @@ export const AppStateProvider = ({ children }: { children?: ReactNode }) => { return state.currentWorkspace; } const workspace = - (await loadWorkspaceHandler?.(workspaceId, true, state.user)) || null; + (await loadWorkspaceHandler?.(workspaceId, state.user)) || null; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error diff --git a/packages/data-services/.gitignore b/packages/data-center/.gitignore similarity index 100% rename from packages/data-services/.gitignore rename to packages/data-center/.gitignore diff --git a/packages/data-services/package.json b/packages/data-center/package.json similarity index 69% rename from packages/data-services/package.json rename to packages/data-center/package.json index 65bdc17129..5d0ebc843f 100644 --- a/packages/data-services/package.json +++ b/packages/data-center/package.json @@ -1,5 +1,5 @@ { - "name": "@affine/data-services", + "name": "@affine/datacenter", "version": "0.3.0", "description": "", "type": "module", @@ -21,14 +21,22 @@ }, "devDependencies": { "@playwright/test": "^1.29.1", + "@types/debug": "^4.1.7", + "fake-indexeddb": "4.0.1", "typescript": "^4.8.4" }, "dependencies": { + "@blocksuite/blocks": "^0.3.1", + "@blocksuite/store": "^0.3.1", + "debug": "^4.3.4", "encoding": "^0.1.13", - "firebase": "^9.13.0", + "firebase": "^9.15.0", + "idb-keyval": "^6.2.0", "ky": "^0.33.0", + "ky-universal": "^0.11.0", "lib0": "^0.2.58", "swr": "^2.0.0", + "yjs": "^13.5.44", "y-protocols": "^1.0.5" } } diff --git a/packages/data-services/playwright.config.ts b/packages/data-center/playwright.config.ts similarity index 100% rename from packages/data-services/playwright.config.ts rename to packages/data-center/playwright.config.ts diff --git a/packages/data-center/src/apis/index.ts b/packages/data-center/src/apis/index.ts new file mode 100644 index 0000000000..de62a9fcb1 --- /dev/null +++ b/packages/data-center/src/apis/index.ts @@ -0,0 +1,21 @@ +export { token } from './token.js'; +export type { Callback } from './token.js'; + +import { getAuthorizer } from './token.js'; +import * as user from './user.js'; +import * as workspace from './workspace.js'; + +export type Apis = typeof user & + typeof workspace & { + signInWithGoogle: ReturnType[0]; + onAuthStateChanged: ReturnType[1]; + }; + +export const getApis = (): Apis => { + const [signInWithGoogle, onAuthStateChanged] = getAuthorizer(); + return { ...user, ...workspace, signInWithGoogle, onAuthStateChanged }; +}; + +export type { AccessTokenMessage } from './token'; +export type { Member, Workspace } from './workspace'; +export { WorkspaceType } from './workspace.js'; diff --git a/packages/data-services/src/request/index.ts b/packages/data-center/src/apis/request.ts similarity index 88% rename from packages/data-services/src/request/index.ts rename to packages/data-center/src/apis/request.ts index 8d0da14311..ce5b64eebe 100644 --- a/packages/data-services/src/request/index.ts +++ b/packages/data-center/src/apis/request.ts @@ -1,7 +1,9 @@ -import ky from 'ky'; -import { token } from './token'; +import kyOrigin from 'ky'; +import ky from 'ky-universal'; +import { token } from './token.js'; export const bareClient = ky.extend({ + prefixUrl: 'http://localhost:8080', retry: 1, hooks: { // afterResponse: [ @@ -19,6 +21,7 @@ export const bareClient = ky.extend({ // ], }, }); + export const client = bareClient.extend({ hooks: { beforeRequest: [ @@ -40,6 +43,3 @@ export const client = bareClient.extend({ ], }, }); - -export type { AccessTokenMessage } from './token'; -export { token }; diff --git a/packages/data-center/src/apis/token.ts b/packages/data-center/src/apis/token.ts new file mode 100644 index 0000000000..b0acf68ee3 --- /dev/null +++ b/packages/data-center/src/apis/token.ts @@ -0,0 +1,170 @@ +import { initializeApp } from 'firebase/app'; +import { getAuth, GoogleAuthProvider, signInWithPopup } from 'firebase/auth'; +import type { User } from 'firebase/auth'; + +import { getLogger } from '../index.js'; +import { bareClient } from './request.js'; + +export interface AccessTokenMessage { + create_at: number; + exp: number; + email: string; + id: string; + name: string; + avatar_url: string; +} + +export type Callback = (user: AccessTokenMessage | null) => void; + +type LoginParams = { + type: 'Google' | 'Refresh'; + token: string; +}; + +type LoginResponse = { + // access token, expires in a very short time + token: string; + // Refresh token + refresh: string; +}; + +const login = (params: LoginParams): Promise => + bareClient.post('api/user/token', { json: params }).json(); + +class Token { + private readonly _logger; + private _accessToken!: string; + private _refreshToken!: string; + + private _user!: AccessTokenMessage | null; + private _padding?: Promise; + + constructor() { + this._logger = getLogger('token'); + this._logger.enabled = true; + + this._setToken(); // fill with default value + } + + private _setToken(login?: LoginResponse) { + this._accessToken = login?.token || ''; + this._refreshToken = login?.refresh || ''; + + this._user = Token.parse(this._accessToken); + if (login) { + this._logger('set login', login); + this.triggerChange(this._user); + } else { + this._logger('empty login'); + } + } + + async initToken(token: string) { + this._setToken(await login({ token, type: 'Google' })); + } + + async refreshToken(token?: string) { + if (!this._refreshToken && !token) { + throw new Error('No authorization token.'); + } + if (!this._padding) { + this._padding = login({ + type: 'Refresh', + token: this._refreshToken || token!, + }); + } + this._setToken(await this._padding); + this._padding = undefined; + } + + get token() { + return this._accessToken; + } + + get refresh() { + return this._refreshToken; + } + + get isLogin() { + return !!this._refreshToken; + } + + get isExpired() { + if (!this._user) return true; + return Date.now() - this._user.create_at > this._user.exp; + } + + static parse(token: string): AccessTokenMessage | null { + try { + return JSON.parse( + String.fromCharCode.apply( + null, + Array.from( + Uint8Array.from( + window.atob( + // split jwt + token.split('.')[1] + ), + c => c.charCodeAt(0) + ) + ) + ) + ); + } catch (error) { + return null; + } + } + + private callbacks: Callback[] = []; + private lastState: AccessTokenMessage | null = null; + + triggerChange(user: AccessTokenMessage | null) { + this.lastState = user; + this.callbacks.forEach(callback => callback(user)); + } + + onChange(callback: Callback) { + this.callbacks.push(callback); + callback(this.lastState); + } + + offChange(callback: Callback) { + const index = this.callbacks.indexOf(callback); + if (index > -1) { + this.callbacks.splice(index, 1); + } + } +} + +export const token = new Token(); + +export const getAuthorizer = () => { + const app = initializeApp({ + apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY, + authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN, + projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID, + storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET, + messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID, + appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID, + measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID, + }); + try { + const firebaseAuth = getAuth(app); + + const googleAuthProvider = new GoogleAuthProvider(); + + const signInWithGoogle = async () => { + const user = await signInWithPopup(firebaseAuth, googleAuthProvider); + const idToken = await user.user.getIdToken(); + await token.initToken(idToken); + }; + + const onAuthStateChanged = (callback: (user: User | null) => void) => { + firebaseAuth.onAuthStateChanged(callback); + }; + + return [signInWithGoogle, onAuthStateChanged] as const; + } catch (e) { + return [] as const; + } +}; diff --git a/packages/data-services/src/sdks/user.ts b/packages/data-center/src/apis/user.ts similarity index 76% rename from packages/data-services/src/sdks/user.ts rename to packages/data-center/src/apis/user.ts index 46ba1bc8a1..2848a9b673 100644 --- a/packages/data-services/src/sdks/user.ts +++ b/packages/data-center/src/apis/user.ts @@ -1,4 +1,4 @@ -import { client } from '../request'; +import { client } from './request.js'; export interface GetUserByEmailParams { email: string; @@ -17,5 +17,5 @@ export async function getUserByEmail( params: GetUserByEmailParams ): Promise { const searchParams = new URLSearchParams({ ...params }); - return client.get('/api/user', { searchParams }).json(); + return client.get('api/user', { searchParams }).json(); } diff --git a/packages/data-services/src/sdks/workspace.ts b/packages/data-center/src/apis/workspace.ts similarity index 74% rename from packages/data-services/src/sdks/workspace.ts rename to packages/data-center/src/apis/workspace.ts index 722e72410c..396aa46f8e 100644 --- a/packages/data-services/src/sdks/workspace.ts +++ b/packages/data-center/src/apis/workspace.ts @@ -1,5 +1,5 @@ -import { client, bareClient } from '../request'; -import { User } from './user'; +import { bareClient, client } from './request.js'; +import type { User } from './user'; export interface GetWorkspaceDetailParams { id: string; @@ -27,7 +27,7 @@ export interface Workspace { export async function getWorkspaces(): Promise { return client - .get('/api/workspace', { + .get('api/workspace', { headers: { 'Cache-Control': 'no-cache', }, @@ -43,7 +43,7 @@ export interface WorkspaceDetail extends Workspace { export async function getWorkspaceDetail( params: GetWorkspaceDetailParams ): Promise { - return client.get(`/api/workspace/${params.id}`).json(); + return client.get(`api/workspace/${params.id}`).json(); } export interface Permission { @@ -74,7 +74,7 @@ export interface GetWorkspaceMembersParams { export async function getWorkspaceMembers( params: GetWorkspaceDetailParams ): Promise { - return client.get(`/api/workspace/${params.id}/permission`).json(); + return client.get(`api/workspace/${params.id}/permission`).json(); } export interface CreateWorkspaceParams { @@ -85,7 +85,7 @@ export interface CreateWorkspaceParams { export async function createWorkspace( params: CreateWorkspaceParams ): Promise { - return client.post('/api/workspace', { json: params }).json(); + return client.post('api/workspace', { json: params }).json(); } export interface UpdateWorkspaceParams { @@ -97,7 +97,7 @@ export async function updateWorkspace( params: UpdateWorkspaceParams ): Promise<{ public: boolean | null }> { return client - .post(`/api/workspace/${params.id}`, { + .post(`api/workspace/${params.id}`, { json: { public: params.public, }, @@ -112,7 +112,7 @@ export interface DeleteWorkspaceParams { export async function deleteWorkspace( params: DeleteWorkspaceParams ): Promise { - await client.delete(`/api/workspace/${params.id}`); + await client.delete(`api/workspace/${params.id}`); } export interface InviteMemberParams { @@ -125,7 +125,7 @@ export interface InviteMemberParams { */ export async function inviteMember(params: InviteMemberParams): Promise { return client - .post(`/api/workspace/${params.id}/permission`, { + .post(`api/workspace/${params.id}/permission`, { json: { email: params.email, }, @@ -138,7 +138,7 @@ export interface RemoveMemberParams { } export async function removeMember(params: RemoveMemberParams): Promise { - await client.delete(`/api/permission/${params.permissionId}`); + await client.delete(`api/permission/${params.permissionId}`); } export interface AcceptInvitingParams { @@ -148,31 +148,29 @@ export interface AcceptInvitingParams { export async function acceptInviting( params: AcceptInvitingParams ): Promise { - await bareClient.post(`/api/invitation/${params.invitingCode}`); -} - -export interface DownloadWOrkspaceParams { - workspaceId: string; -} -export async function downloadWorkspace( - params: DownloadWOrkspaceParams -): Promise { - return client.get(`/api/workspace/${params.workspaceId}/doc`).arrayBuffer(); + await bareClient.post(`api/invitation/${params.invitingCode}`); } export async function uploadBlob(params: { blob: Blob }): Promise { - return client.put('/api/blob', { body: params.blob }).text(); + return client.put('api/blob', { body: params.blob }).text(); } export async function getBlob(params: { blobId: string; }): Promise { - return client.get(`/api/blob/${params.blobId}`).arrayBuffer(); + return client.get(`api/blob/${params.blobId}`).arrayBuffer(); } export interface LeaveWorkspaceParams { id: number | string; } + export async function leaveWorkspace({ id }: LeaveWorkspaceParams) { - await client.delete(`/api/workspace/${id}/permission`).json(); + await client.delete(`api/workspace/${id}/permission`).json(); +} + +export async function downloadWorkspace( + workspaceId: string +): Promise { + return client.get(`api/workspace/${workspaceId}/doc`).arrayBuffer(); } diff --git a/packages/data-center/src/datacenter.ts b/packages/data-center/src/datacenter.ts new file mode 100644 index 0000000000..b43a7c7b61 --- /dev/null +++ b/packages/data-center/src/datacenter.ts @@ -0,0 +1,156 @@ +import assert from 'assert'; +import { BlockSchema } from '@blocksuite/blocks/models'; +import { Workspace } from '@blocksuite/store'; + +import { getLogger } from './index.js'; +import { getApis, Apis } from './apis/index.js'; +import { AffineProvider, BaseProvider } from './provider/index.js'; +import { LocalProvider } from './provider/index.js'; +import { getKVConfigure } from './store.js'; + +// load workspace's config +type LoadConfig = { + // use witch provider load data + providerId?: string; + // provider config + config?: Record; +}; + +export class DataCenter { + private readonly _apis: Apis; + private readonly _providers = new Map(); + private readonly _workspaces = new Map>(); + private readonly _config; + private readonly _logger; + + static async init(debug: boolean): Promise { + const dc = new DataCenter(debug); + dc.addProvider(AffineProvider); + dc.addProvider(LocalProvider); + + return dc; + } + + private constructor(debug: boolean) { + this._apis = getApis(); + this._config = getKVConfigure('sys'); + this._logger = getLogger('dc'); + this._logger.enabled = debug; + } + + get apis(): Readonly { + return this._apis; + } + + private addProvider(provider: typeof BaseProvider) { + this._providers.set(provider.id, provider); + } + + private async _getProvider(id: string, providerId: string): Promise { + const providerKey = `workspace:${id}:provider`; + if (this._providers.has(providerId)) { + await this._config.set(providerKey, providerId); + return providerId; + } else { + const providerValue = await this._config.get(providerKey); + if (providerValue) return providerValue; + } + throw Error(`Provider ${providerId} not found`); + } + + private async _getWorkspace(id: string, pid: string): Promise { + this._logger(`Init workspace ${id} with ${pid}`); + + const providerId = await this._getProvider(id, pid); + + // init workspace & register block schema + const workspace = new Workspace({ room: id }).register(BlockSchema); + + const Provider = this._providers.get(providerId); + assert(Provider); + const provider = new Provider(); + + await provider.init({ + apis: this._apis, + config: getKVConfigure(id), + debug: this._logger.enabled, + logger: this._logger.extend(`${Provider.id}:${id}`), + workspace, + }); + await provider.initData(); + this._logger(`Workspace ${id} loaded`); + + return provider; + } + + async setConfig(workspace: string, config: Record) { + const values = Object.entries(config); + if (values.length) { + const configure = getKVConfigure(workspace); + await configure.setMany(values); + } + } + + // load workspace data to memory + async load( + workspaceId: string, + params: LoadConfig = {} + ): Promise { + const { providerId = 'local', config = {} } = params; + if (workspaceId) { + if (!this._workspaces.has(workspaceId)) { + this._workspaces.set( + workspaceId, + this.setConfig(workspaceId, config).then(() => + this._getWorkspace(workspaceId, providerId) + ) + ); + } + const workspace = this._workspaces.get(workspaceId); + assert(workspace); + return workspace.then(w => w.workspace); + } + return null; + } + + // destroy workspace's instance in memory + async destroy(workspaceId: string) { + const provider = await this._workspaces.get(workspaceId); + if (provider) { + this._workspaces.delete(workspaceId); + await provider.destroy(); + } + } + + async reload( + workspaceId: string, + config: LoadConfig = {} + ): Promise { + await this.destroy(workspaceId); + return this.load(workspaceId, config); + } + + async list() { + const keys = await this._config.keys(); + return keys + .filter(k => k.startsWith('workspace:')) + .map(k => k.split(':')[1]); + } + + // delete local workspace's data + async delete(workspaceId: string) { + await this._config.delete(`workspace:${workspaceId}:provider`); + const provider = await this._workspaces.get(workspaceId); + if (provider) { + this._workspaces.delete(workspaceId); + // clear workspace data implement by provider + await provider.clear(); + } + } + + // clear all local workspace's data + async clear() { + const workspaces = await this.list(); + await Promise.all(workspaces.map(id => this.delete(id))); + } +} diff --git a/packages/data-center/src/index.ts b/packages/data-center/src/index.ts new file mode 100644 index 0000000000..68aa74b916 --- /dev/null +++ b/packages/data-center/src/index.ts @@ -0,0 +1,25 @@ +import debug from 'debug'; +import { DataCenter } from './datacenter.js'; + +const _initializeDataCenter = () => { + let _dataCenterInstance: Promise; + + return (debug = true) => { + if (!_dataCenterInstance) { + _dataCenterInstance = DataCenter.init(debug); + } + + return _dataCenterInstance; + }; +}; + +export const getDataCenter = _initializeDataCenter(); + +export function getLogger(namespace: string) { + const logger = debug(namespace); + logger.log = console.log.bind(console); + return logger; +} + +export type { AccessTokenMessage, Member, Workspace } from './apis'; +export { WorkspaceType } from './apis/index.js'; diff --git a/packages/data-center/src/provider/affine/index.ts b/packages/data-center/src/provider/affine/index.ts new file mode 100644 index 0000000000..e203606d2b --- /dev/null +++ b/packages/data-center/src/provider/affine/index.ts @@ -0,0 +1,97 @@ +import assert from 'assert'; +import { applyUpdate } from 'yjs'; + +import type { InitialParams } from '../index.js'; +import { token, Callback } from '../../apis/index.js'; +import { LocalProvider } from '../local/index.js'; + +import { WebsocketProvider } from './sync.js'; + +export class AffineProvider extends LocalProvider { + static id = 'affine'; + private _onTokenRefresh?: Callback = undefined; + private _ws?: WebsocketProvider; + + constructor() { + super(); + } + + async init(params: InitialParams) { + super.init(params); + + this._onTokenRefresh = () => { + if (token.refresh) { + this._config.set('token', token.refresh); + } + }; + assert(this._onTokenRefresh); + + token.onChange(this._onTokenRefresh); + + // initial login token + if (token.isExpired) { + try { + const refreshToken = await this._config.get('token'); + await token.refreshToken(refreshToken); + + if (token.refresh) { + this._config.set('token', token.refresh); + } + + assert(token.isLogin); + } catch (_) { + this._logger('Authorization failed, fallback to local mode'); + } + } else { + this._config.set('token', token.refresh); + } + } + + async destroy() { + if (this._onTokenRefresh) { + token.offChange(this._onTokenRefresh); + } + if (this._ws) { + this._ws.disconnect(); + } + } + + async initData() { + await super.initData(); + + const workspace = this._workspace; + const doc = workspace.doc; + + this._logger(`Login: ${token.isLogin}`); + + if (workspace.room && token.isLogin) { + try { + const updates = await this._apis.downloadWorkspace(workspace.room); + if (updates) { + await new Promise(resolve => { + doc.once('update', resolve); + applyUpdate(doc, new Uint8Array(updates)); + }); + // TODO: wait util data loaded + this._ws = new WebsocketProvider('/', workspace.room, doc); + // Wait for ws synchronization to complete, otherwise the data will be modified in reverse, which can be optimized later + await new Promise((resolve, reject) => { + // TODO: synced will also be triggered on reconnection after losing sync + // There needs to be an event mechanism to emit the synchronization state to the upper layer + assert(this._ws); + this._ws.once('synced', () => resolve()); + this._ws.once('lost-connection', () => resolve()); + this._ws.once('connection-error', () => reject()); + }); + } + } catch (e) { + this._logger('Failed to init cloud workspace', e); + } + } + + // if after update, the space:meta is empty + // then we need to get map with doc + // just a workaround for yjs + doc.getMap('space:meta'); + } +} diff --git a/packages/data-services/src/websocket/y-websocket.js b/packages/data-center/src/provider/affine/sync.js similarity index 100% rename from packages/data-services/src/websocket/y-websocket.js rename to packages/data-center/src/provider/affine/sync.js diff --git a/packages/data-center/src/provider/base.ts b/packages/data-center/src/provider/base.ts new file mode 100644 index 0000000000..ccd67bb2ad --- /dev/null +++ b/packages/data-center/src/provider/base.ts @@ -0,0 +1,51 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import type { Workspace } from '@blocksuite/store'; + +import type { Apis, Logger, InitialParams, ConfigStore } from './index'; + +export class BaseProvider { + static id = 'base'; + protected _apis!: Readonly; + protected _config!: Readonly; + protected _logger!: Logger; + protected _workspace!: Workspace; + + constructor() { + // Nothing to do here + } + + async init(params: InitialParams) { + this._apis = params.apis; + this._config = params.config; + this._logger = params.logger; + this._workspace = params.workspace; + this._logger.enabled = params.debug; + } + + async clear() { + await this.destroy(); + await this._config.clear(); + } + + async destroy() { + // Nothing to do here + } + + async initData() { + throw Error('Not implemented: initData'); + } + + // should return a blob url + async getBlob(_id: string): Promise { + throw Error('Not implemented: getBlob'); + } + + // should return a blob unique id + async setBlob(_blob: Blob): Promise { + throw Error('Not implemented: setBlob'); + } + + get workspace() { + return this._workspace; + } +} diff --git a/packages/data-center/src/provider/index.ts b/packages/data-center/src/provider/index.ts new file mode 100644 index 0000000000..06b69263de --- /dev/null +++ b/packages/data-center/src/provider/index.ts @@ -0,0 +1,20 @@ +import type { Workspace } from '@blocksuite/store'; + +import type { Apis } from '../apis'; +import type { getLogger } from '../index'; +import type { ConfigStore } from '../store'; + +export type Logger = ReturnType; + +export type InitialParams = { + apis: Apis; + config: ConfigStore; + debug: boolean; + logger: Logger; + workspace: Workspace; +}; + +export type { Apis, ConfigStore, Workspace }; +export type { BaseProvider } from './base.js'; +export { AffineProvider } from './affine/index.js'; +export { LocalProvider } from './local/index.js'; diff --git a/packages/data-center/src/provider/local/index.ts b/packages/data-center/src/provider/local/index.ts new file mode 100644 index 0000000000..5c3a89f23a --- /dev/null +++ b/packages/data-center/src/provider/local/index.ts @@ -0,0 +1,56 @@ +import type { BlobStorage } from '@blocksuite/store'; +import assert from 'assert'; + +import type { InitialParams } from '../index.js'; +import { BaseProvider } from '../base.js'; +import { IndexedDBProvider } from './indexeddb.js'; + +export class LocalProvider extends BaseProvider { + static id = 'local'; + private _blobs!: BlobStorage; + private _idb?: IndexedDBProvider = undefined; + + constructor() { + super(); + } + async init(params: InitialParams) { + super.init(params); + + const blobs = await this._workspace.blobs; + assert(blobs); + this._blobs = blobs; + } + + async initData() { + assert(this._workspace.room); + this._logger('Loading local data'); + this._idb = new IndexedDBProvider( + this._workspace.room, + this._workspace.doc + ); + + await this._idb.whenSynced; + this._logger('Local data loaded'); + } + + async clear() { + await super.clear(); + await this._blobs.clear(); + this._idb?.clearData(); + } + + async destroy(): Promise { + super.destroy(); + if (this._idb) { + await this._idb.destroy(); + } + } + + async getBlob(id: string): Promise { + return this._blobs.get(id); + } + + async setBlob(blob: Blob): Promise { + return this._blobs.set(blob); + } +} diff --git a/packages/data-center/src/provider/local/indexeddb.ts b/packages/data-center/src/provider/local/indexeddb.ts new file mode 100644 index 0000000000..db7fab29d7 --- /dev/null +++ b/packages/data-center/src/provider/local/indexeddb.ts @@ -0,0 +1,199 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import * as idb from 'lib0/indexeddb.js'; +import { Observable } from 'lib0/observable.js'; +import type { Doc } from 'yjs'; +import { applyUpdate, encodeStateAsUpdate, transact } from 'yjs'; + +const customStoreName = 'custom'; +const updatesStoreName = 'updates'; + +const PREFERRED_TRIM_SIZE = 500; + +const fetchUpdates = async (provider: IndexedDBProvider) => { + const [updatesStore] = idb.transact(provider.db as IDBDatabase, [ + updatesStoreName, + ]); // , 'readonly') + if (updatesStore) { + const updates = await idb.getAll( + updatesStore, + idb.createIDBKeyRangeLowerBound(provider._dbref, false) + ); + transact( + provider.doc, + () => { + updates.forEach(val => applyUpdate(provider.doc, val)); + }, + provider, + false + ); + const lastKey = await idb.getLastKey(updatesStore); + provider._dbref = lastKey + 1; + const cnt = await idb.count(updatesStore); + provider._dbsize = cnt; + } + return updatesStore; +}; + +const storeState = (provider: IndexedDBProvider, forceStore = true) => + fetchUpdates(provider).then(updatesStore => { + if ( + updatesStore && + (forceStore || provider._dbsize >= PREFERRED_TRIM_SIZE) + ) { + idb + .addAutoKey(updatesStore, encodeStateAsUpdate(provider.doc)) + .then(() => + idb.del( + updatesStore, + idb.createIDBKeyRangeUpperBound(provider._dbref, true) + ) + ) + .then(() => + idb.count(updatesStore).then(cnt => { + provider._dbsize = cnt; + }) + ); + } + }); + +export class IndexedDBProvider extends Observable { + doc: Doc; + name: string; + _dbref: number; + _dbsize: number; + private _destroyed: boolean; + whenSynced: Promise; + db: IDBDatabase | null; + private _db: Promise; + private _storeTimeout: number; + private _storeTimeoutId: NodeJS.Timeout | null; + private _storeUpdate: (update: Uint8Array, origin: any) => void; + + constructor(name: string, doc: Doc) { + super(); + this.doc = doc; + this.name = name; + this._dbref = 0; + this._dbsize = 0; + this._destroyed = false; + this.db = null; + this._db = idb.openDB(name, db => + idb.createStores(db, [['updates', { autoIncrement: true }], ['custom']]) + ); + + this.whenSynced = this._db.then(async db => { + this.db = db; + const currState = encodeStateAsUpdate(doc); + const updatesStore = await fetchUpdates(this); + if (updatesStore) { + await idb.addAutoKey(updatesStore, currState); + } + if (this._destroyed) { + return this; + } + this.emit('synced', [this]); + return this; + }); + + // Timeout in ms untill data is merged and persisted in idb. + this._storeTimeout = 1000; + + this._storeTimeoutId = null; + + this._storeUpdate = (update: Uint8Array, origin: any) => { + if (this.db && origin !== this) { + const [updatesStore] = idb.transact( + /** @type {IDBDatabase} */ this.db, + [updatesStoreName] + ); + if (updatesStore) { + idb.addAutoKey(updatesStore, update); + } + if (++this._dbsize >= PREFERRED_TRIM_SIZE) { + // debounce store call + if (this._storeTimeoutId !== null) { + clearTimeout(this._storeTimeoutId); + } + this._storeTimeoutId = setTimeout(() => { + storeState(this, false); + this._storeTimeoutId = null; + }, this._storeTimeout); + } + } + }; + doc.on('update', this._storeUpdate); + this.destroy = this.destroy.bind(this); + doc.on('destroy', this.destroy); + } + + override destroy() { + if (this._storeTimeoutId) { + clearTimeout(this._storeTimeoutId); + } + this.doc.off('update', this._storeUpdate); + this.doc.off('destroy', this.destroy); + this._destroyed = true; + return this._db.then(db => { + db.close(); + }); + } + + /** + * Destroys this instance and removes all data from indexeddb. + * + * @return {Promise} + */ + async clearData(): Promise { + return this.destroy().then(() => { + idb.deleteDB(this.name); + }); + } + + /** + * @param {String | number | ArrayBuffer | Date} key + * @return {Promise} + */ + async get( + key: string | number | ArrayBuffer | Date + ): Promise { + return this._db.then(db => { + const [custom] = idb.transact(db, [customStoreName], 'readonly'); + if (custom) { + return idb.get(custom, key); + } + return undefined; + }); + } + + /** + * @param {String | number | ArrayBuffer | Date} key + * @param {String | number | ArrayBuffer | Date} value + * @return {Promise} + */ + async set( + key: string | number | ArrayBuffer | Date, + value: string | number | ArrayBuffer | Date + ): Promise { + return this._db.then(db => { + const [custom] = idb.transact(db, [customStoreName]); + if (custom) { + return idb.put(custom, value, key); + } + return undefined; + }); + } + + /** + * @param {String | number | ArrayBuffer | Date} key + * @return {Promise} + */ + async del(key: string | number | ArrayBuffer | Date): Promise { + return this._db.then(db => { + const [custom] = idb.transact(db, [customStoreName]); + if (custom) { + return idb.del(custom, key); + } + return undefined; + }); + } +} diff --git a/packages/data-center/src/store.ts b/packages/data-center/src/store.ts new file mode 100644 index 0000000000..b8dd831f95 --- /dev/null +++ b/packages/data-center/src/store.ts @@ -0,0 +1,69 @@ +import { createStore, del, get, keys, set, setMany, clear } from 'idb-keyval'; + +export type ConfigStore = { + get: (key: string) => Promise; + set: (key: string, value: T) => Promise; + setMany: (values: [string, T][]) => Promise; + keys: () => Promise; + delete: (key: string) => Promise; + clear: () => Promise; +}; + +const initialIndexedDB = (database: string): ConfigStore => { + const store = createStore(`affine:${database}`, 'database'); + return { + get: (key: string) => get(key, store), + set: (key: string, value: T) => set(key, value, store), + setMany: (values: [string, T][]) => setMany(values, store), + keys: () => keys(store), + delete: (key: string) => del(key, store), + clear: () => clear(store), + }; +}; + +const scopedIndexedDB = () => { + const idb = initialIndexedDB('global'); + const storeCache = new Map>(); + + return (scope: string): Readonly> => { + if (!storeCache.has(scope)) { + const store = { + get: async (key: string) => idb.get(`${scope}:${key}`), + set: (key: string, value: T) => idb.set(`${scope}:${key}`, value), + setMany: (values: [string, T][]) => + idb.setMany(values.map(([k, v]) => [`${scope}:${k}`, v])), + keys: () => + idb + .keys() + .then(keys => + keys + .filter(k => k.startsWith(`${scope}:`)) + .map(k => k.replace(`${scope}:`, '')) + ), + delete: (key: string) => idb.delete(`${scope}:${key}`), + clear: async () => { + await idb + .keys() + .then(keys => + Promise.all( + keys.filter(k => k.startsWith(`${scope}:`)).map(k => del(k)) + ) + ); + }, + }; + + storeCache.set(scope, store); + } + + return storeCache.get(scope) as ConfigStore; + }; +}; + +let lazyKVConfigure: ReturnType | undefined = undefined; + +export const getKVConfigure = (scope: string) => { + if (!lazyKVConfigure) { + lazyKVConfigure = scopedIndexedDB(); + } + return lazyKVConfigure(scope); +}; diff --git a/packages/data-center/tests/datacenter.spec.ts b/packages/data-center/tests/datacenter.spec.ts new file mode 100644 index 0000000000..c924bfd2cb --- /dev/null +++ b/packages/data-center/tests/datacenter.spec.ts @@ -0,0 +1,91 @@ +import { test, expect } from '@playwright/test'; + +import { getDataCenter } from './utils.js'; + +import 'fake-indexeddb/auto'; + +test('init data center', async () => { + const dataCenter = await getDataCenter(); + expect(dataCenter).toBeTruthy(); + await dataCenter.clear(); + + const workspace = await dataCenter.load('test1'); + expect(workspace).toBeTruthy(); +}); + +test('init data center singleton', async () => { + // data center is singleton + const [dc1, dc2] = await Promise.all([getDataCenter(), getDataCenter()]); + expect(dc1).toEqual(dc2); + + // load same workspace will get same instance + const [ws1, ws2] = await Promise.all([dc1.load('test1'), dc2.load('test1')]); + expect(ws1).toEqual(ws2); +}); + +test('should init error with unknown provider', async () => { + const dc = await getDataCenter(); + await dc.clear(); + + // load workspace with unknown provider will throw error + test.fail(); + await dc.load('test2', { providerId: 'not exist provider' }); +}); + +test.skip('init affine provider', async () => { + const dataCenter = await getDataCenter(); + await dataCenter.clear(); + + // load workspace with affine provider + // TODO: set constant token for testing + const workspace = await dataCenter.load('6', { + providerId: 'affine', + config: { token: 'YOUR_TOKEN' }, + }); + expect(workspace).toBeTruthy(); +}); + +test('list workspaces', async () => { + const dataCenter = await getDataCenter(); + await dataCenter.clear(); + + await Promise.all([ + dataCenter.load('test3'), + dataCenter.load('test4'), + dataCenter.load('test5'), + dataCenter.load('test6'), + ]); + + expect(await dataCenter.list()).toStrictEqual([ + 'test3', + 'test4', + 'test5', + 'test6', + ]); +}); + +test('destroy workspaces', async () => { + const dataCenter = await getDataCenter(); + await dataCenter.clear(); + + // return new workspace if origin workspace is destroyed + const ws1 = await dataCenter.load('test7'); + await dataCenter.destroy('test7'); + const ws2 = await dataCenter.load('test7'); + expect(ws1 !== ws2).toBeTruthy(); + + // return new workspace if workspace is reload + const ws3 = await dataCenter.load('test8'); + const ws4 = await dataCenter.reload('test8', { providerId: 'affine' }); + expect(ws3 !== ws4).toBeTruthy(); +}); + +test('remove workspaces', async () => { + const dataCenter = await getDataCenter(); + await dataCenter.clear(); + + // remove workspace will remove workspace data + await Promise.all([dataCenter.load('test9'), dataCenter.load('test10')]); + await dataCenter.delete('test9'); + expect(await dataCenter.list()).toStrictEqual(['test10']); +}); diff --git a/packages/data-center/tests/utils.ts b/packages/data-center/tests/utils.ts new file mode 100644 index 0000000000..878ccc57a8 --- /dev/null +++ b/packages/data-center/tests/utils.ts @@ -0,0 +1,5 @@ +export const getDataCenter = () => { + return import('../src/index.js').then(async dataCenter => + dataCenter.getDataCenter(false) + ); +}; diff --git a/packages/data-services/tsconfig.json b/packages/data-center/tsconfig.json similarity index 100% rename from packages/data-services/tsconfig.json rename to packages/data-center/tsconfig.json diff --git a/packages/data-services/src/auth.ts b/packages/data-services/src/auth.ts deleted file mode 100644 index 8fdd10be18..0000000000 --- a/packages/data-services/src/auth.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { initializeApp } from 'firebase/app'; -import { - getAuth, - createUserWithEmailAndPassword, - signInWithEmailAndPassword, - GoogleAuthProvider, - signInWithPopup, -} from 'firebase/auth'; -import type { User } from 'firebase/auth'; -import { token } from './request'; - -/** - * firebaseConfig reference: https://firebase.google.com/docs/web/setup#add_firebase_to_your_app - */ -const app = initializeApp({ - apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY, - authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN, - projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID, - storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET, - messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID, - appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID, - measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID, -}); - -export const firebaseAuth = getAuth(app); - -const signUp = (email: string, password: string) => { - return createUserWithEmailAndPassword(firebaseAuth, email, password); -}; - -const signIn = (email: string, password: string) => { - return signInWithEmailAndPassword(firebaseAuth, email, password); -}; - -const googleAuthProvider = new GoogleAuthProvider(); -export const signInWithGoogle = async () => { - const user = await signInWithPopup(firebaseAuth, googleAuthProvider); - const idToken = await user.user.getIdToken(); - await token.initToken(idToken); -}; - -export const onAuthStateChanged = (callback: (user: User | null) => void) => { - firebaseAuth.onAuthStateChanged(callback); -}; diff --git a/packages/data-services/src/data-center.ts b/packages/data-services/src/data-center.ts deleted file mode 100644 index 4c4f1e9916..0000000000 --- a/packages/data-services/src/data-center.ts +++ /dev/null @@ -1,19 +0,0 @@ -class DataCenter { - static async init() { - return new DataCenter(); - } - - private constructor() { - // TODO - } -} - -let _dataCenterInstance: Promise; - -export const getDataCenter = () => { - if (!_dataCenterInstance) { - _dataCenterInstance = DataCenter.init(); - } - - return _dataCenterInstance; -}; diff --git a/packages/data-services/src/index.ts b/packages/data-services/src/index.ts deleted file mode 100644 index 89de33b6b8..0000000000 --- a/packages/data-services/src/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { signInWithGoogle, onAuthStateChanged } from './auth'; -export * from './request'; -export * from './sdks'; -export * from './websocket'; - -export { getDataCenter } from './data-center'; diff --git a/packages/data-services/src/request/events.ts b/packages/data-services/src/request/events.ts deleted file mode 100644 index ae90c6756d..0000000000 --- a/packages/data-services/src/request/events.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { AccessTokenMessage } from './token'; - -export type Callback = (user: AccessTokenMessage | null) => void; - -export class AuthorizationEvent { - private callbacks: Callback[] = []; - private lastState: AccessTokenMessage | null = null; - - /** - * Callback will execute when call this function. - */ - onChange(callback: Callback) { - this.callbacks.push(callback); - callback(this.lastState); - } - - triggerChange(user: AccessTokenMessage | null) { - this.lastState = user; - this.callbacks.forEach(callback => callback(user)); - } - - removeCallback(callback: Callback) { - const index = this.callbacks.indexOf(callback); - if (index > -1) { - this.callbacks.splice(index, 1); - } - } -} diff --git a/packages/data-services/src/request/token.ts b/packages/data-services/src/request/token.ts deleted file mode 100644 index 37f35c66f5..0000000000 --- a/packages/data-services/src/request/token.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { bareClient } from '.'; -import { AuthorizationEvent, Callback } from './events'; - -export interface AccessTokenMessage { - create_at: number; - exp: number; - email: string; - id: string; - name: string; - avatar_url: string; -} - -const TOKEN_KEY = 'affine_token'; - -type LoginParams = { - type: 'Google' | 'Refresh'; - token: string; -}; - -type LoginResponse = { - // JWT, expires in a very short time - token: string; - // Refresh token - refresh: string; -}; - -const login = (params: LoginParams): Promise => - bareClient.post('/api/user/token', { json: params }).json(); - -function b64DecodeUnicode(str: string) { - // Going backwards: from byte stream, to percent-encoding, to original string. - return decodeURIComponent( - window - .atob(str) - .split('') - .map(function (c) { - return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); - }) - .join('') - ); -} - -function getRefreshToken() { - try { - return localStorage.getItem(TOKEN_KEY) || ''; - } catch (_) { - return ''; - } -} -function setRefreshToken(token: string) { - try { - localStorage.setItem(TOKEN_KEY, token); - } catch (_) {} -} - -class Token { - private readonly _event: AuthorizationEvent; - private _accessToken: string; - private _refreshToken: string; - - private _user: AccessTokenMessage | null; - private _padding?: Promise; - - constructor(refreshToken?: string) { - this._accessToken = ''; - this._refreshToken = refreshToken || getRefreshToken(); - this._event = new AuthorizationEvent(); - - this._user = Token.parse(this._accessToken); - this._event.triggerChange(this._user); - } - - private _setToken(login: LoginResponse) { - this._accessToken = login.token; - this._refreshToken = login.refresh; - this._user = Token.parse(login.token); - - this._event.triggerChange(this._user); - - setRefreshToken(login.refresh); - } - - async initToken(token: string) { - this._setToken(await login({ token, type: 'Google' })); - } - - async refreshToken() { - if (!this._refreshToken) { - throw new Error('No authorization token.'); - } - if (!this._padding) { - this._padding = login({ - type: 'Refresh', - token: this._refreshToken, - }); - } - this._setToken(await this._padding); - this._padding = undefined; - } - - get token() { - return this._accessToken; - } - - get refresh() { - return this._refreshToken; - } - - get isLogin() { - return !!this._refreshToken; - } - - get isExpired() { - if (!this._user) return true; - return Date.now() - this._user.create_at > this._user.exp; - } - - static parse(token: string): AccessTokenMessage | null { - try { - const message: AccessTokenMessage = JSON.parse( - b64DecodeUnicode(token.split('.')[1]) - ); - return message; - } catch (error) { - return null; - } - } - - onChange(callback: Callback) { - this._event.onChange(callback); - } - - offChange(callback: Callback) { - this._event.removeCallback(callback); - } -} - -export const token = new Token(); diff --git a/packages/data-services/src/sdks/index.ts b/packages/data-services/src/sdks/index.ts deleted file mode 100644 index b55b3d62ac..0000000000 --- a/packages/data-services/src/sdks/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './workspace'; -export * from './workspace.hook'; -export * from './user'; -export * from './user.hook'; diff --git a/packages/data-services/src/sdks/types/common.ts b/packages/data-services/src/sdks/types/common.ts deleted file mode 100644 index 348bd13c91..0000000000 --- a/packages/data-services/src/sdks/types/common.ts +++ /dev/null @@ -1,2 +0,0 @@ -export type CommonError = { error: { code: string; message: string } }; -export type MayError = Partial; diff --git a/packages/data-services/src/sdks/types/index.ts b/packages/data-services/src/sdks/types/index.ts deleted file mode 100644 index d0b9323665..0000000000 --- a/packages/data-services/src/sdks/types/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './common'; diff --git a/packages/data-services/src/sdks/user.hook.ts b/packages/data-services/src/sdks/user.hook.ts deleted file mode 100644 index 86792a4f79..0000000000 --- a/packages/data-services/src/sdks/user.hook.ts +++ /dev/null @@ -1,23 +0,0 @@ -import useSWR from 'swr'; -import type { SWRConfiguration } from 'swr'; -import { getUserByEmail } from './user'; -import type { GetUserByEmailParams, User } from './user'; - -export const GET_USER_BY_EMAIL_SWR_TOKEN = 'user.getUserByEmail'; -export function useGetUserByEmail( - params: GetUserByEmailParams, - config?: SWRConfiguration -) { - const { data, error, isLoading, mutate } = useSWR( - [GET_USER_BY_EMAIL_SWR_TOKEN, params], - ([_, params]) => getUserByEmail(params), - config - ); - - return { - loading: isLoading, - data, - error, - mutate, - }; -} diff --git a/packages/data-services/src/sdks/workspace.hook.ts b/packages/data-services/src/sdks/workspace.hook.ts deleted file mode 100644 index 91fa3b9f3e..0000000000 --- a/packages/data-services/src/sdks/workspace.hook.ts +++ /dev/null @@ -1,72 +0,0 @@ -import useSWR from 'swr'; -import type { SWRConfiguration } from 'swr'; -import { - getWorkspaceDetail, - updateWorkspace, - deleteWorkspace, - inviteMember, - Workspace, -} from './workspace'; -import { - GetWorkspaceDetailParams, - WorkspaceDetail, - UpdateWorkspaceParams, - DeleteWorkspaceParams, - InviteMemberParams, - getWorkspaces, -} from './workspace'; - -export const GET_WORKSPACE_DETAIL_SWR_TOKEN = 'workspace.getWorkspaceDetail'; -export function useGetWorkspaceDetail( - params: GetWorkspaceDetailParams, - config?: SWRConfiguration -) { - const { data, error, isLoading, mutate } = useSWR( - [GET_WORKSPACE_DETAIL_SWR_TOKEN, params], - ([_, params]) => getWorkspaceDetail(params), - config - ); - - return { - data, - error, - loading: isLoading, - mutate, - }; -} - -export const GET_WORKSPACES_SWR_TOKEN = 'workspace.getWorkspaces'; -export function useGetWorkspaces(config?: SWRConfiguration) { - const { data, error, isLoading } = useSWR( - [GET_WORKSPACES_SWR_TOKEN], - () => getWorkspaces(), - config - ); - - return { - data, - error, - loading: isLoading, - }; -} - -export const UPDATE_WORKSPACE_SWR_TOKEN = 'workspace.updateWorkspace'; -/** - * I don't think a hook needed for update workspace. - * If you figure out the scene, please implement this function. - */ -export function useUpdateWorkspace() {} - -export const DELETE_WORKSPACE_SWR_TOKEN = 'workspace.deleteWorkspace'; -/** - * I don't think a hook needed for delete workspace. - * If you figure out the scene, please implement this function. - */ -export function useDeleteWorkspace() {} - -export const INVITE_MEMBER_SWR_TOKEN = 'workspace.inviteMember'; -/** - * I don't think a hook needed for invite member. - * If you figure out the scene, please implement this function. - */ -export function useInviteMember() {} diff --git a/packages/data-services/src/websocket/index.ts b/packages/data-services/src/websocket/index.ts deleted file mode 100644 index d6651c22a2..0000000000 --- a/packages/data-services/src/websocket/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { WebsocketProvider } from './y-websocket'; diff --git a/packages/data-services/tests/datacenter.spec.ts b/packages/data-services/tests/datacenter.spec.ts deleted file mode 100644 index d5a4a267ef..0000000000 --- a/packages/data-services/tests/datacenter.spec.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { test, expect } from '@playwright/test'; -import { getDataCenter } from './utils.js'; - -test('can init data center', async () => { - const dataCenter = await getDataCenter(); - - expect(dataCenter).toBeTruthy(); -}); diff --git a/packages/data-services/tests/utils.ts b/packages/data-services/tests/utils.ts deleted file mode 100644 index c06d906058..0000000000 --- a/packages/data-services/tests/utils.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const getDataCenter = () => - import('../src/data-center.js').then(async dataCenter => - dataCenter.getDataCenter() - ); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 14376a0d9c..3ab53d8446 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,27 +28,27 @@ importers: '@playwright/test': 1.29.1 '@types/eslint': 8.4.10 '@types/node': 18.11.18 - '@typescript-eslint/eslint-plugin': 5.48.0_wxmz6cyorqfuzhhglktlvr5lve - '@typescript-eslint/parser': 5.48.0_p4cjf2r47dnfiqufepc5hp43sq + '@typescript-eslint/eslint-plugin': 5.48.0_k73wpmdolxikpyqun3p36akaaq + '@typescript-eslint/parser': 5.48.0_iukboom6ndih5an6iafl45j2fe eslint: 8.31.0 - eslint-config-next: 12.3.1_p4cjf2r47dnfiqufepc5hp43sq - eslint-config-prettier: 8.5.0_eslint@8.31.0 - eslint-plugin-prettier: 4.2.1_vkmhlldugy3fnk7p2bqhsfnaiq + eslint-config-next: 12.3.1_iukboom6ndih5an6iafl45j2fe + eslint-config-prettier: 8.6.0_eslint@8.31.0 + eslint-plugin-prettier: 4.2.1_32m5uc2milwdw3tnkcq5del26y got: 12.5.3 - husky: 8.0.2 + husky: 8.0.3 jest: 29.3.1_@types+node@18.11.18 lint-staged: 13.1.0 - prettier: 2.7.1 - ts-jest: 29.0.3_4f6uxrzmuwipl5rr3bcogf6k74 - typescript: 4.9.3 + prettier: 2.8.1 + ts-jest: 29.0.3_p6ekqnroyms5nhqbfxosryz7rm + typescript: 4.9.4 packages/app: specifiers: - '@affine/data-services': workspace:* - '@blocksuite/blocks': 0.3.0-20221230100352-5dfe65e - '@blocksuite/editor': 0.3.0-20221230100352-5dfe65e + '@affine/datacenter': workspace:* + '@blocksuite/blocks': 0.3.1 + '@blocksuite/editor': 0.3.1 '@blocksuite/icons': ^2.0.2 - '@blocksuite/store': 0.3.0-20221230100352-5dfe65e + '@blocksuite/store': 0.3.1 '@emotion/css': ^11.10.0 '@emotion/react': ^11.10.4 '@emotion/server': ^11.10.0 @@ -86,29 +86,29 @@ importers: typescript: 4.8.3 yjs: ^13.5.44 dependencies: - '@affine/data-services': link:../data-services - '@blocksuite/blocks': 0.3.0-20221230100352-5dfe65e_yjs@13.5.44 - '@blocksuite/editor': 0.3.0-20221230100352-5dfe65e_yjs@13.5.44 + '@affine/datacenter': link:../data-center + '@blocksuite/blocks': 0.3.1_yjs@13.5.44 + '@blocksuite/editor': 0.3.1_yjs@13.5.44 '@blocksuite/icons': 2.0.4_w5j4k42lgipnm43s3brx6h3c34 - '@blocksuite/store': 0.3.0-20221230100352-5dfe65e_yjs@13.5.44 - '@emotion/css': 11.10.0 - '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 - '@emotion/server': 11.10.0_@emotion+css@11.10.0 - '@emotion/styled': 11.10.4_yiaqs725o7pcd7rteavrnhgj4y + '@blocksuite/store': 0.3.1_yjs@13.5.44 + '@emotion/css': 11.10.5 + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/server': 11.10.0_@emotion+css@11.10.5 + '@emotion/styled': 11.10.5_s7uipz3r575xmfz2gje3lxfqua '@fontsource/poppins': 4.5.10 '@fontsource/space-mono': 4.5.10 - '@mui/base': 5.0.0-alpha.101_7ey2zzynotv32rpkwno45fsx4e - '@mui/icons-material': 5.10.9_5fncb4nagb4cvvcnwamw2rozfa - '@mui/material': 5.10.9_af5ln35zuaotaffazii6n6bke4 + '@mui/base': 5.0.0-alpha.112_7ey2zzynotv32rpkwno45fsx4e + '@mui/icons-material': 5.11.0_4r2n2chxjb272yibknfb4hapcq + '@mui/material': 5.11.3_pmppvr4gtvd6vpdr5yl42vjwtu '@toeverything/pathfinder-logger': link:../logger cmdk: 0.1.21_7ey2zzynotv32rpkwno45fsx4e css-spring: 4.1.0 dayjs: 1.11.7 i18next: 21.10.0 - lit: 2.4.0 + lit: 2.5.0 next: 13.1.0_biqbaboplfbrettd7655fr4n2y next-debug-local: 0.1.5 - prettier: 2.7.1 + prettier: 2.8.1 quill: 1.3.7 quill-cursors: 4.0.0 react: 18.2.0 @@ -123,32 +123,48 @@ importers: chalk-next: 6.1.5 eslint: 8.22.0 eslint-config-next: 12.3.1_76twfck5d7crjqrmw4yltga7zm - eslint-config-prettier: 8.5.0_eslint@8.22.0 - eslint-plugin-prettier: 4.2.1_i2cojdczqdiurzgttlwdgf764e + eslint-config-prettier: 8.6.0_eslint@8.22.0 + eslint-plugin-prettier: 4.2.1_qcim4gnz2p2xihlufogjc5ujra next-pwa: 5.6.0_next@13.1.0 raw-loader: 4.0.2 typescript: 4.8.3 - packages/data-services: + packages/data-center: specifiers: + '@blocksuite/blocks': ^0.3.1 + '@blocksuite/store': ^0.3.1 '@playwright/test': ^1.29.1 + '@types/debug': ^4.1.7 + debug: ^4.3.4 encoding: ^0.1.13 - firebase: ^9.13.0 + fake-indexeddb: 4.0.1 + firebase: ^9.15.0 + idb-keyval: ^6.2.0 ky: ^0.33.0 + ky-universal: ^0.11.0 lib0: ^0.2.58 swr: ^2.0.0 typescript: ^4.8.4 y-protocols: ^1.0.5 + yjs: ^13.5.44 dependencies: + '@blocksuite/blocks': 0.3.1_yjs@13.5.44 + '@blocksuite/store': 0.3.1_yjs@13.5.44 + debug: 4.3.4 encoding: 0.1.13 firebase: 9.15.0_encoding@0.1.13 + idb-keyval: 6.2.0 ky: 0.33.1 + ky-universal: 0.11.0_ky@0.33.1 lib0: 0.2.58 swr: 2.0.0 y-protocols: 1.0.5 + yjs: 13.5.44 devDependencies: '@playwright/test': 1.29.1 - typescript: 4.9.3 + '@types/debug': 4.1.7 + fake-indexeddb: 4.0.1 + typescript: 4.9.4 packages/logger: specifiers: @@ -158,12 +174,12 @@ importers: react-dom: ^18.2.0 typescript: ^4.8.4 dependencies: - next: 12.3.1_biqbaboplfbrettd7655fr4n2y + next: 12.3.4_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 devDependencies: - '@types/react': 18.0.21 - typescript: 4.8.4 + '@types/react': 18.0.26 + typescript: 4.9.4 packages: @@ -193,43 +209,34 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.20.5: - resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} + /@babel/compat-data/7.20.10: + resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.20.5: - resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} + /@babel/core/7.20.7: + resolution: {integrity: sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helpers': 7.20.6 - '@babel/parser': 7.20.5 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@babel/generator': 7.20.7 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helpers': 7.20.7 + '@babel/parser': 7.20.7 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.10 + '@babel/types': 7.20.7 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.1 + json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/generator/7.20.5: - resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.5 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: true - /@babel/generator/7.20.7: resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} engines: {node: '>=6.9.0'} @@ -243,7 +250,7 @@ packages: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: @@ -251,43 +258,30 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true - /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.5: - resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - dev: true - - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.5: + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 + '@babel/compat-data': 7.20.10 + '@babel/core': 7.20.7 '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 lru-cache: 5.1.1 semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.20.7_@babel+core@7.20.5: + /@babel/helper-create-class-features-plugin/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 @@ -299,24 +293,24 @@ packages: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.5: + /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.7: resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.2 dev: true - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.5: + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.7: resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 @@ -342,15 +336,15 @@ packages: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.5 + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 dev: true /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@babel/helper-member-expression-to-functions/7.20.7: @@ -364,7 +358,7 @@ packages: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 /@babel/helper-module-transforms/7.20.11: resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} @@ -382,22 +376,6 @@ packages: - supports-color dev: true - /@babel/helper-module-transforms/7.20.2: - resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-optimise-call-expression/7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -405,26 +383,21 @@ packages: '@babel/types': 7.20.7 dev: true - /@babel/helper-plugin-utils/7.19.0: - resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} - engines: {node: '>=6.9.0'} - /@babel/helper-plugin-utils/7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.5: + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color dev: true @@ -447,21 +420,21 @@ packages: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@babel/helper-skip-transparent-expression-wrappers/7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@babel/helper-string-parser/7.19.4: @@ -489,13 +462,13 @@ packages: - supports-color dev: true - /@babel/helpers/7.20.6: - resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==} + /@babel/helpers/7.20.7: + resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.10 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color dev: true @@ -508,14 +481,6 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.20.5: - resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.20.5 - dev: true - /@babel/parser/7.20.7: resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} engines: {node: '>=6.0.0'} @@ -524,293 +489,293 @@ packages: '@babel/types': 7.20.7 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.5: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.20.5: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.5 + '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.7 dev: true - /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.20.5: + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.7 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.20.7_@babel+core@7.20.5: + /@babel/plugin-proposal-class-static-block/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.5 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.7 dev: true - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.5: + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.7 dev: true - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.7 dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.20.5: + /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.7 dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.7 dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.7 dev: true - /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.5: + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.5 + '@babel/compat-data': 7.20.10 + '@babel/core': 7.20.7 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.7 dev: true - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.7 dev: true - /@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.5: + /@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@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+core@7.20.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.7 dev: true - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.5: + /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.7: resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.5 + '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.5: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.7: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.5: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.7: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.5: + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.7: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.5: + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.7: resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.5: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.7: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-jsx/7.18.6: @@ -819,156 +784,156 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: false - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.5: + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.5: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.7: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.5: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.7: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.5: + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.7: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.5: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.7: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.5: + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.7: resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.20.7 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.20.5: + /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.20.5: + /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.5 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-block-scoping/7.20.11_@babel+core@7.20.5: + /@babel/plugin-transform-block-scoping/7.20.11_@babel+core@7.20.7: resolution: {integrity: sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.5: + /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.5 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-optimise-call-expression': 7.18.6 @@ -980,121 +945,121 @@ packages: - supports-color dev: true - /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.20.5: + /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 '@babel/template': 7.20.7 dev: true - /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.20.5: + /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.5: + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.5: + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.7: resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.5: + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.5: + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.20.5: + /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.20.7: resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.20.11_@babel+core@7.20.5: + /@babel/plugin-transform-modules-commonjs/7.20.11_@babel+core@7.20.7: resolution: {integrity: sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-simple-access': 7.20.2 @@ -1102,13 +1067,13 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.20.5: + /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.20.7: resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 @@ -1117,294 +1082,279 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.20.2 + '@babel/core': 7.20.7 + '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.5: + /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.7: resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.20.5: + /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.5: + /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.7: resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-spread/7.20.7_@babel+core@7.20.5: + /@babel/plugin-transform-spread/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.5: + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.5: + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.5: + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.7: resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/preset-env/7.20.2_@babel+core@7.20.5: + /@babel/preset-env/7.20.2_@babel+core@7.20.7: resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/compat-data': 7.20.10 + '@babel/core': 7.20.7 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-class-static-block': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.5 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.5 - '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-block-scoping': 7.20.11_@babel+core@7.20.5 - '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.5 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.20.5 - '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.5 - '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.20.5 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.5 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.5 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.5 - '@babel/preset-modules': 0.1.5_@babel+core@7.20.5 - '@babel/types': 7.20.5 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.5 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.5 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-proposal-class-static-block': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.7 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.7 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.7 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.7 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.7 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.7 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.7 + '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-block-scoping': 7.20.11_@babel+core@7.20.7 + '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.7 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.7 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.7 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.7 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.20.7 + '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.7 + '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.20.7 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.7 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.7 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.7 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.7 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.7 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.7 + '@babel/preset-modules': 0.1.5_@babel+core@7.20.7 + '@babel/types': 7.20.7 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.7 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.7 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.7 core-js-compat: 3.27.1 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules/0.1.5_@babel+core@7.20.5: + /@babel/preset-modules/0.1.5_@babel+core@7.20.7: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.5 - '@babel/types': 7.20.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.7 + '@babel/types': 7.20.7 esutils: 2.0.3 dev: true - /@babel/runtime-corejs3/7.19.1: - resolution: {integrity: sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g==} + /@babel/runtime-corejs3/7.20.7: + resolution: {integrity: sha512-jr9lCZ4RbRQmCR28Q8U8Fu49zvFqLxTY9AMOUz+iyMohMoAgpEcVxY+wJNay99oXOpOcCTODkk70NDN2aaJEeg==} engines: {node: '>=6.9.0'} dependencies: - core-js-pure: 3.25.2 - regenerator-runtime: 0.13.9 + core-js-pure: 3.27.1 + regenerator-runtime: 0.13.11 dev: true - /@babel/runtime/7.19.0: - resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.9 - /@babel/runtime/7.20.7: resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template/7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - dev: true - /@babel/template/7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} @@ -1432,41 +1382,6 @@ packages: - supports-color dev: true - /@babel/traverse/7.20.5: - resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types/7.19.4: - resolution: {integrity: sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types/7.20.5: - resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - /@babel/types/7.20.7: resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} engines: {node: '>=6.9.0'} @@ -1474,16 +1389,15 @@ packages: '@babel/helper-string-parser': 7.19.4 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - dev: true /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@blocksuite/blocks/0.3.0-20221230100352-5dfe65e_yjs@13.5.44: - resolution: {integrity: sha512-dvjSbuedu1a5+q+FxtPMt6IDrJT46WsEcT7PhFvnGxP69I5iJwuHzrsDlg159u9Sn6/3OJjE7mYxBodPSGXxBQ==} + /@blocksuite/blocks/0.3.1_yjs@13.5.44: + resolution: {integrity: sha512-b0dGz2MG4yIgngJPRumaMY58wAsd2FEVSZl3tpCXlagK9I0HD165Bq70PxcaRHVjBSV1Gf29ZVHUF6BVTYogPw==} dependencies: - '@blocksuite/store': 0.3.0-20221230100352-5dfe65e_yjs@13.5.44 + '@blocksuite/store': 0.3.1_yjs@13.5.44 '@tldraw/intersect': 1.8.0 autosize: 5.0.2 highlight.js: 11.7.0 @@ -1499,11 +1413,11 @@ packages: - yjs dev: false - /@blocksuite/editor/0.3.0-20221230100352-5dfe65e_yjs@13.5.44: - resolution: {integrity: sha512-LMl7jm5cq2/pDmtkLUOIhOwkTm5dDtEYcEKehRl05C6Hs2tHJjDeLwSyL2rXbSCdK8tK2D7tRfnTocBrsom5sw==} + /@blocksuite/editor/0.3.1_yjs@13.5.44: + resolution: {integrity: sha512-ycKcyvPW6R8R2GZOFneGH1xNi5gJBx5WtWjW9YwcQslFzXVWMCCBips1Bud2uL4kkbWQoodyua6k2vsXxGAKLw==} dependencies: - '@blocksuite/blocks': 0.3.0-20221230100352-5dfe65e_yjs@13.5.44 - '@blocksuite/store': 0.3.0-20221230100352-5dfe65e_yjs@13.5.44 + '@blocksuite/blocks': 0.3.1_yjs@13.5.44 + '@blocksuite/store': 0.3.1_yjs@13.5.44 lit: 2.5.0 marked: 4.2.5 turndown: 7.1.1 @@ -1524,8 +1438,8 @@ packages: react: 18.2.0 dev: false - /@blocksuite/store/0.3.0-20221230100352-5dfe65e_yjs@13.5.44: - resolution: {integrity: sha512-KHLmPqi789kBgkITgSztr6gA5crdEiVDN9Jlslg6Sd7QuFn0jKGFn1FHBn6Myp0nXLAPAa6avBPxlbrgHI+zIQ==} + /@blocksuite/store/0.3.1_yjs@13.5.44: + resolution: {integrity: sha512-kynVTDfNCSChz2JI2rtGHxRIV2YrLzvAgVajcbfDVCuXKG0siBoEjLasG1a0kvevbvW/FabrNAj+xaIplklioA==} peerDependencies: yjs: ^13 dependencies: @@ -1558,7 +1472,7 @@ packages: fs-extra: 7.0.1 lodash.startcase: 4.4.0 outdent: 0.5.0 - prettier: 2.7.1 + prettier: 2.8.1 resolve-from: 5.0.0 semver: 5.7.1 dev: true @@ -1726,50 +1640,50 @@ packages: '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 - prettier: 2.7.1 + prettier: 2.8.1 dev: true - /@emotion/babel-plugin/11.10.2: - resolution: {integrity: sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA==} + /@emotion/babel-plugin/11.10.5: + resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/helper-module-imports': 7.18.6 '@babel/plugin-syntax-jsx': 7.18.6 - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.20.7 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 - '@emotion/serialize': 1.1.0 + '@emotion/serialize': 1.1.1 babel-plugin-macros: 3.1.0 convert-source-map: 1.9.0 escape-string-regexp: 4.0.0 find-root: 1.1.0 source-map: 0.5.7 - stylis: 4.0.13 + stylis: 4.1.3 dev: false - /@emotion/cache/11.10.3: - resolution: {integrity: sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ==} + /@emotion/cache/11.10.5: + resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} dependencies: '@emotion/memoize': 0.8.0 - '@emotion/sheet': 1.2.0 + '@emotion/sheet': 1.2.1 '@emotion/utils': 1.2.0 '@emotion/weak-memoize': 0.3.0 - stylis: 4.0.13 + stylis: 4.1.3 dev: false - /@emotion/css/11.10.0: - resolution: {integrity: sha512-dH9f+kSCucc8ilMg0MUA1AemabcyzYpe5EKX24F528PJjD7HyIY/VBNJHxfUdc8l400h2ncAjR6yEDu+DBj2cg==} + /@emotion/css/11.10.5: + resolution: {integrity: sha512-maJy0wG82hWsiwfJpc3WrYsyVwUbdu+sdIseKUB+/OLjB8zgc3tqkT6eO0Yt0AhIkJwGGnmMY/xmQwEAgQ4JHA==} peerDependencies: '@babel/core': ^7.0.0 peerDependenciesMeta: '@babel/core': optional: true dependencies: - '@emotion/babel-plugin': 11.10.2 - '@emotion/cache': 11.10.3 - '@emotion/serialize': 1.1.0 - '@emotion/sheet': 1.2.0 + '@emotion/babel-plugin': 11.10.5 + '@emotion/cache': 11.10.5 + '@emotion/serialize': 1.1.1 + '@emotion/sheet': 1.2.1 '@emotion/utils': 1.2.0 dev: false @@ -1787,8 +1701,8 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react/11.10.4_w5j4k42lgipnm43s3brx6h3c34: - resolution: {integrity: sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==} + /@emotion/react/11.10.5_w5j4k42lgipnm43s3brx6h3c34: + resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} peerDependencies: '@babel/core': ^7.0.0 '@types/react': '*' @@ -1799,10 +1713,10 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.19.0 - '@emotion/babel-plugin': 11.10.2 - '@emotion/cache': 11.10.3 - '@emotion/serialize': 1.1.0 + '@babel/runtime': 7.20.7 + '@emotion/babel-plugin': 11.10.5 + '@emotion/cache': 11.10.5 + '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 '@emotion/utils': 1.2.0 '@emotion/weak-memoize': 0.3.0 @@ -1811,8 +1725,8 @@ packages: react: 18.2.0 dev: false - /@emotion/serialize/1.1.0: - resolution: {integrity: sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==} + /@emotion/serialize/1.1.1: + resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} dependencies: '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 @@ -1821,7 +1735,7 @@ packages: csstype: 3.1.1 dev: false - /@emotion/server/11.10.0_@emotion+css@11.10.0: + /@emotion/server/11.10.0_@emotion+css@11.10.5: resolution: {integrity: sha512-MTvJ21JPo9aS02GdjFW4nhdwOi2tNNpMmAM/YED0pkxzjDNi5WbiTwXqaCnvLc2Lr8NFtjhT0az1vTJyLIHYcw==} peerDependencies: '@emotion/css': ^11.0.0-rc.0 @@ -1829,19 +1743,19 @@ packages: '@emotion/css': optional: true dependencies: - '@emotion/css': 11.10.0 + '@emotion/css': 11.10.5 '@emotion/utils': 1.2.0 html-tokenize: 2.0.1 multipipe: 1.0.2 through: 2.3.8 dev: false - /@emotion/sheet/1.2.0: - resolution: {integrity: sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==} + /@emotion/sheet/1.2.1: + resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled/11.10.4_yiaqs725o7pcd7rteavrnhgj4y: - resolution: {integrity: sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==} + /@emotion/styled/11.10.5_s7uipz3r575xmfz2gje3lxfqua: + resolution: {integrity: sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==} peerDependencies: '@babel/core': ^7.0.0 '@emotion/react': ^11.0.0-rc.0 @@ -1853,11 +1767,11 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.19.0 - '@emotion/babel-plugin': 11.10.2 + '@babel/runtime': 7.20.7 + '@emotion/babel-plugin': 11.10.5 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 - '@emotion/serialize': 1.1.0 + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 '@emotion/utils': 1.2.0 '@types/react': 18.0.20 @@ -1884,32 +1798,15 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@eslint/eslintrc/1.3.2: - resolution: {integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.4.0 - globals: 13.17.0 - ignore: 5.2.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/eslintrc/1.4.1: resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.4.0 + espree: 9.4.1 globals: 13.19.0 - ignore: 5.2.0 + ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -1928,7 +1825,7 @@ packages: '@firebase/app-compat': 0.2.0 '@firebase/component': 0.6.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app' dev: false @@ -1947,7 +1844,7 @@ packages: '@firebase/installations': 0.6.0_@firebase+app@0.9.0 '@firebase/logger': 0.4.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/app-check-compat/0.3.0_5z7svkifsmkn6ro3hru7lnxwrq: @@ -1961,7 +1858,7 @@ packages: '@firebase/component': 0.6.0 '@firebase/logger': 0.4.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app' dev: false @@ -1983,7 +1880,7 @@ packages: '@firebase/component': 0.6.0 '@firebase/logger': 0.4.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/app-compat/0.2.0: @@ -1993,7 +1890,7 @@ packages: '@firebase/component': 0.6.0 '@firebase/logger': 0.4.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/app-types/0.9.0: @@ -2007,7 +1904,7 @@ packages: '@firebase/logger': 0.4.0 '@firebase/util': 1.8.0 idb: 7.0.1 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/auth-compat/0.3.0_smx2rqj2kjyjzx5x66zunbdpee: @@ -2021,7 +1918,7 @@ packages: '@firebase/component': 0.6.0 '@firebase/util': 1.8.0 node-fetch: 2.6.7_encoding@0.1.13 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app' - '@firebase/app-types' @@ -2058,7 +1955,7 @@ packages: '@firebase/logger': 0.4.0 '@firebase/util': 1.8.0 node-fetch: 2.6.7_encoding@0.1.13 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - encoding dev: false @@ -2067,7 +1964,7 @@ packages: resolution: {integrity: sha512-9hyNc4OmrXMtthDJq6zyJHll/UIYBWYmMG3rXty2eMeWxHWB0vlsq3AOI+k14PL15aSBAQolv0EZJWVJv/gCEg==} dependencies: '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/database-compat/0.3.0_@firebase+app-types@0.9.0: @@ -2078,7 +1975,7 @@ packages: '@firebase/database-types': 0.10.0 '@firebase/logger': 0.4.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app-types' dev: false @@ -2098,7 +1995,7 @@ packages: '@firebase/logger': 0.4.0 '@firebase/util': 1.8.0 faye-websocket: 0.11.4 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app-types' dev: false @@ -2113,7 +2010,7 @@ packages: '@firebase/firestore': 3.8.0_nw4m4mwqwngj7zodqmw3xrcjja '@firebase/firestore-types': 2.5.1_ymjb4f6a56kabcdqyfm4cet2ly '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app' - '@firebase/app-types' @@ -2144,7 +2041,7 @@ packages: '@grpc/grpc-js': 1.7.3 '@grpc/proto-loader': 0.6.13 node-fetch: 2.6.7_encoding@0.1.13 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - encoding dev: false @@ -2159,7 +2056,7 @@ packages: '@firebase/functions': 0.9.0_abctzvz6bda5rcfr257jyree6a '@firebase/functions-types': 0.6.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app' - '@firebase/app-types' @@ -2182,7 +2079,7 @@ packages: '@firebase/messaging-interop-types': 0.2.0 '@firebase/util': 1.8.0 node-fetch: 2.6.7_encoding@0.1.13 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app-types' - encoding @@ -2198,7 +2095,7 @@ packages: '@firebase/installations': 0.6.0_@firebase+app@0.9.0 '@firebase/installations-types': 0.5.0_@firebase+app-types@0.9.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app' - '@firebase/app-types' @@ -2221,13 +2118,13 @@ packages: '@firebase/component': 0.6.0 '@firebase/util': 1.8.0 idb: 7.0.1 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/logger/0.4.0: resolution: {integrity: sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==} dependencies: - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/messaging-compat/0.2.0_5z7svkifsmkn6ro3hru7lnxwrq: @@ -2239,7 +2136,7 @@ packages: '@firebase/component': 0.6.0 '@firebase/messaging': 0.12.0_@firebase+app@0.9.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app' dev: false @@ -2259,7 +2156,7 @@ packages: '@firebase/messaging-interop-types': 0.2.0 '@firebase/util': 1.8.0 idb: 7.0.1 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/performance-compat/0.2.0_5z7svkifsmkn6ro3hru7lnxwrq: @@ -2273,7 +2170,7 @@ packages: '@firebase/performance': 0.6.0_@firebase+app@0.9.0 '@firebase/performance-types': 0.2.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app' dev: false @@ -2292,7 +2189,7 @@ packages: '@firebase/installations': 0.6.0_@firebase+app@0.9.0 '@firebase/logger': 0.4.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/remote-config-compat/0.2.0_5z7svkifsmkn6ro3hru7lnxwrq: @@ -2306,7 +2203,7 @@ packages: '@firebase/remote-config': 0.4.0_@firebase+app@0.9.0 '@firebase/remote-config-types': 0.3.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app' dev: false @@ -2325,7 +2222,7 @@ packages: '@firebase/installations': 0.6.0_@firebase+app@0.9.0 '@firebase/logger': 0.4.0 '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/storage-compat/0.2.0_smx2rqj2kjyjzx5x66zunbdpee: @@ -2338,7 +2235,7 @@ packages: '@firebase/storage': 0.10.0_nw4m4mwqwngj7zodqmw3xrcjja '@firebase/storage-types': 0.7.0_ymjb4f6a56kabcdqyfm4cet2ly '@firebase/util': 1.8.0 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - '@firebase/app' - '@firebase/app-types' @@ -2364,7 +2261,7 @@ packages: '@firebase/component': 0.6.0 '@firebase/util': 1.8.0 node-fetch: 2.6.7_encoding@0.1.13 - tslib: 2.4.0 + tslib: 2.4.1 transitivePeerDependencies: - encoding dev: false @@ -2372,7 +2269,7 @@ packages: /@firebase/util/1.8.0: resolution: {integrity: sha512-clK6pTTxIiLMYz4UrvDTVAs2rIaOiroAuFdX67C0JalvEwzi6Vv8li6xAGj38tkj7Qax06mosM1fQkxf2h4VTg==} dependencies: - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@firebase/webchannel-wrapper/0.9.0: @@ -2419,8 +2316,8 @@ packages: yargs: 16.2.0 dev: false - /@humanwhocodes/config-array/0.10.4: - resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==} + /@humanwhocodes/config-array/0.10.7: + resolution: {integrity: sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -2499,7 +2396,7 @@ packages: '@types/node': 18.11.18 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.7.0 + ci-info: 3.7.1 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.2.0 @@ -2652,7 +2549,7 @@ packages: resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@jest/types': 29.3.1 '@jridgewell/trace-mapping': 0.3.17 babel-plugin-istanbul: 6.1.1 @@ -2679,7 +2576,7 @@ packages: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 '@types/node': 18.11.18 - '@types/yargs': 17.0.15 + '@types/yargs': 17.0.18 chalk: 4.1.2 dev: true @@ -2728,10 +2625,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@lit/reactive-element/1.4.1: - resolution: {integrity: sha512-qDv4851VFSaBWzpS02cXHclo40jsbAjRXnebNXpm0uVg32kCneZPo9RYVQtrTNICtZ+1wAYHu1ZtxWSWMbKrBw==} - dev: false - /@lit/reactive-element/1.5.0: resolution: {integrity: sha512-fQh9FDK0LPTwDk+0HhSZEtb8K0LTN1wXerwpGrWA+a8tWulYRDLI4vQDWp4GOIsewn0572KYV/oZ3+492D7osA==} dev: false @@ -2756,8 +2649,8 @@ packages: read-yaml-file: 1.1.0 dev: true - /@mui/base/5.0.0-alpha.101_7ey2zzynotv32rpkwno45fsx4e: - resolution: {integrity: sha512-a54BcXvArGOKUZ2zyS/7B9GNhAGgfomEQSkfEZ88Nc9jKvXA+Mppenfz5o4JCAnD8c4VlePmz9rKOYvvum1bZw==} + /@mui/base/5.0.0-alpha.112_7ey2zzynotv32rpkwno45fsx4e: + resolution: {integrity: sha512-KPwb1iYPXsV/P8uu0SNQrj7v7YU6wdN4Eccc2lZQyRDW+f6PJYjHBuFUTYKc408B98Jvs1XbC/z5MN45a2DWrQ==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -2767,10 +2660,10 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.20.7 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.0_@types+react@18.0.20 - '@mui/utils': 5.10.9_react@18.2.0 + '@mui/types': 7.2.3_@types+react@18.0.20 + '@mui/utils': 5.11.2_react@18.2.0 '@popperjs/core': 2.11.6 '@types/react': 18.0.20 clsx: 1.2.1 @@ -2780,12 +2673,12 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker/5.10.9: - resolution: {integrity: sha512-rqoFu4qww6KJBbXYhyRd9YXjwBHa3ylnBPSWbGf1bdfG0AYMKmVzg8zxkWvxAWOp97kvx3M2kNPb0xMIDZiogQ==} + /@mui/core-downloads-tracker/5.11.3: + resolution: {integrity: sha512-Bgb6//KtxY7IC7M5Pa5RKFX1wttc213mqpKqydnz3wn4BGDXfA5c0vf5nTu5zqsJeB4T3ysAJTRJhQ/E1GsZDQ==} dev: false - /@mui/icons-material/5.10.9_5fncb4nagb4cvvcnwamw2rozfa: - resolution: {integrity: sha512-sqClXdEM39WKQJOQ0ZCPTptaZgqwibhj2EFV9N0v7BU1PO8y4OcX/a2wIQHn4fNuDjIZktJIBrmU23h7aqlGgg==} + /@mui/icons-material/5.11.0_4r2n2chxjb272yibknfb4hapcq: + resolution: {integrity: sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -2795,14 +2688,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.19.0 - '@mui/material': 5.10.9_af5ln35zuaotaffazii6n6bke4 + '@babel/runtime': 7.20.7 + '@mui/material': 5.11.3_pmppvr4gtvd6vpdr5yl42vjwtu '@types/react': 18.0.20 react: 18.2.0 dev: false - /@mui/material/5.10.9_af5ln35zuaotaffazii6n6bke4: - resolution: {integrity: sha512-sdOzlgpCmyw48je+E7o9UGGJpgBaF+60FlTRpVpcd/z+LUhnuzzuis891yPI5dPPXLBDL/bO4SsGg51lgNeLBw==} + /@mui/material/5.11.3_pmppvr4gtvd6vpdr5yl42vjwtu: + resolution: {integrity: sha512-Oz+rMFiMtxzzDLUxKyyj4mSxF9ShmsBoJ9qvglXCYqklgSrEl1R/Z4hfPZ+2pWd5CriO8U/0CFHr4DksrlTiCw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -2818,14 +2711,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.19.0 - '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 - '@emotion/styled': 11.10.4_yiaqs725o7pcd7rteavrnhgj4y - '@mui/base': 5.0.0-alpha.101_7ey2zzynotv32rpkwno45fsx4e - '@mui/core-downloads-tracker': 5.10.9 - '@mui/system': 5.10.10_4mv32nu4vciambuqqzuu4gtvj4 - '@mui/types': 7.2.0_@types+react@18.0.20 - '@mui/utils': 5.10.9_react@18.2.0 + '@babel/runtime': 7.20.7 + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.5_s7uipz3r575xmfz2gje3lxfqua + '@mui/base': 5.0.0-alpha.112_7ey2zzynotv32rpkwno45fsx4e + '@mui/core-downloads-tracker': 5.11.3 + '@mui/system': 5.11.2_rzxw6anggsjmiyyhdfmgehw6ye + '@mui/types': 7.2.3_@types+react@18.0.20 + '@mui/utils': 5.11.2_react@18.2.0 '@types/react': 18.0.20 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 @@ -2837,8 +2730,8 @@ packages: react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y dev: false - /@mui/private-theming/5.10.9_w5j4k42lgipnm43s3brx6h3c34: - resolution: {integrity: sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg==} + /@mui/private-theming/5.11.2_w5j4k42lgipnm43s3brx6h3c34: + resolution: {integrity: sha512-qZwMaqRFPwlYmqwVKblKBGKtIjJRAj3nsvX93pOmatsXyorW7N/0IPE/swPgz1VwChXhHO75DwBEx8tB+aRMNg==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -2847,15 +2740,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.19.0 - '@mui/utils': 5.10.9_react@18.2.0 + '@babel/runtime': 7.20.7 + '@mui/utils': 5.11.2_react@18.2.0 '@types/react': 18.0.20 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine/5.10.8_hfzxdiydbrbhhfpkwuv3jhvwmq: - resolution: {integrity: sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw==} + /@mui/styled-engine/5.11.0_dovxhg2tvkkxkdnqyoum6wzcxm: + resolution: {integrity: sha512-AF06K60Zc58qf0f7X+Y/QjaHaZq16znliLnGc9iVrV/+s8Ln/FCoeNuFvhlCbZZQ5WQcJvcy59zp0nXrklGGPQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -2867,17 +2760,17 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.19.0 - '@emotion/cache': 11.10.3 - '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 - '@emotion/styled': 11.10.4_yiaqs725o7pcd7rteavrnhgj4y + '@babel/runtime': 7.20.7 + '@emotion/cache': 11.10.5 + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.5_s7uipz3r575xmfz2gje3lxfqua csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/system/5.10.10_4mv32nu4vciambuqqzuu4gtvj4: - resolution: {integrity: sha512-TXwtKN0adKpBrZmO+eilQWoPf2veh050HLYrN78Kps9OhlvO70v/2Kya0+mORFhu9yhpAwjHXO8JII/R4a5ZLA==} + /@mui/system/5.11.2_rzxw6anggsjmiyyhdfmgehw6ye: + resolution: {integrity: sha512-PPkYhrcP2MkhscX6SauIl0wPgra0w1LGPtll+hIKc2Z2JbGRSrUCFif93kxejB7I1cAoCay9jWW4mnNhsOqF/g==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -2892,13 +2785,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.19.0 - '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 - '@emotion/styled': 11.10.4_yiaqs725o7pcd7rteavrnhgj4y - '@mui/private-theming': 5.10.9_w5j4k42lgipnm43s3brx6h3c34 - '@mui/styled-engine': 5.10.8_hfzxdiydbrbhhfpkwuv3jhvwmq - '@mui/types': 7.2.0_@types+react@18.0.20 - '@mui/utils': 5.10.9_react@18.2.0 + '@babel/runtime': 7.20.7 + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.5_s7uipz3r575xmfz2gje3lxfqua + '@mui/private-theming': 5.11.2_w5j4k42lgipnm43s3brx6h3c34 + '@mui/styled-engine': 5.11.0_dovxhg2tvkkxkdnqyoum6wzcxm + '@mui/types': 7.2.3_@types+react@18.0.20 + '@mui/utils': 5.11.2_react@18.2.0 '@types/react': 18.0.20 clsx: 1.2.1 csstype: 3.1.1 @@ -2906,8 +2799,8 @@ packages: react: 18.2.0 dev: false - /@mui/types/7.2.0_@types+react@18.0.20: - resolution: {integrity: sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA==} + /@mui/types/7.2.3_@types+react@18.0.20: + resolution: {integrity: sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==} peerDependencies: '@types/react': '*' peerDependenciesMeta: @@ -2917,13 +2810,13 @@ packages: '@types/react': 18.0.20 dev: false - /@mui/utils/5.10.9_react@18.2.0: - resolution: {integrity: sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA==} + /@mui/utils/5.11.2_react@18.2.0: + resolution: {integrity: sha512-AyizuHHlGdAtH5hOOXBW3kriuIwUIKUIgg0P7LzMvzf6jPhoQbENYqY6zJqfoZ7fAWMNNYT8mgN5EftNGzwE2w==} engines: {node: '>=12.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.20.7 '@types/prop-types': 15.7.5 '@types/react-is': 17.0.3 prop-types: 15.8.1 @@ -2931,8 +2824,8 @@ packages: react-is: 18.2.0 dev: false - /@next/env/12.3.1: - resolution: {integrity: sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg==} + /@next/env/12.3.4: + resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==} dev: false /@next/env/13.1.0: @@ -2944,8 +2837,8 @@ packages: glob: 7.1.7 dev: true - /@next/swc-android-arm-eabi/12.3.1: - resolution: {integrity: sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==} + /@next/swc-android-arm-eabi/12.3.4: + resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==} engines: {node: '>= 10'} cpu: [arm] os: [android] @@ -2961,8 +2854,8 @@ packages: requiresBuild: true optional: true - /@next/swc-android-arm64/12.3.1: - resolution: {integrity: sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==} + /@next/swc-android-arm64/12.3.4: + resolution: {integrity: sha512-5jf0dTBjL+rabWjGj3eghpLUxCukRhBcEJgwLedewEA/LJk2HyqCvGIwj5rH+iwmq1llCWbOky2dO3pVljrapg==} engines: {node: '>= 10'} cpu: [arm64] os: [android] @@ -2978,8 +2871,8 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-arm64/12.3.1: - resolution: {integrity: sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==} + /@next/swc-darwin-arm64/12.3.4: + resolution: {integrity: sha512-DqsSTd3FRjQUR6ao0E1e2OlOcrF5br+uegcEGPVonKYJpcr0MJrtYmPxd4v5T6UCJZ+XzydF7eQo5wdGvSZAyA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -2995,8 +2888,8 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-x64/12.3.1: - resolution: {integrity: sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==} + /@next/swc-darwin-x64/12.3.4: + resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3012,8 +2905,8 @@ packages: requiresBuild: true optional: true - /@next/swc-freebsd-x64/12.3.1: - resolution: {integrity: sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==} + /@next/swc-freebsd-x64/12.3.4: + resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] @@ -3029,8 +2922,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm-gnueabihf/12.3.1: - resolution: {integrity: sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==} + /@next/swc-linux-arm-gnueabihf/12.3.4: + resolution: {integrity: sha512-3zqD3pO+z5CZyxtKDTnOJ2XgFFRUBciOox6EWkoZvJfc9zcidNAQxuwonUeNts6Xbm8Wtm5YGIRC0x+12YH7kw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -3046,8 +2939,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-gnu/12.3.1: - resolution: {integrity: sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==} + /@next/swc-linux-arm64-gnu/12.3.4: + resolution: {integrity: sha512-kiX0vgJGMZVv+oo1QuObaYulXNvdH/IINmvdZnVzMO/jic/B8EEIGlZ8Bgvw8LCjH3zNVPO3mGrdMvnEEPEhKA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3063,8 +2956,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-musl/12.3.1: - resolution: {integrity: sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==} + /@next/swc-linux-arm64-musl/12.3.4: + resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3080,8 +2973,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-gnu/12.3.1: - resolution: {integrity: sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA==} + /@next/swc-linux-x64-gnu/12.3.4: + resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3097,8 +2990,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-musl/12.3.1: - resolution: {integrity: sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg==} + /@next/swc-linux-x64-musl/12.3.4: + resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3114,8 +3007,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-arm64-msvc/12.3.1: - resolution: {integrity: sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==} + /@next/swc-win32-arm64-msvc/12.3.4: + resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -3131,8 +3024,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc/12.3.1: - resolution: {integrity: sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==} + /@next/swc-win32-ia32-msvc/12.3.4: + resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -3148,8 +3041,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-x64-msvc/12.3.1: - resolution: {integrity: sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==} + /@next/swc-win32-x64-msvc/12.3.4: + resolution: {integrity: sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3183,7 +3076,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 + fastq: 1.15.0 dev: true /@playwright/test/1.29.1: @@ -3427,7 +3320,7 @@ packages: react: 18.2.0 dev: false - /@rollup/plugin-babel/5.3.1_opjstonlpkhafnz76jsxdwq25a: + /@rollup/plugin-babel/5.3.1_quedi3p7womesqmjrcxptomfpa: resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -3438,7 +3331,7 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@babel/helper-module-imports': 7.18.6 '@rollup/pluginutils': 3.1.0_rollup@2.79.1 rollup: 2.79.1 @@ -3510,21 +3403,21 @@ packages: resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} dependencies: ejs: 3.1.8 - json5: 2.2.1 + json5: 2.2.3 magic-string: 0.25.9 - string.prototype.matchall: 4.0.7 + string.prototype.matchall: 4.0.8 dev: true /@swc/helpers/0.4.11: resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} dependencies: - tslib: 2.4.0 + tslib: 2.4.1 dev: false /@swc/helpers/0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: - tslib: 2.4.0 + tslib: 2.4.1 /@szmarczak/http-timer/5.0.1: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} @@ -3546,8 +3439,8 @@ packages: /@types/babel__core/7.1.20: resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} dependencies: - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 + '@babel/parser': 7.20.7 + '@babel/types': 7.20.7 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.3 @@ -3556,26 +3449,32 @@ packages: /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 + '@babel/parser': 7.20.7 + '@babel/types': 7.20.7 dev: true /@types/babel__traverse/7.18.3: resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 + dev: true + + /@types/debug/4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 dev: true /@types/eslint/8.4.10: resolution: {integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==} dependencies: - '@types/estree': 0.0.39 + '@types/estree': 1.0.0 '@types/json-schema': 7.0.11 dev: true @@ -3583,6 +3482,10 @@ packages: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + dev: true + /@types/flexsearch/0.7.3: resolution: {integrity: sha512-HXwADeHEP4exXkCIwy2n1+i0f1ilP1ETQOH5KDOugjkTFZPntWo0Gr8stZOaebkxsdx+k0X/K6obU/+it07ocg==} dev: false @@ -3600,14 +3503,10 @@ packages: '@types/node': 18.11.18 dev: true - /@types/http-cache-semantics/4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} - dev: true - /@types/is-ci/3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: - ci-info: 3.7.0 + ci-info: 3.7.1 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3646,6 +3545,10 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true + /@types/ms/0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: true + /@types/node/12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true @@ -3665,8 +3568,8 @@ packages: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false - /@types/prettier/2.7.1: - resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} + /@types/prettier/2.7.2: + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true /@types/prop-types/15.7.5: @@ -3703,8 +3606,8 @@ packages: '@types/scheduler': 0.16.2 csstype: 3.1.1 - /@types/react/18.0.21: - resolution: {integrity: sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==} + /@types/react/18.0.26: + resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 @@ -3743,13 +3646,13 @@ packages: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/17.0.15: - resolution: {integrity: sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==} + /@types/yargs/17.0.18: + resolution: {integrity: sha512-eIJR1UER6ur3EpKM3d+2Pgd+ET+k6Kn9B4ZItX0oPjjVI5PrfaRjKyLT5UYendDpLuoiJMNJvovLQbEXqhsPaw==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.48.0_wxmz6cyorqfuzhhglktlvr5lve: + /@typescript-eslint/eslint-plugin/5.48.0_k73wpmdolxikpyqun3p36akaaq: resolution: {integrity: sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3760,18 +3663,18 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.48.0_p4cjf2r47dnfiqufepc5hp43sq + '@typescript-eslint/parser': 5.48.0_iukboom6ndih5an6iafl45j2fe '@typescript-eslint/scope-manager': 5.48.0 - '@typescript-eslint/type-utils': 5.48.0_p4cjf2r47dnfiqufepc5hp43sq - '@typescript-eslint/utils': 5.48.0_p4cjf2r47dnfiqufepc5hp43sq + '@typescript-eslint/type-utils': 5.48.0_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/utils': 5.48.0_iukboom6ndih5an6iafl45j2fe debug: 4.3.4 eslint: 8.31.0 - ignore: 5.2.0 + ignore: 5.2.4 natural-compare-lite: 1.4.0 regexpp: 3.2.0 - semver: 7.3.7 - tsutils: 3.21.0_typescript@4.9.3 - typescript: 4.9.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true @@ -3796,7 +3699,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.48.0_p4cjf2r47dnfiqufepc5hp43sq: + /@typescript-eslint/parser/5.48.0_iukboom6ndih5an6iafl45j2fe: resolution: {integrity: sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3808,10 +3711,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.48.0 '@typescript-eslint/types': 5.48.0 - '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.3 + '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.4 debug: 4.3.4 eslint: 8.31.0 - typescript: 4.9.3 + typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true @@ -3824,7 +3727,7 @@ packages: '@typescript-eslint/visitor-keys': 5.48.0 dev: true - /@typescript-eslint/type-utils/5.48.0_p4cjf2r47dnfiqufepc5hp43sq: + /@typescript-eslint/type-utils/5.48.0_iukboom6ndih5an6iafl45j2fe: resolution: {integrity: sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3834,12 +3737,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.3 - '@typescript-eslint/utils': 5.48.0_p4cjf2r47dnfiqufepc5hp43sq + '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.4 + '@typescript-eslint/utils': 5.48.0_iukboom6ndih5an6iafl45j2fe debug: 4.3.4 eslint: 8.31.0 - tsutils: 3.21.0_typescript@4.9.3 - typescript: 4.9.3 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true @@ -3863,14 +3766,14 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.7 + semver: 7.3.8 tsutils: 3.21.0_typescript@4.8.3 typescript: 4.8.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.48.0_typescript@4.9.3: + /@typescript-eslint/typescript-estree/5.48.0_typescript@4.9.4: resolution: {integrity: sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3884,14 +3787,14 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.7 - tsutils: 3.21.0_typescript@4.9.3 - typescript: 4.9.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.48.0_p4cjf2r47dnfiqufepc5hp43sq: + /@typescript-eslint/utils/5.48.0_iukboom6ndih5an6iafl45j2fe: resolution: {integrity: sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3901,11 +3804,11 @@ packages: '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.48.0 '@typescript-eslint/types': 5.48.0 - '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.3 + '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.4 eslint: 8.31.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.31.0 - semver: 7.3.7 + semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript @@ -3919,17 +3822,25 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /acorn-jsx/5.3.2_acorn@8.8.0: + /abort-controller/3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false + + /acorn-jsx/5.3.2_acorn@8.8.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.0 + acorn: 8.8.1 dev: true - /acorn/8.8.0: - resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} + /acorn/8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} + hasBin: true dev: true /aggregate-error/3.1.0: @@ -4039,24 +3950,24 @@ packages: dependencies: '@types/react': 18.0.20 react: 18.2.0 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /aria-query/4.2.2: resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} engines: {node: '>=6.0'} dependencies: - '@babel/runtime': 7.19.0 - '@babel/runtime-corejs3': 7.19.1 + '@babel/runtime': 7.20.7 + '@babel/runtime-corejs3': 7.20.7 dev: true - /array-includes/3.1.5: - resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} + /array-includes/3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 get-intrinsic: 1.1.3 is-string: 1.0.7 dev: true @@ -4078,26 +3989,36 @@ packages: engines: {node: '>=0.10.0'} dev: true - /array.prototype.flat/1.3.0: - resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} + /array.prototype.flat/1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 dev: true - /array.prototype.flatmap/1.3.0: - resolution: {integrity: sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==} + /array.prototype.flatmap/1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 dev: true + /array.prototype.tosorted/1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.1.3 + dev: true + /arrify/1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} @@ -4125,8 +4046,8 @@ packages: resolution: {integrity: sha512-FPVt5ynkqUAA9gcMZnJHka1XfQgr1WNd/yRfIjmj5WGmjua+u5Hl9hn8M2nU5CNy2bEIcj1ZUwXq7IOHsfZG9w==} dev: false - /axe-core/4.4.3: - resolution: {integrity: sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==} + /axe-core/4.6.1: + resolution: {integrity: sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w==} engines: {node: '>=4'} dev: true @@ -4142,17 +4063,17 @@ packages: resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==} dev: true - /babel-jest/29.3.1_@babel+core@7.20.5: + /babel-jest/29.3.1_@babel+core@7.20.7: resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@jest/transform': 29.3.1 '@types/babel__core': 7.1.20 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.2.0_@babel+core@7.20.5 + babel-preset-jest: 29.2.0_@babel+core@7.20.7 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -4177,7 +4098,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -4190,8 +4111,8 @@ packages: resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.5 + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 '@types/babel__core': 7.1.20 '@types/babel__traverse': 7.18.3 dev: true @@ -4200,82 +4121,87 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.19.0 - cosmiconfig: 7.0.1 + '@babel/runtime': 7.20.7 + cosmiconfig: 7.1.0 resolve: 1.22.1 dev: false - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.5: + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.7: resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 + '@babel/compat-data': 7.20.10 + '@babel/core': 7.20.7 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.7 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.5: + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.7: resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.7 core-js-compat: 3.27.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.5: + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.7: resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.7 transitivePeerDependencies: - supports-color dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.5: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.7: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.5 + '@babel/core': 7.20.7 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.7 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.7 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.7 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.7 dev: true - /babel-preset-jest/29.2.0_@babel+core@7.20.5: + /babel-preset-jest/29.2.0_@babel+core@7.20.7: resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 babel-plugin-jest-hoist: 29.2.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.7 dev: true /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true + /base64-arraybuffer-es6/0.7.0: + resolution: {integrity: sha512-ESyU/U1CFZDJUdr+neHRhNozeCv72Y7Vm0m1DCbjX3KBjT6eYocvAJlSk6+8+HkVwXlT1FNxhGW6q3UKAlCvvw==} + engines: {node: '>=6.0.0'} + dev: true + /base64-js/1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false @@ -4322,9 +4248,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001419 + caniuse-lite: 1.0.30001441 electron-to-chromium: 1.4.284 - node-releases: 2.0.6 + node-releases: 2.0.8 update-browserslist-db: 1.0.10_browserslist@4.21.4 dev: true @@ -4366,11 +4292,10 @@ packages: engines: {node: '>=14.16'} dev: true - /cacheable-request/10.2.3: - resolution: {integrity: sha512-6BehRBOs7iurNjAYN9iPazTwFDaMQavJO8W1MEm3s2pH8q/tkPTtLDRUZaweWK87WFGf2Y5wLAlaCJlR5kOz3w==} + /cacheable-request/10.2.4: + resolution: {integrity: sha512-IWIea8ei1Ht4dBqvlvh7Gs7EYlMyBhlJybLDUB9sadEqHqftmdNieMLIR5ia3vs8gbjj9t8hXLBpUVg3vcQNbg==} engines: {node: '>=14.16'} dependencies: - '@types/http-cache-semantics': 4.0.1 get-stream: 6.0.1 http-cache-semantics: 4.1.0 keyv: 4.5.2 @@ -4408,8 +4333,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001419: - resolution: {integrity: sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==} + /caniuse-lite/1.0.30001441: + resolution: {integrity: sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==} /chalk-next/6.1.5: resolution: {integrity: sha512-OAx9F3vSk18qpfCohk0849/j3GyaoIpv8eXjmpdbmLZt+5+sWYq8xwt3B5ue25irLcxFcLL2hAbxxHSsBxupbw==} @@ -4448,8 +4373,8 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /ci-info/3.7.0: - resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} + /ci-info/3.7.1: + resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} dev: true @@ -4620,8 +4545,8 @@ packages: browserslist: 4.21.4 dev: true - /core-js-pure/3.25.2: - resolution: {integrity: sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA==} + /core-js-pure/3.27.1: + resolution: {integrity: sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw==} requiresBuild: true dev: true @@ -4629,8 +4554,8 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: false - /cosmiconfig/7.0.1: - resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} + /cosmiconfig/7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} dependencies: '@types/parse-json': 4.0.0 @@ -4697,6 +4622,11 @@ packages: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true + /data-uri-to-buffer/4.0.0: + resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} + engines: {node: '>= 12'} + dev: false + /dayjs/1.11.7: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} dev: false @@ -4852,10 +4782,16 @@ packages: /dom-helpers/5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.20.7 csstype: 3.1.1 dev: false + /domexception/1.0.1: + resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} + dependencies: + webidl-conversions: 4.0.2 + dev: true + /domino/2.1.6: resolution: {integrity: sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==} dev: false @@ -4921,8 +4857,8 @@ packages: dependencies: is-arrayish: 0.2.1 - /es-abstract/1.20.2: - resolution: {integrity: sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==} + /es-abstract/1.20.5: + resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -4931,11 +4867,12 @@ packages: function.prototype.name: 1.1.5 get-intrinsic: 1.1.3 get-symbol-description: 1.0.0 + gopd: 1.0.1 has: 1.0.3 has-property-descriptors: 1.0.0 has-symbols: 1.0.3 - internal-slot: 1.0.3 - is-callable: 1.2.6 + internal-slot: 1.0.4 + is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 @@ -4945,8 +4882,9 @@ packages: object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.4.3 - string.prototype.trimend: 1.0.5 - string.prototype.trimstart: 1.0.5 + safe-regex-test: 1.0.0 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 unbox-primitive: 1.0.2 dev: true @@ -4960,7 +4898,7 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: - is-callable: 1.2.6 + is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 dev: true @@ -4999,7 +4937,7 @@ packages: eslint-import-resolver-typescript: 2.7.1_2iahngt3u2tkbdlu6s4gkur3pu eslint-plugin-import: 2.26.0_zznokraecjt4ixvvqcdste35vq eslint-plugin-jsx-a11y: 6.6.1_eslint@8.22.0 - eslint-plugin-react: 7.31.8_eslint@8.22.0 + eslint-plugin-react: 7.31.11_eslint@8.22.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.22.0 typescript: 4.8.3 transitivePeerDependencies: @@ -5007,7 +4945,7 @@ packages: - supports-color dev: true - /eslint-config-next/12.3.1_p4cjf2r47dnfiqufepc5hp43sq: + /eslint-config-next/12.3.1_iukboom6ndih5an6iafl45j2fe: resolution: {integrity: sha512-EN/xwKPU6jz1G0Qi6Bd/BqMnHLyRAL0VsaQaWA7F3KkjAgZHi4f1uL1JKGWNxdQpHTW/sdGONBd0bzxUka/DJg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -5018,22 +4956,22 @@ packages: dependencies: '@next/eslint-plugin-next': 12.3.1 '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.48.0_p4cjf2r47dnfiqufepc5hp43sq + '@typescript-eslint/parser': 5.48.0_iukboom6ndih5an6iafl45j2fe eslint: 8.31.0 eslint-import-resolver-node: 0.3.6 eslint-import-resolver-typescript: 2.7.1_ol7jqilc3wemtdbq3nzhywgxq4 eslint-plugin-import: 2.26.0_o2ymnzkcx6ynnxgq4q5neiwzpe eslint-plugin-jsx-a11y: 6.6.1_eslint@8.31.0 - eslint-plugin-react: 7.31.8_eslint@8.31.0 + eslint-plugin-react: 7.31.11_eslint@8.31.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.31.0 - typescript: 4.9.3 + typescript: 4.9.4 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: true - /eslint-config-prettier/8.5.0_eslint@8.22.0: - resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} + /eslint-config-prettier/8.6.0_eslint@8.22.0: + resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -5041,8 +4979,8 @@ packages: eslint: 8.22.0 dev: true - /eslint-config-prettier/8.5.0_eslint@8.31.0: - resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} + /eslint-config-prettier/8.6.0_eslint@8.31.0: + resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -5116,7 +5054,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.48.0_p4cjf2r47dnfiqufepc5hp43sq + '@typescript-eslint/parser': 5.48.0_iukboom6ndih5an6iafl45j2fe debug: 3.2.7 eslint: 8.31.0 eslint-import-resolver-node: 0.3.6 @@ -5165,19 +5103,19 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.48.0_p4cjf2r47dnfiqufepc5hp43sq - array-includes: 3.1.5 - array.prototype.flat: 1.3.0 + '@typescript-eslint/parser': 5.48.0_iukboom6ndih5an6iafl45j2fe + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.31.0 eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.4_rwfyzivsgbql5kqdd6lovekmku has: 1.0.3 - is-core-module: 2.10.0 + is-core-module: 2.11.0 is-glob: 4.0.3 minimatch: 3.1.2 - object.values: 1.1.5 + object.values: 1.1.6 resolve: 1.22.1 tsconfig-paths: 3.14.1 transitivePeerDependencies: @@ -5197,18 +5135,18 @@ packages: optional: true dependencies: '@typescript-eslint/parser': 5.48.0_76twfck5d7crjqrmw4yltga7zm - array-includes: 3.1.5 - array.prototype.flat: 1.3.0 + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.22.0 eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.4_tq5q2x4pem2nmnr5fqx62jngeq has: 1.0.3 - is-core-module: 2.10.0 + is-core-module: 2.11.0 is-glob: 4.0.3 minimatch: 3.1.2 - object.values: 1.1.5 + object.values: 1.1.6 resolve: 1.22.1 tsconfig-paths: 3.14.1 transitivePeerDependencies: @@ -5223,18 +5161,18 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.20.7 aria-query: 4.2.2 - array-includes: 3.1.5 + array-includes: 3.1.6 ast-types-flow: 0.0.7 - axe-core: 4.4.3 + axe-core: 4.6.1 axobject-query: 2.2.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 eslint: 8.22.0 has: 1.0.3 jsx-ast-utils: 3.3.3 - language-tags: 1.0.5 + language-tags: 1.0.7 minimatch: 3.1.2 semver: 6.3.0 dev: true @@ -5245,23 +5183,40 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.20.7 aria-query: 4.2.2 - array-includes: 3.1.5 + array-includes: 3.1.6 ast-types-flow: 0.0.7 - axe-core: 4.4.3 + axe-core: 4.6.1 axobject-query: 2.2.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 eslint: 8.31.0 has: 1.0.3 jsx-ast-utils: 3.3.3 - language-tags: 1.0.5 + language-tags: 1.0.7 minimatch: 3.1.2 semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_i2cojdczqdiurzgttlwdgf764e: + /eslint-plugin-prettier/4.2.1_32m5uc2milwdw3tnkcq5del26y: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.31.0 + eslint-config-prettier: 8.6.0_eslint@8.31.0 + prettier: 2.8.1 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-plugin-prettier/4.2.1_qcim4gnz2p2xihlufogjc5ujra: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5273,25 +5228,8 @@ packages: optional: true dependencies: eslint: 8.22.0 - eslint-config-prettier: 8.5.0_eslint@8.22.0 - prettier: 2.7.1 - prettier-linter-helpers: 1.0.0 - dev: true - - /eslint-plugin-prettier/4.2.1_vkmhlldugy3fnk7p2bqhsfnaiq: - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.31.0 - eslint-config-prettier: 8.5.0_eslint@8.31.0 - prettier: 2.7.1 + eslint-config-prettier: 8.6.0_eslint@8.22.0 + prettier: 2.8.1 prettier-linter-helpers: 1.0.0 dev: true @@ -5313,50 +5251,52 @@ packages: eslint: 8.31.0 dev: true - /eslint-plugin-react/7.31.8_eslint@8.22.0: - resolution: {integrity: sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==} + /eslint-plugin-react/7.31.11_eslint@8.22.0: + resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.5 - array.prototype.flatmap: 1.3.0 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 eslint: 8.22.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 - object.entries: 1.1.5 - object.fromentries: 2.0.5 - object.hasown: 1.1.1 - object.values: 1.1.5 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 semver: 6.3.0 - string.prototype.matchall: 4.0.7 + string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-react/7.31.8_eslint@8.31.0: - resolution: {integrity: sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==} + /eslint-plugin-react/7.31.11_eslint@8.31.0: + resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.5 - array.prototype.flatmap: 1.3.0 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 eslint: 8.31.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 - object.entries: 1.1.5 - object.fromentries: 2.0.5 - object.hasown: 1.1.1 - object.values: 1.1.5 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 semver: 6.3.0 - string.prototype.matchall: 4.0.7 + string.prototype.matchall: 4.0.8 dev: true /eslint-scope/5.1.1: @@ -5408,9 +5348,10 @@ packages: /eslint/8.22.0: resolution: {integrity: sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true dependencies: - '@eslint/eslintrc': 1.3.2 - '@humanwhocodes/config-array': 0.10.4 + '@eslint/eslintrc': 1.4.1 + '@humanwhocodes/config-array': 0.10.7 '@humanwhocodes/gitignore-to-minimatch': 1.0.2 ajv: 6.12.6 chalk: 4.1.2 @@ -5421,7 +5362,7 @@ packages: eslint-scope: 7.1.1 eslint-utils: 3.0.0_eslint@8.22.0 eslint-visitor-keys: 3.3.0 - espree: 9.4.0 + espree: 9.4.1 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -5429,10 +5370,10 @@ packages: find-up: 5.0.0 functional-red-black-tree: 1.0.1 glob-parent: 6.0.2 - globals: 13.17.0 + globals: 13.19.0 globby: 11.1.0 grapheme-splitter: 1.0.4 - ignore: 5.2.0 + ignore: 5.2.4 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 @@ -5470,7 +5411,7 @@ packages: eslint-scope: 7.1.1 eslint-utils: 3.0.0_eslint@8.31.0 eslint-visitor-keys: 3.3.0 - espree: 9.4.0 + espree: 9.4.1 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -5479,7 +5420,7 @@ packages: glob-parent: 6.0.2 globals: 13.19.0 grapheme-splitter: 1.0.4 - ignore: 5.2.0 + ignore: 5.2.4 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 @@ -5500,12 +5441,12 @@ packages: - supports-color dev: true - /espree/9.4.0: - resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} + /espree/9.4.1: + resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.0 - acorn-jsx: 5.3.2_acorn@8.8.0 + acorn: 8.8.1 + acorn-jsx: 5.3.2_acorn@8.8.1 eslint-visitor-keys: 3.3.0 dev: true @@ -5548,6 +5489,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /event-target-shim/5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false + /eventemitter3/2.0.3: resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==} dev: false @@ -5615,6 +5561,12 @@ packages: tmp: 0.0.33 dev: true + /fake-indexeddb/4.0.1: + resolution: {integrity: sha512-hFRyPmvEZILYgdcLBxVdHLik4Tj3gDTu/g7s9ZDOiU3sTNiGx+vEu1ri/AMsFJUZ/1sdRbAVrEcKndh3sViBcA==} + dependencies: + realistic-structured-clone: 3.0.0 + dev: true + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -5646,8 +5598,8 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq/1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + /fastq/1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true @@ -5665,6 +5617,14 @@ packages: bser: 2.1.1 dev: true + /fetch-blob/3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: false + /file-entry-cache/6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -5785,6 +5745,13 @@ packages: engines: {node: '>= 14.17'} dev: true + /formdata-polyfill/4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false + /fs-extra/7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -5838,7 +5805,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 functions-have-names: 1.2.3 dev: true @@ -5937,13 +5904,6 @@ packages: engines: {node: '>=4'} dev: true - /globals/13.17.0: - resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - /globals/13.19.0: resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} engines: {node: '>=8'} @@ -5958,7 +5918,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 - ignore: 5.2.0 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -5974,6 +5934,12 @@ packages: pinkie-promise: 2.0.1 dev: true + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.1.3 + dev: true + /got/12.5.3: resolution: {integrity: sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==} engines: {node: '>=14.16'} @@ -5981,7 +5947,7 @@ packages: '@sindresorhus/is': 5.3.0 '@szmarczak/http-timer': 5.0.1 cacheable-lookup: 7.0.0 - cacheable-request: 10.2.3 + cacheable-request: 10.2.4 decompress-response: 6.0.0 form-data-encoder: 2.1.4 get-stream: 6.0.1 @@ -6069,10 +6035,11 @@ packages: /html-tokenize/2.0.1: resolution: {integrity: sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==} + hasBin: true dependencies: buffer-from: 0.1.2 inherits: 2.0.4 - minimist: 1.2.6 + minimist: 1.2.7 readable-stream: 1.0.34 through2: 0.4.2 dev: false @@ -6107,8 +6074,8 @@ packages: engines: {node: '>=12.20.0'} dev: true - /husky/8.0.2: - resolution: {integrity: sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==} + /husky/8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} hasBin: true dev: true @@ -6116,7 +6083,7 @@ packages: /i18next/21.10.0: resolution: {integrity: sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.20.7 dev: false /iconv-lite/0.4.24: @@ -6151,8 +6118,8 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false - /ignore/5.2.0: - resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + /ignore/5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} dev: true @@ -6192,8 +6159,8 @@ packages: /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /internal-slot/1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + /internal-slot/1.0.4: + resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.1.3 @@ -6232,8 +6199,8 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-callable/1.2.6: - resolution: {integrity: sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q==} + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true @@ -6241,11 +6208,11 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.7.0 + ci-info: 3.7.1 dev: true - /is-core-module/2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 @@ -6421,8 +6388,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.20.5 - '@babel/parser': 7.20.5 + '@babel/core': 7.20.7 + '@babel/parser': 7.20.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -6544,13 +6511,13 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.7 '@jest/test-sequencer': 29.3.1 '@jest/types': 29.3.1 '@types/node': 18.11.18 - babel-jest: 29.3.1_@babel+core@7.20.5 + babel-jest: 29.3.1_@babel+core@7.20.7 chalk: 4.1.2 - ci-info: 3.7.0 + ci-info: 3.7.1 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 @@ -6782,18 +6749,18 @@ packages: resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.20.5 - '@babel/generator': 7.20.5 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.5 - '@babel/traverse': 7.20.5 - '@babel/types': 7.19.4 + '@babel/core': 7.20.7 + '@babel/generator': 7.20.7 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.7 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.7 + '@babel/traverse': 7.20.10 + '@babel/types': 7.20.7 '@jest/expect-utils': 29.3.1 '@jest/transform': 29.3.1 '@jest/types': 29.3.1 '@types/babel__traverse': 7.18.3 - '@types/prettier': 2.7.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.7 chalk: 4.1.2 expect: 29.3.1 graceful-fs: 4.2.10 @@ -6805,7 +6772,7 @@ packages: jest-util: 29.3.1 natural-compare: 1.4.0 pretty-format: 29.3.1 - semver: 7.3.7 + semver: 7.3.8 transitivePeerDependencies: - supports-color dev: true @@ -6817,7 +6784,7 @@ packages: '@jest/types': 29.3.1 '@types/node': 18.11.18 chalk: 4.1.2 - ci-info: 3.7.0 + ci-info: 3.7.1 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true @@ -6913,6 +6880,7 @@ packages: /js-yaml/4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 dev: true @@ -6951,15 +6919,15 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5/1.0.1: - resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} + /json5/1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: - minimist: 1.2.6 + minimist: 1.2.7 dev: true - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true dev: true @@ -6987,7 +6955,7 @@ packages: resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.5 + array-includes: 3.1.6 object.assign: 4.1.4 dev: true @@ -7012,6 +6980,21 @@ packages: engines: {node: '>=6'} dev: true + /ky-universal/0.11.0_ky@0.33.1: + resolution: {integrity: sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw==} + engines: {node: '>=14.16'} + peerDependencies: + ky: '>=0.31.4' + web-streams-polyfill: '>=3.2.1' + peerDependenciesMeta: + web-streams-polyfill: + optional: true + dependencies: + abort-controller: 3.0.0 + ky: 0.33.1 + node-fetch: 3.3.0 + dev: false + /ky/0.33.1: resolution: {integrity: sha512-zZ9OlhgM4UEunvgJBH1bBl7+a7vas1HnCLSezu2CJawc4Ka+yJculRAVKbakUece4gW7kC5Dz+UGvbXIlpDt1w==} engines: {node: '>=14.16'} @@ -7021,8 +7004,8 @@ packages: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true - /language-tags/1.0.5: - resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + /language-tags/1.0.7: + resolution: {integrity: sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw==} dependencies: language-subtag-registry: 0.3.22 dev: true @@ -7040,13 +7023,6 @@ packages: type-check: 0.4.0 dev: true - /lib0/0.2.52: - resolution: {integrity: sha512-CjxlM7UgICfN6b2OPALBXchIBiNk6jE+1g7JP8ha+dh1xKRDSYpH0WQl1+rMqCju49xUnwPG34v4CR5/rPOZhg==} - engines: {node: '>=14'} - dependencies: - isomorphic.js: 0.2.5 - dev: false - /lib0/0.2.58: resolution: {integrity: sha512-6ovqPaYfOKU7GkkVxz/wjMR0zsqmNsISLvH+h9Lx5YNtWDZey69aYsTGXaSVpUPpJ+ZFtIvcZHsTGL3MbwOM8A==} engines: {node: '>=14'} @@ -7107,14 +7083,8 @@ packages: /lit-element/3.2.2: resolution: {integrity: sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==} dependencies: - '@lit/reactive-element': 1.4.1 - lit-html: 2.4.0 - dev: false - - /lit-html/2.4.0: - resolution: {integrity: sha512-G6qXu4JNUpY6aaF2VMfaszhO9hlWw0hOTRFDmuMheg/nDYGB+2RztUSOyrzALAbr8Nh0Y7qjhYkReh3rPnplVg==} - dependencies: - '@types/trusted-types': 2.0.2 + '@lit/reactive-element': 1.5.0 + lit-html: 2.5.0 dev: false /lit-html/2.5.0: @@ -7123,14 +7093,6 @@ packages: '@types/trusted-types': 2.0.2 dev: false - /lit/2.4.0: - resolution: {integrity: sha512-fdgzxEtLrZFQU/BqTtxFQCLwlZd9bdat+ltzSFjvWkZrs7eBmeX0L5MHUMb3kYIkuS8Xlfnii/iI5klirF8/Xg==} - dependencies: - '@lit/reactive-element': 1.4.1 - lit-element: 3.2.2 - lit-html: 2.4.0 - dev: false - /lit/2.5.0: resolution: {integrity: sha512-DtnUP6vR3l4Q8nRPPNBD+UxbAhwJPeky+OVbi3pdgMqm0g57xFSl1Sj64D1rIB+nVNdiVVg8YxB0hqKjvdadZA==} dependencies: @@ -7155,7 +7117,7 @@ packages: dependencies: big.js: 5.2.2 emojis-list: 3.0.0 - json5: 2.2.1 + json5: 2.2.3 dev: true /locate-path/5.0.0: @@ -7219,6 +7181,7 @@ packages: /loose-envify/1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: js-tokens: 4.0.0 @@ -7367,8 +7330,8 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + /minimist/1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} /mixme/0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} @@ -7432,8 +7395,8 @@ packages: - webpack dev: true - /next/12.3.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw==} + /next/12.3.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==} engines: {node: '>=12.22.0'} hasBin: true peerDependencies: @@ -7450,28 +7413,28 @@ packages: sass: optional: true dependencies: - '@next/env': 12.3.1 + '@next/env': 12.3.4 '@swc/helpers': 0.4.11 - caniuse-lite: 1.0.30001419 + caniuse-lite: 1.0.30001441 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 styled-jsx: 5.0.7_react@18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 optionalDependencies: - '@next/swc-android-arm-eabi': 12.3.1 - '@next/swc-android-arm64': 12.3.1 - '@next/swc-darwin-arm64': 12.3.1 - '@next/swc-darwin-x64': 12.3.1 - '@next/swc-freebsd-x64': 12.3.1 - '@next/swc-linux-arm-gnueabihf': 12.3.1 - '@next/swc-linux-arm64-gnu': 12.3.1 - '@next/swc-linux-arm64-musl': 12.3.1 - '@next/swc-linux-x64-gnu': 12.3.1 - '@next/swc-linux-x64-musl': 12.3.1 - '@next/swc-win32-arm64-msvc': 12.3.1 - '@next/swc-win32-ia32-msvc': 12.3.1 - '@next/swc-win32-x64-msvc': 12.3.1 + '@next/swc-android-arm-eabi': 12.3.4 + '@next/swc-android-arm64': 12.3.4 + '@next/swc-darwin-arm64': 12.3.4 + '@next/swc-darwin-x64': 12.3.4 + '@next/swc-freebsd-x64': 12.3.4 + '@next/swc-linux-arm-gnueabihf': 12.3.4 + '@next/swc-linux-arm64-gnu': 12.3.4 + '@next/swc-linux-arm64-musl': 12.3.4 + '@next/swc-linux-x64-gnu': 12.3.4 + '@next/swc-linux-x64-musl': 12.3.4 + '@next/swc-win32-arm64-msvc': 12.3.4 + '@next/swc-win32-ia32-msvc': 12.3.4 + '@next/swc-win32-x64-msvc': 12.3.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -7497,7 +7460,7 @@ packages: dependencies: '@next/env': 13.1.0 '@swc/helpers': 0.4.14 - caniuse-lite: 1.0.30001419 + caniuse-lite: 1.0.30001441 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -7520,6 +7483,11 @@ packages: - '@babel/core' - babel-plugin-macros + /node-domexception/1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: false + /node-fetch/2.6.7_encoding@0.1.13: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -7533,12 +7501,21 @@ packages: whatwg-url: 5.0.0 dev: false + /node-fetch/3.3.0: + resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.0 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + /node-int64/0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + /node-releases/2.0.8: + resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} dev: true /normalize-package-data/2.5.0: @@ -7608,38 +7585,38 @@ packages: object-keys: 1.1.1 dev: true - /object.entries/1.1.5: - resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} + /object.entries/1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 dev: true - /object.fromentries/2.0.5: - resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==} + /object.fromentries/2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 dev: true - /object.hasown/1.1.1: - resolution: {integrity: sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==} + /object.hasown/1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 dev: true - /object.values/1.1.5: - resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} + /object.values/1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 dev: true /once/1.4.0: @@ -7878,9 +7855,10 @@ packages: fast-diff: 1.2.0 dev: true - /prettier/2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + /prettier/2.8.1: + resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} engines: {node: '>=10.13.0'} + hasBin: true /pretty-bytes/5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} @@ -8037,7 +8015,7 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.20.7 html-parse-stringify: 3.0.1 i18next: 21.10.0 react: 18.2.0 @@ -8063,7 +8041,7 @@ packages: '@types/react': 18.0.20 react: 18.2.0 react-style-singleton: 2.2.1_w5j4k42lgipnm43s3brx6h3c34 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /react-remove-scroll/2.5.4_w5j4k42lgipnm43s3brx6h3c34: @@ -8080,7 +8058,7 @@ packages: react: 18.2.0 react-remove-scroll-bar: 2.3.4_w5j4k42lgipnm43s3brx6h3c34 react-style-singleton: 2.2.1_w5j4k42lgipnm43s3brx6h3c34 - tslib: 2.4.0 + tslib: 2.4.1 use-callback-ref: 1.3.0_w5j4k42lgipnm43s3brx6h3c34 use-sidecar: 1.1.2_w5j4k42lgipnm43s3brx6h3c34 dev: false @@ -8099,7 +8077,7 @@ packages: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /react-transition-group/4.4.5_biqbaboplfbrettd7655fr4n2y: @@ -8108,7 +8086,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.20.7 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -8181,6 +8159,14 @@ packages: util-deprecate: 1.0.2 dev: false + /realistic-structured-clone/3.0.0: + resolution: {integrity: sha512-rOjh4nuWkAqf9PWu6JVpOWD4ndI+JHfgiZeMmujYcPi+fvILUu7g6l26TC1K5aBIp34nV+jE1cDO75EKOfHC5Q==} + dependencies: + domexception: 1.0.1 + typeson: 6.1.0 + typeson-registry: 1.0.0-alpha.39 + dev: true + /redent/3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -8203,9 +8189,6 @@ packages: /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regenerator-runtime/0.13.9: - resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} - /regenerator-transform/0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: @@ -8288,15 +8271,17 @@ packages: /resolve/1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true dependencies: - is-core-module: 2.10.0 + is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 /resolve/2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true dependencies: - is-core-module: 2.10.0 + is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -8334,6 +8319,7 @@ packages: /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true dependencies: glob: 7.2.3 dev: true @@ -8368,7 +8354,7 @@ packages: /rxjs/7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: - tslib: 2.4.0 + tslib: 2.4.1 dev: true /safari-14-idb-fix/3.0.0: @@ -8382,6 +8368,14 @@ packages: /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + /safe-regex-test/1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + is-regex: 1.1.4 + dev: true + /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -8418,8 +8412,8 @@ packages: hasBin: true dev: true - /semver/7.3.7: - resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true dependencies: @@ -8532,7 +8526,7 @@ packages: engines: {node: '>=6'} hasBin: true dependencies: - array.prototype.flat: 1.3.0 + array.prototype.flat: 1.3.1 breakword: 1.0.5 grapheme-splitter: 1.0.4 strip-ansi: 6.0.1 @@ -8660,33 +8654,33 @@ packages: strip-ansi: 7.0.1 dev: true - /string.prototype.matchall/4.0.7: - resolution: {integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==} + /string.prototype.matchall/4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 get-intrinsic: 1.1.3 has-symbols: 1.0.3 - internal-slot: 1.0.3 + internal-slot: 1.0.4 regexp.prototype.flags: 1.4.3 side-channel: 1.0.4 dev: true - /string.prototype.trimend/1.0.5: - resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} + /string.prototype.trimend/1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 dev: true - /string.prototype.trimstart/1.0.5: - resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} + /string.prototype.trimstart/1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.2 + es-abstract: 1.20.5 dev: true /string_decoder/0.10.31: @@ -8796,8 +8790,8 @@ packages: client-only: 0.0.1 react: 18.2.0 - /stylis/4.0.13: - resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==} + /stylis/4.1.3: + resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false /supports-color/5.5.0: @@ -8882,7 +8876,7 @@ packages: hasBin: true dependencies: '@jridgewell/source-map': 0.3.2 - acorn: 8.8.0 + acorn: 8.8.1 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -8942,12 +8936,19 @@ packages: punycode: 2.1.1 dev: true + /tr46/2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + dependencies: + punycode: 2.1.1 + dev: true + /trim-newlines/3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /ts-jest/29.0.3_4f6uxrzmuwipl5rr3bcogf6k74: + /ts-jest/29.0.3_p6ekqnroyms5nhqbfxosryz7rm: resolution: {integrity: sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8972,11 +8973,11 @@ packages: fast-json-stable-stringify: 2.1.0 jest: 29.3.1_@types+node@18.11.18 jest-util: 29.3.1 - json5: 2.2.1 + json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.3.7 - typescript: 4.9.3 + semver: 7.3.8 + typescript: 4.9.4 yargs-parser: 21.1.1 dev: true @@ -8984,8 +8985,8 @@ packages: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: '@types/json5': 0.0.29 - json5: 1.0.1 - minimist: 1.2.6 + json5: 1.0.2 + minimist: 1.2.7 strip-bom: 3.0.0 dev: true @@ -8993,8 +8994,8 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib/2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + /tslib/2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} /tsutils/3.21.0_typescript@4.8.3: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -9006,14 +9007,14 @@ packages: typescript: 4.8.3 dev: true - /tsutils/3.21.0_typescript@4.9.3: + /tsutils/3.21.0_typescript@4.9.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.9.3 + typescript: 4.9.4 dev: true /tty-table/4.1.6: @@ -9084,16 +9085,24 @@ packages: hasBin: true dev: true - /typescript/4.8.4: - resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} + /typescript/4.9.4: + resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /typescript/4.9.3: - resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} - engines: {node: '>=4.2.0'} - hasBin: true + /typeson-registry/1.0.0-alpha.39: + resolution: {integrity: sha512-NeGDEquhw+yfwNhguLPcZ9Oj0fzbADiX4R0WxvoY8nGhy98IbzQy1sezjoEFWOywOboj/DWehI+/aUlRVrJnnw==} + engines: {node: '>=10.0.0'} + dependencies: + base64-arraybuffer-es6: 0.7.0 + typeson: 6.1.0 + whatwg-url: 8.7.0 + dev: true + + /typeson/6.1.0: + resolution: {integrity: sha512-6FTtyGr8ldU0pfbvW/eOZrEtEkczHRUtduBnA90Jh9kMPCiFNnXIon3vF41N0S4tV1HHQt4Hk1j4srpESziCaA==} + engines: {node: '>=0.1.14'} dev: true /unbox-primitive/1.0.2: @@ -9179,7 +9188,7 @@ packages: dependencies: '@types/react': 18.0.20 react: 18.2.0 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /use-sidecar/1.1.2_w5j4k42lgipnm43s3brx6h3c34: @@ -9195,7 +9204,7 @@ packages: '@types/react': 18.0.20 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /use-sync-external-store/1.2.0: @@ -9253,6 +9262,11 @@ packages: defaults: 1.0.4 dev: true + /web-streams-polyfill/3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: false + /webidl-conversions/3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false @@ -9261,6 +9275,11 @@ packages: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} dev: true + /webidl-conversions/6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + dev: true + /webpack-sources/1.4.3: resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} dependencies: @@ -9297,6 +9316,15 @@ packages: webidl-conversions: 4.0.2 dev: true + /whatwg-url/8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + dev: true + /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -9329,6 +9357,7 @@ packages: /which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 dev: true @@ -9356,10 +9385,10 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@apideck/better-ajv-errors': 0.3.6_ajv@8.11.2 - '@babel/core': 7.20.5 - '@babel/preset-env': 7.20.2_@babel+core@7.20.5 - '@babel/runtime': 7.19.0 - '@rollup/plugin-babel': 5.3.1_opjstonlpkhafnz76jsxdwq25a + '@babel/core': 7.20.7 + '@babel/preset-env': 7.20.2_@babel+core@7.20.7 + '@babel/runtime': 7.20.7 + '@rollup/plugin-babel': 5.3.1_quedi3p7womesqmjrcxptomfpa '@rollup/plugin-node-resolve': 11.2.1_rollup@2.79.1 '@rollup/plugin-replace': 2.4.2_rollup@2.79.1 '@surma/rollup-plugin-off-main-thread': 2.2.3 @@ -9667,7 +9696,7 @@ packages: /yjs/13.5.44: resolution: {integrity: sha512-UL+abIh2lQonqXfaJ+en7z9eGshpY11j1zNLc2kDYs0vrTjee4gZJUXC3ZsuhP6geQt0IRU04epCGRaVPQAVCA==} dependencies: - lib0: 0.2.52 + lib0: 0.2.58 dev: false /yocto-queue/0.1.0: diff --git a/tests/libs/load-page.ts b/tests/libs/load-page.ts index 002341de65..a93b54fd36 100644 --- a/tests/libs/load-page.ts +++ b/tests/libs/load-page.ts @@ -1,7 +1,11 @@ import { test } from '@playwright/test'; +import type { Page } from '@playwright/test'; +interface IType { + page: Page; +} export function loadPage() { - test.beforeEach(async ({ page }) => { + test.beforeEach(async ({ page }: IType) => { await page.goto('http://localhost:8080'); // waiting for page loading end // await page.waitForTimeout(1000); diff --git a/tests/libs/page-logic.ts b/tests/libs/page-logic.ts index bd4ae625a5..09385a4cb0 100644 --- a/tests/libs/page-logic.ts +++ b/tests/libs/page-logic.ts @@ -1,8 +1,10 @@ -export async function newPage(page) { +import type { Page } from '@playwright/test'; + +export async function newPage(page: Page) { return page.getByTestId('sliderBar').getByText('New Page').click(); } -export async function clickPageMoreActions(page) { +export async function clickPageMoreActions(page: Page) { return page .getByTestId('editor-header-items') .getByRole('button') diff --git a/tests/login.spec.ts b/tests/login.spec.ts index b519bffa21..39cda40b09 100644 --- a/tests/login.spec.ts +++ b/tests/login.spec.ts @@ -24,21 +24,22 @@ test.describe('Login Flow', () => { .click(); }); - test('Open google firebase page', async ({ page }) => { - await page.getByTestId('current-workspace').click(); - await page.waitForTimeout(800); - // why don't we use waitForSelector, It seems that waitForSelector not stable? - await page.getByTestId('open-login-modal').click(); - await page.waitForTimeout(800); - const [firebasePage] = await Promise.all([ - page.waitForEvent('popup'), - page - .getByRole('button', { - name: 'Google Continue with Google Set up an AFFiNE account to sync data', - }) - .click(), - ]); + // not stable + // test.skip('Open google firebase page', async ({ page }) => { + // await page.getByTestId('current-workspace').click(); + // await page.waitForTimeout(800); + // // why don't we use waitForSelector, It seems that waitForSelector not stable? + // await page.getByTestId('open-login-modal').click(); + // await page.waitForTimeout(800); + // const [firebasePage] = await Promise.all([ + // page.waitForEvent('popup'), + // page + // .getByRole('button', { + // name: 'Google Continue with Google Set up an AFFiNE account to sync data', + // }) + // .click(), + // ]); - expect(firebasePage.url()).toContain('.firebaseapp.com/__/auth/handler'); - }); + // expect(firebasePage.url()).toContain('.firebaseapp.com/__/auth/handler'); + // }); }); diff --git a/tests/quick-search.spec.ts b/tests/quick-search.spec.ts index 8fdd515889..242e09bc51 100644 --- a/tests/quick-search.spec.ts +++ b/tests/quick-search.spec.ts @@ -1,38 +1,26 @@ import { test, expect, type Page } from '@playwright/test'; import { loadPage } from './libs/load-page'; import { withCtrlOrMeta } from './libs/keyboard'; - +import { newPage } from './libs/page-logic'; loadPage(); const openQuickSearchByShortcut = async (page: Page) => await withCtrlOrMeta(page, () => page.keyboard.press('k', { delay: 50 })); -async function assertTitleTexts( - page: Page, - texts: string[], - option?: { delay: number } -) { - await page.mouse.move(100, 100); +async function assertTitleTexts(page: Page, texts: string[]) { const actual = await page - .locator('[class=affine-default-page-block-title]') - .allInnerTexts(); - await page.waitForTimeout(option?.delay || 0); - + .locator('.affine-default-page-block-title') + .allTextContents(); expect(actual).toEqual(texts); } -async function assertResultList( - page: Page, - texts: string[], - option?: { delay: number } -) { - await page.mouse.move(100, 100); +async function assertResultList(page: Page, texts: string[]) { const actual = await page.locator('[cmdk-item]').allInnerTexts(); - await page.waitForTimeout(option?.delay || 0); expect(actual).toEqual(texts); } test.describe('Open quick search', () => { test('Click slider bar button', async ({ page }) => { + await newPage(page); const quickSearchButton = page.locator( '[data-testid=sliderBar-quickSearchButton]' ); @@ -42,7 +30,7 @@ test.describe('Open quick search', () => { }); test('Click arrowDown icon after title', async ({ page }) => { - //header-quickSearchButton + await newPage(page); const quickSearchButton = page.locator( '[data-testid=header-quickSearchButton]' ); @@ -51,58 +39,48 @@ test.describe('Open quick search', () => { await expect(quickSearch).toBeVisible(); }); - // test('Press the shortcut key cmd+k', async ({ page }) => { - // // why 1000ms page wait? - // page.waitForTimeout(1000); - // await openQuickSearchByShortcut(page); - // const quickSearch = page.locator('[data-testid=quickSearch]'); - - // await expect(quickSearch).toBeVisible(); - // }); + test('Press the shortcut key cmd+k', async ({ page }) => { + await newPage(page); + await openQuickSearchByShortcut(page); + const quickSearch = page.locator('[data-testid=quickSearch]'); + await expect(quickSearch).toBeVisible(); + }); }); test.describe('Add new page in quick search', () => { // FIXME: not working - test.skip('Create a new page without keyword', async ({ page }) => { + test('Create a new page without keyword', async ({ page }) => { + await newPage(page); await openQuickSearchByShortcut(page); const addNewPage = page.locator('[data-testid=quickSearch-addNewPage]'); await addNewPage.click(); - await assertTitleTexts(page, [''], { delay: 50 }); + await page.waitForTimeout(200); + await assertTitleTexts(page, ['']); }); - test.skip('Create a new page with keyword', async ({ page }) => { + test('Create a new page with keyword', async ({ page }) => { + await newPage(page); await openQuickSearchByShortcut(page); - await page.keyboard.insertText('test'); + await page.keyboard.insertText('test123456'); const addNewPage = page.locator('[data-testid=quickSearch-addNewPage]'); await addNewPage.click(); - await assertTitleTexts(page, ['test'], { delay: 50 }); + await page.waitForTimeout(200); + await assertTitleTexts(page, ['test123456']); }); }); test.describe('Search and select', () => { - // test('Search and get results', async ({ page }) => { - // // why 1000ms page wait? - // await openQuickSearchByShortcut(page); - // await page.keyboard.insertText('Welcome'); - // await assertResultList(page, ['Welcome to the AFFiNE Alpha'], { - // delay: 50, - // }); - // }); - //TODO FIXME: This test is not working - test.skip('Create a new page and search this page', async ({ page }) => { + test('Create a new page and search this page', async ({ page }) => { + await newPage(page); await openQuickSearchByShortcut(page); - await page.keyboard.insertText('Welcome'); + await page.keyboard.insertText('test123456'); const addNewPage = page.locator('[data-testid=quickSearch-addNewPage]'); await addNewPage.click(); - await page.waitForTimeout(500); + await page.waitForTimeout(200); await openQuickSearchByShortcut(page); - await page.keyboard.insertText('Welcome'); - await assertResultList(page, ['Welcome to the AFFiNE Alpha', 'Welcome']); - - await page.keyboard.press('ArrowDown', { delay: 50 }); + await page.keyboard.insertText('test123456'); + await assertResultList(page, ['test123456']); await page.keyboard.press('Enter', { delay: 50 }); - await assertTitleTexts(page, ['Welcome'], { - delay: 50, - }); + await assertTitleTexts(page, ['test123456']); }); });