From 4958d096b076e918e4aea607518c143defed55be Mon Sep 17 00:00:00 2001 From: Himself65 Date: Wed, 7 Jun 2023 23:20:35 +0800 Subject: [PATCH] fix: move workspace to top level (#2717) --- apps/web/src/adapters/affine/fetcher.ts | 4 +- apps/web/src/adapters/affine/index.tsx | 12 +- apps/web/src/adapters/local/index.tsx | 10 +- apps/web/src/adapters/type.tsx | 4 +- apps/web/src/adapters/workspace.ts | 4 +- apps/web/src/atoms/__tests__/atom.spec.ts | 2 +- apps/web/src/atoms/index.ts | 2 +- apps/web/src/atoms/public-workspace/index.ts | 4 +- apps/web/src/atoms/root.ts | 10 +- .../components/__debug__/client/editor.tsx | 2 +- .../affine/workspace-setting-detail/index.tsx | 4 +- .../panel/collaboration/index.tsx | 8 +- .../panel/general/delete/index.tsx | 2 +- .../panel/publish/index.tsx | 6 +- .../panel/sync/index.tsx | 2 +- .../block-suite-page-list/index.tsx | 2 +- .../header-right-items/share-menu.tsx | 4 +- .../header-right-items/sync-user.tsx | 4 +- .../blocksuite/workspace-header/header.tsx | 2 +- .../pure/workspace-list-modal/index.tsx | 8 +- .../src/components/root-app-sidebar/index.tsx | 2 +- apps/web/src/components/workspace-header.tsx | 4 +- apps/web/src/hooks/__tests__/index.spec.tsx | 2 +- .../hooks/__tests__/use-recent-views.spec.tsx | 4 +- .../hooks/__tests__/use-router-helper.spec.ts | 2 +- .../web/src/hooks/affine/use-affine-log-in.ts | 2 +- .../src/hooks/affine/use-affine-log-out.ts | 2 +- .../hooks/affine/use-is-workspace-owner.ts | 4 +- apps/web/src/hooks/affine/use-members.ts | 2 +- .../affine/use-toggle-workspace-publish.ts | 2 +- .../hooks/root/use-on-transform-workspace.ts | 4 +- apps/web/src/hooks/use-router-helper.ts | 2 +- apps/web/src/hooks/use-transform-workspace.ts | 4 +- apps/web/src/hooks/use-workspaces.ts | 4 +- .../src/layouts/public-workspace-layout.tsx | 2 +- apps/web/src/layouts/workspace-layout.tsx | 4 +- apps/web/src/pages/_debug/broadcast.dev.tsx | 4 +- apps/web/src/pages/index.tsx | 2 +- apps/web/src/pages/invite/[invite-code].tsx | 4 +- .../src/pages/workspace/[workspaceId]/all.tsx | 2 +- .../pages/workspace/[workspaceId]/setting.tsx | 6 +- .../pages/workspace/[workspaceId]/shared.tsx | 2 +- .../pages/workspace/[workspaceId]/trash.tsx | 2 +- apps/web/src/providers/modal-provider.tsx | 2 +- apps/web/src/shared/index.ts | 6 +- .../components/card/workspace-card/index.tsx | 8 +- .../page-list/__tests__/filter.spec.tsx | 12 +- .../components/page-list/filter/condition.tsx | 2 +- .../src/components/page-list/filter/eval.ts | 3 +- .../page-list/filter/filter-list.tsx | 2 +- .../page-list/filter/literal-matcher.tsx | 2 +- .../page-list/filter/shared-types.tsx | 35 +---- .../src/components/page-list/filter/vars.tsx | 8 +- .../page-list/use-all-page-setting.ts | 2 +- .../components/page-list/view/create-view.tsx | 2 +- .../src/components/share-menu/share-menu.tsx | 2 +- .../src/components/share-menu/share-page.tsx | 4 +- .../components/share-menu/share-workspace.tsx | 6 +- .../src/components/workspace-avatar/index.tsx | 2 +- .../src/components/workspace-list/index.tsx | 2 +- packages/component/tsconfig.json | 9 +- packages/env/package.json | 3 + packages/env/src/filter.ts | 32 ++++ .../src/type.ts => env/src/workspace.ts} | 4 +- .../env/src/workspace/legacy-cloud/index.ts | 129 ++++++++++++++++ packages/jotai/package.json | 1 - packages/jotai/src/resource.ts | 3 +- packages/jotai/tsconfig.json | 3 +- .../storybook/src/stories/card.stories.tsx | 2 +- .../stories/image-preview-modal.stories.tsx | 2 +- .../src/stories/share-menu.stories.tsx | 9 +- .../src/stories/workspace-avatar.stories.tsx | 2 +- .../src/stories/workspace-list.stories.tsx | 2 +- .../src/affine/__tests__/api.spec.ts | 14 +- .../src/affine/__tests__/sync.spec.ts | 7 +- packages/workspace/src/affine/api/index.ts | 145 ++---------------- packages/workspace/src/affine/channel.ts | 2 +- packages/workspace/src/affine/sync.ts | 9 +- packages/workspace/src/atom.ts | 3 +- .../src/local/__tests__/crud.spec.ts | 4 +- packages/workspace/src/local/crud.ts | 4 +- .../__tests__/sqlite-provider.spec.ts | 5 +- .../src/providers/affine-download.ts | 2 +- .../src/providers/broad-cast-channel/index.ts | 2 +- packages/workspace/src/providers/index.ts | 16 +- packages/workspace/src/utils.ts | 2 +- packages/workspace/tsconfig.json | 1 - yarn.lock | 1 - 88 files changed, 353 insertions(+), 329 deletions(-) create mode 100644 packages/env/src/filter.ts rename packages/{workspace/src/type.ts => env/src/workspace.ts} (97%) create mode 100644 packages/env/src/workspace/legacy-cloud/index.ts diff --git a/apps/web/src/adapters/affine/fetcher.ts b/apps/web/src/adapters/affine/fetcher.ts index 6efe4af2ea..5db959f90e 100644 --- a/apps/web/src/adapters/affine/fetcher.ts +++ b/apps/web/src/adapters/affine/fetcher.ts @@ -1,9 +1,9 @@ import { Unreachable } from '@affine/env/constant'; +import type { AffineLegacyCloudWorkspace } from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { affineApis } from '@affine/workspace/affine/shared'; import { rootStore } from '@affine/workspace/atom'; import { createAffineProviders } from '@affine/workspace/providers'; -import type { AffineLegacyCloudWorkspace } from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils'; import { assertExists } from '@blocksuite/store'; diff --git a/apps/web/src/adapters/affine/index.tsx b/apps/web/src/adapters/affine/index.tsx index 6a7d2b4645..92d55c3611 100644 --- a/apps/web/src/adapters/affine/index.tsx +++ b/apps/web/src/adapters/affine/index.tsx @@ -5,6 +5,12 @@ import { AFFINE_STORAGE_KEY, config } from '@affine/env'; import { initEmptyPage } from '@affine/env/blocksuite'; import { PageNotFoundError } from '@affine/env/constant'; +import type { AffineLegacyCloudWorkspace } from '@affine/env/workspace'; +import { + LoadPriority, + ReleaseType, + WorkspaceFlavour, +} from '@affine/env/workspace'; import { currentAffineUserAtom } from '@affine/workspace/affine/atom'; import { clearLoginStorage, @@ -21,12 +27,6 @@ import { createIndexedDBBackgroundProvider, } from '@affine/workspace/providers'; import { createAffineDownloadProvider } from '@affine/workspace/providers'; -import type { AffineLegacyCloudWorkspace } from '@affine/workspace/type'; -import { - LoadPriority, - ReleaseType, - WorkspaceFlavour, -} from '@affine/workspace/type'; import { cleanupWorkspace, createEmptyBlockSuiteWorkspace, diff --git a/apps/web/src/adapters/local/index.tsx b/apps/web/src/adapters/local/index.tsx index 1d0f4f5734..04620ae61e 100644 --- a/apps/web/src/adapters/local/index.tsx +++ b/apps/web/src/adapters/local/index.tsx @@ -6,16 +6,16 @@ import { } from '@affine/env'; import { initEmptyPage, initPageWithPreloading } from '@affine/env/blocksuite'; import { PageNotFoundError } from '@affine/env/constant'; +import { + LoadPriority, + ReleaseType, + WorkspaceFlavour, +} from '@affine/env/workspace'; import { CRUD, saveWorkspaceToLocalStorage, } from '@affine/workspace/local/crud'; import { createIndexedDBBackgroundProvider } from '@affine/workspace/providers'; -import { - LoadPriority, - ReleaseType, - WorkspaceFlavour, -} from '@affine/workspace/type'; import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils'; import { nanoid } from '@blocksuite/store'; diff --git a/apps/web/src/adapters/type.tsx b/apps/web/src/adapters/type.tsx index ec6f374d06..7d69225257 100644 --- a/apps/web/src/adapters/type.tsx +++ b/apps/web/src/adapters/type.tsx @@ -2,12 +2,12 @@ import type { AppEvents, WorkspaceCRUD, WorkspaceUISchema, -} from '@affine/workspace/type'; +} from '@affine/env/workspace'; import type { LoadPriority, ReleaseType, WorkspaceFlavour, -} from '@affine/workspace/type'; +} from '@affine/env/workspace'; export interface WorkspaceAdapter { releaseType: ReleaseType; diff --git a/apps/web/src/adapters/workspace.ts b/apps/web/src/adapters/workspace.ts index cf62dd448f..b1a9a7151e 100644 --- a/apps/web/src/adapters/workspace.ts +++ b/apps/web/src/adapters/workspace.ts @@ -1,10 +1,10 @@ import { Unreachable } from '@affine/env'; -import type { AppEvents, WorkspaceUISchema } from '@affine/workspace/type'; +import type { AppEvents, WorkspaceUISchema } from '@affine/env/workspace'; import { LoadPriority, ReleaseType, WorkspaceFlavour, -} from '@affine/workspace/type'; +} from '@affine/env/workspace'; import { AffineAdapter } from './affine'; import { LocalAdapter } from './local'; diff --git a/apps/web/src/atoms/__tests__/atom.spec.ts b/apps/web/src/atoms/__tests__/atom.spec.ts index 0e3f9d990b..829ad0d6d1 100644 --- a/apps/web/src/atoms/__tests__/atom.spec.ts +++ b/apps/web/src/atoms/__tests__/atom.spec.ts @@ -4,12 +4,12 @@ import 'fake-indexeddb/auto'; import { initEmptyPage } from '@affine/env/blocksuite'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { rootCurrentWorkspaceIdAtom, rootWorkspacesMetadataAtom, } from '@affine/workspace/atom'; import { createIndexedDBDownloadProvider } from '@affine/workspace/providers'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { _cleanupBlockSuiteWorkspaceCache, createEmptyBlockSuiteWorkspace, diff --git a/apps/web/src/atoms/index.ts b/apps/web/src/atoms/index.ts index 74f49fa371..84a5798fd3 100644 --- a/apps/web/src/atoms/index.ts +++ b/apps/web/src/atoms/index.ts @@ -1,7 +1,7 @@ import { DebugLogger } from '@affine/debug'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import type { RootWorkspaceMetadata } from '@affine/workspace/atom'; import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import type { Page } from '@blocksuite/store'; import { atom } from 'jotai'; import { atomWithStorage } from 'jotai/utils'; diff --git a/apps/web/src/atoms/public-workspace/index.ts b/apps/web/src/atoms/public-workspace/index.ts index 68ce69bce3..8f09599f87 100644 --- a/apps/web/src/atoms/public-workspace/index.ts +++ b/apps/web/src/atoms/public-workspace/index.ts @@ -1,8 +1,8 @@ import type { BlockSuiteFeatureFlags } from '@affine/env'; import { config } from '@affine/env'; +import type { AffinePublicWorkspace } from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { affineApis } from '@affine/workspace/affine/shared'; -import type { AffinePublicWorkspace } from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils'; import { atom } from 'jotai'; diff --git a/apps/web/src/atoms/root.ts b/apps/web/src/atoms/root.ts index d4a2908e20..7d5ceea488 100644 --- a/apps/web/src/atoms/root.ts +++ b/apps/web/src/atoms/root.ts @@ -1,15 +1,15 @@ //#region async atoms that to load the real workspace data import { DebugLogger } from '@affine/debug'; import { config } from '@affine/env'; +import type { + NecessaryProvider, + WorkspaceRegistry, +} from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { rootCurrentWorkspaceIdAtom, rootWorkspacesMetadataAtom, } from '@affine/workspace/atom'; -import type { - NecessaryProvider, - WorkspaceRegistry, -} from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { assertExists } from '@blocksuite/store'; import { atom } from 'jotai'; diff --git a/apps/web/src/components/__debug__/client/editor.tsx b/apps/web/src/components/__debug__/client/editor.tsx index 3a1c5a2075..7749a490ff 100644 --- a/apps/web/src/components/__debug__/client/editor.tsx +++ b/apps/web/src/components/__debug__/client/editor.tsx @@ -1,5 +1,5 @@ import { initEmptyPage } from '@affine/env/blocksuite'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils'; import type { EditorContainer } from '@blocksuite/editor'; import type { Page } from '@blocksuite/store'; diff --git a/apps/web/src/components/affine/workspace-setting-detail/index.tsx b/apps/web/src/components/affine/workspace-setting-detail/index.tsx index 685bf68676..26f535f913 100644 --- a/apps/web/src/components/affine/workspace-setting-detail/index.tsx +++ b/apps/web/src/components/affine/workspace-setting-detail/index.tsx @@ -1,6 +1,6 @@ +import type { SettingPanel, WorkspaceRegistry } from '@affine/env/workspace'; +import { settingPanel, WorkspaceFlavour } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import type { SettingPanel, WorkspaceRegistry } from '@affine/workspace/type'; -import { settingPanel, WorkspaceFlavour } from '@affine/workspace/type'; import type { MouseEvent } from 'react'; import type React from 'react'; import { Suspense, useCallback, useEffect, useMemo, useRef } from 'react'; diff --git a/apps/web/src/components/affine/workspace-setting-detail/panel/collaboration/index.tsx b/apps/web/src/components/affine/workspace-setting-detail/panel/collaboration/index.tsx index 48390e339d..9e18022f48 100644 --- a/apps/web/src/components/affine/workspace-setting-detail/panel/collaboration/index.tsx +++ b/apps/web/src/components/affine/workspace-setting-detail/panel/collaboration/index.tsx @@ -1,13 +1,13 @@ import { Button, IconButton, Menu, MenuItem, Wrapper } from '@affine/component'; import { config } from '@affine/env'; import { Unreachable } from '@affine/env/constant'; -import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { PermissionType } from '@affine/workspace/affine/api'; import type { AffineLegacyCloudWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +} from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; +import { PermissionType } from '@affine/env/workspace/legacy-cloud'; +import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { DeleteTemporarilyIcon, EmailIcon, diff --git a/apps/web/src/components/affine/workspace-setting-detail/panel/general/delete/index.tsx b/apps/web/src/components/affine/workspace-setting-detail/panel/general/delete/index.tsx index 23c7fa93b7..1d03787255 100644 --- a/apps/web/src/components/affine/workspace-setting-detail/panel/general/delete/index.tsx +++ b/apps/web/src/components/affine/workspace-setting-detail/panel/general/delete/index.tsx @@ -1,7 +1,7 @@ import { Button, Input, Modal, ModalCloseButton } from '@affine/component'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { Trans } from '@affine/i18n'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name'; import { useCallback, useState } from 'react'; diff --git a/apps/web/src/components/affine/workspace-setting-detail/panel/publish/index.tsx b/apps/web/src/components/affine/workspace-setting-detail/panel/publish/index.tsx index 4d636885ff..9eaac4eba2 100644 --- a/apps/web/src/components/affine/workspace-setting-detail/panel/publish/index.tsx +++ b/apps/web/src/components/affine/workspace-setting-detail/panel/publish/index.tsx @@ -7,12 +7,12 @@ import { } from '@affine/component'; import { config } from '@affine/env'; import { Unreachable } from '@affine/env/constant'; -import { useAFFiNEI18N } from '@affine/i18n/hooks'; import type { AffineLegacyCloudWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +} from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; +import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { Box } from '@mui/material'; import type React from 'react'; import { useCallback, useEffect, useState } from 'react'; diff --git a/apps/web/src/components/affine/workspace-setting-detail/panel/sync/index.tsx b/apps/web/src/components/affine/workspace-setting-detail/panel/sync/index.tsx index bc98578ddc..6a6d1047de 100644 --- a/apps/web/src/components/affine/workspace-setting-detail/panel/sync/index.tsx +++ b/apps/web/src/components/affine/workspace-setting-detail/panel/sync/index.tsx @@ -1,7 +1,7 @@ import { Content, FlexWrapper, styled } from '@affine/component'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { Trans } from '@affine/i18n'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { useBlockSuiteWorkspaceAvatarUrl } from '@toeverything/hooks/use-block-suite-workspace-avatar-url'; import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name'; import type React from 'react'; diff --git a/apps/web/src/components/blocksuite/block-suite-page-list/index.tsx b/apps/web/src/components/blocksuite/block-suite-page-list/index.tsx index 5958cf8dc4..c00a83483c 100644 --- a/apps/web/src/components/blocksuite/block-suite-page-list/index.tsx +++ b/apps/web/src/components/blocksuite/block-suite-page-list/index.tsx @@ -5,7 +5,7 @@ import { PageList, PageListTrashView, } from '@affine/component/page-list'; -import type { View } from '@affine/component/page-list/filter/shared-types'; +import type { View } from '@affine/env/filter'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { EdgelessIcon, PageIcon } from '@blocksuite/icons'; import type { PageMeta } from '@blocksuite/store'; 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 3d786f0fda..831d4a196a 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 @@ -4,8 +4,8 @@ import { Unreachable } from '@affine/env/constant'; import type { AffineLegacyCloudWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; -import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/workspace/type'; +} from '@affine/env/workspace'; +import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/env/workspace'; import type { Page } from '@blocksuite/store'; import { assertEquals } from '@blocksuite/store'; import { useRouter } from 'next/router'; diff --git a/apps/web/src/components/blocksuite/workspace-header/header-right-items/sync-user.tsx b/apps/web/src/components/blocksuite/workspace-header/header-right-items/sync-user.tsx index 75d2dc0db6..605b13a4f7 100644 --- a/apps/web/src/components/blocksuite/workspace-header/header-right-items/sync-user.tsx +++ b/apps/web/src/components/blocksuite/workspace-header/header-right-items/sync-user.tsx @@ -1,5 +1,7 @@ import { displayFlex, IconButton, styled, Tooltip } from '@affine/component'; import { config } from '@affine/env'; +import type { LocalWorkspace } from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { getLoginStorage, @@ -7,8 +9,6 @@ import { SignMethod, } from '@affine/workspace/affine/login'; import { affineAuth } from '@affine/workspace/affine/shared'; -import type { LocalWorkspace } from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { CloudWorkspaceIcon, LocalWorkspaceIcon, diff --git a/apps/web/src/components/blocksuite/workspace-header/header.tsx b/apps/web/src/components/blocksuite/workspace-header/header.tsx index 97621a6ce9..ae25b48522 100644 --- a/apps/web/src/components/blocksuite/workspace-header/header.tsx +++ b/apps/web/src/components/blocksuite/workspace-header/header.tsx @@ -4,7 +4,7 @@ import { appSidebarOpenAtom, } from '@affine/component/app-sidebar'; import { SidebarSwitch } from '@affine/component/app-sidebar/sidebar-header'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { CloseIcon, MinusIcon, RoundedRectangleIcon } from '@blocksuite/icons'; import type { Page } from '@blocksuite/store'; import { affinePluginsAtom } from '@toeverything/plugin-infra/manager'; diff --git a/apps/web/src/components/pure/workspace-list-modal/index.tsx b/apps/web/src/components/pure/workspace-list-modal/index.tsx index 5c64c8b96f..a35d033ce5 100644 --- a/apps/web/src/components/pure/workspace-list-modal/index.tsx +++ b/apps/web/src/components/pure/workspace-list-modal/index.tsx @@ -7,13 +7,13 @@ import { Tooltip, } from '@affine/component'; import { WorkspaceList } from '@affine/component/workspace-list'; -import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import type { AccessTokenMessage } from '@affine/workspace/affine/login'; import type { AffineLegacyCloudWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +} from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; +import { useAFFiNEI18N } from '@affine/i18n/hooks'; +import type { AccessTokenMessage } from '@affine/workspace/affine/login'; import { HelpIcon, ImportIcon, PlusIcon } from '@blocksuite/icons'; import type { DragEndEvent } from '@dnd-kit/core'; import { useCallback, useRef } from 'react'; diff --git a/apps/web/src/components/root-app-sidebar/index.tsx b/apps/web/src/components/root-app-sidebar/index.tsx index b816f79604..d2a3820c67 100644 --- a/apps/web/src/components/root-app-sidebar/index.tsx +++ b/apps/web/src/components/root-app-sidebar/index.tsx @@ -10,8 +10,8 @@ import { SidebarScrollableContainer, } from '@affine/component/app-sidebar'; import { config } from '@affine/env'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { DeleteTemporarilyIcon, FolderIcon, diff --git a/apps/web/src/components/workspace-header.tsx b/apps/web/src/components/workspace-header.tsx index e624e74702..660e4a4614 100644 --- a/apps/web/src/components/workspace-header.tsx +++ b/apps/web/src/components/workspace-header.tsx @@ -6,9 +6,9 @@ import { ViewList, } from '@affine/component/page-list'; import { config } from '@affine/env'; +import type { WorkspaceHeaderProps } from '@affine/env/workspace'; +import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import type { WorkspaceHeaderProps } from '@affine/workspace/type'; -import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/workspace/type'; import { SettingsIcon } from '@blocksuite/icons'; import { RESET } from 'jotai/utils'; import type { ReactElement } from 'react'; diff --git a/apps/web/src/hooks/__tests__/index.spec.tsx b/apps/web/src/hooks/__tests__/index.spec.tsx index dd80df8e0f..e29532c890 100644 --- a/apps/web/src/hooks/__tests__/index.spec.tsx +++ b/apps/web/src/hooks/__tests__/index.spec.tsx @@ -5,8 +5,8 @@ import 'fake-indexeddb/auto'; import assert from 'node:assert'; +import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/env/workspace'; import { rootCurrentWorkspaceIdAtom } from '@affine/workspace/atom'; -import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/workspace/type'; import type { PageBlockModel } from '@blocksuite/blocks'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; import type { Page } from '@blocksuite/store'; diff --git a/apps/web/src/hooks/__tests__/use-recent-views.spec.tsx b/apps/web/src/hooks/__tests__/use-recent-views.spec.tsx index 2400b86751..aa64ab8781 100644 --- a/apps/web/src/hooks/__tests__/use-recent-views.spec.tsx +++ b/apps/web/src/hooks/__tests__/use-recent-views.spec.tsx @@ -1,12 +1,12 @@ /** * @vitest-environment happy-dom */ +import type { LocalWorkspace } from '@affine/env/workspace'; +import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/env/workspace'; import { rootCurrentWorkspaceIdAtom, rootWorkspacesMetadataAtom, } from '@affine/workspace/atom'; -import type { LocalWorkspace } from '@affine/workspace/type'; -import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/workspace/type'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; import type { Page } from '@blocksuite/store'; import { assertExists } from '@blocksuite/store'; diff --git a/apps/web/src/hooks/__tests__/use-router-helper.spec.ts b/apps/web/src/hooks/__tests__/use-router-helper.spec.ts index eaa88113dc..66b51107cc 100644 --- a/apps/web/src/hooks/__tests__/use-router-helper.spec.ts +++ b/apps/web/src/hooks/__tests__/use-router-helper.spec.ts @@ -1,7 +1,7 @@ /** * @vitest-environment happy-dom */ -import { WorkspaceSubPath } from '@affine/workspace/type'; +import { WorkspaceSubPath } from '@affine/env/workspace'; import { renderHook } from '@testing-library/react'; import { useRouter } from 'next/router'; import routerMock from 'next-router-mock'; diff --git a/apps/web/src/hooks/affine/use-affine-log-in.ts b/apps/web/src/hooks/affine/use-affine-log-in.ts index 644cdefd26..1665ca610b 100644 --- a/apps/web/src/hooks/affine/use-affine-log-in.ts +++ b/apps/web/src/hooks/affine/use-affine-log-in.ts @@ -1,4 +1,4 @@ -import { WorkspaceFlavour } from '@affine/workspace/type'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { useRouter } from 'next/router'; import { useCallback } from 'react'; diff --git a/apps/web/src/hooks/affine/use-affine-log-out.ts b/apps/web/src/hooks/affine/use-affine-log-out.ts index 7c3458be37..3bf0d45966 100644 --- a/apps/web/src/hooks/affine/use-affine-log-out.ts +++ b/apps/web/src/hooks/affine/use-affine-log-out.ts @@ -1,4 +1,4 @@ -import { WorkspaceFlavour } from '@affine/workspace/type'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { useRouter } from 'next/router'; import { useCallback } from 'react'; diff --git a/apps/web/src/hooks/affine/use-is-workspace-owner.ts b/apps/web/src/hooks/affine/use-is-workspace-owner.ts index c943016c30..5f0d12fc62 100644 --- a/apps/web/src/hooks/affine/use-is-workspace-owner.ts +++ b/apps/web/src/hooks/affine/use-is-workspace-owner.ts @@ -1,5 +1,5 @@ -import { PermissionType } from '@affine/workspace/affine/api'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +import { WorkspaceFlavour } from '@affine/env/workspace'; +import { PermissionType } from '@affine/env/workspace/legacy-cloud'; import type { AffineOfficialWorkspace } from '../../shared'; diff --git a/apps/web/src/hooks/affine/use-members.ts b/apps/web/src/hooks/affine/use-members.ts index b266d1ead8..9723614842 100644 --- a/apps/web/src/hooks/affine/use-members.ts +++ b/apps/web/src/hooks/affine/use-members.ts @@ -1,4 +1,4 @@ -import type { Member } from '@affine/workspace/affine/api'; +import type { Member } from '@affine/env/workspace/legacy-cloud'; import { affineApis } from '@affine/workspace/affine/shared'; import { useCallback } from 'react'; import useSWR from 'swr'; diff --git a/apps/web/src/hooks/affine/use-toggle-workspace-publish.ts b/apps/web/src/hooks/affine/use-toggle-workspace-publish.ts index fea2f02847..3198b8b1dc 100644 --- a/apps/web/src/hooks/affine/use-toggle-workspace-publish.ts +++ b/apps/web/src/hooks/affine/use-toggle-workspace-publish.ts @@ -1,6 +1,6 @@ +import type { AffineLegacyCloudWorkspace } from '@affine/env/workspace'; import { affineApis } from '@affine/workspace/affine/shared'; import { rootStore, rootWorkspacesMetadataAtom } from '@affine/workspace/atom'; -import type { AffineLegacyCloudWorkspace } from '@affine/workspace/type'; import { useCallback } from 'react'; import useSWR from 'swr'; diff --git a/apps/web/src/hooks/root/use-on-transform-workspace.ts b/apps/web/src/hooks/root/use-on-transform-workspace.ts index 075214d4d0..7d6c0e8eb1 100644 --- a/apps/web/src/hooks/root/use-on-transform-workspace.ts +++ b/apps/web/src/hooks/root/use-on-transform-workspace.ts @@ -1,3 +1,5 @@ +import type { WorkspaceRegistry } from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { currentAffineUserAtom } from '@affine/workspace/affine/atom'; import { getLoginStorage, @@ -8,8 +10,6 @@ import { } from '@affine/workspace/affine/login'; import { affineAuth } from '@affine/workspace/affine/shared'; import { rootCurrentWorkspaceIdAtom } from '@affine/workspace/atom'; -import type { WorkspaceRegistry } from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { useSetAtom } from 'jotai'; import { useCallback } from 'react'; diff --git a/apps/web/src/hooks/use-router-helper.ts b/apps/web/src/hooks/use-router-helper.ts index 57ee2d4aaa..158d03fc41 100644 --- a/apps/web/src/hooks/use-router-helper.ts +++ b/apps/web/src/hooks/use-router-helper.ts @@ -1,4 +1,4 @@ -import type { WorkspaceSubPath } from '@affine/workspace/type'; +import type { WorkspaceSubPath } from '@affine/env/workspace'; import type { NextRouter } from 'next/router'; import { useCallback } from 'react'; diff --git a/apps/web/src/hooks/use-transform-workspace.ts b/apps/web/src/hooks/use-transform-workspace.ts index 892dde759b..1ccabba388 100644 --- a/apps/web/src/hooks/use-transform-workspace.ts +++ b/apps/web/src/hooks/use-transform-workspace.ts @@ -1,6 +1,6 @@ +import type { WorkspaceFlavour } from '@affine/env/workspace'; +import type { WorkspaceRegistry } from '@affine/env/workspace'; import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom'; -import type { WorkspaceFlavour } from '@affine/workspace/type'; -import type { WorkspaceRegistry } from '@affine/workspace/type'; import { useSetAtom } from 'jotai'; import { useCallback } from 'react'; diff --git a/apps/web/src/hooks/use-workspaces.ts b/apps/web/src/hooks/use-workspaces.ts index 5602dbbd29..9082084963 100644 --- a/apps/web/src/hooks/use-workspaces.ts +++ b/apps/web/src/hooks/use-workspaces.ts @@ -1,8 +1,8 @@ import { DebugLogger } from '@affine/debug'; +import type { LocalWorkspace } from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom'; import { saveWorkspaceToLocalStorage } from '@affine/workspace/local/crud'; -import type { LocalWorkspace } from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils'; import { nanoid } from '@blocksuite/store'; import { useAtomValue, useSetAtom } from 'jotai'; diff --git a/apps/web/src/layouts/public-workspace-layout.tsx b/apps/web/src/layouts/public-workspace-layout.tsx index 143966c51c..fe3234f1c6 100644 --- a/apps/web/src/layouts/public-workspace-layout.tsx +++ b/apps/web/src/layouts/public-workspace-layout.tsx @@ -1,5 +1,5 @@ import { AppContainer, MainContainer } from '@affine/component/workspace'; -import type { AffinePublicWorkspace } from '@affine/workspace/type'; +import type { AffinePublicWorkspace } from '@affine/env/workspace'; import { useAtom } from 'jotai'; import Head from 'next/head'; import { useRouter } from 'next/router'; diff --git a/apps/web/src/layouts/workspace-layout.tsx b/apps/web/src/layouts/workspace-layout.tsx index ed74bd04ea..946ff886ce 100644 --- a/apps/web/src/layouts/workspace-layout.tsx +++ b/apps/web/src/layouts/workspace-layout.tsx @@ -12,6 +12,8 @@ import { import { DebugLogger } from '@affine/debug'; import { config, DEFAULT_HELLO_WORLD_PAGE_ID } from '@affine/env'; import { initEmptyPage, initPageWithPreloading } from '@affine/env/blocksuite'; +import type { BackgroundProvider } from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { setUpLanguage, useI18N } from '@affine/i18n'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { createAffineGlobalChannel } from '@affine/workspace/affine/sync'; @@ -21,8 +23,6 @@ import { rootStore, rootWorkspacesMetadataAtom, } from '@affine/workspace/atom'; -import type { BackgroundProvider } from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { assertEquals, assertExists, nanoid } from '@blocksuite/store'; import type { DragEndEvent } from '@dnd-kit/core'; import { diff --git a/apps/web/src/pages/_debug/broadcast.dev.tsx b/apps/web/src/pages/_debug/broadcast.dev.tsx index 143bc02a26..75e483700b 100644 --- a/apps/web/src/pages/_debug/broadcast.dev.tsx +++ b/apps/web/src/pages/_debug/broadcast.dev.tsx @@ -1,9 +1,9 @@ import { Button } from '@affine/component'; import { AppContainer, MainContainer } from '@affine/component/workspace'; import { DebugLogger } from '@affine/debug'; +import type { BroadCastChannelProvider } from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { createBroadCastChannelProvider } from '@affine/workspace/providers'; -import type { BroadCastChannelProvider } from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils'; import { nanoid } from '@blocksuite/store'; import { Typography } from '@mui/material'; diff --git a/apps/web/src/pages/index.tsx b/apps/web/src/pages/index.tsx index 87f2f6a51f..1253023e8c 100644 --- a/apps/web/src/pages/index.tsx +++ b/apps/web/src/pages/index.tsx @@ -1,6 +1,6 @@ import { WorkspaceFallback } from '@affine/component/workspace'; import { DebugLogger } from '@affine/debug'; -import { WorkspaceSubPath } from '@affine/workspace/type'; +import { WorkspaceSubPath } from '@affine/env/workspace'; import type { NextPage } from 'next'; import { useRouter } from 'next/router'; import { Suspense, useEffect } from 'react'; diff --git a/apps/web/src/pages/invite/[invite-code].tsx b/apps/web/src/pages/invite/[invite-code].tsx index 2ac21af83e..3c10ac01d2 100644 --- a/apps/web/src/pages/invite/[invite-code].tsx +++ b/apps/web/src/pages/invite/[invite-code].tsx @@ -1,7 +1,7 @@ import { displayFlex, styled } from '@affine/component'; import { Button } from '@affine/component'; -import type { Permission } from '@affine/workspace/affine/api'; -import { WorkspaceSubPath } from '@affine/workspace/type'; +import { WorkspaceSubPath } from '@affine/env/workspace'; +import type { Permission } from '@affine/env/workspace/legacy-cloud'; import { SucessfulDuotoneIcon, UnsucessfulDuotoneIcon, diff --git a/apps/web/src/pages/workspace/[workspaceId]/all.tsx b/apps/web/src/pages/workspace/[workspaceId]/all.tsx index 79b56d2c1e..28194cd7ab 100644 --- a/apps/web/src/pages/workspace/[workspaceId]/all.tsx +++ b/apps/web/src/pages/workspace/[workspaceId]/all.tsx @@ -1,7 +1,7 @@ import { useAllPageSetting } from '@affine/component/page-list'; import { QueryParamError } from '@affine/env/constant'; +import { WorkspaceSubPath } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { WorkspaceSubPath } from '@affine/workspace/type'; import { assertExists } from '@blocksuite/store'; import Head from 'next/head'; import { useRouter } from 'next/router'; diff --git a/apps/web/src/pages/workspace/[workspaceId]/setting.tsx b/apps/web/src/pages/workspace/[workspaceId]/setting.tsx index a983aaf4f1..a04727a2a8 100644 --- a/apps/web/src/pages/workspace/[workspaceId]/setting.tsx +++ b/apps/web/src/pages/workspace/[workspaceId]/setting.tsx @@ -1,10 +1,10 @@ -import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import type { SettingPanel } from '@affine/workspace/type'; +import type { SettingPanel } from '@affine/env/workspace'; import { settingPanel, settingPanelValues, WorkspaceSubPath, -} from '@affine/workspace/type'; +} from '@affine/env/workspace'; +import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { assertExists } from '@blocksuite/store'; import { useAtom } from 'jotai'; import { atomWithStorage } from 'jotai/utils'; diff --git a/apps/web/src/pages/workspace/[workspaceId]/shared.tsx b/apps/web/src/pages/workspace/[workspaceId]/shared.tsx index 33fd159e2c..8c8e11a4b2 100644 --- a/apps/web/src/pages/workspace/[workspaceId]/shared.tsx +++ b/apps/web/src/pages/workspace/[workspaceId]/shared.tsx @@ -1,5 +1,5 @@ +import { WorkspaceSubPath } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { WorkspaceSubPath } from '@affine/workspace/type'; import { assertExists } from '@blocksuite/store'; import Head from 'next/head'; import { useRouter } from 'next/router'; diff --git a/apps/web/src/pages/workspace/[workspaceId]/trash.tsx b/apps/web/src/pages/workspace/[workspaceId]/trash.tsx index 2fe456a78c..81ca1bad81 100644 --- a/apps/web/src/pages/workspace/[workspaceId]/trash.tsx +++ b/apps/web/src/pages/workspace/[workspaceId]/trash.tsx @@ -1,5 +1,5 @@ +import { WorkspaceSubPath } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { WorkspaceSubPath } from '@affine/workspace/type'; import { assertExists } from '@blocksuite/store'; import Head from 'next/head'; import { useRouter } from 'next/router'; diff --git a/apps/web/src/providers/modal-provider.tsx b/apps/web/src/providers/modal-provider.tsx index 874cc126e7..9e4e6c5a90 100644 --- a/apps/web/src/providers/modal-provider.tsx +++ b/apps/web/src/providers/modal-provider.tsx @@ -1,9 +1,9 @@ import { env } from '@affine/env'; +import { WorkspaceSubPath } from '@affine/env/workspace'; import { rootCurrentWorkspaceIdAtom, rootWorkspacesMetadataAtom, } from '@affine/workspace/atom'; -import { WorkspaceSubPath } from '@affine/workspace/type'; import { arrayMove } from '@dnd-kit/sortable'; import { useAtom, useSetAtom } from 'jotai'; import { useRouter } from 'next/router'; diff --git a/apps/web/src/shared/index.ts b/apps/web/src/shared/index.ts index 7c97b2c06e..f9b047dfa0 100644 --- a/apps/web/src/shared/index.ts +++ b/apps/web/src/shared/index.ts @@ -1,9 +1,9 @@ import type { AffineLegacyCloudWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; -import type { AffinePublicWorkspace } from '@affine/workspace/type'; -import type { WorkspaceRegistry } from '@affine/workspace/type'; +} from '@affine/env/workspace'; +import type { AffinePublicWorkspace } from '@affine/env/workspace'; +import type { WorkspaceRegistry } from '@affine/env/workspace'; import { Workspace as BlockSuiteWorkspace } from '@blocksuite/store'; import type { NextPage } from 'next'; import type { ReactElement, ReactNode } from 'react'; diff --git a/packages/component/src/components/card/workspace-card/index.tsx b/packages/component/src/components/card/workspace-card/index.tsx index 3b2e80bf99..c552ff0a17 100644 --- a/packages/component/src/components/card/workspace-card/index.tsx +++ b/packages/component/src/components/card/workspace-card/index.tsx @@ -1,10 +1,10 @@ -import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { PermissionType } from '@affine/workspace/affine/api'; import type { AffineLegacyCloudWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +} from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; +import { PermissionType } from '@affine/env/workspace/legacy-cloud'; +import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { SettingsIcon } from '@blocksuite/icons'; import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name'; import type { FC } from 'react'; diff --git a/packages/component/src/components/page-list/__tests__/filter.spec.tsx b/packages/component/src/components/page-list/__tests__/filter.spec.tsx index bb8e0fadae..b9426584e0 100644 --- a/packages/component/src/components/page-list/__tests__/filter.spec.tsx +++ b/packages/component/src/components/page-list/__tests__/filter.spec.tsx @@ -3,6 +3,12 @@ */ import 'fake-indexeddb/auto'; +import type { + Filter, + LiteralValue, + Ref, + VariableMap, +} from '@affine/env/filter'; import { assertExists } from '@blocksuite/global/utils'; import { render } from '@testing-library/react'; import { useState } from 'react'; @@ -10,12 +16,6 @@ import { describe, expect, test } from 'vitest'; import { Condition } from '../filter/condition'; import { tBoolean, tDate } from '../filter/logical/custom-type'; -import type { - Filter, - LiteralValue, - Ref, - VariableMap, -} from '../filter/shared-types'; import { toLiteral } from '../filter/shared-types'; import type { FilterMatcherDataType } from '../filter/vars'; import { filterMatcher } from '../filter/vars'; diff --git a/packages/component/src/components/page-list/filter/condition.tsx b/packages/component/src/components/page-list/filter/condition.tsx index 1abe64578c..baf6e03ee4 100644 --- a/packages/component/src/components/page-list/filter/condition.tsx +++ b/packages/component/src/components/page-list/filter/condition.tsx @@ -1,3 +1,4 @@ +import type { Filter, Literal } from '@affine/env/filter'; import type { ReactNode } from 'react'; import { useMemo } from 'react'; @@ -5,7 +6,6 @@ import { Menu, MenuItem } from '../../../ui/menu'; import * as styles from './index.css'; import { literalMatcher } from './literal-matcher'; import type { TFunction, TType } from './logical/typesystem'; -import type { Filter, Literal } from './shared-types'; import { filterMatcher, VariableSelect, vars } from './vars'; export const Condition = ({ diff --git a/packages/component/src/components/page-list/filter/eval.ts b/packages/component/src/components/page-list/filter/eval.ts index f29c78ce9f..6fddff8de3 100644 --- a/packages/component/src/components/page-list/filter/eval.ts +++ b/packages/component/src/components/page-list/filter/eval.ts @@ -1,4 +1,5 @@ -import type { Filter, Literal, Ref, VariableMap } from './shared-types'; +import type { Filter, Literal, Ref, VariableMap } from '@affine/env/filter'; + import { filterMatcher } from './vars'; const evalRef = (ref: Ref, variableMap: VariableMap) => { diff --git a/packages/component/src/components/page-list/filter/filter-list.tsx b/packages/component/src/components/page-list/filter/filter-list.tsx index 50d32160e8..0f8ca4fc47 100644 --- a/packages/component/src/components/page-list/filter/filter-list.tsx +++ b/packages/component/src/components/page-list/filter/filter-list.tsx @@ -1,9 +1,9 @@ +import type { Filter } from '@affine/env/filter'; import { CloseIcon, PlusIcon } from '@blocksuite/icons'; import { Menu } from '../../..'; import { Condition } from './condition'; import * as styles from './index.css'; -import type { Filter } from './shared-types'; import { CreateFilterMenu } from './vars'; export const FilterList = ({ value, diff --git a/packages/component/src/components/page-list/filter/literal-matcher.tsx b/packages/component/src/components/page-list/filter/literal-matcher.tsx index 51dd62281d..e2bdf52228 100644 --- a/packages/component/src/components/page-list/filter/literal-matcher.tsx +++ b/packages/component/src/components/page-list/filter/literal-matcher.tsx @@ -1,3 +1,4 @@ +import type { Literal } from '@affine/env/filter'; import dayjs from 'dayjs'; import type { ReactNode } from 'react'; @@ -6,7 +7,6 @@ import { tBoolean, tDate } from './logical/custom-type'; import { Matcher } from './logical/matcher'; import type { TType } from './logical/typesystem'; import { typesystem } from './logical/typesystem'; -import type { Literal } from './shared-types'; export const literalMatcher = new Matcher<{ render: (props: { diff --git a/packages/component/src/components/page-list/filter/shared-types.tsx b/packages/component/src/components/page-list/filter/shared-types.tsx index aadd7e630c..5a3527ce4c 100644 --- a/packages/component/src/components/page-list/filter/shared-types.tsx +++ b/packages/component/src/components/page-list/filter/shared-types.tsx @@ -1,34 +1,14 @@ +import type { Literal, LiteralValue, VariableMap } from '@affine/env/filter'; import { DateTimeIcon, FavoritedIcon } from '@blocksuite/icons'; import type { ReactElement } from 'react'; import { tBoolean, tDate } from './logical/custom-type'; import type { TType } from './logical/typesystem'; -export type Ref = { - type: 'ref'; - name: keyof VariableMap; -}; - -export type Filter = { - type: 'filter'; - left: Ref; - funcName: string; - args: Literal[]; -}; -export type LiteralValue = - | number - | string - | boolean - | { [K: string]: LiteralValue } - | Array; export const toLiteral = (value: LiteralValue): Literal => ({ type: 'literal', value, }); -export type Literal = { - type: 'literal'; - value: LiteralValue; -}; export type FilterVariable = { name: keyof VariableMap; @@ -56,11 +36,12 @@ export const variableDefineMap = { // type: tBoolean.create(), // }, } as const; -export type VariableMap = { + +export type InternalVariableMap = { [K in keyof typeof variableDefineMap]: LiteralValue; }; -export type View = { - id: string; - name: string; - filterList: Filter[]; -}; + +declare module '@affine/env/filter' { + // eslint-disable-next-line @typescript-eslint/no-empty-interface + interface VariableMap extends InternalVariableMap {} +} diff --git a/packages/component/src/components/page-list/filter/vars.tsx b/packages/component/src/components/page-list/filter/vars.tsx index 968c7a7a2c..a1f2b114d9 100644 --- a/packages/component/src/components/page-list/filter/vars.tsx +++ b/packages/component/src/components/page-list/filter/vars.tsx @@ -1,3 +1,4 @@ +import type { Filter, LiteralValue, VariableMap } from '@affine/env/filter'; import dayjs from 'dayjs'; import type { ReactNode } from 'react'; @@ -7,12 +8,7 @@ import { tBoolean, tDate } from './logical/custom-type'; import { Matcher } from './logical/matcher'; import type { TFunction } from './logical/typesystem'; import { tFunction, typesystem } from './logical/typesystem'; -import type { - Filter, - FilterVariable, - LiteralValue, - VariableMap, -} from './shared-types'; +import type { FilterVariable } from './shared-types'; import { variableDefineMap } from './shared-types'; export const vars: FilterVariable[] = Object.entries(variableDefineMap).map( diff --git a/packages/component/src/components/page-list/use-all-page-setting.ts b/packages/component/src/components/page-list/use-all-page-setting.ts index 8b0c5f5f47..45322552e1 100644 --- a/packages/component/src/components/page-list/use-all-page-setting.ts +++ b/packages/component/src/components/page-list/use-all-page-setting.ts @@ -1,3 +1,4 @@ +import type { Filter, VariableMap, View } from '@affine/env/filter'; import type { DBSchema } from 'idb'; import { openDB } from 'idb'; import type { IDBPDatabase } from 'idb/build/entry'; @@ -8,7 +9,6 @@ import useSWRImmutable from 'swr/immutable'; import { NIL } from 'uuid'; import { evalFilterList } from './filter'; -import type { Filter, VariableMap, View } from './filter/shared-types'; type PersistenceView = View; diff --git a/packages/component/src/components/page-list/view/create-view.tsx b/packages/component/src/components/page-list/view/create-view.tsx index cb8b290038..ad2c1f3c76 100644 --- a/packages/component/src/components/page-list/view/create-view.tsx +++ b/packages/component/src/components/page-list/view/create-view.tsx @@ -1,10 +1,10 @@ +import type { Filter, View } from '@affine/env/filter'; import { SaveIcon } from '@blocksuite/icons'; import { uuidv4 } from '@blocksuite/store'; import { useState } from 'react'; import { Button, Input, Modal, ModalWrapper } from '../../..'; import { FilterList } from '../filter'; -import type { Filter, View } from '../filter/shared-types'; import * as styles from './view-list.css'; type CreateViewProps = { diff --git a/packages/component/src/components/share-menu/share-menu.tsx b/packages/component/src/components/share-menu/share-menu.tsx index 10e493f05f..62f6718e8a 100644 --- a/packages/component/src/components/share-menu/share-menu.tsx +++ b/packages/component/src/components/share-menu/share-menu.tsx @@ -1,7 +1,7 @@ import type { AffineLegacyCloudWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; +} from '@affine/env/workspace'; import { ExportIcon, PublishIcon, ShareIcon } from '@blocksuite/icons'; import type { Page } from '@blocksuite/store'; import { useBlockSuiteWorkspacePageIsPublic } from '@toeverything/hooks/use-block-suite-workspace-page-is-public'; diff --git a/packages/component/src/components/share-menu/share-page.tsx b/packages/component/src/components/share-menu/share-page.tsx index ee62b86f19..b709fa63f6 100644 --- a/packages/component/src/components/share-menu/share-page.tsx +++ b/packages/component/src/components/share-menu/share-page.tsx @@ -1,8 +1,8 @@ import { prefixUrl } from '@affine/env'; +import type { LocalWorkspace } from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { Trans } from '@affine/i18n'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import type { LocalWorkspace } from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; import { useBlockSuiteWorkspacePageIsPublic } from '@toeverything/hooks/use-block-suite-workspace-page-is-public'; import type { FC } from 'react'; import { useState } from 'react'; diff --git a/packages/component/src/components/share-menu/share-workspace.tsx b/packages/component/src/components/share-menu/share-workspace.tsx index b905f79b9b..003815be4e 100644 --- a/packages/component/src/components/share-menu/share-workspace.tsx +++ b/packages/component/src/components/share-menu/share-workspace.tsx @@ -1,9 +1,9 @@ -import { useAFFiNEI18N } from '@affine/i18n/hooks'; import type { AffineLegacyCloudWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +} from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; +import { useAFFiNEI18N } from '@affine/i18n/hooks'; import type { FC } from 'react'; import { descriptionStyle, menuItemStyle } from './index.css'; diff --git a/packages/component/src/components/workspace-avatar/index.tsx b/packages/component/src/components/workspace-avatar/index.tsx index 38944aba8a..056ab27bd4 100644 --- a/packages/component/src/components/workspace-avatar/index.tsx +++ b/packages/component/src/components/workspace-avatar/index.tsx @@ -2,7 +2,7 @@ import type { AffineLegacyCloudWorkspace, AffinePublicWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; +} from '@affine/env/workspace'; import type { Workspace } from '@blocksuite/store'; import * as RadixAvatar from '@radix-ui/react-avatar'; import { useBlockSuiteWorkspaceAvatarUrl } from '@toeverything/hooks/use-block-suite-workspace-avatar-url'; diff --git a/packages/component/src/components/workspace-list/index.tsx b/packages/component/src/components/workspace-list/index.tsx index 3e69dd03e1..58d76baa4f 100644 --- a/packages/component/src/components/workspace-list/index.tsx +++ b/packages/component/src/components/workspace-list/index.tsx @@ -1,7 +1,7 @@ import type { AffineLegacyCloudWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; +} from '@affine/env/workspace'; import type { DragEndEvent } from '@dnd-kit/core'; import { DndContext, diff --git a/packages/component/tsconfig.json b/packages/component/tsconfig.json index 031655f24c..5ff508a890 100644 --- a/packages/component/tsconfig.json +++ b/packages/component/tsconfig.json @@ -1,12 +1,6 @@ { "extends": "../../tsconfig.json", - "exclude": [ - "lib", - "./src/components/page-list/filter/shared-types.tsx", - "./src/components/page-list/filter/logic/custom-type.ts", - "./src/components/page-list/filter/logic/matcher.ts", - "./src/components/page-list/filter/logic/typesystem.ts" - ], + "exclude": ["lib"], "include": ["./src/**/*", "./src/**/*.json"], "compilerOptions": { "composite": true, @@ -30,7 +24,6 @@ { "path": "../../apps/electron" }, - { "path": "./tsconfig.workspace.json" }, { "path": "../../tests/fixtures" } ] } diff --git a/packages/env/package.json b/packages/env/package.json index 0c26db42d0..e45a7c863d 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -15,6 +15,9 @@ ".": "./src/index.ts", "./config": "./src/config.ts", "./constant": "./src/constant.ts", + "./workspace": "./src/workspace.ts", + "./workspace/legacy-cloud": "./src/workspace/legacy-cloud/index.ts", + "./filter": "./src/filter.ts", "./blocksuite": "./src/blocksuite/index.ts" }, "peerDependencies": { diff --git a/packages/env/src/filter.ts b/packages/env/src/filter.ts new file mode 100644 index 0000000000..2b0d80f44b --- /dev/null +++ b/packages/env/src/filter.ts @@ -0,0 +1,32 @@ +export type LiteralValue = + | number + | string + | boolean + | { [K: string]: LiteralValue } + | Array; + +export type Ref = { + type: 'ref'; + name: keyof VariableMap; +}; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface VariableMap {} + +export type Literal = { + type: 'literal'; + value: LiteralValue; +}; + +export type Filter = { + type: 'filter'; + left: Ref; + funcName: string; + args: Literal[]; +}; + +export type View = { + id: string; + name: string; + filterList: Filter[]; +}; diff --git a/packages/workspace/src/type.ts b/packages/env/src/workspace.ts similarity index 97% rename from packages/workspace/src/type.ts rename to packages/env/src/workspace.ts index 5554064165..b4663bc982 100644 --- a/packages/workspace/src/type.ts +++ b/packages/env/src/workspace.ts @@ -1,10 +1,10 @@ -import type { View } from '@affine/component/page-list/filter/shared-types'; import type { EditorContainer } from '@blocksuite/editor'; import type { Page } from '@blocksuite/store'; import type { Workspace as BlockSuiteWorkspace } from '@blocksuite/store'; import type { FC, PropsWithChildren } from 'react'; -import type { Workspace as RemoteWorkspace } from './affine/api'; +import type { View } from './filter'; +import type { Workspace as RemoteWorkspace } from './workspace/legacy-cloud'; export enum WorkspaceSubPath { ALL = 'all', diff --git a/packages/env/src/workspace/legacy-cloud/index.ts b/packages/env/src/workspace/legacy-cloud/index.ts new file mode 100644 index 0000000000..268c885206 --- /dev/null +++ b/packages/env/src/workspace/legacy-cloud/index.ts @@ -0,0 +1,129 @@ +import { z } from 'zod'; + +export interface User { + id: string; + name: string; + email: string; + avatar_url: string; + create_at: string; +} + +export interface GetUserByEmailParams { + email: string; + workspace_id: string; +} + +export const usageResponseSchema = z.object({ + blob_usage: z.object({ + usage: z.number(), + max_usage: z.number(), + }), +}); + +export type UsageResponse = z.infer; + +export interface GetWorkspaceDetailParams { + id: string; +} + +export enum WorkspaceType { + Private = 0, + Normal = 1, +} + +export enum PermissionType { + Read = 0, + Write = 1, + Admin = 10, + Owner = 99, +} + +export const userSchema = z.object({ + id: z.string(), + name: z.string(), + email: z.string(), + avatar_url: z.string(), + created_at: z.number(), +}); + +export const workspaceSchema = z.object({ + id: z.string(), + type: z.nativeEnum(WorkspaceType), + public: z.boolean(), + permission: z.nativeEnum(PermissionType), +}); + +export type Workspace = z.infer; + +export const workspaceDetailSchema = z.object({ + ...workspaceSchema.shape, + permission: z.undefined(), + owner: userSchema, + member_count: z.number(), +}); + +export type WorkspaceDetail = z.infer; + +export interface Permission { + id: string; + type: PermissionType; + workspace_id: string; + user_id: string; + user_email: string; + accepted: boolean; + create_at: number; +} + +export interface RegisteredUser extends User { + type: 'Registered'; +} + +export interface UnregisteredUser { + type: 'Unregistered'; + email: string; +} + +export interface Member extends Permission { + user: RegisteredUser | UnregisteredUser; +} + +export interface GetWorkspaceMembersParams { + id: string; +} + +export interface CreateWorkspaceParams { + name: string; +} + +export interface UpdateWorkspaceParams { + id: string; + public: boolean; +} + +export interface DeleteWorkspaceParams { + id: string; +} + +export interface InviteMemberParams { + id: string; + email: string; +} + +export interface RemoveMemberParams { + permissionId: number; +} + +export interface AcceptInvitingParams { + invitingCode: string; +} + +export interface LeaveWorkspaceParams { + id: number | string; +} + +export const createWorkspaceResponseSchema = z.object({ + id: z.string(), + public: z.boolean(), + type: z.nativeEnum(WorkspaceType), + created_at: z.number(), +}); diff --git a/packages/jotai/package.json b/packages/jotai/package.json index 5165c2f08d..504162407e 100644 --- a/packages/jotai/package.json +++ b/packages/jotai/package.json @@ -3,7 +3,6 @@ "private": true, "main": "./src/index.ts", "dependencies": { - "@affine/env": "workspace:*", "jotai": "^2.1.1" }, "devDependencies": { diff --git a/packages/jotai/src/resource.ts b/packages/jotai/src/resource.ts index 12533be237..19dda53904 100644 --- a/packages/jotai/src/resource.ts +++ b/packages/jotai/src/resource.ts @@ -1,11 +1,10 @@ -import { env } from '@affine/env'; import type { EditorContainer } from '@blocksuite/editor'; import { atom } from 'jotai'; export const lottieAtom = atom(import('lottie-web').then(m => m.default)); export const editorContainerModuleAtom = atom>( - env.isServer + typeof window === 'undefined' ? async () => import('@blocksuite/editor').then(module => module.EditorContainer) : (import('@blocksuite/editor').then( diff --git a/packages/jotai/tsconfig.json b/packages/jotai/tsconfig.json index aa1d65db12..8034f93ce4 100644 --- a/packages/jotai/tsconfig.json +++ b/packages/jotai/tsconfig.json @@ -5,6 +5,5 @@ "composite": true, "noEmit": false, "outDir": "lib" - }, - "references": [{ "path": "../env" }] + } } diff --git a/packages/storybook/src/stories/card.stories.tsx b/packages/storybook/src/stories/card.stories.tsx index 6c9f0da710..ceac671a69 100644 --- a/packages/storybook/src/stories/card.stories.tsx +++ b/packages/storybook/src/stories/card.stories.tsx @@ -1,7 +1,7 @@ import { toast } from '@affine/component'; import { BlockCard } from '@affine/component/card/block-card'; import { WorkspaceCard } from '@affine/component/card/workspace-card'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { EdgelessIcon, PageIcon } from '@blocksuite/icons'; import { Workspace } from '@blocksuite/store'; diff --git a/packages/storybook/src/stories/image-preview-modal.stories.tsx b/packages/storybook/src/stories/image-preview-modal.stories.tsx index 74e524df04..e8f473cc37 100644 --- a/packages/storybook/src/stories/image-preview-modal.stories.tsx +++ b/packages/storybook/src/stories/image-preview-modal.stories.tsx @@ -1,7 +1,7 @@ import { BlockSuiteEditor } from '@affine/component/block-suite-editor'; import { ImagePreviewModal } from '@affine/component/image-preview-modal'; import { initEmptyPage } from '@affine/env/blocksuite'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils'; import type { Meta } from '@storybook/react'; diff --git a/packages/storybook/src/stories/share-menu.stories.tsx b/packages/storybook/src/stories/share-menu.stories.tsx index 7b3031a3b7..4ec92a8205 100644 --- a/packages/storybook/src/stories/share-menu.stories.tsx +++ b/packages/storybook/src/stories/share-menu.stories.tsx @@ -2,12 +2,15 @@ import { toast } from '@affine/component'; import { PublicLinkDisableModal } from '@affine/component/share-menu/disable-public-link'; import { ShareMenu } from '@affine/component/share-menu/share-menu'; import { StyledDisableButton } from '@affine/component/share-menu/styles'; -import { PermissionType, WorkspaceType } from '@affine/workspace/affine/api'; import type { AffineLegacyCloudWorkspace, LocalWorkspace, -} from '@affine/workspace/type'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +} from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; +import { + PermissionType, + WorkspaceType, +} from '@affine/env/workspace/legacy-cloud'; import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils'; import type { Page } from '@blocksuite/store'; import { expect } from '@storybook/jest'; diff --git a/packages/storybook/src/stories/workspace-avatar.stories.tsx b/packages/storybook/src/stories/workspace-avatar.stories.tsx index b7e70f37b5..c2ad0690da 100644 --- a/packages/storybook/src/stories/workspace-avatar.stories.tsx +++ b/packages/storybook/src/stories/workspace-avatar.stories.tsx @@ -1,6 +1,6 @@ import type { WorkspaceAvatarProps } from '@affine/component/workspace-avatar'; import { WorkspaceAvatar } from '@affine/component/workspace-avatar'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { Workspace } from '@blocksuite/store'; import type { Meta, StoryFn } from '@storybook/react'; diff --git a/packages/storybook/src/stories/workspace-list.stories.tsx b/packages/storybook/src/stories/workspace-list.stories.tsx index c3ae79386a..b3de68ceba 100644 --- a/packages/storybook/src/stories/workspace-list.stories.tsx +++ b/packages/storybook/src/stories/workspace-list.stories.tsx @@ -1,6 +1,6 @@ import type { WorkspaceListProps } from '@affine/component/workspace-list'; import { WorkspaceList } from '@affine/component/workspace-list'; -import { WorkspaceFlavour } from '@affine/workspace/type'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils'; import { arrayMove } from '@dnd-kit/sortable'; import type { Meta } from '@storybook/react'; diff --git a/packages/workspace/src/affine/__tests__/api.spec.ts b/packages/workspace/src/affine/__tests__/api.spec.ts index a3692e87e3..17b5e0972a 100644 --- a/packages/workspace/src/affine/__tests__/api.spec.ts +++ b/packages/workspace/src/affine/__tests__/api.spec.ts @@ -6,6 +6,11 @@ import 'fake-indexeddb/auto'; import { readFile } from 'node:fs/promises'; import { MessageCode } from '@affine/env/constant'; +import { WorkspaceFlavour } from '@affine/env/workspace'; +import { + createWorkspaceResponseSchema, + usageResponseSchema, +} from '@affine/env/workspace/legacy-cloud'; import user1 from '@affine-test/fixtures/built-in-user1.json'; import user2 from '@affine-test/fixtures/built-in-user2.json'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; @@ -17,15 +22,8 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; import { WebSocket } from 'ws'; import { applyUpdate } from 'yjs'; -import { WorkspaceFlavour } from '../../type'; import { createEmptyBlockSuiteWorkspace } from '../../utils'; -import { - createUserApis, - createWorkspaceApis, - createWorkspaceResponseSchema, - RequestError, - usageResponseSchema, -} from '../api'; +import { createUserApis, createWorkspaceApis, RequestError } from '../api'; import { createStatusApis } from '../api/status'; import { KeckProvider } from '../keck'; import { diff --git a/packages/workspace/src/affine/__tests__/sync.spec.ts b/packages/workspace/src/affine/__tests__/sync.spec.ts index 459f756700..44c2814a89 100644 --- a/packages/workspace/src/affine/__tests__/sync.spec.ts +++ b/packages/workspace/src/affine/__tests__/sync.spec.ts @@ -3,6 +3,9 @@ */ import 'fake-indexeddb/auto'; +import { WorkspaceFlavour } from '@affine/env/workspace'; +import type { Workspace } from '@affine/env/workspace/legacy-cloud'; +import { PermissionType } from '@affine/env/workspace/legacy-cloud'; import user1 from '@affine-test/fixtures/built-in-user1.json'; import user2 from '@affine-test/fixtures/built-in-user2.json'; import type { ParagraphBlockModel } from '@blocksuite/blocks/models'; @@ -13,10 +16,8 @@ import { WebSocket } from 'ws'; import type { LoginResponse } from '../../affine/login'; import { loginResponseSchema } from '../../affine/login'; -import { WorkspaceFlavour } from '../../type'; import { createEmptyBlockSuiteWorkspace } from '../../utils'; -import type { Workspace } from '../api'; -import { createWorkspaceApis, PermissionType } from '../api'; +import { createWorkspaceApis } from '../api'; import { KeckProvider } from '../keck'; declare module '@blocksuite/store' { diff --git a/packages/workspace/src/affine/api/index.ts b/packages/workspace/src/affine/api/index.ts index 6dd9f77ac4..5dbcdbce1c 100644 --- a/packages/workspace/src/affine/api/index.ts +++ b/packages/workspace/src/affine/api/index.ts @@ -1,5 +1,20 @@ import { MessageCode, Messages } from '@affine/env'; -import { z } from 'zod'; +import type { + AcceptInvitingParams, + DeleteWorkspaceParams, + GetUserByEmailParams, + GetWorkspaceDetailParams, + InviteMemberParams, + LeaveWorkspaceParams, + Member, + Permission, + RemoveMemberParams, + UpdateWorkspaceParams, + UsageResponse, + User, + Workspace, + WorkspaceDetail, +} from '@affine/env/workspace/legacy-cloud'; import { checkLoginStorage } from '../login'; @@ -28,28 +43,6 @@ function sendMessage(code: (typeof MessageCode)[keyof typeof MessageCode]) { ); } -export interface User { - id: string; - name: string; - email: string; - avatar_url: string; - create_at: string; -} - -export interface GetUserByEmailParams { - email: string; - workspace_id: string; -} - -export const usageResponseSchema = z.object({ - blob_usage: z.object({ - usage: z.number(), - max_usage: z.number(), - }), -}); - -export type UsageResponse = z.infer; - export function createUserApis(prefixUrl = '/') { return { getUsage: async (): Promise => { @@ -78,112 +71,6 @@ export function createUserApis(prefixUrl = '/') { } as const; } -export interface GetWorkspaceDetailParams { - id: string; -} - -export enum WorkspaceType { - Private = 0, - Normal = 1, -} - -export enum PermissionType { - Read = 0, - Write = 1, - Admin = 10, - Owner = 99, -} - -export const userSchema = z.object({ - id: z.string(), - name: z.string(), - email: z.string(), - avatar_url: z.string(), - created_at: z.number(), -}); - -export const workspaceSchema = z.object({ - id: z.string(), - type: z.nativeEnum(WorkspaceType), - public: z.boolean(), - permission: z.nativeEnum(PermissionType), -}); - -export type Workspace = z.infer; - -export const workspaceDetailSchema = z.object({ - ...workspaceSchema.shape, - permission: z.undefined(), - owner: userSchema, - member_count: z.number(), -}); - -export type WorkspaceDetail = z.infer; - -export interface Permission { - id: string; - type: PermissionType; - workspace_id: string; - user_id: string; - user_email: string; - accepted: boolean; - create_at: number; -} - -export interface RegisteredUser extends User { - type: 'Registered'; -} - -export interface UnregisteredUser { - type: 'Unregistered'; - email: string; -} - -export interface Member extends Permission { - user: RegisteredUser | UnregisteredUser; -} - -export interface GetWorkspaceMembersParams { - id: string; -} - -export interface CreateWorkspaceParams { - name: string; -} - -export interface UpdateWorkspaceParams { - id: string; - public: boolean; -} - -export interface DeleteWorkspaceParams { - id: string; -} - -export interface InviteMemberParams { - id: string; - email: string; -} - -export interface RemoveMemberParams { - permissionId: number; -} - -export interface AcceptInvitingParams { - invitingCode: string; -} - -export interface LeaveWorkspaceParams { - id: number | string; -} - -export const createWorkspaceResponseSchema = z.object({ - id: z.string(), - public: z.boolean(), - type: z.nativeEnum(WorkspaceType), - created_at: z.number(), -}); - export function createWorkspaceApis(prefixUrl = '/') { return { getWorkspaces: async (): Promise => { diff --git a/packages/workspace/src/affine/channel.ts b/packages/workspace/src/affine/channel.ts index d7bde9c4f8..30b47a9773 100644 --- a/packages/workspace/src/affine/channel.ts +++ b/packages/workspace/src/affine/channel.ts @@ -1,10 +1,10 @@ import { DebugLogger } from '@affine/debug'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { assertExists } from '@blocksuite/global/utils'; import * as url from 'lib0/url'; import * as websocket from 'lib0/websocket'; import { getLoginStorage, isExpired, parseIdToken } from '../affine/login'; -import { WorkspaceFlavour } from '../type'; import { cleanupWorkspace } from '../utils'; const RECONNECT_INTERVAL_TIME = 500; diff --git a/packages/workspace/src/affine/sync.ts b/packages/workspace/src/affine/sync.ts index 168a7f5c2d..35335c03c7 100644 --- a/packages/workspace/src/affine/sync.ts +++ b/packages/workspace/src/affine/sync.ts @@ -1,15 +1,18 @@ import { DebugLogger } from '@affine/debug'; import { websocketPrefixUrl } from '@affine/env/api'; +import type { WorkspaceCRUD } from '@affine/env/workspace'; +import type { WorkspaceFlavour } from '@affine/env/workspace'; +import { + workspaceDetailSchema, + workspaceSchema, +} from '@affine/env/workspace/legacy-cloud'; import { assertExists } from '@blocksuite/global/utils'; import type { Disposable } from '@blocksuite/store'; import { z } from 'zod'; -import { workspaceDetailSchema, workspaceSchema } from '../affine/api'; import { WebsocketClient } from '../affine/channel'; import { storageChangeSlot } from '../affine/login'; import { rootStore, rootWorkspacesMetadataAtom } from '../atom'; -import type { WorkspaceCRUD } from '../type'; -import type { WorkspaceFlavour } from '../type'; const logger = new DebugLogger('affine-sync'); diff --git a/packages/workspace/src/atom.ts b/packages/workspace/src/atom.ts index 3b09430b6a..10836560b0 100644 --- a/packages/workspace/src/atom.ts +++ b/packages/workspace/src/atom.ts @@ -1,10 +1,9 @@ +import type { WorkspaceFlavour } from '@affine/env/workspace'; import type { EditorContainer } from '@blocksuite/editor'; import { atom, createStore } from 'jotai'; import { atomWithStorage, createJSONStorage } from 'jotai/utils'; import Router from 'next/router'; -import type { WorkspaceFlavour } from './type'; - export type RootWorkspaceMetadata = { id: string; flavour: WorkspaceFlavour; diff --git a/packages/workspace/src/local/__tests__/crud.spec.ts b/packages/workspace/src/local/__tests__/crud.spec.ts index 89ff940a5e..0a2ac54af4 100644 --- a/packages/workspace/src/local/__tests__/crud.spec.ts +++ b/packages/workspace/src/local/__tests__/crud.spec.ts @@ -3,12 +3,12 @@ */ import 'fake-indexeddb/auto'; +import type { LocalWorkspace, WorkspaceCRUD } from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; import { Workspace } from '@blocksuite/store'; import { afterEach, assertType, describe, expect, test } from 'vitest'; -import type { LocalWorkspace, WorkspaceCRUD } from '../../type'; -import { WorkspaceFlavour } from '../../type'; import { CRUD } from '../crud'; afterEach(() => { diff --git a/packages/workspace/src/local/crud.ts b/packages/workspace/src/local/crud.ts index fa5e939b0a..e0e6d4620d 100644 --- a/packages/workspace/src/local/crud.ts +++ b/packages/workspace/src/local/crud.ts @@ -1,12 +1,12 @@ import { DebugLogger } from '@affine/debug'; +import type { LocalWorkspace, WorkspaceCRUD } from '@affine/env/workspace'; +import { WorkspaceFlavour } from '@affine/env/workspace'; import { nanoid, Workspace as BlockSuiteWorkspace } from '@blocksuite/store'; import { createIndexedDBProvider } from '@toeverything/y-indexeddb'; import { createJSONStorage } from 'jotai/utils'; import { z } from 'zod'; import { createLocalProviders } from '../providers'; -import type { LocalWorkspace, WorkspaceCRUD } from '../type'; -import { WorkspaceFlavour } from '../type'; import { createEmptyBlockSuiteWorkspace } from '../utils'; const getStorage = () => createJSONStorage(() => localStorage); diff --git a/packages/workspace/src/providers/__tests__/sqlite-provider.spec.ts b/packages/workspace/src/providers/__tests__/sqlite-provider.spec.ts index 7a02752171..1de8b51a38 100644 --- a/packages/workspace/src/providers/__tests__/sqlite-provider.spec.ts +++ b/packages/workspace/src/providers/__tests__/sqlite-provider.spec.ts @@ -1,9 +1,12 @@ +import type { + SQLiteDBDownloadProvider, + SQLiteProvider, +} from '@affine/env/workspace'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; import type { Y as YType } from '@blocksuite/store'; import { uuidv4, Workspace } from '@blocksuite/store'; import { beforeEach, describe, expect, test, vi } from 'vitest'; -import type { SQLiteDBDownloadProvider, SQLiteProvider } from '../../type'; import { createSQLiteDBDownloadProvider, createSQLiteProvider } from '../index'; const Y = Workspace.Y; diff --git a/packages/workspace/src/providers/affine-download.ts b/packages/workspace/src/providers/affine-download.ts index ca6a45bce3..b71bc5409f 100644 --- a/packages/workspace/src/providers/affine-download.ts +++ b/packages/workspace/src/providers/affine-download.ts @@ -1,8 +1,8 @@ import { DebugLogger } from '@affine/debug'; +import type { AffineDownloadProvider } from '@affine/env/workspace'; import { assertExists, Workspace } from '@blocksuite/store'; import { affineApis } from '../affine/shared'; -import type { AffineDownloadProvider } from '../type'; const hashMap = new Map(); diff --git a/packages/workspace/src/providers/broad-cast-channel/index.ts b/packages/workspace/src/providers/broad-cast-channel/index.ts index 2833fb9f1a..f3085d223b 100644 --- a/packages/workspace/src/providers/broad-cast-channel/index.ts +++ b/packages/workspace/src/providers/broad-cast-channel/index.ts @@ -1,3 +1,4 @@ +import type { BroadCastChannelProvider } from '@affine/env/workspace'; import { Workspace as BlockSuiteWorkspace } from '@blocksuite/store'; import { assertExists } from '@blocksuite/store'; import type { Awareness } from 'y-protocols/awareness'; @@ -6,7 +7,6 @@ import { encodeAwarenessUpdate, } from 'y-protocols/awareness'; -import type { BroadCastChannelProvider } from '../../type'; import { CallbackSet } from '../../utils'; import { localProviderLogger } from '../logger'; import type { diff --git a/packages/workspace/src/providers/index.ts b/packages/workspace/src/providers/index.ts index f2d5d69cf2..8d863cd2d5 100644 --- a/packages/workspace/src/providers/index.ts +++ b/packages/workspace/src/providers/index.ts @@ -1,4 +1,12 @@ import { config, websocketPrefixUrl } from '@affine/env'; +import type { + AffineWebSocketProvider, + LocalIndexedDBBackgroundProvider, + LocalIndexedDBDownloadProvider, + Provider, + SQLiteDBDownloadProvider, + SQLiteProvider, +} from '@affine/env/workspace'; import type { BlobManager, Disposable } from '@blocksuite/store'; import { assertExists, @@ -12,14 +20,6 @@ import { import { KeckProvider } from '../affine/keck'; import { getLoginStorage, storageChangeSlot } from '../affine/login'; -import type { - AffineWebSocketProvider, - LocalIndexedDBBackgroundProvider, - LocalIndexedDBDownloadProvider, - Provider, - SQLiteDBDownloadProvider, - SQLiteProvider, -} from '../type'; import { CallbackSet } from '../utils'; import { createAffineDownloadProvider } from './affine-download'; import { createBroadCastChannelProvider } from './broad-cast-channel'; diff --git a/packages/workspace/src/utils.ts b/packages/workspace/src/utils.ts index 6e340a08a3..043a571750 100644 --- a/packages/workspace/src/utils.ts +++ b/packages/workspace/src/utils.ts @@ -1,3 +1,4 @@ +import { WorkspaceFlavour } from '@affine/env/workspace'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; import type { Generator, StoreOptions } from '@blocksuite/store'; import { createIndexeddbStorage, Workspace } from '@blocksuite/store'; @@ -6,7 +7,6 @@ import type { createWorkspaceApis } from './affine/api'; import { rootStore, rootWorkspacesMetadataAtom } from './atom'; import { createAffineBlobStorage } from './blob'; import { createSQLiteStorage } from './blob/sqlite-blob-storage'; -import { WorkspaceFlavour } from './type'; export function cleanupWorkspace(flavour: WorkspaceFlavour) { rootStore.set(rootWorkspacesMetadataAtom, metas => diff --git a/packages/workspace/tsconfig.json b/packages/workspace/tsconfig.json index 2673898994..95703647f5 100644 --- a/packages/workspace/tsconfig.json +++ b/packages/workspace/tsconfig.json @@ -12,7 +12,6 @@ { "path": "../env" }, { "path": "../debug" }, { "path": "../hooks" }, - { "path": "../component/tsconfig.workspace.json" }, { "path": "../../apps/electron" } ] } diff --git a/yarn.lock b/yarn.lock index 6ce2387dfc..3f3eb7c6b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -234,7 +234,6 @@ __metadata: version: 0.0.0-use.local resolution: "@affine/jotai@workspace:packages/jotai" dependencies: - "@affine/env": "workspace:*" "@blocksuite/blocks": 0.0.0-20230606130340-805f430b-nightly "@blocksuite/editor": 0.0.0-20230606130340-805f430b-nightly "@blocksuite/global": 0.0.0-20230606130340-805f430b-nightly