diff --git a/.eslintrc.js b/.eslintrc.js index 331543c93..69b2f4fe9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -21,6 +21,11 @@ const createPattern = packageName => [ message: 'Do not import package itself', allowTypeImports: false, }, + { + group: ['@blocksuite/store'], + message: "Import from '@blocksuite/global/utils'", + importNames: ['assertExists', 'assertEquals'], + }, ]; const allPackages = [ @@ -134,6 +139,11 @@ const config = { message: "Don't import from src", allowTypeImports: false, }, + { + group: ['@blocksuite/store'], + message: "Import from '@blocksuite/global/utils'", + importNames: ['assertExists', 'assertEquals'], + }, ], }, ], diff --git a/apps/web/src/atoms/root.ts b/apps/web/src/atoms/root.ts index 7f8b8ad87..328f21401 100644 --- a/apps/web/src/atoms/root.ts +++ b/apps/web/src/atoms/root.ts @@ -9,8 +9,8 @@ import { rootCurrentWorkspaceIdAtom, rootWorkspacesMetadataAtom, } from '@affine/workspace/atom'; +import { assertExists } from '@blocksuite/global/utils'; import type { ActiveDocProvider } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import { atom } from 'jotai'; import type { AllWorkspace } from '../shared'; diff --git a/apps/web/src/components/affine/setting-modal/workspace-setting/index.tsx b/apps/web/src/components/affine/setting-modal/workspace-setting/index.tsx index b51b49688..dfc608bcb 100644 --- a/apps/web/src/components/affine/setting-modal/workspace-setting/index.tsx +++ b/apps/web/src/components/affine/setting-modal/workspace-setting/index.tsx @@ -1,4 +1,4 @@ -import { assertExists } from '@blocksuite/store'; +import { assertExists } from '@blocksuite/global/utils'; import React, { Suspense, useCallback } from 'react'; import { getUIAdapter } from '../../../../adapters/workspace'; diff --git a/apps/web/src/components/blocksuite/workspace-header/editor-mode-switch/index.tsx b/apps/web/src/components/blocksuite/workspace-header/editor-mode-switch/index.tsx index fcbf436c0..3843f9045 100644 --- a/apps/web/src/components/blocksuite/workspace-header/editor-mode-switch/index.tsx +++ b/apps/web/src/components/blocksuite/workspace-header/editor-mode-switch/index.tsx @@ -1,6 +1,6 @@ import { Tooltip } from '@affine/component'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { assertExists } from '@blocksuite/store'; +import { assertExists } from '@blocksuite/global/utils'; import { useBlockSuitePageMeta } from '@toeverything/hooks/use-block-suite-page-meta'; import { useAtom } from 'jotai'; import type { CSSProperties } from 'react'; diff --git a/apps/web/src/components/blocksuite/workspace-header/header-right-items/editor-option-menu.tsx b/apps/web/src/components/blocksuite/workspace-header/header-right-items/editor-option-menu.tsx index 0b6bcdd16..5472dc646 100644 --- a/apps/web/src/components/blocksuite/workspace-header/header-right-items/editor-option-menu.tsx +++ b/apps/web/src/components/blocksuite/workspace-header/header-right-items/editor-option-menu.tsx @@ -2,6 +2,7 @@ import { FlexWrapper, IconButton, Menu, MenuItem } from '@affine/component'; import { Export, MoveToTrash } from '@affine/component/page-list'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; +import { assertExists } from '@blocksuite/global/utils'; import { EdgelessIcon, FavoritedIcon, @@ -9,7 +10,6 @@ import { MoreVerticalIcon, PageIcon, } from '@blocksuite/icons'; -import { assertExists } from '@blocksuite/store'; import { useBlockSuitePageMeta, usePageMetaHelper, diff --git a/apps/web/src/components/blocksuite/workspace-header/header-right-items/share-menu.tsx b/apps/web/src/components/blocksuite/workspace-header/header-right-items/share-menu.tsx index 62ee97a36..8b7798260 100644 --- a/apps/web/src/components/blocksuite/workspace-header/header-right-items/share-menu.tsx +++ b/apps/web/src/components/blocksuite/workspace-header/header-right-items/share-menu.tsx @@ -5,8 +5,8 @@ import type { LocalWorkspace, } from '@affine/env/workspace'; import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/env/workspace'; +import { assertEquals } from '@blocksuite/global/utils'; import type { Page } from '@blocksuite/store'; -import { assertEquals } from '@blocksuite/store'; import { useRouter } from 'next/router'; import type React from 'react'; import { useCallback, useState } from 'react'; diff --git a/apps/web/src/components/blocksuite/workspace-header/header-right-items/trash-button-group.tsx b/apps/web/src/components/blocksuite/workspace-header/header-right-items/trash-button-group.tsx index 2e7876062..fd5541565 100644 --- a/apps/web/src/components/blocksuite/workspace-header/header-right-items/trash-button-group.tsx +++ b/apps/web/src/components/blocksuite/workspace-header/header-right-items/trash-button-group.tsx @@ -1,6 +1,6 @@ import { Button, Confirm } from '@affine/component'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { assertExists } from '@blocksuite/store'; +import { assertExists } from '@blocksuite/global/utils'; import { useBlockSuitePageMeta } from '@toeverything/hooks/use-block-suite-page-meta'; import { useRouter } from 'next/router'; import { useState } from 'react'; diff --git a/apps/web/src/components/blocksuite/workspace-header/index.tsx b/apps/web/src/components/blocksuite/workspace-header/index.tsx index 4dca64673..b6d07ed92 100644 --- a/apps/web/src/components/blocksuite/workspace-header/index.tsx +++ b/apps/web/src/components/blocksuite/workspace-header/index.tsx @@ -1,4 +1,4 @@ -import { assertExists } from '@blocksuite/store'; +import { assertExists } from '@blocksuite/global/utils'; import { useBlockSuitePageMeta } from '@toeverything/hooks/use-block-suite-page-meta'; import { useSetAtom } from 'jotai'; import type { diff --git a/apps/web/src/components/page-detail-editor.tsx b/apps/web/src/components/page-detail-editor.tsx index c953ee1b0..053b58e2b 100644 --- a/apps/web/src/components/page-detail-editor.tsx +++ b/apps/web/src/components/page-detail-editor.tsx @@ -6,8 +6,8 @@ import { } from '@affine/env/constant'; import { rootCurrentEditorAtom } from '@affine/workspace/atom'; import type { EditorContainer } from '@blocksuite/editor'; +import { assertExists } from '@blocksuite/global/utils'; import type { Page } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import { useBlockSuitePageMeta } from '@toeverything/hooks/use-block-suite-page-meta'; import { useBlockSuiteWorkspacePage } from '@toeverything/hooks/use-block-suite-workspace-page'; import { useBlockSuiteWorkspacePageTitle } from '@toeverything/hooks/use-block-suite-workspace-page-title'; diff --git a/apps/web/src/components/pure/quick-search-modal/footer.tsx b/apps/web/src/components/pure/quick-search-modal/footer.tsx index 4a6e60783..a518fab0b 100644 --- a/apps/web/src/components/pure/quick-search-modal/footer.tsx +++ b/apps/web/src/components/pure/quick-search-modal/footer.tsx @@ -1,8 +1,9 @@ import { initEmptyPage } from '@affine/env/blocksuite'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; import type { PageBlockModel } from '@blocksuite/blocks'; +import { assertEquals } from '@blocksuite/global/utils'; import { PlusIcon } from '@blocksuite/icons'; -import { assertEquals, nanoid } from '@blocksuite/store'; +import { nanoid } from '@blocksuite/store'; import { useBlockSuiteWorkspaceHelper } from '@toeverything/hooks/use-block-suite-workspace-helper'; import { Command } from 'cmdk'; import type { NextRouter } from 'next/router'; diff --git a/apps/web/src/components/pure/quick-search-modal/results.tsx b/apps/web/src/components/pure/quick-search-modal/results.tsx index 99d15a7ac..1318cd7b0 100644 --- a/apps/web/src/components/pure/quick-search-modal/results.tsx +++ b/apps/web/src/components/pure/quick-search-modal/results.tsx @@ -1,7 +1,7 @@ import { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; +import { assertExists } from '@blocksuite/global/utils'; import { EdgelessIcon, PageIcon } from '@blocksuite/icons'; -import { assertExists } from '@blocksuite/store'; import { useBlockSuitePageMeta } from '@toeverything/hooks/use-block-suite-page-meta'; import { useBlockSuiteWorkspaceHelper } from '@toeverything/hooks/use-block-suite-workspace-helper'; import { Command } from 'cmdk'; diff --git a/apps/web/src/hooks/__tests__/index.spec.tsx b/apps/web/src/hooks/__tests__/index.spec.tsx index 4c36a92e5..e6b5bcc16 100644 --- a/apps/web/src/hooks/__tests__/index.spec.tsx +++ b/apps/web/src/hooks/__tests__/index.spec.tsx @@ -13,8 +13,8 @@ import { } from '@affine/workspace/atom'; import type { PageBlockModel } from '@blocksuite/blocks'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; +import { assertExists } from '@blocksuite/global/utils'; import type { Page } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import { render, renderHook } from '@testing-library/react'; import { useBlockSuitePageMeta, diff --git a/apps/web/src/layouts/workspace-layout.tsx b/apps/web/src/layouts/workspace-layout.tsx index d4bd66378..5a204baab 100644 --- a/apps/web/src/layouts/workspace-layout.tsx +++ b/apps/web/src/layouts/workspace-layout.tsx @@ -17,8 +17,9 @@ import { rootCurrentWorkspaceIdAtom, rootWorkspacesMetadataAtom, } from '@affine/workspace/atom'; +import { assertEquals, assertExists } from '@blocksuite/global/utils'; import type { PassiveDocProvider } from '@blocksuite/store'; -import { assertEquals, assertExists, nanoid } from '@blocksuite/store'; +import { nanoid } from '@blocksuite/store'; import type { DragEndEvent } from '@dnd-kit/core'; import { DndContext, diff --git a/apps/web/src/pages/_debug/migration.tsx b/apps/web/src/pages/_debug/migration.tsx index 5e1ed4b0d..6ceb76b97 100644 --- a/apps/web/src/pages/_debug/migration.tsx +++ b/apps/web/src/pages/_debug/migration.tsx @@ -12,7 +12,8 @@ import { } from '@affine/workspace/migration'; import { createIndexedDBDownloadProvider } from '@affine/workspace/providers'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; -import { assertExists, Workspace } from '@blocksuite/store'; +import { assertExists } from '@blocksuite/global/utils'; +import { Workspace } from '@blocksuite/store'; import { NoSsr } from '@mui/material'; import { rootStore } from '@toeverything/plugin-infra/manager'; import { diff --git a/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx b/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx index 6c7b8c203..9efe3d470 100644 --- a/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx +++ b/apps/web/src/pages/workspace/[workspaceId]/[pageId].tsx @@ -6,8 +6,8 @@ import { import { WorkspaceSubPath } from '@affine/env/workspace'; import { rootCurrentPageIdAtom } from '@affine/workspace/atom'; import type { EditorContainer } from '@blocksuite/editor'; +import { assertExists } from '@blocksuite/global/utils'; import type { Page } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import { useBlockSuiteWorkspacePage } from '@toeverything/hooks/use-block-suite-workspace-page'; import { useAtom, useAtomValue } from 'jotai'; import { useRouter } from 'next/router'; diff --git a/apps/web/src/pages/workspace/[workspaceId]/all.tsx b/apps/web/src/pages/workspace/[workspaceId]/all.tsx index a313db2f6..875a2f163 100644 --- a/apps/web/src/pages/workspace/[workspaceId]/all.tsx +++ b/apps/web/src/pages/workspace/[workspaceId]/all.tsx @@ -2,7 +2,7 @@ import { useCollectionManager } from '@affine/component/page-list'; import { QueryParamError } from '@affine/env/constant'; import { WorkspaceSubPath } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { assertExists } from '@blocksuite/store'; +import { assertExists } from '@blocksuite/global/utils'; import Head from 'next/head'; import { useRouter } from 'next/router'; import React, { useCallback } from 'react'; diff --git a/apps/web/src/pages/workspace/[workspaceId]/shared.tsx b/apps/web/src/pages/workspace/[workspaceId]/shared.tsx index 59f55287f..4f73d8cc9 100644 --- a/apps/web/src/pages/workspace/[workspaceId]/shared.tsx +++ b/apps/web/src/pages/workspace/[workspaceId]/shared.tsx @@ -1,6 +1,6 @@ import { WorkspaceSubPath } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { assertExists } from '@blocksuite/store'; +import { assertExists } from '@blocksuite/global/utils'; import Head from 'next/head'; import { useRouter } from 'next/router'; import React, { useCallback } from 'react'; diff --git a/apps/web/src/pages/workspace/[workspaceId]/trash.tsx b/apps/web/src/pages/workspace/[workspaceId]/trash.tsx index 7a1391dc5..e48d1ba8f 100644 --- a/apps/web/src/pages/workspace/[workspaceId]/trash.tsx +++ b/apps/web/src/pages/workspace/[workspaceId]/trash.tsx @@ -1,6 +1,6 @@ import { WorkspaceSubPath } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { assertExists } from '@blocksuite/store'; +import { assertExists } from '@blocksuite/global/utils'; import Head from 'next/head'; import { useRouter } from 'next/router'; import React, { useCallback } from 'react'; diff --git a/packages/hooks/src/__tests__/index.spec.ts b/packages/hooks/src/__tests__/index.spec.ts index 90d63d04e..09d2b9ec6 100644 --- a/packages/hooks/src/__tests__/index.spec.ts +++ b/packages/hooks/src/__tests__/index.spec.ts @@ -5,8 +5,8 @@ import 'fake-indexeddb/auto'; import { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; +import { assertExists } from '@blocksuite/global/utils'; import type { Page } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import { Workspace as BlockSuiteWorkspace } from '@blocksuite/store'; import { renderHook } from '@testing-library/react'; import { useAtomValue } from 'jotai'; diff --git a/packages/hooks/src/use-block-suite-page-meta.ts b/packages/hooks/src/use-block-suite-page-meta.ts index c4f39a61c..809a94e26 100644 --- a/packages/hooks/src/use-block-suite-page-meta.ts +++ b/packages/hooks/src/use-block-suite-page-meta.ts @@ -1,6 +1,6 @@ import type { PageBlockModel } from '@blocksuite/blocks'; +import { assertExists } from '@blocksuite/global/utils'; import type { PageMeta, Workspace } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import type { Atom } from 'jotai'; import { atom, useAtomValue } from 'jotai'; import { useMemo } from 'react'; diff --git a/packages/hooks/src/use-block-suite-workspace-avatar-url.ts b/packages/hooks/src/use-block-suite-workspace-avatar-url.ts index db56dd365..f90a923cc 100644 --- a/packages/hooks/src/use-block-suite-workspace-avatar-url.ts +++ b/packages/hooks/src/use-block-suite-workspace-avatar-url.ts @@ -1,5 +1,5 @@ +import { assertExists } from '@blocksuite/global/utils'; import type { Workspace } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import { useCallback, useEffect, useState } from 'react'; import useSWR from 'swr'; diff --git a/packages/hooks/src/use-block-suite-workspace-helper.ts b/packages/hooks/src/use-block-suite-workspace-helper.ts index 0ffd197d7..430df5400 100644 --- a/packages/hooks/src/use-block-suite-workspace-helper.ts +++ b/packages/hooks/src/use-block-suite-workspace-helper.ts @@ -1,5 +1,5 @@ +import { assertExists } from '@blocksuite/global/utils'; import type { Page, Workspace } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import { useMemo } from 'react'; export function useBlockSuiteWorkspaceHelper(blockSuiteWorkspace: Workspace) { diff --git a/packages/hooks/src/use-block-suite-workspace-name.ts b/packages/hooks/src/use-block-suite-workspace-name.ts index 47768e980..8839fb566 100644 --- a/packages/hooks/src/use-block-suite-workspace-name.ts +++ b/packages/hooks/src/use-block-suite-workspace-name.ts @@ -1,6 +1,6 @@ import { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant'; +import { assertExists } from '@blocksuite/global/utils'; import type { Workspace } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import type { Atom, WritableAtom } from 'jotai'; import { atom, useAtom } from 'jotai'; diff --git a/packages/hooks/src/use-block-suite-workspace-page-is-public.ts b/packages/hooks/src/use-block-suite-workspace-page-is-public.ts index 9aa9e1f15..f09234aad 100644 --- a/packages/hooks/src/use-block-suite-workspace-page-is-public.ts +++ b/packages/hooks/src/use-block-suite-workspace-page-is-public.ts @@ -1,5 +1,5 @@ +import { assertExists } from '@blocksuite/global/utils'; import type { Page } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import type { Atom, WritableAtom } from 'jotai'; import { atom, useAtom } from 'jotai'; diff --git a/packages/hooks/src/use-block-suite-workspace-page-title.ts b/packages/hooks/src/use-block-suite-workspace-page-title.ts index bc8429bd5..443ada434 100644 --- a/packages/hooks/src/use-block-suite-workspace-page-title.ts +++ b/packages/hooks/src/use-block-suite-workspace-page-title.ts @@ -1,5 +1,5 @@ +import { assertExists } from '@blocksuite/global/utils'; import type { Workspace } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import type { Atom } from 'jotai'; import { atom, useAtomValue } from 'jotai'; diff --git a/packages/hooks/src/use-block-suite-workspace-page.ts b/packages/hooks/src/use-block-suite-workspace-page.ts index a92d4164a..68461726a 100644 --- a/packages/hooks/src/use-block-suite-workspace-page.ts +++ b/packages/hooks/src/use-block-suite-workspace-page.ts @@ -1,5 +1,5 @@ +import { assertExists, DisposableGroup } from '@blocksuite/global/utils'; import type { Page, Workspace } from '@blocksuite/store'; -import { assertExists, DisposableGroup } from '@blocksuite/store'; import type { Atom } from 'jotai'; import { atom, useAtomValue } from 'jotai'; diff --git a/packages/workspace/src/blob/sqlite-blob-storage.ts b/packages/workspace/src/blob/sqlite-blob-storage.ts index b6044483e..47c60e79b 100644 --- a/packages/workspace/src/blob/sqlite-blob-storage.ts +++ b/packages/workspace/src/blob/sqlite-blob-storage.ts @@ -1,5 +1,5 @@ +import { assertExists } from '@blocksuite/global/utils'; import type { BlobStorage } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; export const createSQLiteStorage = (workspaceId: string): BlobStorage => { const apis = window.apis; diff --git a/packages/workspace/src/providers/index.ts b/packages/workspace/src/providers/index.ts index 2c9063eb1..77bed9299 100644 --- a/packages/workspace/src/providers/index.ts +++ b/packages/workspace/src/providers/index.ts @@ -2,8 +2,9 @@ import type { LocalIndexedDBBackgroundProvider, LocalIndexedDBDownloadProvider, } from '@affine/env/workspace'; +import { assertExists } from '@blocksuite/global/utils'; import type { DocProviderCreator } from '@blocksuite/store'; -import { assertExists, Workspace } from '@blocksuite/store'; +import { Workspace } from '@blocksuite/store'; import { createBroadcastChannelProvider } from '@blocksuite/store/providers/broadcast-channel'; import { createIndexedDBProvider as create, diff --git a/packages/workspace/src/providers/sqlite-providers.ts b/packages/workspace/src/providers/sqlite-providers.ts index 5ed8d727c..2a016a034 100644 --- a/packages/workspace/src/providers/sqlite-providers.ts +++ b/packages/workspace/src/providers/sqlite-providers.ts @@ -2,11 +2,9 @@ import type { SQLiteDBDownloadProvider, SQLiteProvider, } from '@affine/env/workspace'; +import { assertExists } from '@blocksuite/global/utils'; import type { DocProviderCreator } from '@blocksuite/store'; -import { - assertExists, - Workspace as BlockSuiteWorkspace, -} from '@blocksuite/store'; +import { Workspace as BlockSuiteWorkspace } from '@blocksuite/store'; import type { Doc } from 'yjs'; import { localProviderLogger as logger } from './logger'; diff --git a/packages/y-indexeddb/src/__tests__/index.spec.ts b/packages/y-indexeddb/src/__tests__/index.spec.ts index f77445c48..89d977be1 100644 --- a/packages/y-indexeddb/src/__tests__/index.spec.ts +++ b/packages/y-indexeddb/src/__tests__/index.spec.ts @@ -4,8 +4,9 @@ import 'fake-indexeddb/auto'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; +import { assertExists } from '@blocksuite/global/utils'; import type { Page } from '@blocksuite/store'; -import { assertExists, uuidv4, Workspace } from '@blocksuite/store'; +import { uuidv4, Workspace } from '@blocksuite/store'; import { openDB } from 'idb'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; import { IndexeddbPersistence } from 'y-indexeddb'; diff --git a/plugins/bookmark-block/src/blocksuite/ui.tsx b/plugins/bookmark-block/src/blocksuite/ui.tsx index 174d533dd..be776ba3e 100644 --- a/plugins/bookmark-block/src/blocksuite/ui.tsx +++ b/plugins/bookmark-block/src/blocksuite/ui.tsx @@ -6,8 +6,8 @@ import { getCurrentNativeRange, getVirgoByModel, } from '@blocksuite/blocks/std'; +import { assertExists } from '@blocksuite/global/utils'; import type { Page } from '@blocksuite/store'; -import { assertExists } from '@blocksuite/store'; import type { FC } from 'react'; import { useCallback, useEffect, useMemo, useState } from 'react';