diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000000..ea887a3d50
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,3 @@
+node_modules
+dist
+.next
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000000..a7ec440e36
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,64 @@
+module.exports = {
+ root: true,
+ settings: {
+ react: {
+ version: '18',
+ },
+ next: {
+ rootDir: 'apps/web',
+ },
+ },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:react/recommended',
+ 'plugin:@typescript-eslint/recommended',
+ ],
+ parser: '@typescript-eslint/parser',
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: false,
+ impliedStrict: true,
+ jsx: true,
+ },
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ },
+ plugins: [
+ 'react',
+ '@typescript-eslint',
+ 'simple-import-sort',
+ 'import',
+ 'unused-imports',
+ ],
+ rules: {
+ 'no-undef': 'off',
+ 'no-empty': 'off',
+ 'no-func-assign': 'off',
+ 'no-cond-assign': 'off',
+ 'react/react-in-jsx-scope': 'off',
+ '@typescript-eslint/no-non-null-assertion': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/no-empty-function': 'off',
+ '@typescript-eslint/no-unused-vars': 'off',
+ 'simple-import-sort/imports': 'error',
+ 'simple-import-sort/exports': 'error',
+ '@typescript-eslint/ban-ts-comment': 0,
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist'],
+ message: "Don't import from dist",
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src'],
+ message: "Don't import from src",
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+};
diff --git a/apps/desktop/package.json b/apps/desktop/package.json
index 48b853bf24..084b70fed8 100644
--- a/apps/desktop/package.json
+++ b/apps/desktop/package.json
@@ -36,31 +36,9 @@
"@types/node": "^18.11.17",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.9",
- "@typescript-eslint/eslint-plugin": "5.47.0",
- "@typescript-eslint/parser": "5.47.0",
"concurrently": "^7.6.0",
"cross-env": "^7.0.3",
"esbuild": "^0.16.10",
- "eslint": "8.30.0",
- "eslint-config-prettier": "8.5.0",
- "eslint-config-standard": "^17.0.0",
- "eslint-config-standard-with-typescript": "24.0.0",
- "eslint-import-resolver-alias": "1.1.2",
- "eslint-import-resolver-typescript": "3.5.2",
- "eslint-plugin-autofix": "1.1.0",
- "eslint-plugin-html": "7.1.0",
- "eslint-plugin-import": "^2.26.0",
- "eslint-plugin-n": "^15.6.0",
- "eslint-plugin-node": "11.1.0",
- "eslint-plugin-prettier": "4.2.1",
- "eslint-plugin-promise": "^6.1.1",
- "eslint-plugin-react": "7.31.11",
- "eslint-plugin-react-hooks": "4.6.0",
- "eslint-plugin-security": "1.5.0",
- "eslint-plugin-security-node": "1.1.1",
- "eslint-plugin-typescript-sort-keys": "2.1.0",
- "eslint-plugin-unicorn": "45.0.2",
- "eslint-plugin-unused-imports": "2.0.0",
"prettier": "2.8.1",
"rimraf": "^3.0.2",
"typescript": "^4.9.4",
diff --git a/apps/desktop/src/preload/components/enable-workspace-modal/index.tsx b/apps/desktop/src/preload/components/enable-workspace-modal/index.tsx
index 0d91467e71..422290db49 100644
--- a/apps/desktop/src/preload/components/enable-workspace-modal/index.tsx
+++ b/apps/desktop/src/preload/components/enable-workspace-modal/index.tsx
@@ -1,12 +1,14 @@
import { Modal, ModalWrapper } from '@affine/component';
import { IconButton } from '@affine/component';
-import { useTranslation } from '@affine/i18n';
-import { useCallback, useState } from 'react';
-import router from 'next/router';
import { toast } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
import { CloseIcon } from '@blocksuite/icons';
+import router from 'next/router';
+import { useCallback, useState } from 'react';
+
import { useGlobalState } from '@/store/app';
-import { Header, Content, ContentTitle, StyleTips, StyleButton } from './style';
+
+import { Content, ContentTitle, Header, StyleButton, StyleTips } from './style';
interface EnableWorkspaceModalProps {
open: boolean;
diff --git a/apps/desktop/src/preload/components/icons/index.tsx b/apps/desktop/src/preload/components/icons/index.tsx
index 0829454b99..681d03616b 100644
--- a/apps/desktop/src/preload/components/icons/index.tsx
+++ b/apps/desktop/src/preload/components/icons/index.tsx
@@ -1,8 +1,8 @@
import {
- JoinedWorkspaceIcon as DefaultJoinedWorkspaceIcon,
- LocalWorkspaceIcon as DefaultLocalWorkspaceIcon,
CloudWorkspaceIcon as DefaultCloudWorkspaceIcon,
+ JoinedWorkspaceIcon as DefaultJoinedWorkspaceIcon,
LocalDataIcon as DefaultLocalDataIcon,
+ LocalWorkspaceIcon as DefaultLocalWorkspaceIcon,
PublishIcon as DefaultPublishIcon,
} from '@blocksuite/icons';
diff --git a/apps/web/.eslintrc b/apps/web/.eslintrc
new file mode 100644
index 0000000000..e2081ec106
--- /dev/null
+++ b/apps/web/.eslintrc
@@ -0,0 +1,4 @@
+{
+ "root": false,
+ "extends": "next/core-web-vitals"
+}
diff --git a/apps/web/package.json b/apps/web/package.json
index 25361042a8..b4915a8c4e 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -47,10 +47,7 @@
"@types/react-dom": "18.0.6",
"@types/wicg-file-system-access": "^2020.9.5",
"chalk": "^4.1.2",
- "eslint": "8.22.0",
"eslint-config-next": "12.3.1",
- "eslint-config-prettier": "^8.5.0",
- "eslint-plugin-prettier": "^4.2.1",
"raw-loader": "^4.0.2",
"typescript": "^4.9.5"
},
diff --git a/apps/web/scripts/__tests__/printer.spec.ts b/apps/web/scripts/__tests__/printer.spec.ts
index c3f1d27fcc..4a7716d4c5 100644
--- a/apps/web/scripts/__tests__/printer.spec.ts
+++ b/apps/web/scripts/__tests__/printer.spec.ts
@@ -1,5 +1,7 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
+
import { printer } from './../printer';
+// eslint-disable-next-line @typescript-eslint/no-var-requires
const chalk = require('chalk');
test.describe('printer', () => {
test('test debug', () => {
diff --git a/apps/web/scripts/gitInfo.js b/apps/web/scripts/gitInfo.js
index 9e650ed49d..becc95e59e 100644
--- a/apps/web/scripts/gitInfo.js
+++ b/apps/web/scripts/gitInfo.js
@@ -1,6 +1,7 @@
// @ts-check
// import { execSync } from 'child_process'
+// eslint-disable-next-line @typescript-eslint/no-var-requires
const { execSync } = require('child_process');
const hasGit = () => {
diff --git a/apps/web/scripts/printer.js b/apps/web/scripts/printer.js
index 8853819ed5..ea86acc91e 100644
--- a/apps/web/scripts/printer.js
+++ b/apps/web/scripts/printer.js
@@ -1,3 +1,4 @@
+// eslint-disable-next-line @typescript-eslint/no-var-requires
const chalk = require('chalk');
const printer = {
debug: msg => {
diff --git a/apps/web/src/components/404/index.tsx b/apps/web/src/components/404/index.tsx
index 55b04dbe70..270c7ed781 100644
--- a/apps/web/src/components/404/index.tsx
+++ b/apps/web/src/components/404/index.tsx
@@ -1,7 +1,8 @@
-import { NotFoundTitle, PageContainer } from './styles';
-import { useTranslation } from '@affine/i18n';
import { Button } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
import { useRouter } from 'next/router';
+
+import { NotFoundTitle, PageContainer } from './styles';
export const NotfoundPage = () => {
const { t } = useTranslation();
const router = useRouter();
diff --git a/apps/web/src/components/contact-modal/index.tsx b/apps/web/src/components/contact-modal/index.tsx
index fdade2b7a8..759df8a212 100644
--- a/apps/web/src/components/contact-modal/index.tsx
+++ b/apps/web/src/components/contact-modal/index.tsx
@@ -1,29 +1,31 @@
import { Modal, ModalCloseButton, ModalWrapper } from '@affine/component';
-import {
- LogoIcon,
- DocIcon,
- TwitterIcon,
- GithubIcon,
- DiscordIcon,
- TelegramIcon,
- RedditIcon,
- LinkIcon,
-} from './Icons';
+import { useTranslation } from '@affine/i18n';
+
+import bg from '@/components/contact-modal/bg.png';
+
import logo from './affine-text-logo.png';
+import {
+ DiscordIcon,
+ DocIcon,
+ GithubIcon,
+ LinkIcon,
+ LogoIcon,
+ RedditIcon,
+ TelegramIcon,
+ TwitterIcon,
+} from './Icons';
import {
StyledBigLink,
- StyledSmallLink,
- StyledSubTitle,
- StyledLeftContainer,
- StyledRightContainer,
StyledContent,
+ StyledLeftContainer,
StyledLogo,
+ StyledModalFooter,
StyledModalHeader,
StyledModalHeaderLeft,
- StyledModalFooter,
+ StyledRightContainer,
+ StyledSmallLink,
+ StyledSubTitle,
} from './style';
-import bg from '@/components/contact-modal/bg.png';
-import { useTranslation } from '@affine/i18n';
const linkList = [
{
icon: ,
diff --git a/apps/web/src/components/create-workspace/index.tsx b/apps/web/src/components/create-workspace/index.tsx
index e937d48110..e20ef4954e 100644
--- a/apps/web/src/components/create-workspace/index.tsx
+++ b/apps/web/src/components/create-workspace/index.tsx
@@ -1,13 +1,14 @@
import { styled } from '@affine/component';
-import { Modal, ModalWrapper, ModalCloseButton } from '@affine/component';
+import { Modal, ModalCloseButton, ModalWrapper } from '@affine/component';
import { Button } from '@affine/component';
-import { useRef, useState } from 'react';
import { Input } from '@affine/component';
-import { KeyboardEvent } from 'react';
-import { useTranslation } from '@affine/i18n';
-import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
-import { useRouter } from 'next/router';
import { toast } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
+import { useRouter } from 'next/router';
+import { useRef, useState } from 'react';
+import { KeyboardEvent } from 'react';
+
+import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
interface ModalProps {
open: boolean;
diff --git a/apps/web/src/components/delete-workspace/index.tsx b/apps/web/src/components/delete-workspace/index.tsx
index 51418532af..586354913d 100644
--- a/apps/web/src/components/delete-workspace/index.tsx
+++ b/apps/web/src/components/delete-workspace/index.tsx
@@ -1,5 +1,5 @@
import { styled } from '@affine/component';
-import { Modal, ModalWrapper, ModalCloseButton } from '@affine/component';
+import { Modal, ModalCloseButton, ModalWrapper } from '@affine/component';
import { Button } from '@affine/component';
import { Input } from '@affine/component';
import { useState } from 'react';
diff --git a/apps/web/src/components/edgeless-toolbar/index.tsx b/apps/web/src/components/edgeless-toolbar/index.tsx
index 07db5646a5..3c1b7fca8b 100644
--- a/apps/web/src/components/edgeless-toolbar/index.tsx
+++ b/apps/web/src/components/edgeless-toolbar/index.tsx
@@ -1,26 +1,28 @@
-import { useState, useEffect } from 'react';
-import {
- StyledEdgelessToolbar,
- StyledToolbarWrapper,
- StyledToolbarItem,
-} from './style';
-import {
- SelectIcon,
- TextIcon,
- ShapeIcon,
- PenIcon,
- StickerIcon,
- ConnectorIcon,
- UndoIcon,
- RedoIcon,
-} from './Icons';
import { MuiSlide } from '@affine/component';
import { Tooltip } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
+import { useEffect, useState } from 'react';
+
import useCurrentPageMeta from '@/hooks/use-current-page-meta';
import useHistoryUpdated from '@/hooks/use-history-update';
-import { useTranslation } from '@affine/i18n';
import { useGlobalState } from '@/store/app';
+import {
+ ConnectorIcon,
+ PenIcon,
+ RedoIcon,
+ SelectIcon,
+ ShapeIcon,
+ StickerIcon,
+ TextIcon,
+ UndoIcon,
+} from './Icons';
+import {
+ StyledEdgelessToolbar,
+ StyledToolbarItem,
+ StyledToolbarWrapper,
+} from './style';
+
const useToolbarList1 = () => {
const { t } = useTranslation();
return [
diff --git a/apps/web/src/components/edgeless-toolbar/style.ts b/apps/web/src/components/edgeless-toolbar/style.ts
index 31d2fbbddf..920ded54ff 100644
--- a/apps/web/src/components/edgeless-toolbar/style.ts
+++ b/apps/web/src/components/edgeless-toolbar/style.ts
@@ -1,4 +1,4 @@
-import { styled, displayFlex } from '@affine/component';
+import { displayFlex, styled } from '@affine/component';
export const StyledEdgelessToolbar = styled.div(({ theme }) => ({
height: '320px',
diff --git a/apps/web/src/components/editor-mode-switch/index.tsx b/apps/web/src/components/editor-mode-switch/index.tsx
index 5fe4217c3e..4a2c1751fa 100644
--- a/apps/web/src/components/editor-mode-switch/index.tsx
+++ b/apps/web/src/components/editor-mode-switch/index.tsx
@@ -1,21 +1,23 @@
-import React, { useState, useEffect, cloneElement } from 'react';
-import {
- StyledAnimateRadioContainer,
- StyledMiddleLine,
- StyledRadioItem,
- StyledLabel,
- StyledIcon,
-} from './style';
-import type {
- RadioItemStatus,
- AnimateRadioProps,
- AnimateRadioItemProps,
-} from './type';
-import { useTheme } from '@/providers/ThemeProvider';
-import { EdgelessIcon, PaperIcon } from './Icons';
+import { useTranslation } from '@affine/i18n';
+import React, { cloneElement, useEffect, useState } from 'react';
+
import useCurrentPageMeta from '@/hooks/use-current-page-meta';
import { usePageHelper } from '@/hooks/use-page-helper';
-import { useTranslation } from '@affine/i18n';
+import { useTheme } from '@/providers/ThemeProvider';
+
+import { EdgelessIcon, PaperIcon } from './Icons';
+import {
+ StyledAnimateRadioContainer,
+ StyledIcon,
+ StyledLabel,
+ StyledMiddleLine,
+ StyledRadioItem,
+} from './style';
+import type {
+ AnimateRadioItemProps,
+ AnimateRadioProps,
+ RadioItemStatus,
+} from './type';
const PaperItem = ({ active }: { active?: boolean }) => {
const {
theme: {
diff --git a/apps/web/src/components/editor-mode-switch/style.ts b/apps/web/src/components/editor-mode-switch/style.ts
index bb9a7d5df0..300c44fe1f 100644
--- a/apps/web/src/components/editor-mode-switch/style.ts
+++ b/apps/web/src/components/editor-mode-switch/style.ts
@@ -2,6 +2,7 @@ import { displayFlex, keyframes, styled } from '@affine/component';
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
import spring, { toString } from 'css-spring';
+
import type { ItemStatus } from './type';
const ANIMATE_DURATION = 500;
diff --git a/apps/web/src/components/editor/index.tsx b/apps/web/src/components/editor/index.tsx
index e794fde04f..b190324294 100644
--- a/apps/web/src/components/editor/index.tsx
+++ b/apps/web/src/components/editor/index.tsx
@@ -1,8 +1,9 @@
-import { useEffect, useRef } from 'react';
-import type { Page, Workspace } from '@blocksuite/store';
import '@blocksuite/blocks';
-import { EditorContainer } from '@blocksuite/editor';
+
import { styled } from '@affine/component';
+import { EditorContainer } from '@blocksuite/editor';
+import type { Page, Workspace } from '@blocksuite/store';
+import { useEffect, useRef } from 'react';
const StyledEditorContainer = styled('div')(() => {
return {
diff --git a/apps/web/src/components/enable-workspace-modal/index.tsx b/apps/web/src/components/enable-workspace-modal/index.tsx
index 12a6367d43..7d9c696ae1 100644
--- a/apps/web/src/components/enable-workspace-modal/index.tsx
+++ b/apps/web/src/components/enable-workspace-modal/index.tsx
@@ -3,9 +3,11 @@ import { useTranslation } from '@affine/i18n';
import { CloseIcon } from '@blocksuite/icons';
import { useRouter } from 'next/router';
import { useCallback, useState } from 'react';
-import { Content, ContentTitle, Header, StyleButton, StyleTips } from './style';
+
import { useGlobalState } from '@/store/app';
+import { Content, ContentTitle, Header, StyleButton, StyleTips } from './style';
+
interface EnableWorkspaceModalProps {
open: boolean;
onClose: () => void;
diff --git a/apps/web/src/components/file-upload/index.tsx b/apps/web/src/components/file-upload/index.tsx
index 35db5abc6b..d79c9faa81 100644
--- a/apps/web/src/components/file-upload/index.tsx
+++ b/apps/web/src/components/file-upload/index.tsx
@@ -1,7 +1,7 @@
import { Button } from '@affine/component';
-import { FC, useRef, ChangeEvent, ReactElement } from 'react';
import { styled } from '@affine/component';
import { useTranslation } from '@affine/i18n';
+import { ChangeEvent, FC, ReactElement, useRef } from 'react';
interface Props {
uploadType?: string;
children?: ReactElement;
diff --git a/apps/web/src/components/header/EditorHeader.tsx b/apps/web/src/components/header/EditorHeader.tsx
index 902f08ba3f..9134132795 100644
--- a/apps/web/src/components/header/EditorHeader.tsx
+++ b/apps/web/src/components/header/EditorHeader.tsx
@@ -1,17 +1,19 @@
+import { Content } from '@affine/component';
import React, { useEffect, useState } from 'react';
+
+import EditorModeSwitch from '@/components/editor-mode-switch';
+import useCurrentPageMeta from '@/hooks/use-current-page-meta';
+import usePropsUpdated from '@/hooks/use-props-updated';
+import { useGlobalState } from '@/store/app';
+
+import Header from './Header';
+import QuickSearchButton from './QuickSearchButton';
import {
StyledSearchArrowWrapper,
StyledSwitchWrapper,
StyledTitle,
StyledTitleWrapper,
} from './styles';
-import { Content } from '@affine/component';
-import EditorModeSwitch from '@/components/editor-mode-switch';
-import QuickSearchButton from './QuickSearchButton';
-import Header from './Header';
-import usePropsUpdated from '@/hooks/use-props-updated';
-import useCurrentPageMeta from '@/hooks/use-current-page-meta';
-import { useGlobalState } from '@/store/app';
export const EditorHeader = () => {
const [title, setTitle] = useState('');
diff --git a/apps/web/src/components/header/Header.tsx b/apps/web/src/components/header/Header.tsx
index 4f4f86afc7..1190d937ab 100644
--- a/apps/web/src/components/header/Header.tsx
+++ b/apps/web/src/components/header/Header.tsx
@@ -1,17 +1,18 @@
+import { CloseIcon } from '@blocksuite/icons';
import React, { PropsWithChildren, ReactNode, useState } from 'react';
+
+import EditorOptionMenu from './header-right-items/EditorOptionMenu';
+import SyncUser from './header-right-items/SyncUser';
+import ThemeModeSwitch from './header-right-items/theme-mode-switch';
+import TrashButtonGroup from './header-right-items/TrashButtonGroup';
import {
- StyledHeader,
- StyledHeaderRightSide,
- StyledHeaderContainer,
StyledBrowserWarning,
StyledCloseButton,
+ StyledHeader,
+ StyledHeaderContainer,
+ StyledHeaderRightSide,
} from './styles';
-import { CloseIcon } from '@blocksuite/icons';
-import { useWarningMessage, shouldShowWarning } from './utils';
-import EditorOptionMenu from './header-right-items/EditorOptionMenu';
-import TrashButtonGroup from './header-right-items/TrashButtonGroup';
-import ThemeModeSwitch from './header-right-items/theme-mode-switch';
-import SyncUser from './header-right-items/SyncUser';
+import { shouldShowWarning, useWarningMessage } from './utils';
const BrowserWarning = ({
show,
diff --git a/apps/web/src/components/header/PageListHeader.tsx b/apps/web/src/components/header/PageListHeader.tsx
index 976c86b50d..c863c01ca3 100644
--- a/apps/web/src/components/header/PageListHeader.tsx
+++ b/apps/web/src/components/header/PageListHeader.tsx
@@ -1,4 +1,5 @@
import { PropsWithChildren, ReactNode } from 'react';
+
import Header from './Header';
import QuickSearchButton from './QuickSearchButton';
import { StyledPageListTittleWrapper } from './styles';
diff --git a/apps/web/src/components/header/QuickSearchButton.tsx b/apps/web/src/components/header/QuickSearchButton.tsx
index d32be2c03f..122ff6666e 100644
--- a/apps/web/src/components/header/QuickSearchButton.tsx
+++ b/apps/web/src/components/header/QuickSearchButton.tsx
@@ -1,8 +1,9 @@
-import React from 'react';
import { IconButton, IconButtonProps } from '@affine/component';
-import { ArrowDownIcon } from '@blocksuite/icons';
-import { useModal } from '@/store/globalModal';
import { styled } from '@affine/component';
+import { ArrowDownIcon } from '@blocksuite/icons';
+import React from 'react';
+
+import { useModal } from '@/store/globalModal';
const StyledIconButtonWithAnimate = styled(IconButton)(({ theme }) => {
return {
diff --git a/apps/web/src/components/header/header-right-items/EditorOptionMenu.tsx b/apps/web/src/components/header/header-right-items/EditorOptionMenu.tsx
index 4c31252373..87d23eecfa 100644
--- a/apps/web/src/components/header/header-right-items/EditorOptionMenu.tsx
+++ b/apps/web/src/components/header/header-right-items/EditorOptionMenu.tsx
@@ -1,5 +1,7 @@
import { Menu, MenuItem } from '@affine/component';
import { IconButton } from '@affine/component';
+import { toast } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
import {
EdgelessIcon,
ExportIcon,
@@ -11,11 +13,10 @@ import {
PaperIcon,
TrashIcon,
} from '@blocksuite/icons';
+
+import useCurrentPageMeta from '@/hooks/use-current-page-meta';
import { usePageHelper } from '@/hooks/use-page-helper';
import { useConfirm } from '@/providers/ConfirmProvider';
-import useCurrentPageMeta from '@/hooks/use-current-page-meta';
-import { toast } from '@affine/component';
-import { useTranslation } from '@affine/i18n';
import { useGlobalState } from '@/store/app';
const PopoverContent = () => {
const editor = useGlobalState(store => store.editor);
diff --git a/apps/web/src/components/header/header-right-items/SyncUser.tsx b/apps/web/src/components/header/header-right-items/SyncUser.tsx
index f9798cda0f..0302349f85 100644
--- a/apps/web/src/components/header/header-right-items/SyncUser.tsx
+++ b/apps/web/src/components/header/header-right-items/SyncUser.tsx
@@ -1,10 +1,11 @@
-import { LocalWorkspaceIcon, CloudWorkspaceIcon } from '@blocksuite/icons';
-import { displayFlex, styled, Tooltip, IconButton } from '@affine/component';
-import { useTranslation } from '@affine/i18n';
-import { useModal } from '@/store/globalModal';
-import { useCallback, useEffect, useState } from 'react';
+import { displayFlex, IconButton, styled, Tooltip } from '@affine/component';
import { WorkspaceUnit } from '@affine/datacenter';
+import { useTranslation } from '@affine/i18n';
+import { CloudWorkspaceIcon, LocalWorkspaceIcon } from '@blocksuite/icons';
+import { useCallback, useEffect, useState } from 'react';
+
import { useGlobalState } from '@/store/app';
+import { useModal } from '@/store/globalModal';
const NoNetWorkIcon = () => {
return (
diff --git a/apps/web/src/components/header/header-right-items/TrashButtonGroup.tsx b/apps/web/src/components/header/header-right-items/TrashButtonGroup.tsx
index b511434319..05eb00287a 100644
--- a/apps/web/src/components/header/header-right-items/TrashButtonGroup.tsx
+++ b/apps/web/src/components/header/header-right-items/TrashButtonGroup.tsx
@@ -1,11 +1,12 @@
import { Button } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
+import { useRouter } from 'next/router';
+import { useCallback } from 'react';
+
+import useCurrentPageMeta from '@/hooks/use-current-page-meta';
import { usePageHelper } from '@/hooks/use-page-helper';
import { useConfirm } from '@/providers/ConfirmProvider';
-import { useRouter } from 'next/router';
-import useCurrentPageMeta from '@/hooks/use-current-page-meta';
-import { useTranslation } from '@affine/i18n';
import { useGlobalState } from '@/store/app';
-import { useCallback } from 'react';
export const TrashButtonGroup = () => {
const { permanentlyDeletePage } = usePageHelper();
diff --git a/apps/web/src/components/header/header-right-items/theme-mode-switch/Icons.tsx b/apps/web/src/components/header/header-right-items/theme-mode-switch/Icons.tsx
index 43d9688d08..a1b5e1bc8e 100644
--- a/apps/web/src/components/header/header-right-items/theme-mode-switch/Icons.tsx
+++ b/apps/web/src/components/header/header-right-items/theme-mode-switch/Icons.tsx
@@ -1,4 +1,4 @@
-import type { DOMAttributes, CSSProperties } from 'react';
+import type { CSSProperties, DOMAttributes } from 'react';
type IconProps = {
style?: CSSProperties;
} & DOMAttributes;
diff --git a/apps/web/src/components/header/header-right-items/theme-mode-switch/index.tsx b/apps/web/src/components/header/header-right-items/theme-mode-switch/index.tsx
index 64d13ea3c7..d2a197a808 100644
--- a/apps/web/src/components/header/header-right-items/theme-mode-switch/index.tsx
+++ b/apps/web/src/components/header/header-right-items/theme-mode-switch/index.tsx
@@ -1,7 +1,9 @@
import { useState } from 'react';
+
import { useTheme } from '@/providers/ThemeProvider';
+
import { MoonIcon, SunIcon } from './Icons';
-import { StyledThemeModeSwitch, StyledSwitchItem } from './style';
+import { StyledSwitchItem, StyledThemeModeSwitch } from './style';
export const ThemeModeSwitch = () => {
const { mode, changeMode } = useTheme();
const [isHover, setIsHover] = useState(false);
diff --git a/apps/web/src/components/header/header-right-items/theme-mode-switch/style.ts b/apps/web/src/components/header/header-right-items/theme-mode-switch/style.ts
index aa93f9ce24..0677921750 100644
--- a/apps/web/src/components/header/header-right-items/theme-mode-switch/style.ts
+++ b/apps/web/src/components/header/header-right-items/theme-mode-switch/style.ts
@@ -1,8 +1,8 @@
import { displayFlex, keyframes, styled } from '@affine/component';
-import { CSSProperties } from 'react';
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
import spring, { toString } from 'css-spring';
+import { CSSProperties } from 'react';
const ANIMATE_DURATION = 400;
diff --git a/apps/web/src/components/header/index.tsx b/apps/web/src/components/header/index.tsx
index 8af7382af6..ceb0e0d347 100644
--- a/apps/web/src/components/header/index.tsx
+++ b/apps/web/src/components/header/index.tsx
@@ -1,3 +1,3 @@
-export * from './Header';
export * from './EditorHeader';
+export * from './Header';
export * from './PageListHeader';
diff --git a/apps/web/src/components/header/utils.tsx b/apps/web/src/components/header/utils.tsx
index 1bf0fc88f6..ebb54c3958 100644
--- a/apps/web/src/components/header/utils.tsx
+++ b/apps/web/src/components/header/utils.tsx
@@ -1,5 +1,6 @@
-import getIsMobile from '@/utils/get-is-mobile';
import { Trans, useTranslation } from '@affine/i18n';
+
+import getIsMobile from '@/utils/get-is-mobile';
// Inspire by https://stackoverflow.com/a/4900484/8415727
const getChromeVersion = () => {
const raw = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
diff --git a/apps/web/src/components/help-island/index.tsx b/apps/web/src/components/help-island/index.tsx
index b4eaac3d73..6b497577a1 100644
--- a/apps/web/src/components/help-island/index.tsx
+++ b/apps/web/src/components/help-island/index.tsx
@@ -1,18 +1,19 @@
-import { useState, useEffect } from 'react';
+import { Tooltip } from '@affine/component';
+import { MuiFade } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
+import { CloseIcon } from '@blocksuite/icons';
+import { useEffect, useState } from 'react';
+
+import { useGlobalState } from '@/store/app';
+import { useModal } from '@/store/globalModal';
+
+import { ContactIcon, HelpIcon, KeyboardIcon } from './Icons';
import {
- StyledIsland,
- StyledIconWrapper,
StyledAnimateWrapper,
+ StyledIconWrapper,
+ StyledIsland,
StyledTriggerWrapper,
} from './style';
-import { ContactIcon, HelpIcon, KeyboardIcon } from './Icons';
-import { Tooltip } from '@affine/component';
-
-import { useTranslation } from '@affine/i18n';
-import { useModal } from '@/store/globalModal';
-import { MuiFade } from '@affine/component';
-import { useGlobalState } from '@/store/app';
-import { CloseIcon } from '@blocksuite/icons';
export type IslandItemNames = 'contact' | 'shortcuts';
export const HelpIsland = ({
showList = ['contact', 'shortcuts'],
diff --git a/apps/web/src/components/icons/index.tsx b/apps/web/src/components/icons/index.tsx
index 23b96c54fd..d40da662f6 100644
--- a/apps/web/src/components/icons/index.tsx
+++ b/apps/web/src/components/icons/index.tsx
@@ -1,8 +1,8 @@
import {
- JoinedWorkspaceIcon as DefaultJoinedWorkspaceIcon,
- LocalWorkspaceIcon as DefaultLocalWorkspaceIcon,
CloudWorkspaceIcon as DefaultCloudWorkspaceIcon,
+ JoinedWorkspaceIcon as DefaultJoinedWorkspaceIcon,
LocalDataIcon as DefaultLocalDataIcon,
+ LocalWorkspaceIcon as DefaultLocalWorkspaceIcon,
PublishIcon as DefaultPublishIcon,
} from '@blocksuite/icons';
diff --git a/apps/web/src/components/import/index.tsx b/apps/web/src/components/import/index.tsx
index 15c917bbbf..e77236a2b0 100644
--- a/apps/web/src/components/import/index.tsx
+++ b/apps/web/src/components/import/index.tsx
@@ -1,12 +1,14 @@
-import { Modal, ModalWrapper, ModalCloseButton } from '@affine/component';
-import { StyledButtonWrapper, StyledTitle } from './styles';
+import { Modal, ModalCloseButton, ModalWrapper } from '@affine/component';
import { Button } from '@affine/component';
import { Content, FlexWrapper } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
+import { useCallback, useEffect, useState } from 'react';
+
import Loading from '@/components/loading';
import { usePageHelper } from '@/hooks/use-page-helper';
-import { useCallback, useEffect, useState } from 'react';
-import { useTranslation } from '@affine/i18n';
import { useGlobalState } from '@/store/app';
+
+import { StyledButtonWrapper, StyledTitle } from './styles';
// import { Tooltip } from '@affine/component';
type ImportModalProps = {
open: boolean;
diff --git a/apps/web/src/components/loading/Loading.tsx b/apps/web/src/components/loading/Loading.tsx
index 76ea2a25b6..099d50beb1 100644
--- a/apps/web/src/components/loading/Loading.tsx
+++ b/apps/web/src/components/loading/Loading.tsx
@@ -1,7 +1,7 @@
import {
- StyledLoadingWrapper,
StyledLoading,
StyledLoadingItem,
+ StyledLoadingWrapper,
} from './styled';
export const Loading = ({ size = 40 }: { size?: number }) => {
diff --git a/apps/web/src/components/loading/PageLoading.tsx b/apps/web/src/components/loading/PageLoading.tsx
index 92e60d7f4b..d01c9ba71c 100644
--- a/apps/web/src/components/loading/PageLoading.tsx
+++ b/apps/web/src/components/loading/PageLoading.tsx
@@ -1,7 +1,8 @@
import { styled } from '@affine/component';
-import Loading from './Loading';
import { useTranslation } from '@affine/i18n';
+import Loading from './Loading';
+
// Used for the full page loading
const StyledLoadingContainer = styled('div')(() => {
return {
diff --git a/apps/web/src/components/login-modal/index.tsx b/apps/web/src/components/login-modal/index.tsx
index 3e4d081363..0fbfd7b11b 100644
--- a/apps/web/src/components/login-modal/index.tsx
+++ b/apps/web/src/components/login-modal/index.tsx
@@ -1,9 +1,11 @@
import { positionAbsolute, styled } from '@affine/component';
-import { Modal, ModalWrapper, ModalCloseButton } from '@affine/component';
+import { Modal, ModalCloseButton, ModalWrapper } from '@affine/component';
import { Button } from '@affine/component';
import { useTranslation } from '@affine/i18n';
-import { GoogleIcon } from './GoogleIcon';
+
import { useGlobalState } from '@/store/app';
+
+import { GoogleIcon } from './GoogleIcon';
interface LoginModalProps {
open: boolean;
onClose: () => void;
diff --git a/apps/web/src/components/logout-modal/index.tsx b/apps/web/src/components/logout-modal/index.tsx
index df694fca58..4028df3c1a 100644
--- a/apps/web/src/components/logout-modal/index.tsx
+++ b/apps/web/src/components/logout-modal/index.tsx
@@ -1,10 +1,12 @@
import { styled } from '@affine/component';
-import { Modal, ModalWrapper, ModalCloseButton } from '@affine/component';
+import { Modal, ModalCloseButton, ModalWrapper } from '@affine/component';
import { Button } from '@affine/component';
-import { Check, UnCheck } from './icon';
-import { useState } from 'react';
import { useTranslation } from '@affine/i18n';
+import { useState } from 'react';
+
import { useAppState } from '@/providers/app-state-provider';
+
+import { Check, UnCheck } from './icon';
interface LoginModalProps {
open: boolean;
onClose: (wait: boolean) => void;
diff --git a/apps/web/src/components/mobile-modal/index.tsx b/apps/web/src/components/mobile-modal/index.tsx
index 3f7b0d976f..9a7a83277d 100644
--- a/apps/web/src/components/mobile-modal/index.tsx
+++ b/apps/web/src/components/mobile-modal/index.tsx
@@ -1,9 +1,11 @@
-import React, { useState } from 'react';
import { Modal, ModalCloseButton, ModalWrapper } from '@affine/component';
-import getIsMobile from '@/utils/get-is-mobile';
-import { StyledButton, StyledContent, StyledTitle } from './styles';
-import bg from './bg.png';
import { useTranslation } from '@affine/i18n';
+import React, { useState } from 'react';
+
+import getIsMobile from '@/utils/get-is-mobile';
+
+import bg from './bg.png';
+import { StyledButton, StyledContent, StyledTitle } from './styles';
export const MobileModal = () => {
const [showModal, setShowModal] = useState(getIsMobile());
const { t } = useTranslation();
diff --git a/apps/web/src/components/page-list/DateCell.tsx b/apps/web/src/components/page-list/DateCell.tsx
index d014049869..acd184286d 100644
--- a/apps/web/src/components/page-list/DateCell.tsx
+++ b/apps/web/src/components/page-list/DateCell.tsx
@@ -1,9 +1,10 @@
-import localizedFormat from 'dayjs/plugin/localizedFormat';
-import dayjs from 'dayjs';
-import { PageMeta } from '@/providers/app-state-provider';
import { TableCell } from '@affine/component';
+import dayjs from 'dayjs';
+import localizedFormat from 'dayjs/plugin/localizedFormat';
import React from 'react';
+import { PageMeta } from '@/providers/app-state-provider';
+
dayjs.extend(localizedFormat);
export const DateCell = ({
diff --git a/apps/web/src/components/page-list/Empty.tsx b/apps/web/src/components/page-list/Empty.tsx
index 5252e2bbc0..2cea453901 100644
--- a/apps/web/src/components/page-list/Empty.tsx
+++ b/apps/web/src/components/page-list/Empty.tsx
@@ -1,6 +1,6 @@
-import React from 'react';
import { Empty } from '@affine/component';
import { useTranslation } from '@affine/i18n';
+import React from 'react';
export const PageListEmpty = (props: { listType?: string }) => {
const { listType } = props;
const { t } = useTranslation();
diff --git a/apps/web/src/components/page-list/OperationCell.tsx b/apps/web/src/components/page-list/OperationCell.tsx
index 9b62b684e0..b70fec319e 100644
--- a/apps/web/src/components/page-list/OperationCell.tsx
+++ b/apps/web/src/components/page-list/OperationCell.tsx
@@ -1,25 +1,25 @@
-import { useConfirm } from '@/providers/ConfirmProvider';
-import { PageMeta } from '@/providers/app-state-provider';
import {
+ FlexWrapper,
+ IconButton,
Menu,
MenuItem,
Tooltip,
- FlexWrapper,
- IconButton,
} from '@affine/component';
-
+import { toast } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
import {
- MoreVerticalIcon,
- RestoreIcon,
- FavouritesIcon,
- FavouritedIcon,
- OpenInNewIcon,
DeleteForeverIcon,
+ FavouritedIcon,
+ FavouritesIcon,
+ MoreVerticalIcon,
+ OpenInNewIcon,
+ RestoreIcon,
TrashIcon,
} from '@blocksuite/icons';
-import { toast } from '@affine/component';
+
import { usePageHelper } from '@/hooks/use-page-helper';
-import { useTranslation } from '@affine/i18n';
+import { PageMeta } from '@/providers/app-state-provider';
+import { useConfirm } from '@/providers/ConfirmProvider';
export const OperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => {
const { id, favorite } = pageMeta;
diff --git a/apps/web/src/components/page-list/index.tsx b/apps/web/src/components/page-list/index.tsx
index ad6a9369c5..bcaeecaa05 100644
--- a/apps/web/src/components/page-list/index.tsx
+++ b/apps/web/src/components/page-list/index.tsx
@@ -1,16 +1,3 @@
-import { PageMeta } from '@/providers/app-state-provider';
-import {
- FavouritedIcon,
- FavouritesIcon,
- PaperIcon,
- EdgelessIcon,
-} from '@blocksuite/icons';
-import {
- StyledTableContainer,
- StyledTableRow,
- StyledTitleLink,
- StyledTitleWrapper,
-} from './styles';
import {
Table,
TableBody,
@@ -18,19 +5,34 @@ import {
TableHead,
TableRow,
} from '@affine/component';
-import { OperationCell, TrashOperationCell } from './OperationCell';
-import Empty from './Empty';
import { Content } from '@affine/component';
-import React, { useCallback } from 'react';
-import DateCell from '@/components/page-list/DateCell';
import { IconButton } from '@affine/component';
import { Tooltip } from '@affine/component';
-import { useRouter } from 'next/router';
import { toast } from '@affine/component';
-import { usePageHelper } from '@/hooks/use-page-helper';
-import { useTheme } from '@/providers/ThemeProvider';
import { useTranslation } from '@affine/i18n';
+import {
+ EdgelessIcon,
+ FavouritedIcon,
+ FavouritesIcon,
+ PaperIcon,
+} from '@blocksuite/icons';
+import { useRouter } from 'next/router';
+import React, { useCallback } from 'react';
+
+import DateCell from '@/components/page-list/DateCell';
+import { usePageHelper } from '@/hooks/use-page-helper';
+import { PageMeta } from '@/providers/app-state-provider';
+import { useTheme } from '@/providers/ThemeProvider';
import { useGlobalState } from '@/store/app';
+
+import Empty from './Empty';
+import { OperationCell, TrashOperationCell } from './OperationCell';
+import {
+ StyledTableContainer,
+ StyledTableRow,
+ StyledTitleLink,
+ StyledTitleWrapper,
+} from './styles';
const FavoriteTag = ({
pageMeta: { favorite, id },
}: {
diff --git a/apps/web/src/components/quick-search/Footer.tsx b/apps/web/src/components/quick-search/Footer.tsx
index f67f70891d..832e77d224 100644
--- a/apps/web/src/components/quick-search/Footer.tsx
+++ b/apps/web/src/components/quick-search/Footer.tsx
@@ -1,9 +1,11 @@
-import React from 'react';
-import { PlusIcon } from '@blocksuite/icons';
-import { StyledModalFooterContent } from './style';
-import { Command } from 'cmdk';
-import { usePageHelper } from '@/hooks/use-page-helper';
import { useTranslation } from '@affine/i18n';
+import { PlusIcon } from '@blocksuite/icons';
+import { Command } from 'cmdk';
+import React from 'react';
+
+import { usePageHelper } from '@/hooks/use-page-helper';
+
+import { StyledModalFooterContent } from './style';
export const Footer = (props: { query: string; onClose: () => void }) => {
const { openPage, createPage } = usePageHelper();
const { t } = useTranslation();
diff --git a/apps/web/src/components/quick-search/Input.tsx b/apps/web/src/components/quick-search/Input.tsx
index 0ac61c54c2..45e2627d40 100644
--- a/apps/web/src/components/quick-search/Input.tsx
+++ b/apps/web/src/components/quick-search/Input.tsx
@@ -1,3 +1,6 @@
+import { useTranslation } from '@affine/i18n';
+import { SearchIcon } from '@blocksuite/icons';
+import { Command } from 'cmdk';
import React, {
Dispatch,
SetStateAction,
@@ -5,10 +8,8 @@ import React, {
useRef,
useState,
} from 'react';
-import { SearchIcon } from '@blocksuite/icons';
+
import { StyledInputContent, StyledLabel } from './style';
-import { Command } from 'cmdk';
-import { useTranslation } from '@affine/i18n';
export const Input = (props: {
open: boolean;
query: string;
diff --git a/apps/web/src/components/quick-search/PublishedResults.tsx b/apps/web/src/components/quick-search/PublishedResults.tsx
index 89193d09b0..7f2bd6ff01 100644
--- a/apps/web/src/components/quick-search/PublishedResults.tsx
+++ b/apps/web/src/components/quick-search/PublishedResults.tsx
@@ -1,15 +1,17 @@
-import { Command } from 'cmdk';
-import { StyledListItem, StyledNotFound } from './style';
-import { PaperIcon, EdgelessIcon } from '@blocksuite/icons';
-import { Dispatch, SetStateAction, useEffect, useState } from 'react';
-import { PageMeta } from '@/providers/app-state-provider';
-import { useRouter } from 'next/router';
-import { NoResultSVG } from './NoResultSVG';
import { useTranslation } from '@affine/i18n';
-import usePageHelper from '@/hooks/use-page-helper';
+import { EdgelessIcon, PaperIcon } from '@blocksuite/icons';
import { Workspace } from '@blocksuite/store';
+import { Command } from 'cmdk';
+import { useRouter } from 'next/router';
+import { Dispatch, SetStateAction, useEffect, useState } from 'react';
+
+import usePageHelper from '@/hooks/use-page-helper';
+import { PageMeta } from '@/providers/app-state-provider';
import { useGlobalState } from '@/store/app';
+import { NoResultSVG } from './NoResultSVG';
+import { StyledListItem, StyledNotFound } from './style';
+
export const PublishedResults = (props: {
query: string;
loading: boolean;
diff --git a/apps/web/src/components/quick-search/Results.tsx b/apps/web/src/components/quick-search/Results.tsx
index 1f698c9b3e..b02580e550 100644
--- a/apps/web/src/components/quick-search/Results.tsx
+++ b/apps/web/src/components/quick-search/Results.tsx
@@ -1,6 +1,7 @@
+import { useTranslation } from '@affine/i18n';
+import { EdgelessIcon, PaperIcon } from '@blocksuite/icons';
import { Command } from 'cmdk';
-import { StyledListItem, StyledNotFound } from './style';
-import { PaperIcon, EdgelessIcon } from '@blocksuite/icons';
+import { useRouter } from 'next/router';
import {
Dispatch,
SetStateAction,
@@ -8,12 +9,13 @@ import {
useEffect,
useState,
} from 'react';
-import { useRouter } from 'next/router';
-import { useSwitchToConfig } from './config';
-import { NoResultSVG } from './NoResultSVG';
-import { useTranslation } from '@affine/i18n';
+
import usePageHelper from '@/hooks/use-page-helper';
import { useGlobalState } from '@/store/app';
+
+import { useSwitchToConfig } from './config';
+import { NoResultSVG } from './NoResultSVG';
+import { StyledListItem, StyledNotFound } from './style';
export const Results = (props: {
query: string;
loading: boolean;
diff --git a/apps/web/src/components/quick-search/config.ts b/apps/web/src/components/quick-search/config.ts
index a171ea32e1..1053d7802e 100644
--- a/apps/web/src/components/quick-search/config.ts
+++ b/apps/web/src/components/quick-search/config.ts
@@ -1,11 +1,11 @@
-import { FC, SVGProps } from 'react';
+import { useTranslation } from '@affine/i18n';
import {
AllPagesIcon,
FavouritesIcon,
- TrashIcon,
SettingsIcon,
+ TrashIcon,
} from '@blocksuite/icons';
-import { useTranslation } from '@affine/i18n';
+import { FC, SVGProps } from 'react';
export const useSwitchToConfig = (
currentWorkspaceId?: string
diff --git a/apps/web/src/components/quick-search/index.tsx b/apps/web/src/components/quick-search/index.tsx
index 5df443c0a1..35f76f516e 100644
--- a/apps/web/src/components/quick-search/index.tsx
+++ b/apps/web/src/components/quick-search/index.tsx
@@ -1,20 +1,22 @@
import { Modal, ModalWrapper } from '@affine/component';
-import {
- StyledContent,
- StyledModalHeader,
- StyledModalFooter,
- StyledModalDivider,
- StyledShortcut,
-} from './style';
-import { Input } from './Input';
-import { Results } from './Results';
-import { Footer } from './Footer';
import { Command } from 'cmdk';
+import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
+
import { useModal } from '@/store/globalModal';
import { getUaHelper } from '@/utils';
-import { useRouter } from 'next/router';
+
+import { Footer } from './Footer';
+import { Input } from './Input';
import { PublishedResults } from './PublishedResults';
+import { Results } from './Results';
+import {
+ StyledContent,
+ StyledModalDivider,
+ StyledModalFooter,
+ StyledModalHeader,
+ StyledShortcut,
+} from './style';
type TransitionsModalProps = {
open: boolean;
onClose: () => void;
diff --git a/apps/web/src/components/shortcuts-modal/index.tsx b/apps/web/src/components/shortcuts-modal/index.tsx
index ce436c98af..8a0d18d472 100644
--- a/apps/web/src/components/shortcuts-modal/index.tsx
+++ b/apps/web/src/components/shortcuts-modal/index.tsx
@@ -1,4 +1,19 @@
+import {
+ ModalCloseButton,
+ MuiClickAwayListener,
+ MuiSlide,
+} from '@affine/component';
+import { useTranslation } from '@affine/i18n';
import { createPortal } from 'react-dom';
+
+import {
+ useMacKeyboardShortcuts,
+ useMacMarkdownShortcuts,
+ useWindowsKeyboardShortcuts,
+ useWinMarkdownShortcuts,
+} from '@/components/shortcuts-modal/config';
+import { getUaHelper } from '@/utils';
+
import { KeyboardIcon } from './Icons';
import {
StyledListItem,
@@ -7,19 +22,6 @@ import {
StyledSubTitle,
StyledTitle,
} from './style';
-import {
- useMacKeyboardShortcuts,
- useMacMarkdownShortcuts,
- useWindowsKeyboardShortcuts,
- useWinMarkdownShortcuts,
-} from '@/components/shortcuts-modal/config';
-import {
- MuiSlide,
- MuiClickAwayListener,
- ModalCloseButton,
-} from '@affine/component';
-import { getUaHelper } from '@/utils';
-import { useTranslation } from '@affine/i18n';
type ModalProps = {
open: boolean;
onClose: () => void;
diff --git a/apps/web/src/components/simple-counter/index.ts b/apps/web/src/components/simple-counter/index.ts
index 3f63324fa2..89cf2e0567 100644
--- a/apps/web/src/components/simple-counter/index.ts
+++ b/apps/web/src/components/simple-counter/index.ts
@@ -1,4 +1,4 @@
-import { LitElement, css, html } from 'lit';
+import { css, html, LitElement } from 'lit';
import { customElement, property, state } from 'lit/decorators.js';
import * as React from 'react';
diff --git a/apps/web/src/components/workspace-avatar/WorkspaceUnitAvatar.tsx b/apps/web/src/components/workspace-avatar/WorkspaceUnitAvatar.tsx
index 0fa8e7fbd7..91586606e7 100644
--- a/apps/web/src/components/workspace-avatar/WorkspaceUnitAvatar.tsx
+++ b/apps/web/src/components/workspace-avatar/WorkspaceUnitAvatar.tsx
@@ -1,5 +1,6 @@
-import { useState, useEffect } from 'react';
import type { WorkspaceUnit } from '@affine/datacenter';
+import { useEffect, useState } from 'react';
+
import { WorkspaceAvatar as Avatar } from './Avatar';
const useAvatar = (workspaceUnit: WorkspaceUnit | null) => {
diff --git a/apps/web/src/components/workspace-layout/index.tsx b/apps/web/src/components/workspace-layout/index.tsx
index 027c088917..839113afbb 100644
--- a/apps/web/src/components/workspace-layout/index.tsx
+++ b/apps/web/src/components/workspace-layout/index.tsx
@@ -1,10 +1,12 @@
+import { useRouter } from 'next/router';
+import { PropsWithChildren } from 'react';
+
import HelpIsland from '@/components/help-island';
import { WorkSpaceSliderBar } from '@/components/workspace-slider-bar';
-import { useRouter } from 'next/router';
-import { StyledPage, StyledToolWrapper, StyledWrapper } from './styles';
-import { PropsWithChildren } from 'react';
import useEnsureWorkspace from '@/hooks/use-ensure-workspace';
+
import { PageLoading } from '../loading';
+import { StyledPage, StyledToolWrapper, StyledWrapper } from './styles';
export const WorkspaceDefender = ({ children }: PropsWithChildren) => {
const { workspaceLoaded } = useEnsureWorkspace();
diff --git a/apps/web/src/components/workspace-modal/Footer.tsx b/apps/web/src/components/workspace-modal/Footer.tsx
index 49b88f41ef..0ca43e83ad 100644
--- a/apps/web/src/components/workspace-modal/Footer.tsx
+++ b/apps/web/src/components/workspace-modal/Footer.tsx
@@ -1,11 +1,13 @@
-import { CloudWorkspaceIcon, SignOutIcon } from '@blocksuite/icons';
import { FlexWrapper } from '@affine/component';
-import { WorkspaceAvatar } from '@/components/workspace-avatar';
import { IconButton } from '@affine/component';
-import { StyledFooter, StyleUserInfo, StyledSignInButton } from './styles';
-import { useTranslation } from '@affine/i18n';
import { Tooltip } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
+import { CloudWorkspaceIcon, SignOutIcon } from '@blocksuite/icons';
+
+import { WorkspaceAvatar } from '@/components/workspace-avatar';
import { useGlobalState } from '@/store/app';
+
+import { StyledFooter, StyledSignInButton, StyleUserInfo } from './styles';
export const Footer = ({
onLogin,
onLogout,
diff --git a/apps/web/src/components/workspace-modal/SelectLanguageMenu.tsx b/apps/web/src/components/workspace-modal/SelectLanguageMenu.tsx
index 3197c47583..888bf9ea0b 100644
--- a/apps/web/src/components/workspace-modal/SelectLanguageMenu.tsx
+++ b/apps/web/src/components/workspace-modal/SelectLanguageMenu.tsx
@@ -1,9 +1,9 @@
-import { LOCALES } from '@affine/i18n';
import { styled } from '@affine/component';
-import { useTranslation } from '@affine/i18n';
-import { ArrowDownIcon } from '@blocksuite/icons';
import { Button } from '@affine/component';
import { Menu, MenuItem } from '@affine/component';
+import { LOCALES } from '@affine/i18n';
+import { useTranslation } from '@affine/i18n';
+import { ArrowDownIcon } from '@blocksuite/icons';
const LanguageMenuContent = () => {
const { i18n } = useTranslation();
diff --git a/apps/web/src/components/workspace-modal/WorkspaceCard.tsx b/apps/web/src/components/workspace-modal/WorkspaceCard.tsx
index 2e292fc86a..6de4352e30 100644
--- a/apps/web/src/components/workspace-modal/WorkspaceCard.tsx
+++ b/apps/web/src/components/workspace-modal/WorkspaceCard.tsx
@@ -1,16 +1,18 @@
-import { WorkspaceUnitAvatar } from '@/components/workspace-avatar';
+import { WorkspaceUnit } from '@affine/datacenter';
+import { useTranslation } from '@affine/i18n';
+import { useCallback } from 'react';
+
import {
- JoinedWorkspaceIcon,
- LocalWorkspaceIcon,
CloudWorkspaceIcon,
+ JoinedWorkspaceIcon,
LocalDataIcon,
+ LocalWorkspaceIcon,
PublishIcon,
} from '@/components/icons';
-import { WorkspaceUnit } from '@affine/datacenter';
-import { StyleWorkspaceInfo, StyleWorkspaceTitle, StyledCard } from './styles';
-import { useTranslation } from '@affine/i18n';
+import { WorkspaceUnitAvatar } from '@/components/workspace-avatar';
import { useGlobalState } from '@/store/app';
-import { useCallback } from 'react';
+
+import { StyledCard, StyleWorkspaceInfo, StyleWorkspaceTitle } from './styles';
const WorkspaceType = ({ workspaceData }: { workspaceData: WorkspaceUnit }) => {
const user = useGlobalState(store => store.user);
diff --git a/apps/web/src/components/workspace-modal/index.tsx b/apps/web/src/components/workspace-modal/index.tsx
index 62723e8f10..d857810ab9 100644
--- a/apps/web/src/components/workspace-modal/index.tsx
+++ b/apps/web/src/components/workspace-modal/index.tsx
@@ -1,33 +1,31 @@
-import { Modal, ModalWrapper, ModalCloseButton } from '@affine/component';
-import { useState } from 'react';
-import { CreateWorkspaceModal } from '../create-workspace';
-
+import { Modal, ModalCloseButton, ModalWrapper } from '@affine/component';
import { Tooltip } from '@affine/component';
-
-import { PlusIcon, HelpIcon } from '@blocksuite/icons';
-
-import { useRouter } from 'next/router';
import { useTranslation } from '@affine/i18n';
-import { LanguageMenu } from './SelectLanguageMenu';
+import { HelpIcon, PlusIcon } from '@blocksuite/icons';
+import { useRouter } from 'next/router';
+import { useState } from 'react';
+import { useGlobalState } from '@/store/app';
+
+import { CreateWorkspaceModal } from '../create-workspace';
import { LoginModal } from '../login-modal';
import { LogoutModal } from '../logout-modal';
+import { Footer } from './Footer';
+import { LanguageMenu } from './SelectLanguageMenu';
import {
StyledCard,
- StyledSplitLine,
- StyleWorkspaceInfo,
- StyleWorkspaceTitle,
- StyledModalHeaderLeft,
- StyledModalTitle,
StyledHelperContainer,
StyledModalContent,
- StyledOperationWrapper,
- StyleWorkspaceAdd,
StyledModalHeader,
+ StyledModalHeaderLeft,
+ StyledModalTitle,
+ StyledOperationWrapper,
+ StyledSplitLine,
+ StyleWorkspaceAdd,
+ StyleWorkspaceInfo,
+ StyleWorkspaceTitle,
} from './styles';
import { WorkspaceCard } from './WorkspaceCard';
-import { Footer } from './Footer';
-import { useGlobalState } from '@/store/app';
interface WorkspaceModalProps {
open: boolean;
onClose: () => void;
diff --git a/apps/web/src/components/workspace-setting/ExportPage.tsx b/apps/web/src/components/workspace-setting/ExportPage.tsx
index 5ae51ed6bc..0df5a9bad8 100644
--- a/apps/web/src/components/workspace-setting/ExportPage.tsx
+++ b/apps/web/src/components/workspace-setting/ExportPage.tsx
@@ -1,7 +1,7 @@
-import { WorkspaceUnit } from '@affine/datacenter';
-import { useTranslation } from '@affine/i18n';
import { Wrapper } from '@affine/component';
import { Button } from '@affine/component';
+import { WorkspaceUnit } from '@affine/datacenter';
+import { useTranslation } from '@affine/i18n';
export const ExportPage = ({ workspace }: { workspace: WorkspaceUnit }) => {
const { t } = useTranslation();
console.log(workspace);
diff --git a/apps/web/src/components/workspace-setting/PublishPage.tsx b/apps/web/src/components/workspace-setting/PublishPage.tsx
index bbe0742c22..88c8975e53 100644
--- a/apps/web/src/components/workspace-setting/PublishPage.tsx
+++ b/apps/web/src/components/workspace-setting/PublishPage.tsx
@@ -1,11 +1,12 @@
-import { useState } from 'react';
import { Button } from '@affine/component';
import { Input } from '@affine/component';
import { toast } from '@affine/component';
+import { Content, FlexWrapper, Wrapper } from '@affine/component';
import { WorkspaceUnit } from '@affine/datacenter';
-import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
import { useTranslation } from '@affine/i18n';
-import { Wrapper, Content, FlexWrapper } from '@affine/component';
+import { useState } from 'react';
+
+import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
import { useModal } from '@/store/globalModal';
export const PublishPage = ({ workspace }: { workspace: WorkspaceUnit }) => {
const shareUrl = window.location.host + '/public-workspace/' + workspace.id;
diff --git a/apps/web/src/components/workspace-setting/SyncPage.tsx b/apps/web/src/components/workspace-setting/SyncPage.tsx
index 2f586d04ed..bb212121ca 100644
--- a/apps/web/src/components/workspace-setting/SyncPage.tsx
+++ b/apps/web/src/components/workspace-setting/SyncPage.tsx
@@ -1,10 +1,12 @@
-import { StyledWorkspaceName } from './style';
+import { Button, Content, FlexWrapper, Wrapper } from '@affine/component';
import { WorkspaceUnit } from '@affine/datacenter';
-import { useTranslation, Trans } from '@affine/i18n';
+import { Trans, useTranslation } from '@affine/i18n';
+
import { WorkspaceUnitAvatar } from '@/components/workspace-avatar';
-import { FlexWrapper, Content, Wrapper, Button } from '@affine/component';
-import { useModal } from '@/store/globalModal';
import { useGlobalState } from '@/store/app';
+import { useModal } from '@/store/globalModal';
+
+import { StyledWorkspaceName } from './style';
// // FIXME: Temporary solution, since the @blocksuite/icons is broken
// const ActiveIcon = () => {
diff --git a/apps/web/src/components/workspace-setting/general/General.tsx b/apps/web/src/components/workspace-setting/general/General.tsx
index ab1557f773..2aea95be3c 100644
--- a/apps/web/src/components/workspace-setting/general/General.tsx
+++ b/apps/web/src/components/workspace-setting/general/General.tsx
@@ -1,30 +1,31 @@
-import {
- StyledInput,
- StyledWorkspaceInfo,
- StyledAvatar,
- StyledEditButton,
-} from './style';
-import { StyledSettingKey, StyledRow } from '../style';
import { FlexWrapper, MuiAvatar } from '@affine/component';
-
-import { useCallback, useState } from 'react';
import { Button } from '@affine/component';
-import { WorkspaceDelete } from './delete';
-import { WorkspaceLeave } from './leave';
+import { MuiFade } from '@affine/component';
+import { WorkspaceUnit } from '@affine/datacenter';
+import { useTranslation } from '@affine/i18n';
+import { EmailIcon } from '@blocksuite/icons';
+import { useCallback, useState } from 'react';
+
+import { Upload } from '@/components/file-upload';
import {
- JoinedWorkspaceIcon,
CloudWorkspaceIcon,
+ JoinedWorkspaceIcon,
LocalWorkspaceIcon,
} from '@/components/icons';
import { WorkspaceUnitAvatar } from '@/components/workspace-avatar';
-import { WorkspaceUnit } from '@affine/datacenter';
import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
-import { useTranslation } from '@affine/i18n';
-import { CameraIcon } from './icons';
-import { Upload } from '@/components/file-upload';
-import { MuiFade } from '@affine/component';
import { useGlobalState } from '@/store/app';
-import { EmailIcon } from '@blocksuite/icons';
+
+import { StyledRow, StyledSettingKey } from '../style';
+import { WorkspaceDelete } from './delete';
+import { CameraIcon } from './icons';
+import { WorkspaceLeave } from './leave';
+import {
+ StyledAvatar,
+ StyledEditButton,
+ StyledInput,
+ StyledWorkspaceInfo,
+} from './style';
export const GeneralPage = ({ workspace }: { workspace: WorkspaceUnit }) => {
const [showDelete, setShowDelete] = useState(false);
const [showLeave, setShowLeave] = useState(false);
diff --git a/apps/web/src/components/workspace-setting/general/delete/Delete.tsx b/apps/web/src/components/workspace-setting/general/delete/Delete.tsx
index 0d4231414f..474bc0309d 100644
--- a/apps/web/src/components/workspace-setting/general/delete/Delete.tsx
+++ b/apps/web/src/components/workspace-setting/general/delete/Delete.tsx
@@ -1,22 +1,23 @@
-import { useRouter } from 'next/router';
import { Modal } from '@affine/component';
import { Input } from '@affine/component';
-import {
- StyledModalHeader,
- StyledTextContent,
- StyledModalWrapper,
- StyledInputContent,
- StyledButtonContent,
- StyledWorkspaceName,
-} from './style';
-import { useState } from 'react';
import { ModalCloseButton } from '@affine/component';
import { Button } from '@affine/component';
-
import { WorkspaceUnit } from '@affine/datacenter';
import { Trans, useTranslation } from '@affine/i18n';
+import { useRouter } from 'next/router';
+import { useState } from 'react';
+
import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
+import {
+ StyledButtonContent,
+ StyledInputContent,
+ StyledModalHeader,
+ StyledModalWrapper,
+ StyledTextContent,
+ StyledWorkspaceName,
+} from './style';
+
interface WorkspaceDeleteProps {
open: boolean;
onClose: () => void;
diff --git a/apps/web/src/components/workspace-setting/general/leave/Leave.tsx b/apps/web/src/components/workspace-setting/general/leave/Leave.tsx
index bd18e21b07..3389fc794c 100644
--- a/apps/web/src/components/workspace-setting/general/leave/Leave.tsx
+++ b/apps/web/src/components/workspace-setting/general/leave/Leave.tsx
@@ -1,14 +1,16 @@
import { Modal } from '@affine/component';
-import {
- StyledModalHeader,
- StyledTextContent,
- StyledModalWrapper,
- StyledButtonContent,
-} from './style';
import { ModalCloseButton } from '@affine/component';
import { Button } from '@affine/component';
import { useTranslation } from '@affine/i18n';
+
import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
+
+import {
+ StyledButtonContent,
+ StyledModalHeader,
+ StyledModalWrapper,
+ StyledTextContent,
+} from './style';
// import { getDataCenter } from '@affine/datacenter';
// import { useAppState } from '@/providers/app-state-provider';
diff --git a/apps/web/src/components/workspace-setting/index.ts b/apps/web/src/components/workspace-setting/index.ts
index 0468074d2f..8c870d1583 100644
--- a/apps/web/src/components/workspace-setting/index.ts
+++ b/apps/web/src/components/workspace-setting/index.ts
@@ -1,5 +1,5 @@
-export * from './general';
export * from './ExportPage';
+export * from './general';
export * from './member';
-export * from './SyncPage';
export * from './PublishPage';
+export * from './SyncPage';
diff --git a/apps/web/src/components/workspace-setting/member/InviteMemberModal.tsx b/apps/web/src/components/workspace-setting/member/InviteMemberModal.tsx
index e7ca8982de..51ebf58668 100644
--- a/apps/web/src/components/workspace-setting/member/InviteMemberModal.tsx
+++ b/apps/web/src/components/workspace-setting/member/InviteMemberModal.tsx
@@ -1,13 +1,14 @@
-import { EmailIcon } from '@blocksuite/icons';
import { styled } from '@affine/component';
-import { Modal, ModalWrapper, ModalCloseButton } from '@affine/component';
+import { Modal, ModalCloseButton, ModalWrapper } from '@affine/component';
import { Button } from '@affine/component';
import { Input } from '@affine/component';
-import { useState } from 'react';
import { MuiAvatar } from '@affine/component';
-import useMembers from '@/hooks/use-members';
import { User } from '@affine/datacenter';
import { useTranslation } from '@affine/i18n';
+import { EmailIcon } from '@blocksuite/icons';
+import { useState } from 'react';
+
+import useMembers from '@/hooks/use-members';
interface LoginModalProps {
open: boolean;
onClose: () => void;
diff --git a/apps/web/src/components/workspace-setting/member/MembersPage.tsx b/apps/web/src/components/workspace-setting/member/MembersPage.tsx
index 740e0cdbf2..27db683dcf 100644
--- a/apps/web/src/components/workspace-setting/member/MembersPage.tsx
+++ b/apps/web/src/components/workspace-setting/member/MembersPage.tsx
@@ -1,6 +1,23 @@
+import { Wrapper } from '@affine/component';
+import { Button, IconButton } from '@affine/component';
+import { Menu, MenuItem } from '@affine/component';
+import { Empty } from '@affine/component';
+import { toast } from '@affine/component';
+import { FlexWrapper } from '@affine/component';
+import { WorkspaceUnit } from '@affine/datacenter';
+import { useTranslation } from '@affine/i18n';
+import { EmailIcon, MoreVerticalIcon, TrashIcon } from '@blocksuite/icons';
+import { useState } from 'react';
+
+import Loading from '@/components/loading';
+import useMembers from '@/hooks/use-members';
+import { useModal } from '@/store/globalModal';
+
+import { InviteMemberModal } from './InviteMemberModal';
import {
StyledMemberAvatar,
StyledMemberButtonContainer,
+ StyledMemberContainer,
StyledMemberEmail,
StyledMemberInfo,
StyledMemberListContainer,
@@ -10,22 +27,7 @@ import {
StyledMemberRoleContainer,
StyledMemberTitleContainer,
StyledMoreVerticalButton,
- StyledMemberContainer,
} from './style';
-import { Wrapper } from '@affine/component';
-import { MoreVerticalIcon, EmailIcon, TrashIcon } from '@blocksuite/icons';
-import { useState } from 'react';
-import { Button, IconButton } from '@affine/component';
-import { InviteMemberModal } from './InviteMemberModal';
-import { Menu, MenuItem } from '@affine/component';
-import { Empty } from '@affine/component';
-import { WorkspaceUnit } from '@affine/datacenter';
-import { toast } from '@affine/component';
-import useMembers from '@/hooks/use-members';
-import Loading from '@/components/loading';
-import { FlexWrapper } from '@affine/component';
-import { useTranslation } from '@affine/i18n';
-import { useModal } from '@/store/globalModal';
export const MembersPage = ({ workspace }: { workspace: WorkspaceUnit }) => {
const [isInviteModalShow, setIsInviteModalShow] = useState(false);
diff --git a/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/ListItem.tsx b/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/ListItem.tsx
index 48c7c7ac45..822370c7b0 100644
--- a/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/ListItem.tsx
+++ b/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/ListItem.tsx
@@ -1,6 +1,7 @@
-import type { ReactNode } from 'react';
import { styled } from '@affine/component';
-import { WorkspaceItemWrapper, WorkspaceItemContent } from './styles';
+import type { ReactNode } from 'react';
+
+import { WorkspaceItemContent, WorkspaceItemWrapper } from './styles';
interface ListItemProps {
name: string;
diff --git a/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/LoginItem.tsx b/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/LoginItem.tsx
index a000de38f6..428a296ed4 100644
--- a/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/LoginItem.tsx
+++ b/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/LoginItem.tsx
@@ -1,9 +1,11 @@
-import { useModal } from '@/store/globalModal';
import { styled } from '@affine/component';
+
+import { useModal } from '@/store/globalModal';
+
import { AffineIcon } from '../../icons/Icons';
import {
- WorkspaceItemAvatar,
LoginItemWrapper,
+ WorkspaceItemAvatar,
WorkspaceItemContent,
} from './styles';
diff --git a/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceSelector.tsx b/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceSelector.tsx
index 4d28d13e7a..adf69ea871 100644
--- a/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceSelector.tsx
+++ b/apps/web/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceSelector.tsx
@@ -1,9 +1,11 @@
-import { WorkspaceName, SelectorWrapper } from './styles';
import { useCallback, useState } from 'react';
-import { WorkspaceModal } from '@/components/workspace-modal';
+
import { WorkspaceUnitAvatar } from '@/components/workspace-avatar';
+import { WorkspaceModal } from '@/components/workspace-modal';
import { useGlobalState } from '@/store/app';
+import { SelectorWrapper, WorkspaceName } from './styles';
+
export const WorkspaceSelector = () => {
const [workspaceListShow, setWorkspaceListShow] = useState(false);
const currentWorkspace = useGlobalState(
diff --git a/apps/web/src/components/workspace-slider-bar/index.tsx b/apps/web/src/components/workspace-slider-bar/index.tsx
index 2add732b8b..dc2ab0417e 100644
--- a/apps/web/src/components/workspace-slider-bar/index.tsx
+++ b/apps/web/src/components/workspace-slider-bar/index.tsx
@@ -1,5 +1,26 @@
-import React, { useCallback, useState } from 'react';
+import { MuiCollapse } from '@affine/component';
+import { Tooltip } from '@affine/component';
+import { IconButton } from '@affine/component';
+import { useTranslation } from '@affine/i18n';
+import {
+ AllPagesIcon,
+ ArrowDownIcon,
+ FavouritesIcon,
+ PlusIcon,
+ SearchIcon,
+ SettingsIcon,
+ TrashIcon,
+} from '@blocksuite/icons';
+import Link from 'next/link';
import { useRouter } from 'next/router';
+import React, { useCallback, useState } from 'react';
+
+import useLocalStorage from '@/hooks/use-local-storage';
+import { usePageHelper } from '@/hooks/use-page-helper';
+import { useGlobalState } from '@/store/app';
+import { useModal } from '@/store/globalModal';
+
+import { Arrow } from './icons';
import {
StyledArrowButton,
StyledLink,
@@ -9,26 +30,7 @@ import {
StyledSliderBarWrapper,
StyledSubListItem,
} from './style';
-import { Arrow } from './icons';
-import {
- ArrowDownIcon,
- SearchIcon,
- AllPagesIcon,
- FavouritesIcon,
- TrashIcon,
- PlusIcon,
- SettingsIcon,
-} from '@blocksuite/icons';
-import Link from 'next/link';
-import { MuiCollapse } from '@affine/component';
-import { Tooltip } from '@affine/component';
-import { useModal } from '@/store/globalModal';
-import { IconButton } from '@affine/component';
-import useLocalStorage from '@/hooks/use-local-storage';
-import { usePageHelper } from '@/hooks/use-page-helper';
-import { useTranslation } from '@affine/i18n';
import { WorkspaceSelector } from './WorkspaceSelector/WorkspaceSelector';
-import { useGlobalState } from '@/store/app';
const FavoriteList = ({ showList }: { showList: boolean }) => {
const { openPage } = usePageHelper();
diff --git a/apps/web/src/hooks/use-change-page-meta.ts b/apps/web/src/hooks/use-change-page-meta.ts
index 482b646562..8ec2a8782f 100644
--- a/apps/web/src/hooks/use-change-page-meta.ts
+++ b/apps/web/src/hooks/use-change-page-meta.ts
@@ -1,4 +1,5 @@
import { useCallback } from 'react';
+
import { PageMeta } from '@/providers/app-state-provider';
import { useGlobalState } from '@/store/app';
diff --git a/apps/web/src/hooks/use-current-page-meta.ts b/apps/web/src/hooks/use-current-page-meta.ts
index f8eeb71571..6f5102eabd 100644
--- a/apps/web/src/hooks/use-current-page-meta.ts
+++ b/apps/web/src/hooks/use-current-page-meta.ts
@@ -1,4 +1,5 @@
import { useCallback, useEffect, useState } from 'react';
+
import { PageMeta } from '@/providers/app-state-provider';
import { useGlobalState } from '@/store/app';
diff --git a/apps/web/src/hooks/use-ensure-workspace.ts b/apps/web/src/hooks/use-ensure-workspace.ts
index b112f18143..ab31a7dab9 100644
--- a/apps/web/src/hooks/use-ensure-workspace.ts
+++ b/apps/web/src/hooks/use-ensure-workspace.ts
@@ -1,7 +1,8 @@
+import { assertEquals } from '@blocksuite/global/utils';
import { useRouter } from 'next/router';
import { useCallback, useEffect, useState } from 'react';
+
import { useGlobalState } from '@/store/app';
-import { assertEquals } from '@blocksuite/global/utils';
// todo: refactor with suspense mode
// It is a fully effective hook
diff --git a/apps/web/src/hooks/use-history-update.ts b/apps/web/src/hooks/use-history-update.ts
index d133ab0189..fe0c716db6 100644
--- a/apps/web/src/hooks/use-history-update.ts
+++ b/apps/web/src/hooks/use-history-update.ts
@@ -1,5 +1,6 @@
import { Page } from '@blocksuite/store';
import { useEffect, useRef } from 'react';
+
import { useGlobalState } from '@/store/app';
export type EventCallBack = (callback: (props: T) => void) => void;
diff --git a/apps/web/src/hooks/use-members.ts b/apps/web/src/hooks/use-members.ts
index 804849917d..7672865d0a 100644
--- a/apps/web/src/hooks/use-members.ts
+++ b/apps/web/src/hooks/use-members.ts
@@ -1,5 +1,6 @@
-import { useCallback, useEffect, useState } from 'react';
import { Member } from '@affine/datacenter';
+import { useCallback, useEffect, useState } from 'react';
+
import { useGlobalState } from '@/store/app';
export const useMembers = () => {
const dataCenter = useGlobalState(store => store.dataCenter);
diff --git a/apps/web/src/hooks/use-page-helper.ts b/apps/web/src/hooks/use-page-helper.ts
index dc92c7e198..be269623cb 100644
--- a/apps/web/src/hooks/use-page-helper.ts
+++ b/apps/web/src/hooks/use-page-helper.ts
@@ -1,13 +1,15 @@
-import { uuidv4, Workspace } from '@blocksuite/store';
-import { QueryContent } from '@blocksuite/store/dist/workspace/search';
-import { PageMeta } from '@/providers/app-state-provider';
-import { EditorContainer } from '@blocksuite/editor';
-import { useChangePageMeta } from '@/hooks/use-change-page-meta';
-import { useRouter } from 'next/router';
import { WorkspaceUnit } from '@affine/datacenter';
-import { useGlobalState } from '@/store/app';
+import { EditorContainer } from '@blocksuite/editor';
+import { uuidv4, Workspace } from '@blocksuite/store';
+// eslint-disable-next-line @typescript-eslint/no-restricted-imports
+import type { QueryContent } from '@blocksuite/store/dist/workspace/search';
+import { useRouter } from 'next/router';
import { useCallback } from 'react';
+import { useChangePageMeta } from '@/hooks/use-change-page-meta';
+import { PageMeta } from '@/providers/app-state-provider';
+import { useGlobalState } from '@/store/app';
+
export type EditorHandlers = {
createPage: (params?: {
pageId?: string;
diff --git a/apps/web/src/hooks/use-props-updated.ts b/apps/web/src/hooks/use-props-updated.ts
index 98178cc090..452bca7c9c 100644
--- a/apps/web/src/hooks/use-props-updated.ts
+++ b/apps/web/src/hooks/use-props-updated.ts
@@ -1,5 +1,6 @@
-import { useEffect, useRef } from 'react';
import { EditorContainer } from '@blocksuite/editor';
+import { useEffect, useRef } from 'react';
+
import { useGlobalState } from '@/store/app';
export type EventCallBack = (callback: (props: T) => void) => void;
diff --git a/apps/web/src/hooks/use-workspace-helper.ts b/apps/web/src/hooks/use-workspace-helper.ts
index 79c5fffb0f..9b05656406 100644
--- a/apps/web/src/hooks/use-workspace-helper.ts
+++ b/apps/web/src/hooks/use-workspace-helper.ts
@@ -1,7 +1,8 @@
import { WorkspaceUnit } from '@affine/datacenter';
-import { useGlobalState } from '@/store/app';
import { useCallback } from 'react';
+import { useGlobalState } from '@/store/app';
+
export const useWorkspaceHelper = () => {
const dataCenter = useGlobalState(store => store.dataCenter);
const currentWorkspace = useGlobalState(
diff --git a/apps/web/src/pages/404.tsx b/apps/web/src/pages/404.tsx
index 6baddddeaa..a5dd52c8c1 100644
--- a/apps/web/src/pages/404.tsx
+++ b/apps/web/src/pages/404.tsx
@@ -1,6 +1,7 @@
-import NotfoundPage from '@/components/404';
import Head from 'next/head';
+import NotfoundPage from '@/components/404';
+
export default function Custom404() {
return (
<>
diff --git a/apps/web/src/pages/_app.tsx b/apps/web/src/pages/_app.tsx
index 0d9eee6c2b..9db2ced001 100644
--- a/apps/web/src/pages/_app.tsx
+++ b/apps/web/src/pages/_app.tsx
@@ -1,30 +1,31 @@
-import type { AppProps } from 'next/app';
-import dynamic from 'next/dynamic';
import '../../public/globals.css';
import '../../public/variable.css';
import './temporary.css';
-import { Logger } from '@toeverything/pathfinder-logger';
import '@fontsource/space-mono';
import '@fontsource/poppins';
import '../utils/print-build-info';
-import ProviderComposer from '@/components/provider-composer';
-import type { PropsWithChildren, ReactElement, ReactNode } from 'react';
+import '@affine/i18n';
+
+import { useTranslation } from '@affine/i18n';
+import { Logger } from '@toeverything/pathfinder-logger';
import type { NextPage } from 'next';
+import type { AppProps } from 'next/app';
+import dynamic from 'next/dynamic';
+import Head from 'next/head';
+// import AppStateProvider2 from '@/providers/app-state-provider2/provider';
+import { useRouter } from 'next/router';
+import type { PropsWithChildren, ReactElement, ReactNode } from 'react';
+import { Suspense, useEffect } from 'react';
+import React from 'react';
+
+import { PageLoading } from '@/components/loading';
+import { MessageCenterHandler } from '@/components/message-center-handler';
+import ProviderComposer from '@/components/provider-composer';
import { AppStateProvider } from '@/providers/app-state-provider';
import ConfirmProvider from '@/providers/ConfirmProvider';
-import { ModalProvider } from '@/store/globalModal';
-// import AppStateProvider2 from '@/providers/app-state-provider2/provider';
-
-import { useRouter } from 'next/router';
-import { Suspense, useEffect } from 'react';
-import { PageLoading } from '@/components/loading';
-import Head from 'next/head';
-import '@affine/i18n';
-import { useTranslation } from '@affine/i18n';
-import React from 'react';
import { GlobalAppProvider } from '@/store/app';
import { DataCenterPreloader } from '@/store/app/datacenter';
-import { MessageCenterHandler } from '@/components/message-center-handler';
+import { ModalProvider } from '@/store/globalModal';
const ThemeProvider = dynamic(() => import('@/providers/ThemeProvider'), {
ssr: false,
diff --git a/apps/web/src/pages/_document.tsx b/apps/web/src/pages/_document.tsx
index 7bc23a3892..d274885ee9 100644
--- a/apps/web/src/pages/_document.tsx
+++ b/apps/web/src/pages/_document.tsx
@@ -1,12 +1,11 @@
-import createEmotionServer from '@emotion/server/create-instance';
import { cache } from '@emotion/css';
-
+import createEmotionServer from '@emotion/server/create-instance';
import Document, {
- Html,
+ DocumentContext,
Head,
+ Html,
Main,
NextScript,
- DocumentContext,
} from 'next/document';
import * as React from 'react';
diff --git a/apps/web/src/pages/invite/[invite_code].tsx b/apps/web/src/pages/invite/[invite_code].tsx
index 155f85f714..9719259d14 100644
--- a/apps/web/src/pages/invite/[invite_code].tsx
+++ b/apps/web/src/pages/invite/[invite_code].tsx
@@ -1,9 +1,10 @@
-import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
import { styled } from '@affine/component';
import { Empty } from '@affine/component';
import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
+
import { PageLoading } from '@/components/loading';
+import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
// const User = ({ name, avatar }: { name: string; avatar?: string }) => {
// return (
diff --git a/apps/web/src/pages/public-workspace/[workspaceId]/[pageId].tsx b/apps/web/src/pages/public-workspace/[workspaceId]/[pageId].tsx
index fecdbbf13a..fe78bbabb4 100644
--- a/apps/web/src/pages/public-workspace/[workspaceId]/[pageId].tsx
+++ b/apps/web/src/pages/public-workspace/[workspaceId]/[pageId].tsx
@@ -1,17 +1,19 @@
-import { ReactElement, useEffect, useMemo } from 'react';
-import type { NextPageWithLayout } from '../..//_app';
import { displayFlex, styled } from '@affine/component';
-import dynamic from 'next/dynamic';
-import { useRouter } from 'next/router';
-import { PageLoading } from '@/components/loading';
import { Breadcrumbs } from '@affine/component';
import { IconButton } from '@affine/component';
-import NextLink from 'next/link';
-import { PaperIcon, SearchIcon } from '@blocksuite/icons';
-import { WorkspaceUnitAvatar } from '@/components/workspace-avatar';
-import { useModal } from '@/store/globalModal';
-import { useLoadPublicWorkspace } from '@/hooks/use-load-public-workspace';
import { useTranslation } from '@affine/i18n';
+import { PaperIcon, SearchIcon } from '@blocksuite/icons';
+import dynamic from 'next/dynamic';
+import NextLink from 'next/link';
+import { useRouter } from 'next/router';
+import { ReactElement, useEffect, useMemo } from 'react';
+
+import { PageLoading } from '@/components/loading';
+import { WorkspaceUnitAvatar } from '@/components/workspace-avatar';
+import { useLoadPublicWorkspace } from '@/hooks/use-load-public-workspace';
+import { useModal } from '@/store/globalModal';
+
+import type { NextPageWithLayout } from '../..//_app';
const DynamicBlocksuite = dynamic(() => import('@/components/editor'), {
ssr: false,
diff --git a/apps/web/src/pages/public-workspace/[workspaceId]/index.tsx b/apps/web/src/pages/public-workspace/[workspaceId]/index.tsx
index f0e229adc4..522933714f 100644
--- a/apps/web/src/pages/public-workspace/[workspaceId]/index.tsx
+++ b/apps/web/src/pages/public-workspace/[workspaceId]/index.tsx
@@ -1,19 +1,21 @@
+import { Breadcrumbs } from '@affine/component';
+import { SearchIcon } from '@blocksuite/icons';
+import { useRouter } from 'next/router';
+import { ReactElement, useEffect, useMemo } from 'react';
+
+import { PageLoading } from '@/components/loading';
import { PageList } from '@/components/page-list';
import { WorkspaceUnitAvatar } from '@/components/workspace-avatar';
import { useLoadPublicWorkspace } from '@/hooks/use-load-public-workspace';
import { PageMeta } from '@/providers/app-state-provider';
import { useModal } from '@/store/globalModal';
-import { Breadcrumbs } from '@affine/component';
-import { SearchIcon } from '@blocksuite/icons';
-import { useRouter } from 'next/router';
-import { ReactElement, useMemo, useEffect } from 'react';
+
import {
NavContainer,
PageContainer,
SearchButton,
StyledBreadcrumbs,
} from './[pageId]';
-import { PageLoading } from '@/components/loading';
const All = () => {
const router = useRouter();
diff --git a/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx b/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx
index abd6feb489..ad6a480d63 100644
--- a/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx
+++ b/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx
@@ -1,3 +1,8 @@
+import { useTranslation } from '@affine/i18n';
+import { assertEquals } from '@blocksuite/store';
+import dynamic from 'next/dynamic';
+import Head from 'next/head';
+import { useRouter } from 'next/router';
import {
PropsWithChildren,
ReactElement,
@@ -5,18 +10,15 @@ import {
useEffect,
useState,
} from 'react';
+
import { EditorHeader } from '@/components/header';
import MobileModal from '@/components/mobile-modal';
-import type { NextPageWithLayout } from '../..//_app';
import WorkspaceLayout from '@/components/workspace-layout';
-import { useRouter } from 'next/router';
import { usePageHelper } from '@/hooks/use-page-helper';
-import dynamic from 'next/dynamic';
-import Head from 'next/head';
-import { useTranslation } from '@affine/i18n';
import { useGlobalState, useGlobalStateApi } from '@/store/app';
import exampleMarkdown from '@/templates/Welcome-to-AFFiNE-Alpha-Downhills.md';
-import { assertEquals } from '@blocksuite/store';
+
+import type { NextPageWithLayout } from '../..//_app';
const DynamicBlocksuite = dynamic(() => import('@/components/editor'), {
ssr: false,
diff --git a/apps/web/src/pages/workspace/[workspaceId]/all.tsx b/apps/web/src/pages/workspace/[workspaceId]/all.tsx
index a632edb44f..45f097d107 100644
--- a/apps/web/src/pages/workspace/[workspaceId]/all.tsx
+++ b/apps/web/src/pages/workspace/[workspaceId]/all.tsx
@@ -1,10 +1,11 @@
-import { PageList } from '@/components/page-list';
-import { AllPagesIcon } from '@blocksuite/icons';
-import { PageListHeader } from '@/components/header';
-import { ReactElement, useCallback } from 'react';
-import WorkspaceLayout from '@/components/workspace-layout';
import { useTranslation } from '@affine/i18n';
+import { AllPagesIcon } from '@blocksuite/icons';
import Head from 'next/head';
+import { ReactElement, useCallback } from 'react';
+
+import { PageListHeader } from '@/components/header';
+import { PageList } from '@/components/page-list';
+import WorkspaceLayout from '@/components/workspace-layout';
import { useGlobalState } from '@/store/app';
const All = () => {
diff --git a/apps/web/src/pages/workspace/[workspaceId]/favorite.tsx b/apps/web/src/pages/workspace/[workspaceId]/favorite.tsx
index 0063474b92..1af3075408 100644
--- a/apps/web/src/pages/workspace/[workspaceId]/favorite.tsx
+++ b/apps/web/src/pages/workspace/[workspaceId]/favorite.tsx
@@ -1,10 +1,11 @@
+import { useTranslation } from '@affine/i18n';
+import { FavouritesIcon } from '@blocksuite/icons';
+import Head from 'next/head';
+import { ReactElement } from 'react';
+
import { PageListHeader } from '@/components/header';
import { PageList } from '@/components/page-list';
-import { FavouritesIcon } from '@blocksuite/icons';
-import { ReactElement } from 'react';
import WorkspaceLayout from '@/components/workspace-layout';
-import { useTranslation } from '@affine/i18n';
-import Head from 'next/head';
import { useGlobalState } from '@/store/app';
export const Favorite = () => {
diff --git a/apps/web/src/pages/workspace/[workspaceId]/index.tsx b/apps/web/src/pages/workspace/[workspaceId]/index.tsx
index a67b5b6dd1..5c79720f23 100644
--- a/apps/web/src/pages/workspace/[workspaceId]/index.tsx
+++ b/apps/web/src/pages/workspace/[workspaceId]/index.tsx
@@ -1,7 +1,8 @@
-import { useCallback, useEffect } from 'react';
import { useRouter } from 'next/router';
-import useEnsureWorkspace from '@/hooks/use-ensure-workspace';
+import { useCallback, useEffect } from 'react';
+
import { PageLoading } from '@/components/loading';
+import useEnsureWorkspace from '@/hooks/use-ensure-workspace';
import usePageHelper from '@/hooks/use-page-helper';
import { useGlobalState } from '@/store/app';
diff --git a/apps/web/src/pages/workspace/[workspaceId]/setting.tsx b/apps/web/src/pages/workspace/[workspaceId]/setting.tsx
index 4dc3afc022..90b788839b 100644
--- a/apps/web/src/pages/workspace/[workspaceId]/setting.tsx
+++ b/apps/web/src/pages/workspace/[workspaceId]/setting.tsx
@@ -1,31 +1,32 @@
+import { styled } from '@affine/component';
+import { WorkspaceUnit } from '@affine/datacenter';
+import { useTranslation } from '@affine/i18n';
+import { SettingsIcon } from '@blocksuite/icons';
+import Head from 'next/head';
+import {
+ CSSProperties,
+ ReactElement,
+ ReactNode,
+ startTransition,
+ useCallback,
+ useEffect,
+ useState,
+} from 'react';
+
+import { PageListHeader } from '@/components/header';
+import WorkspaceLayout from '@/components/workspace-layout';
+import {
+ ExportPage,
+ GeneralPage,
+ MembersPage,
+ PublishPage,
+ SyncPage,
+} from '@/components/workspace-setting';
import {
StyledSettingContainer,
StyledSettingContent,
WorkspaceSettingTagItem,
} from '@/components/workspace-setting/style';
-import {
- ReactElement,
- ReactNode,
- useState,
- CSSProperties,
- useEffect,
- startTransition,
- useCallback,
-} from 'react';
-import {
- GeneralPage,
- MembersPage,
- PublishPage,
- ExportPage,
- SyncPage,
-} from '@/components/workspace-setting';
-import { SettingsIcon } from '@blocksuite/icons';
-import WorkspaceLayout from '@/components/workspace-layout';
-import { WorkspaceUnit } from '@affine/datacenter';
-import { useTranslation } from '@affine/i18n';
-import { PageListHeader } from '@/components/header';
-import Head from 'next/head';
-import { styled } from '@affine/component';
import { useGlobalState } from '@/store/app';
const useTabMap = () => {
diff --git a/apps/web/src/pages/workspace/[workspaceId]/trash.tsx b/apps/web/src/pages/workspace/[workspaceId]/trash.tsx
index 64677277e0..9f3cbacbcf 100644
--- a/apps/web/src/pages/workspace/[workspaceId]/trash.tsx
+++ b/apps/web/src/pages/workspace/[workspaceId]/trash.tsx
@@ -1,10 +1,11 @@
+import { useTranslation } from '@affine/i18n';
+import { TrashIcon } from '@blocksuite/icons';
+import Head from 'next/head';
+import { ReactElement, useCallback } from 'react';
+
import { PageListHeader } from '@/components/header';
import { PageList } from '@/components/page-list';
-import { TrashIcon } from '@blocksuite/icons';
-import { ReactElement, useCallback } from 'react';
import WorkspaceLayout from '@/components/workspace-layout';
-import { useTranslation } from '@affine/i18n';
-import Head from 'next/head';
import { useGlobalState } from '@/store/app';
export const Trash = () => {
diff --git a/apps/web/src/pages/workspace/index.tsx b/apps/web/src/pages/workspace/index.tsx
index dacc2ab4fd..bbc89cdf83 100644
--- a/apps/web/src/pages/workspace/index.tsx
+++ b/apps/web/src/pages/workspace/index.tsx
@@ -1,7 +1,8 @@
-import { useCallback, useEffect } from 'react';
import { useRouter } from 'next/router';
-import useEnsureWorkspace from '@/hooks/use-ensure-workspace';
+import { useCallback, useEffect } from 'react';
+
import { PageLoading } from '@/components/loading';
+import useEnsureWorkspace from '@/hooks/use-ensure-workspace';
import { useGlobalState } from '@/store/app';
export const WorkspaceIndex = () => {
diff --git a/apps/web/src/providers/ConfirmProvider.tsx b/apps/web/src/providers/ConfirmProvider.tsx
index 2e7559e9e3..5ba3e0d1fc 100644
--- a/apps/web/src/providers/ConfirmProvider.tsx
+++ b/apps/web/src/providers/ConfirmProvider.tsx
@@ -1,6 +1,6 @@
-import { createContext, useContext, useMemo } from 'react';
-import type { PropsWithChildren } from 'react';
import { Confirm, ConfirmProps } from '@affine/component';
+import type { PropsWithChildren } from 'react';
+import { createContext, useContext, useMemo } from 'react';
import { createStore, useStore } from 'zustand';
import { combine, subscribeWithSelector } from 'zustand/middleware';
import { UseBoundStore } from 'zustand/react';
diff --git a/apps/web/src/providers/ThemeProvider.tsx b/apps/web/src/providers/ThemeProvider.tsx
index 2001b7a096..e4568fe66b 100644
--- a/apps/web/src/providers/ThemeProvider.tsx
+++ b/apps/web/src/providers/ThemeProvider.tsx
@@ -1,10 +1,3 @@
-import { createContext, useContext, useEffect, useState } from 'react';
-import { Global, css } from '@emotion/react';
-import {
- ThemeProvider as MuiThemeProvider,
- createTheme as MuiCreateTheme,
-} from '@mui/material/styles';
-import type { PropsWithChildren } from 'react';
import {
Theme,
ThemeMode,
@@ -12,12 +5,20 @@ import {
ThemeProviderValue,
} from '@affine/component';
import {
- getLightTheme,
getDarkTheme,
+ getLightTheme,
globalThemeVariables,
ThemeProvider as ComponentThemeProvider,
} from '@affine/component';
-import { SystemThemeHelper, localStorageThemeHelper } from '@affine/component';
+import { localStorageThemeHelper, SystemThemeHelper } from '@affine/component';
+import { css, Global } from '@emotion/react';
+import {
+ createTheme as MuiCreateTheme,
+ ThemeProvider as MuiThemeProvider,
+} from '@mui/material/styles';
+import type { PropsWithChildren } from 'react';
+import { createContext, useContext, useEffect, useState } from 'react';
+
import useCurrentPageMeta from '@/hooks/use-current-page-meta';
export const ThemeContext = createContext({
diff --git a/apps/web/src/providers/app-state-provider/Provider.tsx b/apps/web/src/providers/app-state-provider/Provider.tsx
index 9c0979b203..6916a8caaa 100644
--- a/apps/web/src/providers/app-state-provider/Provider.tsx
+++ b/apps/web/src/providers/app-state-provider/Provider.tsx
@@ -1,9 +1,11 @@
-import { createContext, useContext, useEffect, useState } from 'react';
-import type { PropsWithChildren } from 'react';
-import { AppStateContext } from './interface';
import type { Disposable } from '@blocksuite/global/utils';
+import type { PropsWithChildren } from 'react';
+import { createContext, useContext, useEffect, useState } from 'react';
+
import { useGlobalState } from '@/store/app';
+import { AppStateContext } from './interface';
+
type AppStateContextProps = PropsWithChildren>;
export const AppState = createContext({} as AppStateContext);
diff --git a/apps/web/src/providers/app-state-provider/index.ts b/apps/web/src/providers/app-state-provider/index.ts
index b6581f766e..0668aac381 100644
--- a/apps/web/src/providers/app-state-provider/index.ts
+++ b/apps/web/src/providers/app-state-provider/index.ts
@@ -1,2 +1,2 @@
-export * from './Provider';
export * from './interface';
+export * from './Provider';
diff --git a/apps/web/src/providers/app-state-provider/interface.ts b/apps/web/src/providers/app-state-provider/interface.ts
index cf484fa34d..d4c6226f97 100644
--- a/apps/web/src/providers/app-state-provider/interface.ts
+++ b/apps/web/src/providers/app-state-provider/interface.ts
@@ -1,5 +1,4 @@
import type { EditorContainer } from '@blocksuite/editor';
-
import type {
Page as StorePage,
PageMeta as StorePageMeta,
diff --git a/apps/web/src/store/app/blocksuite/index.ts b/apps/web/src/store/app/blocksuite/index.ts
index 438479103d..8d12e7cab6 100644
--- a/apps/web/src/store/app/blocksuite/index.ts
+++ b/apps/web/src/store/app/blocksuite/index.ts
@@ -1,6 +1,7 @@
-import { Page, Workspace } from '@blocksuite/store';
-import { EditorContainer } from '@blocksuite/editor';
import { BlockHub } from '@blocksuite/blocks';
+import { EditorContainer } from '@blocksuite/editor';
+import { Page, Workspace } from '@blocksuite/store';
+
import { GlobalActionsCreator } from '@/store/app';
export interface BlockSuiteState {
diff --git a/apps/web/src/store/app/datacenter/index.tsx b/apps/web/src/store/app/datacenter/index.tsx
index 3905a75b07..ea55fddd96 100644
--- a/apps/web/src/store/app/datacenter/index.tsx
+++ b/apps/web/src/store/app/datacenter/index.tsx
@@ -1,14 +1,15 @@
+import type { DataCenter } from '@affine/datacenter';
+import { getDataCenter, WorkspaceUnit } from '@affine/datacenter';
+import { DisposableGroup } from '@blocksuite/global/utils';
+import React, { useCallback, useEffect } from 'react';
+
+import { PageMeta } from '@/providers/app-state-provider';
+import { createDefaultWorkspace } from '@/providers/app-state-provider/utils';
import {
GlobalActionsCreator,
useGlobalState,
useGlobalStateApi,
} from '@/store/app';
-import type { DataCenter } from '@affine/datacenter';
-import { PageMeta } from '@/providers/app-state-provider';
-import { getDataCenter, WorkspaceUnit } from '@affine/datacenter';
-import { createDefaultWorkspace } from '@/providers/app-state-provider/utils';
-import React, { useCallback, useEffect } from 'react';
-import { DisposableGroup } from '@blocksuite/global/utils';
export type DataCenterState = {
readonly dataCenter: DataCenter;
diff --git a/apps/web/src/store/app/index.tsx b/apps/web/src/store/app/index.tsx
index 65fffcbf29..9d9b48c4f8 100644
--- a/apps/web/src/store/app/index.tsx
+++ b/apps/web/src/store/app/index.tsx
@@ -3,24 +3,25 @@ import { createContext, useContext, useMemo } from 'react';
import { createStore, StateCreator, useStore } from 'zustand';
import { combine, subscribeWithSelector } from 'zustand/middleware';
import type { UseBoundStore } from 'zustand/react';
+
import {
BlockSuiteActions,
BlockSuiteState,
createBlockSuiteActions,
createBlockSuiteState,
} from '@/store/app/blocksuite';
-import {
- createUserActions,
- createUserState,
- UserActions,
- UserState,
-} from '@/store/app/user';
import {
createDataCenterActions,
createDataCenterState,
DataCenterActions,
DataCenterState,
} from '@/store/app/datacenter';
+import {
+ createUserActions,
+ createUserState,
+ UserActions,
+ UserState,
+} from '@/store/app/user';
export type GlobalActionsCreator = StateCreator<
Store,
diff --git a/apps/web/src/store/app/user/index.ts b/apps/web/src/store/app/user/index.ts
index 5257f73a28..dd3809b78b 100644
--- a/apps/web/src/store/app/user/index.ts
+++ b/apps/web/src/store/app/user/index.ts
@@ -1,6 +1,7 @@
-import { GlobalActionsCreator } from '@/store/app';
import { User } from '@affine/datacenter';
+import { GlobalActionsCreator } from '@/store/app';
+
export interface UserState {
user: User | null;
isOwner: boolean;
diff --git a/apps/web/src/store/globalModal/index.tsx b/apps/web/src/store/globalModal/index.tsx
index 1fd808e475..c718bbffd1 100644
--- a/apps/web/src/store/globalModal/index.tsx
+++ b/apps/web/src/store/globalModal/index.tsx
@@ -1,3 +1,4 @@
+import { useRouter } from 'next/router';
import type React from 'react';
import {
createContext,
@@ -9,13 +10,13 @@ import {
import { createStore, useStore } from 'zustand';
import { combine, subscribeWithSelector } from 'zustand/middleware';
import { UseBoundStore } from 'zustand/react';
+
import ContactModal from '@/components/contact-modal';
-import ShortcutsModal from '@/components/shortcuts-modal';
-import QuickSearch from '@/components/quick-search';
-import { LoginModal } from '@/components/login-modal';
-import ImportModal from '@/components/import';
import { EnableWorkspaceModal } from '@/components/enable-workspace-modal';
-import { useRouter } from 'next/router';
+import ImportModal from '@/components/import';
+import { LoginModal } from '@/components/login-modal';
+import QuickSearch from '@/components/quick-search';
+import ShortcutsModal from '@/components/shortcuts-modal';
export type ModalState = {
contact: boolean;
diff --git a/apps/web/src/utils/__tests__/get-is-mobile.spec.ts b/apps/web/src/utils/__tests__/get-is-mobile.spec.ts
index 53bf52bc87..492d6a6f64 100644
--- a/apps/web/src/utils/__tests__/get-is-mobile.spec.ts
+++ b/apps/web/src/utils/__tests__/get-is-mobile.spec.ts
@@ -1,4 +1,5 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
+
import { isMobile } from '../get-is-mobile';
test.describe('get-is-mobile', () => {
diff --git a/apps/web/src/utils/index.ts b/apps/web/src/utils/index.ts
index 2d05a590cd..97bdecdada 100644
--- a/apps/web/src/utils/index.ts
+++ b/apps/web/src/utils/index.ts
@@ -1,7 +1,4 @@
-export { isDev } from './env';
-
-export * from './useragent';
-
-export * from './tools';
-
export * from './colors';
+export { isDev } from './env';
+export * from './tools';
+export * from './useragent';
diff --git a/apps/web/src/utils/print-build-info.ts b/apps/web/src/utils/print-build-info.ts
index 5cbe74e71b..ff427844be 100644
--- a/apps/web/src/utils/print-build-info.ts
+++ b/apps/web/src/utils/print-build-info.ts
@@ -1,4 +1,5 @@
import getConfig from 'next/config';
+
import { isDev } from './env';
type Config = {
BUILD_DATE: string;
diff --git a/package.json b/package.json
index 1268e24118..206094e0c9 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,8 @@
"build:storybook": " pnpm -r build-storybook",
"export": "pnpm --filter @affine/app export",
"start": "pnpm --filter @affine/app start",
- "lint": "pnpm --filter @affine/app lint",
+ "lint": "eslint . --ext .js,.ts,.mts,.tsx",
+ "lint:fix": "eslint . --ext .js,.ts,.mts,.tsx --fix",
"test": "playwright test",
"test:coverage": "cross-env COVERAGE=true pnpm test -- --forbid-only",
"test:unit": "vitest --run",
@@ -36,10 +37,13 @@
"@vitest/coverage-istanbul": "^0.28.5",
"concurrently": "^7.6.0",
"cross-env": "^7.0.3",
- "eslint": "^8.30.0",
- "eslint-config-next": "12.3.1",
+ "eslint": "^8.34.0",
"eslint-config-prettier": "^8.5.0",
+ "eslint-plugin-import": "^2.27.5",
"eslint-plugin-prettier": "^4.2.1",
+ "eslint-plugin-react": "^7.32.2",
+ "eslint-plugin-simple-import-sort": "^10.0.0",
+ "eslint-plugin-unused-imports": "^2.0.0",
"fake-indexeddb": "4.0.1",
"got": "^12.5.3",
"husky": "^8.0.2",
diff --git a/packages/component/src/components/BlockSuiteErrorBoundary.tsx b/packages/component/src/components/BlockSuiteErrorBoundary.tsx
index 6d5cf3cb49..37fa02319f 100644
--- a/packages/component/src/components/BlockSuiteErrorBoundary.tsx
+++ b/packages/component/src/components/BlockSuiteErrorBoundary.tsx
@@ -1,5 +1,5 @@
-import React, { Component, ErrorInfo } from 'react';
import { MigrationError } from '@blocksuite/global/error';
+import React, { Component, ErrorInfo } from 'react';
export type BlockSuiteErrorBoundaryProps = React.PropsWithChildren;
@@ -43,6 +43,7 @@ export class BlockSuiteErrorBoundary extends Component<
BlockSuite Github Issue
diff --git a/packages/component/src/index.ts b/packages/component/src/index.ts
index ffe4e0b430..f372317228 100644
--- a/packages/component/src/index.ts
+++ b/packages/component/src/index.ts
@@ -1,4 +1,5 @@
// export * from './components/BlockSuiteEditor';
+export * from './styles';
export * from './ui/breadcrumbs';
export * from './ui/button';
export * from './ui/confirm';
@@ -8,10 +9,9 @@ export * from './ui/input';
export * from './ui/layout';
export * from './ui/menu';
export * from './ui/modal';
+export * from './ui/mui';
export * from './ui/popper';
export * from './ui/shared/Container';
export * from './ui/table';
export * from './ui/toast';
export * from './ui/tooltip';
-export * from './ui/mui';
-export * from './styles';
diff --git a/packages/component/src/stories/BlockSuiteEditor.stories.tsx b/packages/component/src/stories/BlockSuiteEditor.stories.tsx
index d25fa0f259..a30960044d 100644
--- a/packages/component/src/stories/BlockSuiteEditor.stories.tsx
+++ b/packages/component/src/stories/BlockSuiteEditor.stories.tsx
@@ -1,12 +1,13 @@
/* deepscan-disable USELESS_ARROW_FUNC_BIND */
-import React, { Suspense } from 'react';
-import { Meta, Story } from '@storybook/react';
import { builtInSchemas } from '@blocksuite/blocks/models';
+import { Page, Workspace } from '@blocksuite/store';
+import { Meta, Story } from '@storybook/react';
+import React, { Suspense } from 'react';
+
import {
BlockSuiteEditor,
BlockSuiteEditorProps,
} from '../components/BlockSuiteEditor';
-import { Page, Workspace } from '@blocksuite/store';
const worksapce = new Workspace({
room: 'test',
diff --git a/packages/component/src/stories/BlockSuiteErrorBoundary.stories.tsx b/packages/component/src/stories/BlockSuiteErrorBoundary.stories.tsx
index 892bd30c4f..908a69e74d 100644
--- a/packages/component/src/stories/BlockSuiteErrorBoundary.stories.tsx
+++ b/packages/component/src/stories/BlockSuiteErrorBoundary.stories.tsx
@@ -1,11 +1,12 @@
/* deepscan-disable USELESS_ARROW_FUNC_BIND */
+import { MigrationError } from '@blocksuite/global/error';
import { Meta, StoryFn } from '@storybook/react';
import React from 'react';
+
import {
BlockSuiteErrorBoundary,
BlockSuiteErrorBoundaryProps,
} from '../components/BlockSuiteErrorBoundary';
-import { MigrationError } from '@blocksuite/global/error';
export default {
title: 'BlockSuite/ErrorBoundary',
@@ -22,5 +23,8 @@ export const ErrorComponent = () => {
export const Primary = Template.bind(undefined);
Primary.args = {
- children: [There is no error, ],
+ children: [
+ There is no error,
+ ,
+ ],
};
diff --git a/packages/component/src/stories/Breadcrumbs.stories.tsx b/packages/component/src/stories/Breadcrumbs.stories.tsx
index 6cc0ba07d4..e3ac5d0cb1 100644
--- a/packages/component/src/stories/Breadcrumbs.stories.tsx
+++ b/packages/component/src/stories/Breadcrumbs.stories.tsx
@@ -1,8 +1,9 @@
/* deepscan-disable USELESS_ARROW_FUNC_BIND */
-import React from 'react';
-import { Meta, Story } from '@storybook/react';
-import { Breadcrumbs } from '..';
import { Link, Typography } from '@mui/material';
+import { Meta, Story } from '@storybook/react';
+import React from 'react';
+
+import { Breadcrumbs } from '..';
export default {
title: 'AFFiNE/Breadcrumbs',
@@ -14,12 +15,14 @@ const Template: Story = args => ;
export const Primary = Template.bind(undefined);
Primary.args = {
children: [
-
+
AFFiNE
,
-
+
Docs
,
- Introduction,
+
+ Introduction
+ ,
],
};
diff --git a/packages/component/src/stories/Button.stories.tsx b/packages/component/src/stories/Button.stories.tsx
index 7030f37128..a8d731ca4a 100644
--- a/packages/component/src/stories/Button.stories.tsx
+++ b/packages/component/src/stories/Button.stories.tsx
@@ -1,6 +1,7 @@
/* deepscan-disable USELESS_ARROW_FUNC_BIND */
-import React from 'react';
import { Meta, Story } from '@storybook/react';
+import React from 'react';
+
import { Button } from '..';
import { ButtonProps } from '../ui/button/interface';
diff --git a/packages/component/src/styles/index.ts b/packages/component/src/styles/index.ts
index 2513200048..61fc7f9f7a 100644
--- a/packages/component/src/styles/index.ts
+++ b/packages/component/src/styles/index.ts
@@ -1,5 +1,5 @@
+export * from './helper';
export * from './styled';
export * from './theme';
-export * from './helper';
export * from './types';
export * from './utils';
diff --git a/packages/component/src/styles/styled.tsx b/packages/component/src/styles/styled.tsx
index 126956155b..ade405c725 100644
--- a/packages/component/src/styles/styled.tsx
+++ b/packages/component/src/styles/styled.tsx
@@ -1,6 +1,7 @@
import { ThemeProvider as EmotionThemeProvider } from '@emotion/react';
import emotionStyled from '@emotion/styled';
import type { PropsWithChildren } from 'react';
+
import { AffineTheme } from './types';
export { css, keyframes } from '@emotion/react';
export const styled = emotionStyled;
diff --git a/packages/component/src/styles/theme.ts b/packages/component/src/styles/theme.ts
index 4963f87aed..fd7a731247 100644
--- a/packages/component/src/styles/theme.ts
+++ b/packages/component/src/styles/theme.ts
@@ -1,7 +1,9 @@
import '@emotion/react';
-import { AffineTheme, AffineThemeCSSVariables, ThemeMode } from './types';
+
import type { EditorContainer } from '@blocksuite/editor';
+import { AffineTheme, AffineThemeCSSVariables, ThemeMode } from './types';
+
const basicFontFamily =
'apple-system, BlinkMacSystemFont,Helvetica Neue, Tahoma, PingFang SC, Microsoft Yahei, Arial,Hiragino Sans GB, sans-serif, Apple Color Emoji, Segoe UI Emoji,Segoe UI Symbol, Noto Color Emoji';
diff --git a/packages/component/src/styles/utils/index.ts b/packages/component/src/styles/utils/index.ts
index cf6f6acd99..d306f2d3e4 100644
--- a/packages/component/src/styles/utils/index.ts
+++ b/packages/component/src/styles/utils/index.ts
@@ -1,2 +1,2 @@
-export * from './systemThemeHelper';
export * from './localStorageThemeHelper';
+export * from './systemThemeHelper';
diff --git a/packages/component/src/ui/breadcrumbs/index.ts b/packages/component/src/ui/breadcrumbs/index.ts
index 3cb3c80dbf..dae3ad3226 100644
--- a/packages/component/src/ui/breadcrumbs/index.ts
+++ b/packages/component/src/ui/breadcrumbs/index.ts
@@ -1,4 +1,5 @@
import MuiBreadcrumbs from '@mui/material/Breadcrumbs';
+
import { styled } from '../../styles';
export const Breadcrumbs = styled(MuiBreadcrumbs)(({ theme }) => {
diff --git a/packages/component/src/ui/button/Button.tsx b/packages/component/src/ui/button/Button.tsx
index 1e77b58f5a..7a085036b4 100644
--- a/packages/component/src/ui/button/Button.tsx
+++ b/packages/component/src/ui/button/Button.tsx
@@ -1,9 +1,9 @@
-import { cloneElement, Children, forwardRef } from 'react';
-import { StyledButton } from './styles';
+import { Children, cloneElement, forwardRef } from 'react';
import { ButtonProps } from './interface';
-import { getSize } from './utils';
import { Loading } from './Loading';
+import { StyledButton } from './styles';
+import { getSize } from './utils';
export const Button = forwardRef(
(
diff --git a/packages/component/src/ui/button/IconButton.tsx b/packages/component/src/ui/button/IconButton.tsx
index 5166af1a3e..3611dc2cbe 100644
--- a/packages/component/src/ui/button/IconButton.tsx
+++ b/packages/component/src/ui/button/IconButton.tsx
@@ -1,11 +1,12 @@
import {
- HTMLAttributes,
- cloneElement,
- ReactElement,
Children,
+ cloneElement,
CSSProperties,
forwardRef,
+ HTMLAttributes,
+ ReactElement,
} from 'react';
+
import { StyledIconButton } from './styles';
const SIZE_SMALL = 'small' as const;
diff --git a/packages/component/src/ui/button/TextButton.tsx b/packages/component/src/ui/button/TextButton.tsx
index 50068ec8be..b7cac00415 100644
--- a/packages/component/src/ui/button/TextButton.tsx
+++ b/packages/component/src/ui/button/TextButton.tsx
@@ -1,7 +1,7 @@
-import { cloneElement, Children, forwardRef } from 'react';
-import { StyledTextButton } from './styles';
+import { Children, cloneElement, forwardRef } from 'react';
import { ButtonProps } from './interface';
+import { StyledTextButton } from './styles';
import { getSize } from './utils';
export const TextButton = forwardRef(
diff --git a/packages/component/src/ui/button/index.ts b/packages/component/src/ui/button/index.ts
index cae8df7c0c..feefc1188d 100644
--- a/packages/component/src/ui/button/index.ts
+++ b/packages/component/src/ui/button/index.ts
@@ -1,3 +1,3 @@
-export * from './IconButton';
export * from './Button';
+export * from './IconButton';
export * from './TextButton';
diff --git a/packages/component/src/ui/button/styles.ts b/packages/component/src/ui/button/styles.ts
index e751acd76e..f05cd28f16 100644
--- a/packages/component/src/ui/button/styles.ts
+++ b/packages/component/src/ui/button/styles.ts
@@ -1,7 +1,8 @@
-import { absoluteCenter, displayInlineFlex, styled } from '../../styles';
import { CSSProperties } from 'react';
+
+import { absoluteCenter, displayInlineFlex, styled } from '../../styles';
import { ButtonProps } from './interface';
-import { getSize, getButtonColors } from './utils';
+import { getButtonColors, getSize } from './utils';
export const StyledIconButton = styled('button', {
shouldForwardProp: prop => {
diff --git a/packages/component/src/ui/button/utils.ts b/packages/component/src/ui/button/utils.ts
index 5747d302d2..6c69550415 100644
--- a/packages/component/src/ui/button/utils.ts
+++ b/packages/component/src/ui/button/utils.ts
@@ -1,9 +1,9 @@
import { AffineTheme } from '../../styles';
import {
- SIZE_SMALL,
- SIZE_MIDDLE,
- SIZE_DEFAULT,
ButtonProps,
+ SIZE_DEFAULT,
+ SIZE_MIDDLE,
+ SIZE_SMALL,
} from './interface';
// TODO: Designer is not sure about the size, Now, is just use default size
diff --git a/packages/component/src/ui/confirm/Confirm.tsx b/packages/component/src/ui/confirm/Confirm.tsx
index da7a32ef78..75a5488d06 100644
--- a/packages/component/src/ui/confirm/Confirm.tsx
+++ b/packages/component/src/ui/confirm/Confirm.tsx
@@ -1,14 +1,15 @@
+import { useTranslation } from '@affine/i18n';
import { useState } from 'react';
+
+import { Button } from '../button';
import { Modal, ModalCloseButton, ModalProps } from '../modal';
import {
- StyledRowButtonWrapper,
StyledColumnButtonWrapper,
StyledConfirmContent,
StyledConfirmTitle,
StyledModalWrapper,
+ StyledRowButtonWrapper,
} from './styles';
-import { Button } from '../button';
-import { useTranslation } from '@affine/i18n';
export type ConfirmProps = {
title?: string;
content?: string;
diff --git a/packages/component/src/ui/divider/index.ts b/packages/component/src/ui/divider/index.ts
index 71ceecbac0..eb2684c4fd 100644
--- a/packages/component/src/ui/divider/index.ts
+++ b/packages/component/src/ui/divider/index.ts
@@ -1,4 +1,5 @@
import MuiDivider from '@mui/material/Divider';
+
import { styled } from '../../styles';
export const Divider = styled(MuiDivider)(({ theme }) => {
diff --git a/packages/component/src/ui/empty/Empty.tsx b/packages/component/src/ui/empty/Empty.tsx
index ff479a8e48..f4cfb75ca5 100644
--- a/packages/component/src/ui/empty/Empty.tsx
+++ b/packages/component/src/ui/empty/Empty.tsx
@@ -1,6 +1,7 @@
import { CSSProperties } from 'react';
-import { EmptySVG } from './EmptySVG';
+
import { styled } from '../../styles';
+import { EmptySVG } from './EmptySVG';
export type EmptyContentProps = {
width?: CSSProperties['width'];
diff --git a/packages/component/src/ui/input/Input.tsx b/packages/component/src/ui/input/Input.tsx
index 8d08998d65..32df1c1add 100644
--- a/packages/component/src/ui/input/Input.tsx
+++ b/packages/component/src/ui/input/Input.tsx
@@ -1,11 +1,12 @@
import {
+ FocusEventHandler,
+ HTMLAttributes,
InputHTMLAttributes,
+ KeyboardEventHandler,
useEffect,
useState,
- FocusEventHandler,
- KeyboardEventHandler,
- HTMLAttributes,
} from 'react';
+
import { StyledInput } from './style';
type inputProps = {
diff --git a/packages/component/src/ui/layout/Content.tsx b/packages/component/src/ui/layout/Content.tsx
index 7bf126095e..d42e3c4d7a 100644
--- a/packages/component/src/ui/layout/Content.tsx
+++ b/packages/component/src/ui/layout/Content.tsx
@@ -1,4 +1,5 @@
import { CSSProperties } from 'react';
+
import { styled, textEllipsis } from '../../styles';
// This component should be just used to be contained the text content
diff --git a/packages/component/src/ui/layout/Wrapper.tsx b/packages/component/src/ui/layout/Wrapper.tsx
index 0edb5a68de..bea1e931dc 100644
--- a/packages/component/src/ui/layout/Wrapper.tsx
+++ b/packages/component/src/ui/layout/Wrapper.tsx
@@ -1,4 +1,5 @@
import type { CSSProperties } from 'react';
+
import { styled } from '../../styles';
export type WrapperProps = {
diff --git a/packages/component/src/ui/layout/index.ts b/packages/component/src/ui/layout/index.ts
index 08a825ec01..f74f6b36be 100644
--- a/packages/component/src/ui/layout/index.ts
+++ b/packages/component/src/ui/layout/index.ts
@@ -1,2 +1,2 @@
-export * from './Wrapper';
export * from './Content';
+export * from './Wrapper';
diff --git a/packages/component/src/ui/menu/Menu.tsx b/packages/component/src/ui/menu/Menu.tsx
index 3ec3baa29f..c9bd531d59 100644
--- a/packages/component/src/ui/menu/Menu.tsx
+++ b/packages/component/src/ui/menu/Menu.tsx
@@ -1,5 +1,6 @@
-import { Popper, type PopperProps } from '../popper';
import { TooltipProps } from '@mui/material';
+
+import { Popper, type PopperProps } from '../popper';
import { StyledMenuWrapper } from './styles';
export const Menu = (props: PopperProps & Omit) => {
diff --git a/packages/component/src/ui/menu/MenuItem.tsx b/packages/component/src/ui/menu/MenuItem.tsx
index 45e40fb649..b23a0d79bf 100644
--- a/packages/component/src/ui/menu/MenuItem.tsx
+++ b/packages/component/src/ui/menu/MenuItem.tsx
@@ -5,7 +5,8 @@ import {
PropsWithChildren,
ReactElement,
} from 'react';
-import { StyledMenuItem, StyledArrow } from './styles';
+
+import { StyledArrow, StyledMenuItem } from './styles';
export type IconMenuProps = PropsWithChildren<{
isDir?: boolean;
diff --git a/packages/component/src/ui/menu/styles.ts b/packages/component/src/ui/menu/styles.ts
index a3f8fe0bfb..1743932778 100644
--- a/packages/component/src/ui/menu/styles.ts
+++ b/packages/component/src/ui/menu/styles.ts
@@ -1,6 +1,7 @@
+import { ArrowRightIcon } from '@blocksuite/icons';
+
import { displayFlex, styled } from '../../styles';
import StyledPopperContainer from '../shared/Container';
-import { ArrowRightIcon } from '@blocksuite/icons';
export const StyledMenuWrapper = styled(StyledPopperContainer)(({ theme }) => {
return {
diff --git a/packages/component/src/ui/modal/Modal.tsx b/packages/component/src/ui/modal/Modal.tsx
index bce56fe98b..72d20a5869 100644
--- a/packages/component/src/ui/modal/Modal.tsx
+++ b/packages/component/src/ui/modal/Modal.tsx
@@ -1,6 +1,7 @@
-import Fade from '@mui/material/Fade';
-import { StyledModal, StyledBackdrop } from './styles';
import { ModalUnstyledOwnProps } from '@mui/base/ModalUnstyled';
+import Fade from '@mui/material/Fade';
+
+import { StyledBackdrop, StyledModal } from './styles';
const Backdrop = ({
open,
diff --git a/packages/component/src/ui/modal/ModalCloseButton.tsx b/packages/component/src/ui/modal/ModalCloseButton.tsx
index 506e930a58..9890c8ad7d 100644
--- a/packages/component/src/ui/modal/ModalCloseButton.tsx
+++ b/packages/component/src/ui/modal/ModalCloseButton.tsx
@@ -1,7 +1,8 @@
-import { HTMLAttributes } from 'react';
import { CloseIcon } from '@blocksuite/icons';
-import { IconButton, IconButtonProps } from '../button/IconButton';
+import { HTMLAttributes } from 'react';
+
import { styled } from '../../styles';
+import { IconButton, IconButtonProps } from '../button/IconButton';
export type ModalCloseButtonProps = {
top?: number;
right?: number;
diff --git a/packages/component/src/ui/modal/ModalWrapper.tsx b/packages/component/src/ui/modal/ModalWrapper.tsx
index 82c097f3f7..fe155ef8e7 100644
--- a/packages/component/src/ui/modal/ModalWrapper.tsx
+++ b/packages/component/src/ui/modal/ModalWrapper.tsx
@@ -1,4 +1,5 @@
import { CSSProperties } from 'react';
+
import { styled } from '../../styles';
export const ModalWrapper = styled.div<{
diff --git a/packages/component/src/ui/modal/index.tsx b/packages/component/src/ui/modal/index.tsx
index 1d4c80d99d..102855e162 100644
--- a/packages/component/src/ui/modal/index.tsx
+++ b/packages/component/src/ui/modal/index.tsx
@@ -1,7 +1,7 @@
import Modal from './Modal';
+export * from './Modal';
export * from './ModalCloseButton';
export * from './ModalWrapper';
-export * from './Modal';
export default Modal;
diff --git a/packages/component/src/ui/modal/styles.ts b/packages/component/src/ui/modal/styles.ts
index 6512a53a45..c4cd161052 100644
--- a/packages/component/src/ui/modal/styles.ts
+++ b/packages/component/src/ui/modal/styles.ts
@@ -1,8 +1,9 @@
-import { styled } from '../../styles';
import ModalUnstyled from '@mui/base/ModalUnstyled';
-import { Wrapper } from '../layout';
import { CSSProperties } from 'react';
+import { styled } from '../../styles';
+import { Wrapper } from '../layout';
+
export const StyledBackdrop = styled.div(({ theme }) => {
return {
zIndex: '-1',
diff --git a/packages/component/src/ui/mui.ts b/packages/component/src/ui/mui.ts
index 5e144cc5a3..bb85e40fe3 100644
--- a/packages/component/src/ui/mui.ts
+++ b/packages/component/src/ui/mui.ts
@@ -1,17 +1,17 @@
+import MuiClickAwayListener from '@mui/base/ClickAwayListener';
+import MuiAvatar from '@mui/material/Avatar';
import MuiBreadcrumbs from '@mui/material/Breadcrumbs';
import MuiCollapse from '@mui/material/Collapse';
-import MuiSlide from '@mui/material/Slide';
-import MuiAvatar from '@mui/material/Avatar';
-import MuiGrow from '@mui/material/Grow';
-import MuiClickAwayListener from '@mui/base/ClickAwayListener';
import MuiFade from '@mui/material/Fade';
+import MuiGrow from '@mui/material/Grow';
+import MuiSlide from '@mui/material/Slide';
export {
- MuiBreadcrumbs,
- MuiCollapse,
- MuiSlide,
MuiAvatar,
- MuiGrow,
- MuiFade,
+ MuiBreadcrumbs,
MuiClickAwayListener,
+ MuiCollapse,
+ MuiFade,
+ MuiGrow,
+ MuiSlide,
};
diff --git a/packages/component/src/ui/popper/PopoverArrow.tsx b/packages/component/src/ui/popper/PopoverArrow.tsx
index a25ea08724..1f49d5da52 100644
--- a/packages/component/src/ui/popper/PopoverArrow.tsx
+++ b/packages/component/src/ui/popper/PopoverArrow.tsx
@@ -1,9 +1,10 @@
import { forwardRef } from 'react';
+
import { styled } from '../../styles';
import { PopperArrowProps } from './interface';
export const PopperArrow = forwardRef(
- ({ placement }, ref) => {
+ function PopperArrow({ placement }, ref) {
return ;
}
);
diff --git a/packages/component/src/ui/popper/Popper.tsx b/packages/component/src/ui/popper/Popper.tsx
index 3fd3e8100c..01791dfe8a 100644
--- a/packages/component/src/ui/popper/Popper.tsx
+++ b/packages/component/src/ui/popper/Popper.tsx
@@ -1,17 +1,16 @@
+import ClickAwayListener from '@mui/base/ClickAwayListener';
+import PopperUnstyled from '@mui/base/PopperUnstyled';
+import Grow from '@mui/material/Grow';
import {
+ cloneElement,
useEffect,
useImperativeHandle,
useMemo,
useRef,
useState,
- cloneElement,
} from 'react';
-import PopperUnstyled from '@mui/base/PopperUnstyled';
-import ClickAwayListener from '@mui/base/ClickAwayListener';
-import Grow from '@mui/material/Grow';
import { styled } from '../../styles';
-
import { PopperProps, VirtualElement } from './interface';
import { PopperArrow } from './PopoverArrow';
export const Popper = ({
diff --git a/packages/component/src/ui/popper/interface.ts b/packages/component/src/ui/popper/interface.ts
index 02c07c0afc..4de506ca60 100644
--- a/packages/component/src/ui/popper/interface.ts
+++ b/packages/component/src/ui/popper/interface.ts
@@ -1,8 +1,8 @@
-import type { CSSProperties, ReactNode, Ref, ReactElement } from 'react';
import {
type PopperPlacementType,
type PopperUnstyledProps,
} from '@mui/base/PopperUnstyled';
+import type { CSSProperties, ReactElement, ReactNode, Ref } from 'react';
export type VirtualElement = {
getBoundingClientRect: () => ClientRect | DOMRect;
contextElement?: Element;
diff --git a/packages/component/src/ui/shared/Container.tsx b/packages/component/src/ui/shared/Container.tsx
index ade14869bb..3ec35f4e62 100644
--- a/packages/component/src/ui/shared/Container.tsx
+++ b/packages/component/src/ui/shared/Container.tsx
@@ -1,6 +1,7 @@
-import { styled } from '../../styles';
import { PopperPlacementType } from '@mui/material';
+import { styled } from '../../styles';
+
export type PopperDirection =
| 'none'
| 'left-top'
diff --git a/packages/component/src/ui/table/Table.tsx b/packages/component/src/ui/table/Table.tsx
index fba647619d..def2a31cea 100644
--- a/packages/component/src/ui/table/Table.tsx
+++ b/packages/component/src/ui/table/Table.tsx
@@ -1,4 +1,5 @@
-import { PropsWithChildren, Children, ReactNode, HTMLAttributes } from 'react';
+import { Children, HTMLAttributes, PropsWithChildren, ReactNode } from 'react';
+
import { StyledTable } from './styles';
const childrenHasEllipsis = (children: ReactNode | ReactNode[]): boolean => {
diff --git a/packages/component/src/ui/table/TableBody.tsx b/packages/component/src/ui/table/TableBody.tsx
index ee8d623571..112723d8df 100644
--- a/packages/component/src/ui/table/TableBody.tsx
+++ b/packages/component/src/ui/table/TableBody.tsx
@@ -1,4 +1,5 @@
import { HTMLAttributes, PropsWithChildren } from 'react';
+
import { StyledTableBody } from './styles';
export const TableBody = ({
diff --git a/packages/component/src/ui/table/TableCell.tsx b/packages/component/src/ui/table/TableCell.tsx
index c6aed80987..b592770576 100644
--- a/packages/component/src/ui/table/TableCell.tsx
+++ b/packages/component/src/ui/table/TableCell.tsx
@@ -1,4 +1,5 @@
import { HTMLAttributes, PropsWithChildren } from 'react';
+
import { TableCellProps } from './interface';
import { StyledTableCell } from './styles';
diff --git a/packages/component/src/ui/table/TableHead.tsx b/packages/component/src/ui/table/TableHead.tsx
index d1b993af30..c2cf83d01a 100644
--- a/packages/component/src/ui/table/TableHead.tsx
+++ b/packages/component/src/ui/table/TableHead.tsx
@@ -1,4 +1,5 @@
import { HTMLAttributes, PropsWithChildren } from 'react';
+
import { StyledTableHead } from './styles';
export const TableHead = ({
diff --git a/packages/component/src/ui/table/TableRow.tsx b/packages/component/src/ui/table/TableRow.tsx
index b60ba1bf13..55b9608794 100644
--- a/packages/component/src/ui/table/TableRow.tsx
+++ b/packages/component/src/ui/table/TableRow.tsx
@@ -1,4 +1,5 @@
import { HTMLAttributes, PropsWithChildren } from 'react';
+
import { StyledTableRow } from './styles';
export const TableRow = ({
diff --git a/packages/component/src/ui/table/index.ts b/packages/component/src/ui/table/index.ts
index 62c1806aae..67b0695b58 100644
--- a/packages/component/src/ui/table/index.ts
+++ b/packages/component/src/ui/table/index.ts
@@ -6,7 +6,7 @@
//
export * from './Table';
-export * from './TableRow';
-export * from './TableHead';
-export * from './TableCell';
export * from './TableBody';
+export * from './TableCell';
+export * from './TableHead';
+export * from './TableRow';
diff --git a/packages/component/src/ui/tooltip/Tooltip.tsx b/packages/component/src/ui/tooltip/Tooltip.tsx
index 2002566e49..9af7c31be8 100644
--- a/packages/component/src/ui/tooltip/Tooltip.tsx
+++ b/packages/component/src/ui/tooltip/Tooltip.tsx
@@ -1,8 +1,9 @@
-import StyledPopperContainer from '../shared/Container';
-import { Popper, type PopperProps } from '../popper';
-import { styled } from '../../styles';
import type { TooltipProps } from '@mui/material';
+import { styled } from '../../styles';
+import { Popper, type PopperProps } from '../popper';
+import StyledPopperContainer from '../shared/Container';
+
const StyledTooltip = styled(StyledPopperContainer)(({ theme }) => {
return {
maxWidth: '320px',
diff --git a/packages/data-center/src/datacenter.ts b/packages/data-center/src/datacenter.ts
index 83ee50dc23..b2b8441075 100644
--- a/packages/data-center/src/datacenter.ts
+++ b/packages/data-center/src/datacenter.ts
@@ -1,19 +1,20 @@
-import { WorkspaceUnitCollection } from './workspace-unit-collection';
-import type { WorkspaceUnitCollectionChangeEvent } from './workspace-unit-collection';
import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
+import assert from 'assert';
+
+import { getLogger } from './logger';
+import { MessageCenter } from './message';
+import { AffineProvider } from './provider';
import type {
BaseProvider,
CreateWorkspaceInfoParams,
UpdateWorkspaceMetaParams,
} from './provider/base';
import { LocalProvider } from './provider/local';
-import { AffineProvider } from './provider';
import type { Message } from './types';
-import assert from 'assert';
-import { getLogger } from './logger';
import { createBlocksuiteWorkspace } from './utils';
-import { MessageCenter } from './message';
import { WorkspaceUnit } from './workspace-unit';
+import type { WorkspaceUnitCollectionChangeEvent } from './workspace-unit-collection';
+import { WorkspaceUnitCollection } from './workspace-unit-collection';
/**
* @class DataCenter
* @classdesc Data center is made for managing different providers for business
diff --git a/packages/data-center/src/index.ts b/packages/data-center/src/index.ts
index 591a83b14a..de2a3b9d74 100644
--- a/packages/data-center/src/index.ts
+++ b/packages/data-center/src/index.ts
@@ -26,8 +26,8 @@ const _initializeDataCenter = () => {
export const getDataCenter = _initializeDataCenter();
export type { DataCenter };
-export * from './provider/affine/apis';
-export { WorkspaceUnit } from './workspace-unit';
export { getLogger } from './logger';
export * from './message';
+export * from './provider/affine/apis';
export * from './types';
+export { WorkspaceUnit } from './workspace-unit';
diff --git a/packages/data-center/src/message/index.ts b/packages/data-center/src/message/index.ts
index b04581df15..1214a8e4b6 100644
--- a/packages/data-center/src/message/index.ts
+++ b/packages/data-center/src/message/index.ts
@@ -1,2 +1,2 @@
-export { MessageCenter } from './message';
export { MessageCode } from './code';
+export { MessageCenter } from './message';
diff --git a/packages/data-center/src/message/message.ts b/packages/data-center/src/message/message.ts
index aedfcefa2d..548f26c3be 100644
--- a/packages/data-center/src/message/message.ts
+++ b/packages/data-center/src/message/message.ts
@@ -1,4 +1,5 @@
import { Observable } from 'lib0/observable';
+
import { Message } from '../types';
import { MessageCode, messages } from './code';
diff --git a/packages/data-center/src/provider/affine/__tests__/mock-apis.ts b/packages/data-center/src/provider/affine/__tests__/mock-apis.ts
index 21a36c7690..6c95d5e6ce 100644
--- a/packages/data-center/src/provider/affine/__tests__/mock-apis.ts
+++ b/packages/data-center/src/provider/affine/__tests__/mock-apis.ts
@@ -1,4 +1,4 @@
-import type { Apis, AccessTokenMessage } from '../apis';
+import type { AccessTokenMessage, Apis } from '../apis';
const user: AccessTokenMessage = {
created_at: Date.now(),
diff --git a/packages/data-center/src/provider/affine/affine.ts b/packages/data-center/src/provider/affine/affine.ts
index da03cdb4bc..1a7ac7066a 100644
--- a/packages/data-center/src/provider/affine/affine.ts
+++ b/packages/data-center/src/provider/affine/affine.ts
@@ -1,26 +1,27 @@
-import { BaseProvider } from '../base';
-import type {
- ProviderConstructorParams,
- CreateWorkspaceInfoParams,
-} from '../base';
-import type { User } from '../../types';
import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
import assert from 'assert';
-import { WebsocketProvider } from './sync';
-// import { IndexedDBProvider } from '../local/indexeddb';
-import { getApis, Workspace } from './apis';
-import type { Apis, WorkspaceDetail } from './apis';
-import { WebsocketClient } from './channel';
-import {
- loadWorkspaceUnit,
- createWorkspaceUnit,
- migrateBlobDB,
- createBlocksuiteWorkspaceWithAuth,
-} from './utils';
-import { WorkspaceUnit } from '../../workspace-unit';
+
+import { MessageCenter } from '../../message';
+import type { User } from '../../types';
import { applyUpdate } from '../../utils';
import type { SyncMode } from '../../workspace-unit';
-import { MessageCenter } from '../../message';
+import { WorkspaceUnit } from '../../workspace-unit';
+import type {
+ CreateWorkspaceInfoParams,
+ ProviderConstructorParams,
+} from '../base';
+import { BaseProvider } from '../base';
+import type { Apis, WorkspaceDetail } from './apis';
+// import { IndexedDBProvider } from '../local/indexeddb';
+import { getApis, Workspace } from './apis';
+import { WebsocketClient } from './channel';
+import { WebsocketProvider } from './sync';
+import {
+ createBlocksuiteWorkspaceWithAuth,
+ createWorkspaceUnit,
+ loadWorkspaceUnit,
+ migrateBlobDB,
+} from './utils';
type ChannelMessage = {
ws_list: Workspace[];
diff --git a/packages/data-center/src/provider/affine/apis/__tests__/auth.spec.ts b/packages/data-center/src/provider/affine/apis/__tests__/auth.spec.ts
index 9c10d599b3..8ef6129a35 100644
--- a/packages/data-center/src/provider/affine/apis/__tests__/auth.spec.ts
+++ b/packages/data-center/src/provider/affine/apis/__tests__/auth.spec.ts
@@ -1,4 +1,5 @@
-import { describe, test, expect } from 'vitest';
+import { describe, expect, test } from 'vitest';
+
import { Auth } from '../auth';
describe('class Auth', () => {
diff --git a/packages/data-center/src/provider/affine/apis/auth.ts b/packages/data-center/src/provider/affine/apis/auth.ts
index 9eac8cc22f..1bbeb9413e 100644
--- a/packages/data-center/src/provider/affine/apis/auth.ts
+++ b/packages/data-center/src/provider/affine/apis/auth.ts
@@ -1,4 +1,5 @@
import { initializeApp } from 'firebase/app';
+import type { User } from 'firebase/auth';
import {
type Auth as FirebaseAuth,
getAuth as getFirebaseAuth,
@@ -6,12 +7,11 @@ import {
signInWithPopup,
signOut,
} from 'firebase/auth';
-import type { User } from 'firebase/auth';
import { decode } from 'js-base64';
import { getLogger } from '../../../logger';
-import { bareClient } from './request';
import { storage } from '../storage';
+import { bareClient } from './request';
export interface AccessTokenMessage {
created_at: number;
diff --git a/packages/data-center/src/provider/affine/apis/index.ts b/packages/data-center/src/provider/affine/apis/index.ts
index a8973793e5..83c162d0b5 100644
--- a/packages/data-center/src/provider/affine/apis/index.ts
+++ b/packages/data-center/src/provider/affine/apis/index.ts
@@ -2,9 +2,9 @@
export type { Callback } from './auth';
import { getAuthorizer } from './auth';
+import { auth } from './auth';
import * as user from './user';
import * as workspace from './workspace';
-import { auth } from './auth';
// See https://twitter.com/mattpocockuk/status/1622730173446557697
// TODO: move to ts utils?
diff --git a/packages/data-center/src/provider/affine/apis/request.ts b/packages/data-center/src/provider/affine/apis/request.ts
index 21512b612d..7783c96d7e 100644
--- a/packages/data-center/src/provider/affine/apis/request.ts
+++ b/packages/data-center/src/provider/affine/apis/request.ts
@@ -1,4 +1,5 @@
import ky from 'ky-universal';
+
import { MessageCenter } from '../../../message';
import { auth } from './auth';
diff --git a/packages/data-center/src/provider/affine/channel.ts b/packages/data-center/src/provider/affine/channel.ts
index d646ed976f..ac779f6680 100644
--- a/packages/data-center/src/provider/affine/channel.ts
+++ b/packages/data-center/src/provider/affine/channel.ts
@@ -1,7 +1,8 @@
-import * as websocket from 'lib0/websocket';
-import { auth } from './apis/auth';
import * as url from 'lib0/url';
+import * as websocket from 'lib0/websocket';
+
import { Logger } from '../../types';
+import { auth } from './apis/auth';
const RECONNECT_INTERVAL_TIME = 500;
const MAX_RECONNECT_TIMES = 50;
diff --git a/packages/data-center/src/provider/affine/idb-kv.ts b/packages/data-center/src/provider/affine/idb-kv.ts
index 48cb5c820f..6edd8a8530 100644
--- a/packages/data-center/src/provider/affine/idb-kv.ts
+++ b/packages/data-center/src/provider/affine/idb-kv.ts
@@ -1,4 +1,4 @@
-import { createStore, keys, setMany, getMany, clear } from 'idb-keyval';
+import { clear, createStore, getMany, keys, setMany } from 'idb-keyval';
import * as idb from 'lib0/indexeddb';
type IDBInstance = {
diff --git a/packages/data-center/src/provider/affine/sync.js b/packages/data-center/src/provider/affine/sync.js
index 09004a51d1..6fe48aa7bf 100644
--- a/packages/data-center/src/provider/affine/sync.js
+++ b/packages/data-center/src/provider/affine/sync.js
@@ -7,15 +7,15 @@
// import * as Y from 'yjs'; // eslint-disable-line
import * as bc from 'lib0/broadcastchannel';
-import * as time from 'lib0/time';
-import * as encoding from 'lib0/encoding';
import * as decoding from 'lib0/decoding';
-import * as syncProtocol from 'y-protocols/sync';
+import * as encoding from 'lib0/encoding';
+import * as math from 'lib0/math';
+import { Observable } from 'lib0/observable';
+import * as time from 'lib0/time';
+import * as url from 'lib0/url';
import * as authProtocol from 'y-protocols/auth';
import * as awarenessProtocol from 'y-protocols/awareness';
-import { Observable } from 'lib0/observable';
-import * as math from 'lib0/math';
-import * as url from 'lib0/url';
+import * as syncProtocol from 'y-protocols/sync';
export const messageSync = 0;
export const messageQueryAwareness = 3;
diff --git a/packages/data-center/src/provider/affine/utils.ts b/packages/data-center/src/provider/affine/utils.ts
index 5f98748b95..2c5f96f279 100644
--- a/packages/data-center/src/provider/affine/utils.ts
+++ b/packages/data-center/src/provider/affine/utils.ts
@@ -1,11 +1,11 @@
-import { WorkspaceUnit } from '../../workspace-unit';
-import type { WorkspaceUnitCtorParams } from '../../workspace-unit';
import { createBlocksuiteWorkspace as _createBlocksuiteWorkspace } from '../../utils';
-import type { Apis } from './apis';
-import { setDefaultAvatar } from '../utils';
import { applyUpdate } from '../../utils';
-import { getDatabase } from './idb-kv';
+import type { WorkspaceUnitCtorParams } from '../../workspace-unit';
+import { WorkspaceUnit } from '../../workspace-unit';
+import { setDefaultAvatar } from '../utils';
+import type { Apis } from './apis';
import { auth } from './apis/auth';
+import { getDatabase } from './idb-kv';
export const createBlocksuiteWorkspaceWithAuth = async (id: string) => {
if (auth.isExpired && auth.isLogin) {
diff --git a/packages/data-center/src/provider/base.ts b/packages/data-center/src/provider/base.ts
index 85c8ac4791..cf944e225d 100644
--- a/packages/data-center/src/provider/base.ts
+++ b/packages/data-center/src/provider/base.ts
@@ -1,8 +1,9 @@
import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
+
import { MessageCenter } from '../message';
import { Logger, User } from '../types';
+import type { WorkspaceUnit, WorkspaceUnitCtorParams } from '../workspace-unit';
import type { WorkspaceUnitCollectionScope } from '../workspace-unit-collection';
-import type { WorkspaceUnitCtorParams, WorkspaceUnit } from '../workspace-unit';
import { Member } from './affine/apis';
import { Permission } from './affine/apis/workspace';
diff --git a/packages/data-center/src/provider/local/indexeddb/indexeddb.ts b/packages/data-center/src/provider/local/indexeddb/indexeddb.ts
index 24bc147051..11453aab74 100644
--- a/packages/data-center/src/provider/local/indexeddb/indexeddb.ts
+++ b/packages/data-center/src/provider/local/indexeddb/indexeddb.ts
@@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
+import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
import * as idb from 'lib0/indexeddb';
import { Observable } from 'lib0/observable';
-import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
const customStoreName = 'custom';
const updatesStoreName = 'updates';
diff --git a/packages/data-center/src/provider/local/indexeddb/utils.ts b/packages/data-center/src/provider/local/indexeddb/utils.ts
index 04e93c0fcc..9a39fc0449 100644
--- a/packages/data-center/src/provider/local/indexeddb/utils.ts
+++ b/packages/data-center/src/provider/local/indexeddb/utils.ts
@@ -1,6 +1,7 @@
+import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
import assert from 'assert';
import * as idb from 'lib0/indexeddb';
-import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
+
import { applyUpdate } from '../../../utils';
const { encodeStateAsUpdate, mergeUpdates } = BlocksuiteWorkspace.Y;
diff --git a/packages/data-center/src/provider/local/local.spec.ts b/packages/data-center/src/provider/local/local.spec.ts
index 0346c5d050..3e6f524a1b 100644
--- a/packages/data-center/src/provider/local/local.spec.ts
+++ b/packages/data-center/src/provider/local/local.spec.ts
@@ -1,8 +1,10 @@
-import { test, describe, expect } from 'vitest';
+import 'fake-indexeddb/auto';
+
+import { describe, expect, test } from 'vitest';
+
+import { MessageCenter } from '../../message';
import { WorkspaceUnitCollection } from '../../workspace-unit-collection';
import { LocalProvider } from './local';
-import { MessageCenter } from '../../message';
-import 'fake-indexeddb/auto';
describe('local provider', () => {
const workspaceMetaCollection = new WorkspaceUnitCollection();
diff --git a/packages/data-center/src/provider/local/local.ts b/packages/data-center/src/provider/local/local.ts
index 080a80f408..32ab7871bb 100644
--- a/packages/data-center/src/provider/local/local.ts
+++ b/packages/data-center/src/provider/local/local.ts
@@ -1,17 +1,18 @@
-import { BaseProvider } from '../base';
-import type {
- ProviderConstructorParams,
- WorkspaceMeta0,
- UpdateWorkspaceMetaParams,
- CreateWorkspaceInfoParams,
-} from '../base';
+import { uuidv4, Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
+import assert from 'assert';
import { varStorage as storage } from 'lib0/storage';
-import { Workspace as BlocksuiteWorkspace, uuidv4 } from '@blocksuite/store';
+
+import type { WorkspaceUnit } from '../../workspace-unit';
+import type {
+ CreateWorkspaceInfoParams,
+ ProviderConstructorParams,
+ UpdateWorkspaceMetaParams,
+ WorkspaceMeta0,
+} from '../base';
+import { BaseProvider } from '../base';
import { IndexedDBProvider } from './indexeddb/indexeddb';
import { applyLocalUpdates } from './indexeddb/utils';
-import assert from 'assert';
-import { loadWorkspaceUnit, createWorkspaceUnit } from './utils';
-import type { WorkspaceUnit } from '../../workspace-unit';
+import { createWorkspaceUnit, loadWorkspaceUnit } from './utils';
const WORKSPACE_KEY = 'workspaces';
diff --git a/packages/data-center/src/provider/local/utils.ts b/packages/data-center/src/provider/local/utils.ts
index 69fc23b361..70c8f93b7f 100644
--- a/packages/data-center/src/provider/local/utils.ts
+++ b/packages/data-center/src/provider/local/utils.ts
@@ -1,8 +1,8 @@
-import { WorkspaceUnit } from '../../workspace-unit';
-import type { WorkspaceUnitCtorParams } from '../../workspace-unit';
import { createBlocksuiteWorkspace } from '../../utils';
-import { applyLocalUpdates, writeUpdatesToLocal } from './indexeddb/utils';
+import type { WorkspaceUnitCtorParams } from '../../workspace-unit';
+import { WorkspaceUnit } from '../../workspace-unit';
import { setDefaultAvatar } from '../utils';
+import { applyLocalUpdates, writeUpdatesToLocal } from './indexeddb/utils';
export const loadWorkspaceUnit = async (params: WorkspaceUnitCtorParams) => {
const workspaceUnit = new WorkspaceUnit(params);
diff --git a/packages/data-center/src/provider/selfhosted/sync.js b/packages/data-center/src/provider/selfhosted/sync.js
index 54c8dec628..03fca20820 100644
--- a/packages/data-center/src/provider/selfhosted/sync.js
+++ b/packages/data-center/src/provider/selfhosted/sync.js
@@ -7,15 +7,15 @@
// import * as Y from 'yjs'; // eslint-disable-line
import * as bc from 'lib0/broadcastchannel';
-import * as time from 'lib0/time';
-import * as encoding from 'lib0/encoding';
import * as decoding from 'lib0/decoding';
-import * as syncProtocol from 'y-protocols/sync';
+import * as encoding from 'lib0/encoding';
+import * as math from 'lib0/math';
+import { Observable } from 'lib0/observable';
+import * as time from 'lib0/time';
+import * as url from 'lib0/url';
import * as authProtocol from 'y-protocols/auth';
import * as awarenessProtocol from 'y-protocols/awareness';
-import { Observable } from 'lib0/observable';
-import * as math from 'lib0/math';
-import * as url from 'lib0/url';
+import * as syncProtocol from 'y-protocols/sync';
export const messageSync = 0;
export const messageQueryAwareness = 3;
diff --git a/packages/data-center/src/provider/tauri-ipc/__tests__/mock-apis.ts b/packages/data-center/src/provider/tauri-ipc/__tests__/mock-apis.ts
index 04a4954510..e8aa822f5d 100644
--- a/packages/data-center/src/provider/tauri-ipc/__tests__/mock-apis.ts
+++ b/packages/data-center/src/provider/tauri-ipc/__tests__/mock-apis.ts
@@ -1,17 +1,17 @@
-import { PutBlob, GetBlob } from '../ipc/types/blob';
+import { GetBlob, PutBlob } from '../ipc/types/blob';
import {
- YDocumentUpdate,
GetDocumentParameter,
GetDocumentResponse,
+ YDocumentUpdate,
} from '../ipc/types/document';
import { CreateUser, GetUserParameters, User } from '../ipc/types/user';
import {
CreateWorkspace,
CreateWorkspaceResult,
- GetWorkspaces,
- GetWorkspacesResult,
GetWorkspace,
GetWorkspaceResult,
+ GetWorkspaces,
+ GetWorkspacesResult,
} from '../ipc/types/workspace';
export const updateYDocument = async (parameters: YDocumentUpdate) =>
diff --git a/packages/data-center/src/provider/tauri-ipc/__tests__/tauri-ipc.spec.ts b/packages/data-center/src/provider/tauri-ipc/__tests__/tauri-ipc.spec.ts
index f27e6359ff..ec3eef2ddc 100644
--- a/packages/data-center/src/provider/tauri-ipc/__tests__/tauri-ipc.spec.ts
+++ b/packages/data-center/src/provider/tauri-ipc/__tests__/tauri-ipc.spec.ts
@@ -1,11 +1,12 @@
-import { describe, test, expect } from 'vitest';
+import 'fake-indexeddb/auto';
+
+import { describe, expect, test } from 'vitest';
+
+import { MessageCenter } from '../../../message';
import { WorkspaceUnitCollection } from '../../../workspace-unit-collection';
import { TauriIPCProvider } from '..';
-import { MessageCenter } from '../../../message';
import * as ipcMethods from './mock-apis';
-import 'fake-indexeddb/auto';
-
describe('tauri-ipc provider', async () => {
const workspaceMetaCollection = new WorkspaceUnitCollection();
const provider = new TauriIPCProvider({
diff --git a/packages/data-center/src/provider/tauri-ipc/blocksuite-provider/blob.ts b/packages/data-center/src/provider/tauri-ipc/blocksuite-provider/blob.ts
index db56602adc..d83212a78e 100644
--- a/packages/data-center/src/provider/tauri-ipc/blocksuite-provider/blob.ts
+++ b/packages/data-center/src/provider/tauri-ipc/blocksuite-provider/blob.ts
@@ -1,13 +1,15 @@
import { BlobSyncState } from '@blocksuite/store';
-import * as ipcMethods from '../ipc/methods';
import { Signal } from '@blocksuite/store';
+// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import type {
+ BlobId,
BlobProvider,
BlobSyncStateChangeEvent,
- BlobId,
BlobURL,
} from '@blocksuite/store/dist/persistence/blob/types';
+import * as ipcMethods from '../ipc/methods';
+
export class IPCBlobProvider implements BlobProvider {
#ipc = ipcMethods;
diff --git a/packages/data-center/src/provider/tauri-ipc/index.ts b/packages/data-center/src/provider/tauri-ipc/index.ts
index 1fc8b07a59..d53d4b1a91 100644
--- a/packages/data-center/src/provider/tauri-ipc/index.ts
+++ b/packages/data-center/src/provider/tauri-ipc/index.ts
@@ -1,16 +1,16 @@
-import * as Y from 'yjs';
-import assert from 'assert';
-
-import { LocalProvider } from '../local';
-import type { IPCMethodsType } from './ipc/methods';
-import { CreateWorkspaceInfoParams, ProviderConstructorParams } from '../base';
import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
-import { IPCBlobProvider } from './blocksuite-provider/blob';
-import type { WorkspaceUnit } from '../../workspace-unit';
-import { loadWorkspaceUnit } from '../local/utils';
-import { WorkspaceWithPermission } from './ipc/types/workspace';
-import { applyUpdate } from '../../utils';
+import assert from 'assert';
+import * as Y from 'yjs';
+
import { User } from '../../types';
+import { applyUpdate } from '../../utils';
+import type { WorkspaceUnit } from '../../workspace-unit';
+import { CreateWorkspaceInfoParams, ProviderConstructorParams } from '../base';
+import { LocalProvider } from '../local';
+import { loadWorkspaceUnit } from '../local/utils';
+import { IPCBlobProvider } from './blocksuite-provider/blob';
+import type { IPCMethodsType } from './ipc/methods';
+import { WorkspaceWithPermission } from './ipc/types/workspace';
import { createWorkspaceUnit } from './utils';
/**
diff --git a/packages/data-center/src/provider/tauri-ipc/ipc/methods.ts b/packages/data-center/src/provider/tauri-ipc/ipc/methods.ts
index 65cda5092e..ca5a03bed8 100644
--- a/packages/data-center/src/provider/tauri-ipc/ipc/methods.ts
+++ b/packages/data-center/src/provider/tauri-ipc/ipc/methods.ts
@@ -1,9 +1,12 @@
import { invoke } from '@tauri-apps/api';
+
+import { GetBlob, PutBlob } from './types/blob';
import {
GetDocumentParameter,
GetDocumentResponse,
YDocumentUpdate,
} from './types/document';
+import { CreateUser, GetUserParameters } from './types/user';
import {
CreateWorkspace,
CreateWorkspaceResult,
@@ -13,8 +16,6 @@ import {
GetWorkspacesResult,
User,
} from './types/workspace';
-import { GetBlob, PutBlob } from './types/blob';
-import { CreateUser, GetUserParameters } from './types/user';
export interface IPCMethodsType {
updateYDocument: typeof updateYDocument;
diff --git a/packages/data-center/src/provider/tauri-ipc/utils.ts b/packages/data-center/src/provider/tauri-ipc/utils.ts
index 18eea5652c..6a611e4947 100644
--- a/packages/data-center/src/provider/tauri-ipc/utils.ts
+++ b/packages/data-center/src/provider/tauri-ipc/utils.ts
@@ -1,6 +1,6 @@
-import { WorkspaceUnit } from '../../workspace-unit';
-import type { WorkspaceUnitCtorParams } from '../../workspace-unit';
import { createBlocksuiteWorkspace } from '../../utils';
+import type { WorkspaceUnitCtorParams } from '../../workspace-unit';
+import { WorkspaceUnit } from '../../workspace-unit';
import { setDefaultAvatar } from '../utils';
import { IPCBlobProvider } from './blocksuite-provider/blob';
diff --git a/packages/data-center/src/provider/utils.ts b/packages/data-center/src/provider/utils.ts
index 587293697d..aac7c86da1 100644
--- a/packages/data-center/src/provider/utils.ts
+++ b/packages/data-center/src/provider/utils.ts
@@ -1,5 +1,6 @@
-import assert from 'assert';
import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
+import assert from 'assert';
+
import { getDefaultHeadImgBlob } from '../utils';
export const setDefaultAvatar = async (
diff --git a/packages/data-center/src/store.ts b/packages/data-center/src/store.ts
index 4ba2adada1..7f666ba048 100644
--- a/packages/data-center/src/store.ts
+++ b/packages/data-center/src/store.ts
@@ -1,12 +1,12 @@
import {
+ clear,
createStore,
del,
+ entries,
get,
keys,
set,
setMany,
- clear,
- entries,
} from 'idb-keyval';
export type ConfigStore = {
diff --git a/packages/data-center/src/utils/index.ts b/packages/data-center/src/utils/index.ts
index 7e401d68a3..2b34f2819f 100644
--- a/packages/data-center/src/utils/index.ts
+++ b/packages/data-center/src/utils/index.ts
@@ -1,8 +1,8 @@
+import { __unstableSchemas, builtInSchemas } from '@blocksuite/blocks/models';
import {
StoreOptions,
Workspace as BlocksuiteWorkspace,
} from '@blocksuite/store';
-import { builtInSchemas, __unstableSchemas } from '@blocksuite/blocks/models';
export const createBlocksuiteWorkspace = (
workspaceId: string,
diff --git a/packages/data-center/src/workspace-unit-collection.spec.ts b/packages/data-center/src/workspace-unit-collection.spec.ts
index 49c25bc7d7..32ab139721 100644
--- a/packages/data-center/src/workspace-unit-collection.spec.ts
+++ b/packages/data-center/src/workspace-unit-collection.spec.ts
@@ -1,7 +1,8 @@
-import { describe, test, expect } from 'vitest';
-import { WorkspaceUnitCollection } from './workspace-unit-collection';
-import type { WorkspaceUnitCollectionChangeEvent } from './workspace-unit-collection';
+import { describe, expect, test } from 'vitest';
+
import { WorkspaceUnit } from './workspace-unit';
+import type { WorkspaceUnitCollectionChangeEvent } from './workspace-unit-collection';
+import { WorkspaceUnitCollection } from './workspace-unit-collection';
describe('workspace meta collection observable', () => {
const workspaceUnitCollection = new WorkspaceUnitCollection();
diff --git a/packages/data-center/src/workspace-unit-collection.ts b/packages/data-center/src/workspace-unit-collection.ts
index 7cc29f096a..cf1bc2c022 100644
--- a/packages/data-center/src/workspace-unit-collection.ts
+++ b/packages/data-center/src/workspace-unit-collection.ts
@@ -1,7 +1,8 @@
import { Observable } from 'lib0/observable';
+
import type {
- WorkspaceUnit,
UpdateWorkspaceUnitParams,
+ WorkspaceUnit,
} from './workspace-unit';
export interface WorkspaceUnitCollectionScope {
diff --git a/packages/data-center/src/workspace-unit.ts b/packages/data-center/src/workspace-unit.ts
index 7966df129d..612b535006 100644
--- a/packages/data-center/src/workspace-unit.ts
+++ b/packages/data-center/src/workspace-unit.ts
@@ -2,6 +2,7 @@ import {
BlobOptionsGetter,
Workspace as BlocksuiteWorkspace,
} from '@blocksuite/store';
+
import type { User } from './types';
export type SyncMode = 'all' | 'core';
diff --git a/packages/i18n/src/index.ts b/packages/i18n/src/index.ts
index 65dd561129..2e124cc3d6 100644
--- a/packages/i18n/src/index.ts
+++ b/packages/i18n/src/index.ts
@@ -1,5 +1,6 @@
import i18next, { Resource } from 'i18next';
-import { Trans, initReactI18next, useTranslation } from 'react-i18next';
+import { initReactI18next, Trans, useTranslation } from 'react-i18next';
+
import { LOCALES } from './resources';
import type en_US from './resources/en.json';
@@ -24,7 +25,7 @@ declare module 'react-i18next' {
const STORAGE_KEY = 'i18n_lng';
-export { Trans, i18n, useTranslation, LOCALES };
+export { i18n, LOCALES, Trans, useTranslation };
const resources = LOCALES.reduce(
(acc, { tag, res }) => ({ ...acc, [tag]: { translation: res } }),
diff --git a/packages/i18n/src/resources/index.ts b/packages/i18n/src/resources/index.ts
index fa5eaa8d04..d9d34cc739 100644
--- a/packages/i18n/src/resources/index.ts
+++ b/packages/i18n/src/resources/index.ts
@@ -1,11 +1,11 @@
// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
// Run `pnpm run download-resources` to regenerate.
// To overwrite this, please overwrite download.ts script.
-import en from './en.json';
-import zh_Hans from './zh-Hans.json';
-import fr from './fr.json';
import de from './de.json';
+import en from './en.json';
+import fr from './fr.json';
import ru from './ru.json';
+import zh_Hans from './zh-Hans.json';
export const LOCALES = [
{
diff --git a/packages/i18n/src/scripts/download.ts b/packages/i18n/src/scripts/download.ts
index eeb15c8582..cb8c80d804 100644
--- a/packages/i18n/src/scripts/download.ts
+++ b/packages/i18n/src/scripts/download.ts
@@ -1,7 +1,9 @@
// cSpell:ignore Tolgee
import fs from 'node:fs/promises';
import path from 'node:path';
+
import { format } from 'prettier';
+
import { getAllProjectLanguages, getRemoteTranslations } from './api.js';
import type { TranslationRes } from './utils.js';
diff --git a/packages/i18n/src/scripts/sync.ts b/packages/i18n/src/scripts/sync.ts
index b89734e4c4..15e3d076ee 100644
--- a/packages/i18n/src/scripts/sync.ts
+++ b/packages/i18n/src/scripts/sync.ts
@@ -1,6 +1,7 @@
// cSpell:ignore Tolgee
import { readFile } from 'fs/promises';
import path from 'path';
+
import { createsNewKey, getRemoteTranslations } from './api.js';
import type { TranslationRes } from './utils.js';
diff --git a/packages/logger/pages/index.tsx b/packages/logger/pages/index.tsx
index da378dfab3..5e3f2d3581 100644
--- a/packages/logger/pages/index.tsx
+++ b/packages/logger/pages/index.tsx
@@ -1,3 +1,4 @@
+// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import { Logger } from '../src';
const Page = () => {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 09e7c6d36c..846a4924b3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -21,10 +21,13 @@ importers:
'@vitest/coverage-istanbul': ^0.28.5
concurrently: ^7.6.0
cross-env: ^7.0.3
- eslint: ^8.30.0
- eslint-config-next: 12.3.1
+ eslint: ^8.34.0
eslint-config-prettier: ^8.5.0
+ eslint-plugin-import: ^2.27.5
eslint-plugin-prettier: ^4.2.1
+ eslint-plugin-react: ^7.32.2
+ eslint-plugin-simple-import-sort: ^10.0.0
+ eslint-plugin-unused-imports: ^2.0.0
fake-indexeddb: 4.0.1
got: ^12.5.3
husky: ^8.0.2
@@ -38,15 +41,18 @@ importers:
'@playwright/test': 1.29.1
'@types/eslint': 8.4.10
'@types/node': 18.11.18
- '@typescript-eslint/eslint-plugin': 5.48.0_vqm4js66qtp4h6afqe3btrngbi
- '@typescript-eslint/parser': 5.48.0_ifw3q4r6iq3gw7cspzs2siycvu
+ '@typescript-eslint/eslint-plugin': 5.48.0_ddfje6clmktndfpbpk5swat3gi
+ '@typescript-eslint/parser': 5.48.0_7kw3g6rralp5ps6mg3uyzz6azm
'@vitest/coverage-istanbul': 0.28.5
concurrently: 7.6.0
cross-env: 7.0.3
- eslint: 8.31.0
- eslint-config-next: 12.3.1_ifw3q4r6iq3gw7cspzs2siycvu
- eslint-config-prettier: 8.5.0_eslint@8.31.0
- eslint-plugin-prettier: 4.2.1_vkmhlldugy3fnk7p2bqhsfnaiq
+ eslint: 8.34.0
+ eslint-config-prettier: 8.5.0_eslint@8.34.0
+ eslint-plugin-import: 2.27.5_srp5jszoagkj3pnpsesjjepemq
+ eslint-plugin-prettier: 4.2.1_f52onrjfrbj5enknkp6ytmuaxu
+ eslint-plugin-react: 7.32.2_eslint@8.34.0
+ eslint-plugin-simple-import-sort: 10.0.0_eslint@8.34.0
+ eslint-plugin-unused-imports: 2.0.0_3p5c3yu7rnlwfc7nnagwrjhciu
fake-indexeddb: 4.0.1
got: 12.5.3
husky: 8.0.2
@@ -67,31 +73,9 @@ importers:
'@types/node': ^18.11.17
'@types/react': ^18.0.26
'@types/react-dom': ^18.0.9
- '@typescript-eslint/eslint-plugin': 5.47.0
- '@typescript-eslint/parser': 5.47.0
concurrently: ^7.6.0
cross-env: ^7.0.3
esbuild: ^0.16.10
- eslint: 8.30.0
- eslint-config-prettier: 8.5.0
- eslint-config-standard: ^17.0.0
- eslint-config-standard-with-typescript: 24.0.0
- eslint-import-resolver-alias: 1.1.2
- eslint-import-resolver-typescript: 3.5.2
- eslint-plugin-autofix: 1.1.0
- eslint-plugin-html: 7.1.0
- eslint-plugin-import: ^2.26.0
- eslint-plugin-n: ^15.6.0
- eslint-plugin-node: 11.1.0
- eslint-plugin-prettier: 4.2.1
- eslint-plugin-promise: ^6.1.1
- eslint-plugin-react: 7.31.11
- eslint-plugin-react-hooks: 4.6.0
- eslint-plugin-security: 1.5.0
- eslint-plugin-security-node: 1.1.1
- eslint-plugin-typescript-sort-keys: 2.1.0
- eslint-plugin-unicorn: 45.0.2
- eslint-plugin-unused-imports: 2.0.0
json-schema-to-typescript: ^11.0.2
lib0: ^0.2.58
next: ^13.1.6
@@ -129,31 +113,9 @@ importers:
'@types/node': 18.11.18
'@types/react': 18.0.27
'@types/react-dom': 18.0.10
- '@typescript-eslint/eslint-plugin': 5.47.0_u2dlljfmmww5bdycoao24sqa5q
- '@typescript-eslint/parser': 5.47.0_req3y6wneysbxs6mlxvssjag2i
concurrently: 7.6.0
cross-env: 7.0.3
esbuild: 0.16.17
- eslint: 8.30.0
- eslint-config-prettier: 8.5.0_eslint@8.30.0
- eslint-config-standard: 17.0.0_bdcrn6xmt4gzw7vnrxwhbmoneu
- eslint-config-standard-with-typescript: 24.0.0_qmwxcimoyk7nz7sp3ytf5wrybi
- eslint-import-resolver-alias: 1.1.2_fkfqfehjtk7sk2efaqbgxsuasa
- eslint-import-resolver-typescript: 3.5.2_2lbwmhbr7bncddqbzzpg77o75m
- eslint-plugin-autofix: 1.1.0_eslint@8.30.0
- eslint-plugin-html: 7.1.0
- eslint-plugin-import: 2.26.0_p6eswnf3xl3aaa2djfyukgz5eq
- eslint-plugin-n: 15.6.1_eslint@8.30.0
- eslint-plugin-node: 11.1.0_eslint@8.30.0
- eslint-plugin-prettier: 4.2.1_kl4pe43v5b43npmso5hoplpbyi
- eslint-plugin-promise: 6.1.1_eslint@8.30.0
- eslint-plugin-react: 7.31.11_eslint@8.30.0
- eslint-plugin-react-hooks: 4.6.0_eslint@8.30.0
- eslint-plugin-security: 1.5.0
- eslint-plugin-security-node: 1.1.1
- eslint-plugin-typescript-sort-keys: 2.1.0_u2dlljfmmww5bdycoao24sqa5q
- eslint-plugin-unicorn: 45.0.2_eslint@8.30.0
- eslint-plugin-unused-imports: 2.0.0_juver2u3xbiwnjfu6d55vmnoem
prettier: 2.8.1
rimraf: 3.0.2
typescript: 4.9.5
@@ -189,10 +151,7 @@ importers:
cmdk: ^0.1.20
css-spring: ^4.1.0
dayjs: ^1.11.7
- eslint: 8.22.0
eslint-config-next: 12.3.1
- eslint-config-prettier: ^8.5.0
- eslint-plugin-prettier: ^4.2.1
lit: ^2.6.1
next: 13.1.0
next-debug-local: ^0.1.5
@@ -243,10 +202,7 @@ importers:
'@types/react-dom': 18.0.6
'@types/wicg-file-system-access': 2020.9.5
chalk: 4.1.2
- eslint: 8.22.0
- eslint-config-next: 12.3.1_hp3n5f6hao4yyg55iy34n6oive
- eslint-config-prettier: 8.5.0_eslint@8.22.0
- eslint-plugin-prettier: 4.2.1_wc6gesg72dpfw5d6hhumtqiqsi
+ eslint-config-next: 12.3.1_typescript@4.9.5
raw-loader: 4.0.2
typescript: 4.9.5
@@ -3523,16 +3479,6 @@ packages:
dev: true
optional: true
- /@eslint-community/eslint-utils/4.1.2_eslint@8.30.0:
- resolution: {integrity: sha512-7qELuQWWjVDdVsFQ5+beUl+KPczrEDA7S3zM4QUd/bJl7oXgsmpXaEVqrRTnOBqenOV4rWf2kVZk2Ot085zPWA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- eslint: 8.30.0
- eslint-visitor-keys: 3.3.0
- 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}
@@ -4055,17 +4001,6 @@ packages:
yargs: 16.2.0
dev: false
- /@humanwhocodes/config-array/0.10.4:
- resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==}
- engines: {node: '>=10.10.0'}
- dependencies:
- '@humanwhocodes/object-schema': 1.2.1
- debug: 4.3.4
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/@humanwhocodes/config-array/0.11.8:
resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
engines: {node: '>=10.10.0'}
@@ -4077,10 +4012,6 @@ packages:
- supports-color
dev: true
- /@humanwhocodes/gitignore-to-minimatch/1.0.2:
- resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==}
- dev: true
-
/@humanwhocodes/module-importer/1.0.1:
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
@@ -4977,18 +4908,6 @@ packages:
fastq: 1.13.0
dev: true
- /@pkgr/utils/2.3.1:
- resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
- dependencies:
- cross-spawn: 7.0.3
- is-glob: 4.0.3
- open: 8.4.1
- picocolors: 1.0.0
- tiny-glob: 0.2.9
- tslib: 2.5.0
- dev: true
-
/@playwright/test/1.29.1:
resolution: {integrity: sha512-iQxk2DX5U9wOGV3+/Jh9OHPsw5H3mleUL2S4BgQuwtlAfK3PnKvn38m4Rg9zIViGHVW24opSm99HQm/UFLEy6w==}
engines: {node: '>=14'}
@@ -6753,34 +6672,7 @@ packages:
'@types/yargs-parser': 21.0.0
dev: true
- /@typescript-eslint/eslint-plugin/5.47.0_u2dlljfmmww5bdycoao24sqa5q:
- resolution: {integrity: sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- '@typescript-eslint/parser': ^5.0.0
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/parser': 5.47.0_req3y6wneysbxs6mlxvssjag2i
- '@typescript-eslint/scope-manager': 5.47.0
- '@typescript-eslint/type-utils': 5.47.0_req3y6wneysbxs6mlxvssjag2i
- '@typescript-eslint/utils': 5.47.0_req3y6wneysbxs6mlxvssjag2i
- debug: 4.3.4
- eslint: 8.30.0
- ignore: 5.2.0
- natural-compare-lite: 1.4.0
- regexpp: 3.2.0
- semver: 7.3.8
- tsutils: 3.21.0_typescript@4.9.5
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/eslint-plugin/5.48.0_vqm4js66qtp4h6afqe3btrngbi:
+ /@typescript-eslint/eslint-plugin/5.48.0_ddfje6clmktndfpbpk5swat3gi:
resolution: {integrity: sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -6791,12 +6683,12 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/parser': 5.48.0_ifw3q4r6iq3gw7cspzs2siycvu
+ '@typescript-eslint/parser': 5.48.0_7kw3g6rralp5ps6mg3uyzz6azm
'@typescript-eslint/scope-manager': 5.48.0
- '@typescript-eslint/type-utils': 5.48.0_ifw3q4r6iq3gw7cspzs2siycvu
- '@typescript-eslint/utils': 5.48.0_ifw3q4r6iq3gw7cspzs2siycvu
+ '@typescript-eslint/type-utils': 5.48.0_7kw3g6rralp5ps6mg3uyzz6azm
+ '@typescript-eslint/utils': 5.48.0_7kw3g6rralp5ps6mg3uyzz6azm
debug: 4.3.4
- eslint: 8.31.0
+ eslint: 8.34.0
ignore: 5.2.0
natural-compare-lite: 1.4.0
regexpp: 3.2.0
@@ -6807,40 +6699,7 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/experimental-utils/5.51.0_req3y6wneysbxs6mlxvssjag2i:
- resolution: {integrity: sha512-8/3+ZyBENl2aog1/QB3S39ptkZ2oRhDB+sJt15UWXBE3skgwL1C8BN9RjpOyhTejwR2hVrvqEjcYcNY6qtZ7nw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- '@typescript-eslint/utils': 5.51.0_req3y6wneysbxs6mlxvssjag2i
- eslint: 8.30.0
- transitivePeerDependencies:
- - supports-color
- - typescript
- dev: true
-
- /@typescript-eslint/parser/5.47.0_req3y6wneysbxs6mlxvssjag2i:
- resolution: {integrity: sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/scope-manager': 5.47.0
- '@typescript-eslint/types': 5.47.0
- '@typescript-eslint/typescript-estree': 5.47.0_typescript@4.9.5
- debug: 4.3.4
- eslint: 8.30.0
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/parser/5.48.0_hp3n5f6hao4yyg55iy34n6oive:
+ /@typescript-eslint/parser/5.48.0_7kw3g6rralp5ps6mg3uyzz6azm:
resolution: {integrity: sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -6854,13 +6713,13 @@ packages:
'@typescript-eslint/types': 5.48.0
'@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.5
debug: 4.3.4
- eslint: 8.22.0
+ eslint: 8.34.0
typescript: 4.9.5
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/parser/5.48.0_ifw3q4r6iq3gw7cspzs2siycvu:
+ /@typescript-eslint/parser/5.48.0_typescript@4.9.5:
resolution: {integrity: sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -6874,40 +6733,11 @@ packages:
'@typescript-eslint/types': 5.48.0
'@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.5
debug: 4.3.4
- eslint: 8.31.0
typescript: 4.9.5
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/parser/5.48.0_req3y6wneysbxs6mlxvssjag2i:
- resolution: {integrity: sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/scope-manager': 5.48.0
- '@typescript-eslint/types': 5.48.0
- '@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.5
- debug: 4.3.4
- eslint: 8.30.0
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/scope-manager/5.47.0:
- resolution: {integrity: sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.47.0
- '@typescript-eslint/visitor-keys': 5.47.0
- dev: true
-
/@typescript-eslint/scope-manager/5.48.0:
resolution: {integrity: sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -6916,35 +6746,7 @@ packages:
'@typescript-eslint/visitor-keys': 5.48.0
dev: true
- /@typescript-eslint/scope-manager/5.51.0:
- resolution: {integrity: sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.51.0
- '@typescript-eslint/visitor-keys': 5.51.0
- dev: true
-
- /@typescript-eslint/type-utils/5.47.0_req3y6wneysbxs6mlxvssjag2i:
- resolution: {integrity: sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/typescript-estree': 5.47.0_typescript@4.9.5
- '@typescript-eslint/utils': 5.47.0_req3y6wneysbxs6mlxvssjag2i
- debug: 4.3.4
- eslint: 8.30.0
- tsutils: 3.21.0_typescript@4.9.5
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/type-utils/5.48.0_ifw3q4r6iq3gw7cspzs2siycvu:
+ /@typescript-eslint/type-utils/5.48.0_7kw3g6rralp5ps6mg3uyzz6azm:
resolution: {integrity: sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -6955,51 +6757,20 @@ packages:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.5
- '@typescript-eslint/utils': 5.48.0_ifw3q4r6iq3gw7cspzs2siycvu
+ '@typescript-eslint/utils': 5.48.0_7kw3g6rralp5ps6mg3uyzz6azm
debug: 4.3.4
- eslint: 8.31.0
+ eslint: 8.34.0
tsutils: 3.21.0_typescript@4.9.5
typescript: 4.9.5
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/types/5.47.0:
- resolution: {integrity: sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
/@typescript-eslint/types/5.48.0:
resolution: {integrity: sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
- /@typescript-eslint/types/5.51.0:
- resolution: {integrity: sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /@typescript-eslint/typescript-estree/5.47.0_typescript@4.9.5:
- resolution: {integrity: sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/types': 5.47.0
- '@typescript-eslint/visitor-keys': 5.47.0
- debug: 4.3.4
- globby: 11.1.0
- is-glob: 4.0.3
- semver: 7.3.8
- tsutils: 3.21.0_typescript@4.9.5
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/@typescript-eslint/typescript-estree/5.48.0_typescript@4.9.5:
resolution: {integrity: sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -7021,48 +6792,7 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/typescript-estree/5.51.0_typescript@4.9.5:
- resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/types': 5.51.0
- '@typescript-eslint/visitor-keys': 5.51.0
- debug: 4.3.4
- globby: 11.1.0
- is-glob: 4.0.3
- semver: 7.3.8
- tsutils: 3.21.0_typescript@4.9.5
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/utils/5.47.0_req3y6wneysbxs6mlxvssjag2i:
- resolution: {integrity: sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- '@types/json-schema': 7.0.11
- '@types/semver': 7.3.13
- '@typescript-eslint/scope-manager': 5.47.0
- '@typescript-eslint/types': 5.47.0
- '@typescript-eslint/typescript-estree': 5.47.0_typescript@4.9.5
- eslint: 8.30.0
- eslint-scope: 5.1.1
- eslint-utils: 3.0.0_eslint@8.30.0
- semver: 7.3.8
- transitivePeerDependencies:
- - supports-color
- - typescript
- dev: true
-
- /@typescript-eslint/utils/5.48.0_ifw3q4r6iq3gw7cspzs2siycvu:
+ /@typescript-eslint/utils/5.48.0_7kw3g6rralp5ps6mg3uyzz6azm:
resolution: {integrity: sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -7073,43 +6803,15 @@ packages:
'@typescript-eslint/scope-manager': 5.48.0
'@typescript-eslint/types': 5.48.0
'@typescript-eslint/typescript-estree': 5.48.0_typescript@4.9.5
- eslint: 8.31.0
+ eslint: 8.34.0
eslint-scope: 5.1.1
- eslint-utils: 3.0.0_eslint@8.31.0
+ eslint-utils: 3.0.0_eslint@8.34.0
semver: 7.3.8
transitivePeerDependencies:
- supports-color
- typescript
dev: true
- /@typescript-eslint/utils/5.51.0_req3y6wneysbxs6mlxvssjag2i:
- resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- '@types/json-schema': 7.0.11
- '@types/semver': 7.3.13
- '@typescript-eslint/scope-manager': 5.51.0
- '@typescript-eslint/types': 5.51.0
- '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5
- eslint: 8.30.0
- eslint-scope: 5.1.1
- eslint-utils: 3.0.0_eslint@8.30.0
- semver: 7.3.8
- transitivePeerDependencies:
- - supports-color
- - typescript
- dev: true
-
- /@typescript-eslint/visitor-keys/5.47.0:
- resolution: {integrity: sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.47.0
- eslint-visitor-keys: 3.3.0
- dev: true
-
/@typescript-eslint/visitor-keys/5.48.0:
resolution: {integrity: sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -7118,14 +6820,6 @@ packages:
eslint-visitor-keys: 3.3.0
dev: true
- /@typescript-eslint/visitor-keys/5.51.0:
- resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.51.0
- eslint-visitor-keys: 3.3.0
- dev: true
-
/@vitejs/plugin-react/3.1.0_vite@4.1.1:
resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -7353,12 +7047,12 @@ packages:
acorn: 7.4.1
dev: true
- /acorn-jsx/5.3.2_acorn@8.8.0:
+ /acorn-jsx/5.3.2_acorn@8.8.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- acorn: 8.8.0
+ acorn: 8.8.2
dev: true
/acorn-walk/7.2.0:
@@ -7580,13 +7274,13 @@ packages:
engines: {node: '>=8'}
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.21.1
es-shim-unscopables: 1.0.0
dev: true
@@ -7992,17 +7686,6 @@ packages:
ieee754: 1.2.1
dev: false
- /builtin-modules/3.3.0:
- resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
- engines: {node: '>=6'}
- dev: true
-
- /builtins/5.0.1:
- resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==}
- dependencies:
- semver: 7.3.8
- dev: true
-
/bytes/3.0.0:
resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
engines: {node: '>= 0.8'}
@@ -8198,13 +7881,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /clean-regexp/1.0.0:
- resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
- engines: {node: '>=4'}
- dependencies:
- escape-string-regexp: 1.0.5
- dev: true
-
/clean-stack/2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
@@ -8810,43 +8486,16 @@ packages:
csstype: 3.1.1
dev: false
- /dom-serializer/2.0.0:
- resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
- dependencies:
- domelementtype: 2.3.0
- domhandler: 5.0.3
- entities: 4.4.0
- dev: true
-
- /domelementtype/2.3.0:
- resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
- dev: true
-
/domexception/1.0.1:
resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==}
dependencies:
webidl-conversions: 4.0.2
dev: true
- /domhandler/5.0.3:
- resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
- engines: {node: '>= 4'}
- dependencies:
- domelementtype: 2.3.0
- dev: true
-
/domino/2.1.6:
resolution: {integrity: sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==}
dev: false
- /domutils/3.0.1:
- resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==}
- dependencies:
- dom-serializer: 2.0.0
- domelementtype: 2.3.0
- domhandler: 5.0.3
- dev: true
-
/dotenv-expand/10.0.0:
resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==}
engines: {node: '>=12'}
@@ -8931,11 +8580,6 @@ packages:
ansi-colors: 4.1.3
dev: true
- /entities/4.4.0:
- resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==}
- engines: {node: '>=0.12'}
- dev: true
-
/envinfo/7.8.1:
resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==}
engines: {node: '>=4'}
@@ -8951,35 +8595,6 @@ packages:
dependencies:
is-arrayish: 0.2.1
- /es-abstract/1.20.2:
- resolution: {integrity: sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- es-to-primitive: 1.2.1
- function-bind: 1.1.1
- function.prototype.name: 1.1.5
- get-intrinsic: 1.1.3
- get-symbol-description: 1.0.0
- 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
- is-negative-zero: 2.0.2
- is-regex: 1.1.4
- is-shared-array-buffer: 1.0.2
- is-string: 1.0.7
- is-weakref: 1.0.2
- object-inspect: 1.12.2
- 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
- unbox-primitive: 1.0.2
- dev: true
-
/es-abstract/1.21.1:
resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==}
engines: {node: '>= 0.4'}
@@ -9168,7 +8783,7 @@ packages:
source-map: 0.6.1
dev: true
- /eslint-config-next/12.3.1_hp3n5f6hao4yyg55iy34n6oive:
+ /eslint-config-next/12.3.1_typescript@4.9.5:
resolution: {integrity: sha512-EN/xwKPU6jz1G0Qi6Bd/BqMnHLyRAL0VsaQaWA7F3KkjAgZHi4f1uL1JKGWNxdQpHTW/sdGONBd0bzxUka/DJg==}
peerDependencies:
eslint: ^7.23.0 || ^8.0.0
@@ -9179,127 +8794,39 @@ packages:
dependencies:
'@next/eslint-plugin-next': 12.3.1
'@rushstack/eslint-patch': 1.2.0
- '@typescript-eslint/parser': 5.48.0_hp3n5f6hao4yyg55iy34n6oive
- eslint: 8.22.0
- eslint-import-resolver-node: 0.3.6
- 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.11_eslint@8.22.0
- eslint-plugin-react-hooks: 4.6.0_eslint@8.22.0
+ '@typescript-eslint/parser': 5.48.0_typescript@4.9.5
+ eslint-import-resolver-node: 0.3.7
+ eslint-import-resolver-typescript: 2.7.1_5rfvta7qn57kxm7ir36ta6fixq
+ eslint-plugin-import: 2.27.5_yyrap6asrtdcelhal2ferseywy
+ eslint-plugin-jsx-a11y: 6.6.1
+ eslint-plugin-react: 7.32.2
+ eslint-plugin-react-hooks: 4.6.0
typescript: 4.9.5
transitivePeerDependencies:
- eslint-import-resolver-webpack
- supports-color
dev: true
- /eslint-config-next/12.3.1_ifw3q4r6iq3gw7cspzs2siycvu:
- resolution: {integrity: sha512-EN/xwKPU6jz1G0Qi6Bd/BqMnHLyRAL0VsaQaWA7F3KkjAgZHi4f1uL1JKGWNxdQpHTW/sdGONBd0bzxUka/DJg==}
- peerDependencies:
- eslint: ^7.23.0 || ^8.0.0
- typescript: '>=3.3.1'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@next/eslint-plugin-next': 12.3.1
- '@rushstack/eslint-patch': 1.2.0
- '@typescript-eslint/parser': 5.48.0_ifw3q4r6iq3gw7cspzs2siycvu
- 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.11_eslint@8.31.0
- eslint-plugin-react-hooks: 4.6.0_eslint@8.31.0
- typescript: 4.9.5
- transitivePeerDependencies:
- - eslint-import-resolver-webpack
- - supports-color
- dev: true
-
- /eslint-config-prettier/8.5.0_eslint@8.22.0:
+ /eslint-config-prettier/8.5.0_eslint@8.34.0:
resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
dependencies:
- eslint: 8.22.0
+ eslint: 8.34.0
dev: true
- /eslint-config-prettier/8.5.0_eslint@8.30.0:
- resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
- hasBin: true
- peerDependencies:
- eslint: '>=7.0.0'
- dependencies:
- eslint: 8.30.0
- dev: true
-
- /eslint-config-prettier/8.5.0_eslint@8.31.0:
- resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
- hasBin: true
- peerDependencies:
- eslint: '>=7.0.0'
- dependencies:
- eslint: 8.31.0
- dev: true
-
- /eslint-config-standard-with-typescript/24.0.0_qmwxcimoyk7nz7sp3ytf5wrybi:
- resolution: {integrity: sha512-vEnGXZ5aiR1enl9652iIP4nTpY3GPcNEwuhrsPbKO3Ce3D6T3yCqZdkUPk8nJetfdL/yO0DLsHg2d/l9iECIdg==}
- peerDependencies:
- '@typescript-eslint/eslint-plugin': ^5.0.0
- eslint: ^8.0.1
- eslint-plugin-import: ^2.25.2
- eslint-plugin-n: ^15.0.0
- eslint-plugin-promise: ^6.0.0
- typescript: '*'
- dependencies:
- '@typescript-eslint/eslint-plugin': 5.47.0_u2dlljfmmww5bdycoao24sqa5q
- '@typescript-eslint/parser': 5.48.0_req3y6wneysbxs6mlxvssjag2i
- eslint: 8.30.0
- eslint-config-standard: 17.0.0_bdcrn6xmt4gzw7vnrxwhbmoneu
- eslint-plugin-import: 2.26.0_p6eswnf3xl3aaa2djfyukgz5eq
- eslint-plugin-n: 15.6.1_eslint@8.30.0
- eslint-plugin-promise: 6.1.1_eslint@8.30.0
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /eslint-config-standard/17.0.0_bdcrn6xmt4gzw7vnrxwhbmoneu:
- resolution: {integrity: sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==}
- peerDependencies:
- eslint: ^8.0.1
- eslint-plugin-import: ^2.25.2
- eslint-plugin-n: ^15.0.0
- eslint-plugin-promise: ^6.0.0
- dependencies:
- eslint: 8.30.0
- eslint-plugin-import: 2.26.0_p6eswnf3xl3aaa2djfyukgz5eq
- eslint-plugin-n: 15.6.1_eslint@8.30.0
- eslint-plugin-promise: 6.1.1_eslint@8.30.0
- dev: true
-
- /eslint-import-resolver-alias/1.1.2_fkfqfehjtk7sk2efaqbgxsuasa:
- resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==}
- engines: {node: '>= 4'}
- peerDependencies:
- eslint-plugin-import: '>=1.4.0'
- dependencies:
- eslint-plugin-import: 2.26.0_p6eswnf3xl3aaa2djfyukgz5eq
- dev: true
-
- /eslint-import-resolver-node/0.3.6:
- resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==}
+ /eslint-import-resolver-node/0.3.7:
+ resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==}
dependencies:
debug: 3.2.7
+ is-core-module: 2.11.0
resolve: 1.22.1
transitivePeerDependencies:
- supports-color
dev: true
- /eslint-import-resolver-typescript/2.7.1_2iahngt3u2tkbdlu6s4gkur3pu:
+ /eslint-import-resolver-typescript/2.7.1_5rfvta7qn57kxm7ir36ta6fixq:
resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==}
engines: {node: '>=4'}
peerDependencies:
@@ -9307,8 +8834,7 @@ packages:
eslint-plugin-import: '*'
dependencies:
debug: 4.3.4
- eslint: 8.22.0
- eslint-plugin-import: 2.26.0_zznokraecjt4ixvvqcdste35vq
+ eslint-plugin-import: 2.27.5_yyrap6asrtdcelhal2ferseywy
glob: 7.2.3
is-glob: 4.0.3
resolve: 1.22.1
@@ -9317,45 +8843,7 @@ packages:
- supports-color
dev: true
- /eslint-import-resolver-typescript/2.7.1_ol7jqilc3wemtdbq3nzhywgxq4:
- resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==}
- engines: {node: '>=4'}
- peerDependencies:
- eslint: '*'
- eslint-plugin-import: '*'
- dependencies:
- debug: 4.3.4
- eslint: 8.31.0
- eslint-plugin-import: 2.26.0_o2ymnzkcx6ynnxgq4q5neiwzpe
- glob: 7.2.3
- is-glob: 4.0.3
- resolve: 1.22.1
- tsconfig-paths: 3.14.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /eslint-import-resolver-typescript/3.5.2_2lbwmhbr7bncddqbzzpg77o75m:
- resolution: {integrity: sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- eslint-plugin-import: '*'
- dependencies:
- debug: 4.3.4
- enhanced-resolve: 5.12.0
- eslint: 8.30.0
- eslint-plugin-import: 2.26.0_p6eswnf3xl3aaa2djfyukgz5eq
- get-tsconfig: 4.4.0
- globby: 13.1.3
- is-core-module: 2.11.0
- is-glob: 4.0.3
- synckit: 0.8.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /eslint-module-utils/2.7.4_rwfyzivsgbql5kqdd6lovekmku:
+ /eslint-module-utils/2.7.4_7tt65c33h36wrjxv6iulwpakhy:
resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
engines: {node: '>=4'}
peerDependencies:
@@ -9376,16 +8864,15 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
- '@typescript-eslint/parser': 5.48.0_ifw3q4r6iq3gw7cspzs2siycvu
+ '@typescript-eslint/parser': 5.48.0_7kw3g6rralp5ps6mg3uyzz6azm
debug: 3.2.7
- eslint: 8.31.0
- eslint-import-resolver-node: 0.3.6
- eslint-import-resolver-typescript: 2.7.1_ol7jqilc3wemtdbq3nzhywgxq4
+ eslint: 8.34.0
+ eslint-import-resolver-node: 0.3.7
transitivePeerDependencies:
- supports-color
dev: true
- /eslint-module-utils/2.7.4_tq5q2x4pem2nmnr5fqx62jngeq:
+ /eslint-module-utils/2.7.4_x7naht655oki6kt37ohcqz4scm:
resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
engines: {node: '>=4'}
peerDependencies:
@@ -9406,89 +8893,49 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
- '@typescript-eslint/parser': 5.48.0_hp3n5f6hao4yyg55iy34n6oive
+ '@typescript-eslint/parser': 5.48.0_typescript@4.9.5
debug: 3.2.7
- eslint: 8.22.0
- eslint-import-resolver-node: 0.3.6
- eslint-import-resolver-typescript: 2.7.1_2iahngt3u2tkbdlu6s4gkur3pu
+ eslint-import-resolver-node: 0.3.7
+ eslint-import-resolver-typescript: 2.7.1_5rfvta7qn57kxm7ir36ta6fixq
transitivePeerDependencies:
- supports-color
dev: true
- /eslint-module-utils/2.7.4_zdsb5ko3hocyqbh4wogr2krc6u:
- resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
+ /eslint-plugin-import/2.27.5_srp5jszoagkj3pnpsesjjepemq:
+ resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
- eslint: '*'
- eslint-import-resolver-node: '*'
- eslint-import-resolver-typescript: '*'
- eslint-import-resolver-webpack: '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
peerDependenciesMeta:
'@typescript-eslint/parser':
optional: true
- eslint:
- optional: true
- eslint-import-resolver-node:
- optional: true
- eslint-import-resolver-typescript:
- optional: true
- eslint-import-resolver-webpack:
- optional: true
dependencies:
- '@typescript-eslint/parser': 5.47.0_req3y6wneysbxs6mlxvssjag2i
+ '@typescript-eslint/parser': 5.48.0_7kw3g6rralp5ps6mg3uyzz6azm
+ array-includes: 3.1.6
+ array.prototype.flat: 1.3.1
+ array.prototype.flatmap: 1.3.1
debug: 3.2.7
- eslint: 8.30.0
- eslint-import-resolver-node: 0.3.6
- eslint-import-resolver-typescript: 3.5.2_2lbwmhbr7bncddqbzzpg77o75m
+ doctrine: 2.1.0
+ eslint: 8.34.0
+ eslint-import-resolver-node: 0.3.7
+ eslint-module-utils: 2.7.4_7tt65c33h36wrjxv6iulwpakhy
+ has: 1.0.3
+ is-core-module: 2.11.0
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.values: 1.1.6
+ resolve: 1.22.1
+ semver: 6.3.0
+ tsconfig-paths: 3.14.1
transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
- supports-color
dev: true
- /eslint-plugin-autofix/1.1.0_eslint@8.30.0:
- resolution: {integrity: sha512-aKQ7s6CTeJRJgnhSlsGI7kQhnNCa1q3UYBM+9PTEgvdC5b+GjV/SZA233VNqkoBldb7/BkeWBRjorUjxeUfrxA==}
- engines: {node: '>=8'}
- peerDependencies:
- eslint: '>= 5.12.1'
- dependencies:
- eslint: 8.30.0
- eslint-rule-composer: 0.3.0
- espree: 9.4.0
- esutils: 2.0.3
- lodash: 4.17.21
- string-similarity: 4.0.4
- dev: true
-
- /eslint-plugin-es/3.0.1_eslint@8.30.0:
- resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==}
- engines: {node: '>=8.10.0'}
- peerDependencies:
- eslint: '>=4.19.1'
- dependencies:
- eslint: 8.30.0
- eslint-utils: 2.1.0
- regexpp: 3.2.0
- dev: true
-
- /eslint-plugin-es/4.1.0_eslint@8.30.0:
- resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==}
- engines: {node: '>=8.10.0'}
- peerDependencies:
- eslint: '>=4.19.1'
- dependencies:
- eslint: 8.30.0
- eslint-utils: 2.1.0
- regexpp: 3.2.0
- dev: true
-
- /eslint-plugin-html/7.1.0:
- resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==}
- dependencies:
- htmlparser2: 8.0.1
- dev: true
-
- /eslint-plugin-import/2.26.0_o2ymnzkcx6ynnxgq4q5neiwzpe:
- resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==}
+ /eslint-plugin-import/2.27.5_yyrap6asrtdcelhal2ferseywy:
+ resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
@@ -9497,20 +8944,21 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
- '@typescript-eslint/parser': 5.48.0_ifw3q4r6iq3gw7cspzs2siycvu
+ '@typescript-eslint/parser': 5.48.0_typescript@4.9.5
array-includes: 3.1.6
- array.prototype.flat: 1.3.0
- debug: 2.6.9
+ array.prototype.flat: 1.3.1
+ array.prototype.flatmap: 1.3.1
+ debug: 3.2.7
doctrine: 2.1.0
- eslint: 8.31.0
- eslint-import-resolver-node: 0.3.6
- eslint-module-utils: 2.7.4_rwfyzivsgbql5kqdd6lovekmku
+ eslint-import-resolver-node: 0.3.7
+ eslint-module-utils: 2.7.4_x7naht655oki6kt37ohcqz4scm
has: 1.0.3
is-core-module: 2.11.0
is-glob: 4.0.3
minimatch: 3.1.2
object.values: 1.1.6
resolve: 1.22.1
+ semver: 6.3.0
tsconfig-paths: 3.14.1
transitivePeerDependencies:
- eslint-import-resolver-typescript
@@ -9518,69 +8966,7 @@ packages:
- supports-color
dev: true
- /eslint-plugin-import/2.26.0_p6eswnf3xl3aaa2djfyukgz5eq:
- resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
- dependencies:
- '@typescript-eslint/parser': 5.47.0_req3y6wneysbxs6mlxvssjag2i
- array-includes: 3.1.6
- array.prototype.flat: 1.3.0
- debug: 2.6.9
- doctrine: 2.1.0
- eslint: 8.30.0
- eslint-import-resolver-node: 0.3.6
- eslint-module-utils: 2.7.4_zdsb5ko3hocyqbh4wogr2krc6u
- has: 1.0.3
- is-core-module: 2.11.0
- is-glob: 4.0.3
- minimatch: 3.1.2
- object.values: 1.1.6
- resolve: 1.22.1
- tsconfig-paths: 3.14.1
- transitivePeerDependencies:
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - supports-color
- dev: true
-
- /eslint-plugin-import/2.26.0_zznokraecjt4ixvvqcdste35vq:
- resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
- dependencies:
- '@typescript-eslint/parser': 5.48.0_hp3n5f6hao4yyg55iy34n6oive
- array-includes: 3.1.6
- array.prototype.flat: 1.3.0
- 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.11.0
- is-glob: 4.0.3
- minimatch: 3.1.2
- object.values: 1.1.6
- resolve: 1.22.1
- tsconfig-paths: 3.14.1
- transitivePeerDependencies:
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - supports-color
- dev: true
-
- /eslint-plugin-jsx-a11y/6.6.1_eslint@8.22.0:
+ /eslint-plugin-jsx-a11y/6.6.1:
resolution: {integrity: sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==}
engines: {node: '>=4.0'}
peerDependencies:
@@ -9594,7 +8980,6 @@ packages:
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
@@ -9602,61 +8987,7 @@ packages:
semver: 6.3.0
dev: true
- /eslint-plugin-jsx-a11y/6.6.1_eslint@8.31.0:
- resolution: {integrity: sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==}
- engines: {node: '>=4.0'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
- dependencies:
- '@babel/runtime': 7.20.7
- aria-query: 4.2.2
- array-includes: 3.1.6
- ast-types-flow: 0.0.7
- axe-core: 4.4.3
- 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
- minimatch: 3.1.2
- semver: 6.3.0
- dev: true
-
- /eslint-plugin-n/15.6.1_eslint@8.30.0:
- resolution: {integrity: sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==}
- engines: {node: '>=12.22.0'}
- peerDependencies:
- eslint: '>=7.0.0'
- dependencies:
- builtins: 5.0.1
- eslint: 8.30.0
- eslint-plugin-es: 4.1.0_eslint@8.30.0
- eslint-utils: 3.0.0_eslint@8.30.0
- ignore: 5.2.0
- is-core-module: 2.11.0
- minimatch: 3.1.2
- resolve: 1.22.1
- semver: 7.3.8
- dev: true
-
- /eslint-plugin-node/11.1.0_eslint@8.30.0:
- resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==}
- engines: {node: '>=8.10.0'}
- peerDependencies:
- eslint: '>=5.16.0'
- dependencies:
- eslint: 8.30.0
- eslint-plugin-es: 3.0.1_eslint@8.30.0
- eslint-utils: 2.1.0
- ignore: 5.2.0
- minimatch: 3.1.2
- resolve: 1.22.1
- semver: 6.3.0
- dev: true
-
- /eslint-plugin-prettier/4.2.1_kl4pe43v5b43npmso5hoplpbyi:
+ /eslint-plugin-prettier/4.2.1_f52onrjfrbj5enknkp6ytmuaxu:
resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -9667,84 +8998,21 @@ packages:
eslint-config-prettier:
optional: true
dependencies:
- eslint: 8.30.0
- eslint-config-prettier: 8.5.0_eslint@8.30.0
- prettier: 2.8.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
+ eslint: 8.34.0
+ eslint-config-prettier: 8.5.0_eslint@8.34.0
prettier: 2.7.1
prettier-linter-helpers: 1.0.0
dev: true
- /eslint-plugin-prettier/4.2.1_wc6gesg72dpfw5d6hhumtqiqsi:
- 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.22.0
- eslint-config-prettier: 8.5.0_eslint@8.22.0
- prettier: 2.8.1
- prettier-linter-helpers: 1.0.0
- dev: true
-
- /eslint-plugin-promise/6.1.1_eslint@8.30.0:
- resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^7.0.0 || ^8.0.0
- dependencies:
- eslint: 8.30.0
- dev: true
-
- /eslint-plugin-react-hooks/4.6.0_eslint@8.22.0:
+ /eslint-plugin-react-hooks/4.6.0:
resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
engines: {node: '>=10'}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
- dependencies:
- eslint: 8.22.0
dev: true
- /eslint-plugin-react-hooks/4.6.0_eslint@8.30.0:
- resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
- engines: {node: '>=10'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
- dependencies:
- eslint: 8.30.0
- dev: true
-
- /eslint-plugin-react-hooks/4.6.0_eslint@8.31.0:
- resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
- engines: {node: '>=10'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
- dependencies:
- eslint: 8.31.0
- dev: true
-
- /eslint-plugin-react/7.31.11_eslint@8.22.0:
- resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==}
+ /eslint-plugin-react/7.32.2:
+ resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
engines: {node: '>=4'}
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
@@ -9753,7 +9021,6 @@ packages:
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
@@ -9767,8 +9034,8 @@ packages:
string.prototype.matchall: 4.0.8
dev: true
- /eslint-plugin-react/7.31.11_eslint@8.30.0:
- resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==}
+ /eslint-plugin-react/7.32.2_eslint@8.34.0:
+ resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
engines: {node: '>=4'}
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
@@ -9777,7 +9044,7 @@ packages:
array.prototype.flatmap: 1.3.1
array.prototype.tosorted: 1.1.1
doctrine: 2.1.0
- eslint: 8.30.0
+ eslint: 8.34.0
estraverse: 5.3.0
jsx-ast-utils: 3.3.3
minimatch: 3.1.2
@@ -9791,85 +9058,15 @@ packages:
string.prototype.matchall: 4.0.8
dev: true
- /eslint-plugin-react/7.31.11_eslint@8.31.0:
- resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==}
- engines: {node: '>=4'}
+ /eslint-plugin-simple-import-sort/10.0.0_eslint@8.34.0:
+ resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==}
peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
+ eslint: '>=5.0.0'
dependencies:
- 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.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.8
+ eslint: 8.34.0
dev: true
- /eslint-plugin-security-node/1.1.1:
- resolution: {integrity: sha512-PXl5uKQOglpIpU13YIwWhhXK9Sw14KHbzCdVthDWoIsUPOuMYbrGOCWJSEVVuZ1uJK2ciN+45ogPeErrKtNm0Q==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /eslint-plugin-security/1.5.0:
- resolution: {integrity: sha512-hAFVwLZ/UeXrlyVD2TDarv/x00CoFVpaY0IUZhKjPjiFxqkuQVixsK4f2rxngeQOqSxi6OUjzJM/jMwKEVjJ8g==}
- dependencies:
- safe-regex: 2.1.1
- dev: true
-
- /eslint-plugin-typescript-sort-keys/2.1.0_u2dlljfmmww5bdycoao24sqa5q:
- resolution: {integrity: sha512-ET7ABypdz19m47QnKynzNfWPi4CTNQ5jQQC1X5d0gojIwblkbGiCa5IilsqzBTmqxZ0yXDqKBO/GBkBFQCOFsg==}
- engines: {node: 10 - 12 || >= 13.9}
- peerDependencies:
- '@typescript-eslint/parser': ^1 || ^2 || ^3 || ^4 || ^5
- eslint: ^5 || ^6 || ^7 || ^8
- typescript: ^3 || ^4
- dependencies:
- '@typescript-eslint/experimental-utils': 5.51.0_req3y6wneysbxs6mlxvssjag2i
- '@typescript-eslint/parser': 5.47.0_req3y6wneysbxs6mlxvssjag2i
- eslint: 8.30.0
- json-schema: 0.4.0
- natural-compare-lite: 1.4.0
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /eslint-plugin-unicorn/45.0.2_eslint@8.30.0:
- resolution: {integrity: sha512-Y0WUDXRyGDMcKLiwgL3zSMpHrXI00xmdyixEGIg90gHnj0PcHY4moNv3Ppje/kDivdAy5vUeUr7z211ImPv2gw==}
- engines: {node: '>=14.18'}
- peerDependencies:
- eslint: '>=8.28.0'
- dependencies:
- '@babel/helper-validator-identifier': 7.19.1
- '@eslint-community/eslint-utils': 4.1.2_eslint@8.30.0
- ci-info: 3.7.0
- clean-regexp: 1.0.0
- eslint: 8.30.0
- esquery: 1.4.0
- indent-string: 4.0.0
- is-builtin-module: 3.2.1
- jsesc: 3.0.2
- lodash: 4.17.21
- pluralize: 8.0.0
- read-pkg-up: 7.0.1
- regexp-tree: 0.1.24
- regjsparser: 0.9.1
- safe-regex: 2.1.1
- semver: 7.3.8
- strip-indent: 3.0.0
- dev: true
-
- /eslint-plugin-unused-imports/2.0.0_juver2u3xbiwnjfu6d55vmnoem:
+ /eslint-plugin-unused-imports/2.0.0_3p5c3yu7rnlwfc7nnagwrjhciu:
resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -9879,8 +9076,8 @@ packages:
'@typescript-eslint/eslint-plugin':
optional: true
dependencies:
- '@typescript-eslint/eslint-plugin': 5.47.0_u2dlljfmmww5bdycoao24sqa5q
- eslint: 8.30.0
+ '@typescript-eslint/eslint-plugin': 5.48.0_ddfje6clmktndfpbpk5swat3gi
+ eslint: 8.34.0
eslint-rule-composer: 0.3.0
dev: true
@@ -9905,48 +9102,16 @@ packages:
estraverse: 5.3.0
dev: true
- /eslint-utils/2.1.0:
- resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==}
- engines: {node: '>=6'}
- dependencies:
- eslint-visitor-keys: 1.3.0
- dev: true
-
- /eslint-utils/3.0.0_eslint@8.22.0:
+ /eslint-utils/3.0.0_eslint@8.34.0:
resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
peerDependencies:
eslint: '>=5'
dependencies:
- eslint: 8.22.0
+ eslint: 8.34.0
eslint-visitor-keys: 2.1.0
dev: true
- /eslint-utils/3.0.0_eslint@8.30.0:
- resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
- engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
- peerDependencies:
- eslint: '>=5'
- dependencies:
- eslint: 8.30.0
- eslint-visitor-keys: 2.1.0
- dev: true
-
- /eslint-utils/3.0.0_eslint@8.31.0:
- resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
- engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
- peerDependencies:
- eslint: '>=5'
- dependencies:
- eslint: 8.31.0
- eslint-visitor-keys: 2.1.0
- dev: true
-
- /eslint-visitor-keys/1.3.0:
- resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
- engines: {node: '>=4'}
- dev: true
-
/eslint-visitor-keys/2.1.0:
resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
engines: {node: '>=10'}
@@ -9957,56 +9122,8 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
- /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.4.1
- '@humanwhocodes/config-array': 0.10.4
- '@humanwhocodes/gitignore-to-minimatch': 1.0.2
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.3
- debug: 4.3.4
- doctrine: 3.0.0
- escape-string-regexp: 4.0.0
- eslint-scope: 7.1.1
- eslint-utils: 3.0.0_eslint@8.22.0
- eslint-visitor-keys: 3.3.0
- espree: 9.4.0
- esquery: 1.4.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
- find-up: 5.0.0
- functional-red-black-tree: 1.0.1
- glob-parent: 6.0.2
- globals: 13.19.0
- globby: 11.1.0
- grapheme-splitter: 1.0.4
- ignore: 5.2.0
- import-fresh: 3.3.0
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- js-yaml: 4.1.0
- json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.1
- regexpp: 3.2.0
- strip-ansi: 6.0.1
- strip-json-comments: 3.1.1
- text-table: 0.2.0
- v8-compile-cache: 2.3.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /eslint/8.30.0:
- resolution: {integrity: sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==}
+ /eslint/8.34.0:
+ resolution: {integrity: sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
@@ -10021,55 +9138,7 @@ packages:
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.1.1
- eslint-utils: 3.0.0_eslint@8.30.0
- eslint-visitor-keys: 3.3.0
- espree: 9.4.0
- esquery: 1.4.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
- find-up: 5.0.0
- glob-parent: 6.0.2
- globals: 13.19.0
- grapheme-splitter: 1.0.4
- ignore: 5.2.0
- import-fresh: 3.3.0
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- is-path-inside: 3.0.3
- js-sdsl: 4.2.0
- js-yaml: 4.1.0
- json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.1
- regexpp: 3.2.0
- strip-ansi: 6.0.1
- strip-json-comments: 3.1.1
- text-table: 0.2.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /eslint/8.31.0:
- resolution: {integrity: sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- hasBin: true
- dependencies:
- '@eslint/eslintrc': 1.4.1
- '@humanwhocodes/config-array': 0.11.8
- '@humanwhocodes/module-importer': 1.0.1
- '@nodelib/fs.walk': 1.2.8
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.3
- debug: 4.3.4
- doctrine: 3.0.0
- escape-string-regexp: 4.0.0
- eslint-scope: 7.1.1
- eslint-utils: 3.0.0_eslint@8.31.0
+ eslint-utils: 3.0.0_eslint@8.34.0
eslint-visitor-keys: 3.3.0
espree: 9.4.0
esquery: 1.4.0
@@ -10105,8 +9174,8 @@ packages:
resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==}
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.2
+ acorn-jsx: 5.3.2_acorn@8.8.2
eslint-visitor-keys: 3.3.0
dev: true
@@ -10730,10 +9799,6 @@ packages:
functions-have-names: 1.2.3
dev: true
- /functional-red-black-tree/1.0.1:
- resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
- dev: true
-
/functions-have-names/1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
@@ -10821,10 +9886,6 @@ packages:
get-intrinsic: 1.1.3
dev: true
- /get-tsconfig/4.4.0:
- resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==}
- dev: true
-
/giget/1.0.0:
resolution: {integrity: sha512-KWELZn3Nxq5+0So485poHrFriK9Bn3V/x9y+wgqrHkbmnGbjfLmZ685/SVA/ovW+ewoqW0gVI47pI4yW/VNobQ==}
hasBin: true
@@ -10932,10 +9993,6 @@ packages:
define-properties: 1.1.4
dev: true
- /globalyzer/0.1.0:
- resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
- dev: true
-
/globby/11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
@@ -10959,10 +10016,6 @@ packages:
slash: 4.0.0
dev: true
- /globrex/0.1.2:
- resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
- dev: true
-
/gopd/1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
@@ -11125,15 +10178,6 @@ packages:
through2: 0.4.2
dev: false
- /htmlparser2/8.0.1:
- resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==}
- dependencies:
- domelementtype: 2.3.0
- domhandler: 5.0.3
- domutils: 3.0.1
- entities: 4.4.0
- dev: true
-
/http-cache-semantics/4.1.0:
resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==}
dev: true
@@ -11273,15 +10317,6 @@ packages:
/inherits/2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- /internal-slot/1.0.3:
- resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==}
- engines: {node: '>= 0.4'}
- dependencies:
- get-intrinsic: 1.1.3
- has: 1.0.3
- side-channel: 1.0.4
- dev: true
-
/internal-slot/1.0.4:
resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==}
engines: {node: '>= 0.4'}
@@ -11355,18 +10390,6 @@ packages:
has-tostringtag: 1.0.0
dev: true
- /is-builtin-module/3.2.1:
- resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
- engines: {node: '>=6'}
- dependencies:
- builtin-modules: 3.3.0
- dev: true
-
- /is-callable/1.2.6:
- resolution: {integrity: sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q==}
- engines: {node: '>= 0.4'}
- dev: true
-
/is-callable/1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
@@ -11762,6 +10785,7 @@ packages:
/js-yaml/4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
dependencies:
argparse: 2.0.1
@@ -11806,12 +10830,6 @@ packages:
hasBin: true
dev: true
- /jsesc/3.0.2:
- resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
- engines: {node: '>=6'}
- hasBin: true
- dev: true
-
/json-buffer/3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
dev: true
@@ -11844,10 +10862,6 @@ packages:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
- /json-schema/0.4.0:
- resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
- dev: true
-
/json-stable-stringify-without-jsonify/1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
@@ -13286,11 +12300,6 @@ packages:
hasBin: true
dev: true
- /pluralize/8.0.0:
- resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
- engines: {node: '>=4'}
- dev: true
-
/polished/4.2.2:
resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==}
engines: {node: '>=10'}
@@ -13910,11 +12919,6 @@ packages:
'@babel/runtime': 7.20.7
dev: true
- /regexp-tree/0.1.24:
- resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==}
- hasBin: true
- dev: true
-
/regexp.prototype.flags/1.4.3:
resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
engines: {node: '>= 0.4'}
@@ -14107,12 +13111,6 @@ packages:
is-regex: 1.1.4
dev: true
- /safe-regex/2.1.1:
- resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==}
- dependencies:
- regexp-tree: 0.1.24
- dev: true
-
/safer-buffer/2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
@@ -14358,7 +13356,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
@@ -14511,10 +13509,6 @@ packages:
engines: {node: '>=0.6.19'}
dev: true
- /string-similarity/4.0.4:
- resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==}
- dev: true
-
/string-width/4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -14540,19 +13534,11 @@ packages:
es-abstract: 1.21.1
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==}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.1.4
- es-abstract: 1.21.1
- dev: true
-
/string.prototype.trimend/1.0.6:
resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
dependencies:
@@ -14561,14 +13547,6 @@ packages:
es-abstract: 1.21.1
dev: true
- /string.prototype.trimstart/1.0.5:
- resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.1.4
- es-abstract: 1.21.1
- dev: true
-
/string.prototype.trimstart/1.0.6:
resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
dependencies:
@@ -14752,14 +13730,6 @@ packages:
resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==}
dev: true
- /synckit/0.8.5:
- resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==}
- engines: {node: ^14.18.0 || >=16.0.0}
- dependencies:
- '@pkgr/utils': 2.3.1
- tslib: 2.5.0
- dev: true
-
/tapable/2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
@@ -14841,7 +13811,7 @@ packages:
hasBin: true
dependencies:
'@jridgewell/source-map': 0.3.2
- acorn: 8.8.0
+ acorn: 8.8.2
commander: 2.20.3
source-map-support: 0.5.21
dev: true
@@ -14889,13 +13859,6 @@ packages:
next-tick: 1.1.0
dev: false
- /tiny-glob/0.2.9:
- resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
- dependencies:
- globalyzer: 0.1.0
- globrex: 0.1.2
- dev: true
-
/tinybench/2.3.1:
resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==}
dev: true
@@ -15270,7 +14233,7 @@ packages:
/unplugin/0.10.2:
resolution: {integrity: sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA==}
dependencies:
- acorn: 8.8.0
+ acorn: 8.8.2
chokidar: 3.5.3
webpack-sources: 3.2.3
webpack-virtual-modules: 0.4.6
@@ -15385,10 +14348,6 @@ packages:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
dev: true
- /v8-compile-cache/2.3.0:
- resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
- dev: true
-
/v8-to-istanbul/9.0.1:
resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==}
engines: {node: '>=10.12.0'}
diff --git a/tests/change-page-mode.spec.ts b/tests/change-page-mode.spec.ts
index f504dc7c82..e5386aa5f6 100644
--- a/tests/change-page-mode.spec.ts
+++ b/tests/change-page-mode.spec.ts
@@ -1,7 +1,8 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
import { clickPageMoreActions } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
test.describe('Change page mode(Paper or Edgeless)', () => {
diff --git a/tests/console.spec.ts b/tests/console.spec.ts
index 88a61e4e7b..4114dccfc9 100644
--- a/tests/console.spec.ts
+++ b/tests/console.spec.ts
@@ -1,8 +1,9 @@
+import { expect } from '@playwright/test';
import fs from 'fs';
import path from 'path';
-import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
+import { test } from './libs/playwright';
const pkgPath = path.join(__dirname, '../apps/web/package.json');
const record = fs.readFileSync(pkgPath, 'utf8');
diff --git a/tests/contact-us.spec.ts b/tests/contact-us.spec.ts
index 62e9fa23e7..d31346aa13 100644
--- a/tests/contact-us.spec.ts
+++ b/tests/contact-us.spec.ts
@@ -1,6 +1,7 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
+import { test } from './libs/playwright';
loadPage();
diff --git a/tests/exception-page.spec.ts b/tests/exception-page.spec.ts
index 98720f7a9c..3fac866667 100644
--- a/tests/exception-page.spec.ts
+++ b/tests/exception-page.spec.ts
@@ -1,6 +1,7 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
+import { test } from './libs/playwright';
loadPage();
diff --git a/tests/invite-code-page.spec.ts b/tests/invite-code-page.spec.ts
index 116cc01cc6..8d69889aaf 100644
--- a/tests/invite-code-page.spec.ts
+++ b/tests/invite-code-page.spec.ts
@@ -1,6 +1,7 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
+import { test } from './libs/playwright';
loadPage();
diff --git a/tests/layout.spec.ts b/tests/layout.spec.ts
index 16aedb56d0..4a997693c7 100644
--- a/tests/layout.spec.ts
+++ b/tests/layout.spec.ts
@@ -1,6 +1,7 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
+import { test } from './libs/playwright';
loadPage();
diff --git a/tests/libs/load-page.ts b/tests/libs/load-page.ts
index 3546a42e0a..2765042728 100644
--- a/tests/libs/load-page.ts
+++ b/tests/libs/load-page.ts
@@ -1,5 +1,5 @@
-import { test } from '@playwright/test';
import type { Page } from '@playwright/test';
+import { test } from '@playwright/test';
interface IType {
page: Page;
diff --git a/tests/libs/playwright.ts b/tests/libs/playwright.ts
index 7a6d1c9a62..1e7da6728b 100644
--- a/tests/libs/playwright.ts
+++ b/tests/libs/playwright.ts
@@ -1,8 +1,9 @@
-import { test as baseTest } from '@playwright/test';
+import crypto from 'node:crypto';
import fs from 'node:fs';
import path from 'node:path';
import process from 'node:process';
-import crypto from 'node:crypto';
+
+import { test as baseTest } from '@playwright/test';
const istanbulTempDir = process.env.ISTANBUL_TEMP_DIR
? path.resolve(process.env.ISTANBUL_TEMP_DIR)
diff --git a/tests/local-first-delete-page.spec.ts b/tests/local-first-delete-page.spec.ts
index 2218cd6846..bcac57e8ed 100644
--- a/tests/local-first-delete-page.spec.ts
+++ b/tests/local-first-delete-page.spec.ts
@@ -1,7 +1,8 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
import { newPage } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
diff --git a/tests/local-first-export-page.spec.ts b/tests/local-first-export-page.spec.ts
index 2c6db7f640..c8f238e48b 100644
--- a/tests/local-first-export-page.spec.ts
+++ b/tests/local-first-export-page.spec.ts
@@ -1,7 +1,8 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
-import { newPage, clickPageMoreActions } from './libs/page-logic';
+import { clickPageMoreActions, newPage } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
test.describe('Local first export page', () => {
diff --git a/tests/local-first-favorite-page.spec.ts b/tests/local-first-favorite-page.spec.ts
index 99fce26f07..2e52e8c995 100644
--- a/tests/local-first-favorite-page.spec.ts
+++ b/tests/local-first-favorite-page.spec.ts
@@ -1,7 +1,8 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
-import { newPage, clickPageMoreActions } from './libs/page-logic';
+import { clickPageMoreActions, newPage } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
test.describe('Local first favorite and cancel favorite page', () => {
diff --git a/tests/local-first-favorites-items.spec.ts b/tests/local-first-favorites-items.spec.ts
index 34b67223f7..24261af986 100644
--- a/tests/local-first-favorites-items.spec.ts
+++ b/tests/local-first-favorites-items.spec.ts
@@ -1,7 +1,8 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
-import { newPage, clickPageMoreActions } from './libs/page-logic';
+import { clickPageMoreActions, newPage } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
test.describe('Local first favorite items ui', () => {
diff --git a/tests/local-first-new-page.spec.ts b/tests/local-first-new-page.spec.ts
index 4efd359a6b..900fe08c3d 100644
--- a/tests/local-first-new-page.spec.ts
+++ b/tests/local-first-new-page.spec.ts
@@ -1,7 +1,8 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
import { newPage } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
test.describe('local first new page', () => {
diff --git a/tests/local-first-openpage-newtab.spec.ts b/tests/local-first-openpage-newtab.spec.ts
index 6c41e2c5c7..f61730dd29 100644
--- a/tests/local-first-openpage-newtab.spec.ts
+++ b/tests/local-first-openpage-newtab.spec.ts
@@ -1,7 +1,8 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
import { newPage } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
test.describe('local first new page', () => {
diff --git a/tests/local-first-restore-page.spec.ts b/tests/local-first-restore-page.spec.ts
index 9fcbab0be7..b0f9143f5d 100644
--- a/tests/local-first-restore-page.spec.ts
+++ b/tests/local-first-restore-page.spec.ts
@@ -1,7 +1,8 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
import { newPage } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
test.describe('Local first delete page', () => {
diff --git a/tests/local-first-show-delete-modal.spec.ts b/tests/local-first-show-delete-modal.spec.ts
index 712f3b70ce..f78393e671 100644
--- a/tests/local-first-show-delete-modal.spec.ts
+++ b/tests/local-first-show-delete-modal.spec.ts
@@ -1,7 +1,8 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
-import { newPage, clickPageMoreActions } from './libs/page-logic';
+import { clickPageMoreActions, newPage } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
test.describe('Local first delete page', () => {
diff --git a/tests/local-first-trash-page.spec.ts b/tests/local-first-trash-page.spec.ts
index c9268fb4f6..7d598afc1f 100644
--- a/tests/local-first-trash-page.spec.ts
+++ b/tests/local-first-trash-page.spec.ts
@@ -1,7 +1,8 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
import { newPage } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
test.describe('Local first trash page', () => {
diff --git a/tests/local-first-workspace-list.spec.ts b/tests/local-first-workspace-list.spec.ts
index 2c63396b55..b07105cbe2 100644
--- a/tests/local-first-workspace-list.spec.ts
+++ b/tests/local-first-workspace-list.spec.ts
@@ -1,6 +1,7 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
+import { test } from './libs/playwright';
import { createWorkspace } from './libs/workspace-logic';
loadPage();
diff --git a/tests/local-first-workspace.spec.ts b/tests/local-first-workspace.spec.ts
index cbf4f232a0..5a6e631f6d 100644
--- a/tests/local-first-workspace.spec.ts
+++ b/tests/local-first-workspace.spec.ts
@@ -1,6 +1,7 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
+import { test } from './libs/playwright';
loadPage();
diff --git a/tests/login.spec.ts b/tests/login.spec.ts
index c5c36c5fc9..0ed70afe4a 100644
--- a/tests/login.spec.ts
+++ b/tests/login.spec.ts
@@ -1,5 +1,5 @@
-import { test } from './libs/playwright';
import { loadPage } from './libs/load-page';
+import { test } from './libs/playwright';
loadPage();
diff --git a/tests/quick-search.spec.ts b/tests/quick-search.spec.ts
index c5764c5c35..03f16d68a4 100644
--- a/tests/quick-search.spec.ts
+++ b/tests/quick-search.spec.ts
@@ -1,8 +1,9 @@
import { expect, type Page } from '@playwright/test';
-import { test } from './libs/playwright';
-import { loadPage } from './libs/load-page';
+
import { withCtrlOrMeta } from './libs/keyboard';
+import { loadPage } from './libs/load-page';
import { newPage } from './libs/page-logic';
+import { test } from './libs/playwright';
loadPage();
const openQuickSearchByShortcut = async (page: Page) =>
diff --git a/tests/shortcuts.spec.ts b/tests/shortcuts.spec.ts
index f7010624ee..139021ffe1 100644
--- a/tests/shortcuts.spec.ts
+++ b/tests/shortcuts.spec.ts
@@ -1,6 +1,7 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
+import { test } from './libs/playwright';
loadPage();
diff --git a/tests/theme.spec.ts b/tests/theme.spec.ts
index c48e5f8422..578cad814e 100644
--- a/tests/theme.spec.ts
+++ b/tests/theme.spec.ts
@@ -1,6 +1,7 @@
import { expect } from '@playwright/test';
-import { test } from './libs/playwright';
+
import { loadPage } from './libs/load-page';
+import { test } from './libs/playwright';
loadPage();