diff --git a/.eslintrc.js b/.eslintrc.js index 331543c931..69b2f4fe90 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 7f8b8ad870..328f214011 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 b51b496882..dfc608bcbe 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 fcbf436c05..3843f9045a 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 0b6bcdd165..5472dc6469 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 62ee97a365..8b7798260d 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 2e78760625..fd55415657 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 4dca64673c..b6d07ed924 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 c953ee1b00..053b58e2bc 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 4a6e60783b..a518fab0ba 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 99d15a7ac3..1318cd7b09 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 4c36a92e5e..e6b5bcc16f 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 d4bd66378b..5a204baabd 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 5e1ed4b0d9..6ceb76b975 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 6c7b8c2033..9efe3d4704 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 a313db2f6d..875a2f1639 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 59f55287fe..4f73d8cc95 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 7a1391dc5d..e48d1ba8f0 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 90d63d04e0..09d2b9ec68 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 c4f39a61c7..809a94e260 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 db56dd3652..f90a923cc3 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 0ffd197d74..430df54004 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 47768e9805..8839fb5663 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 9aa9e1f15d..f09234aadf 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 bc8429bd5a..443ada4347 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 a92d4164a7..68461726ab 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 b6044483eb..47c60e79bb 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 2c9063eb15..77bed9299a 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 5ed8d727c0..2a016a0347 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 f77445c482..89d977be19 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 174d533dd2..be776ba3ec 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';