From 70633d0d16a2638fd21f0c76bb6d7207c5575325 Mon Sep 17 00:00:00 2001 From: renovate <29139614+renovate@users.noreply.github.com> Date: Mon, 25 Nov 2024 08:58:21 +0000 Subject: [PATCH] chore: bump up @blocksuite/affine version to v0.18.0 (#8899) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@blocksuite/affine](https://redirect.github.com/toeverything/blocksuite) ([source](https://redirect.github.com/toeverything/blocksuite/tree/HEAD/packages/affine/all), [changelog](https://redirect.github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md)) | [`0.17.33` -> `0.18.0`](https://renovatebot.com/diffs/npm/@blocksuite%2faffine/0.17.33/0.18.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2faffine/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2faffine/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2faffine/0.17.33/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2faffine/0.17.33/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
toeverything/blocksuite (@​blocksuite/affine) ### [`v0.18.0`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0180) [Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.17.33...v0.18.0) ##### Minor Changes - [`9daa1f3`](https://redirect.github.com/toeverything/blocksuite/commit/9daa1f3): ## Feat - feat(blocks): markdown adapter reference serialization and deserialization ([#​8782](https://redirect.github.com/toeverything/blocksuite/issues/8782)) - feat(blocks): add lazy loading to image and iframe ([#​8773](https://redirect.github.com/toeverything/blocksuite/issues/8773))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE). --- .github/workflows/build-test.yml | 26 -- packages/common/env/package.json | 2 +- packages/common/infra/package.json | 2 +- .../infra/src/__tests__/migration.spec.ts | 84 ---- .../common/infra/src/__tests__/workspace.ydoc | Bin 5915 -> 0 bytes packages/common/infra/src/blocksuite/index.ts | 18 - .../src/blocksuite/migration/blocksuite.ts | 100 ----- .../infra/src/blocksuite/migration/fixing.ts | 49 --- .../infra/src/blocksuite/migration/subdoc.ts | 284 ------------- .../src/blocksuite/migration/workspace.ts | 76 ---- .../src/modules/workspace/entities/upgrade.ts | 135 ------- .../modules/workspace/entities/workspace.ts | 5 - .../infra/src/modules/workspace/index.ts | 8 - .../src/modules/workspace/services/repo.ts | 4 - .../src/modules/workspace/services/upgrade.ts | 6 - packages/frontend/apps/android/package.json | 2 +- packages/frontend/apps/electron/package.json | 2 +- packages/frontend/apps/ios/package.json | 2 +- packages/frontend/apps/mobile/package.json | 2 +- packages/frontend/component/package.json | 2 +- packages/frontend/core/package.json | 2 +- .../affine/page-history-modal/data.ts | 1 - .../specs/custom/widgets/linked.ts | 13 +- .../components/workspace-upgrade/index.tsx | 1 - .../workspace-upgrade/upgrade-icon.tsx | 44 -- .../workspace-upgrade/upgrade.css.ts | 21 - .../components/workspace-upgrade/upgrade.tsx | 67 ---- .../workspace/layouts/workspace-layout.tsx | 12 +- tests/affine-migration/.gitignore | 5 - tests/affine-migration/README.md | 12 - tests/affine-migration/e2e/basic.spec.ts | 116 ------ tests/affine-migration/package.json | 12 - tests/affine-migration/playwright.config.ts | 46 --- tests/affine-migration/tsconfig.json | 17 - tools/cli/package.json | 2 +- tsconfig.json | 3 - yarn.lock | 379 +++++++++--------- 37 files changed, 202 insertions(+), 1360 deletions(-) delete mode 100644 packages/common/infra/src/__tests__/migration.spec.ts delete mode 100644 packages/common/infra/src/__tests__/workspace.ydoc delete mode 100644 packages/common/infra/src/blocksuite/migration/blocksuite.ts delete mode 100644 packages/common/infra/src/blocksuite/migration/fixing.ts delete mode 100644 packages/common/infra/src/blocksuite/migration/subdoc.ts delete mode 100644 packages/common/infra/src/blocksuite/migration/workspace.ts delete mode 100644 packages/common/infra/src/modules/workspace/entities/upgrade.ts delete mode 100644 packages/common/infra/src/modules/workspace/services/upgrade.ts delete mode 100644 packages/frontend/core/src/components/workspace-upgrade/index.tsx delete mode 100644 packages/frontend/core/src/components/workspace-upgrade/upgrade-icon.tsx delete mode 100644 packages/frontend/core/src/components/workspace-upgrade/upgrade.css.ts delete mode 100644 packages/frontend/core/src/components/workspace-upgrade/upgrade.tsx delete mode 100644 tests/affine-migration/.gitignore delete mode 100644 tests/affine-migration/README.md delete mode 100644 tests/affine-migration/e2e/basic.spec.ts delete mode 100644 tests/affine-migration/package.json delete mode 100644 tests/affine-migration/playwright.config.ts delete mode 100644 tests/affine-migration/tsconfig.json diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index c9e04b013bf7e..308cd8862d8f6 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -173,31 +173,6 @@ jobs: path: ./test-results if-no-files-found: ignore - e2e-migration-test: - name: E2E Migration Test - runs-on: ubuntu-latest - env: - DISTRIBUTION: web - steps: - - uses: actions/checkout@v4 - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - playwright-install: true - electron-install: false - full-cache: true - - - name: Run playwright tests - run: yarn workspace @affine-test/affine-migration e2e --forbid-only - - - name: Upload test results - if: ${{ failure() }} - uses: actions/upload-artifact@v4 - with: - name: test-results-e2e-migration - path: ./test-results - if-no-files-found: ignore - unit-test: name: Unit Test runs-on: ubuntu-latest @@ -766,7 +741,6 @@ jobs: - check-yarn-binary - e2e-test - e2e-mobile-test - - e2e-migration-test - unit-test - build-native - build-server-native diff --git a/packages/common/env/package.json b/packages/common/env/package.json index da829d8c580ef..c775b61ff6da5 100644 --- a/packages/common/env/package.json +++ b/packages/common/env/package.json @@ -3,7 +3,7 @@ "private": true, "type": "module", "devDependencies": { - "@blocksuite/affine": "0.17.33", + "@blocksuite/affine": "0.18.0", "vitest": "2.1.4" }, "exports": { diff --git a/packages/common/infra/package.json b/packages/common/infra/package.json index d21c7fd2972b0..755cd6d7cf3c1 100644 --- a/packages/common/infra/package.json +++ b/packages/common/infra/package.json @@ -15,7 +15,7 @@ "@affine/debug": "workspace:*", "@affine/env": "workspace:*", "@affine/templates": "workspace:*", - "@blocksuite/affine": "0.17.33", + "@blocksuite/affine": "0.18.0", "@datastructures-js/binary-search-tree": "^5.3.2", "eventemitter2": "^6.4.9", "foxact": "^0.2.33", diff --git a/packages/common/infra/src/__tests__/migration.spec.ts b/packages/common/infra/src/__tests__/migration.spec.ts deleted file mode 100644 index df2cadf10b9b8..0000000000000 --- a/packages/common/infra/src/__tests__/migration.spec.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { readFileSync } from 'node:fs'; -import { dirname, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; - -import { describe, expect, test } from 'vitest'; -import type { Array as YArray, Map as YMap } from 'yjs'; -import { applyUpdate, Doc } from 'yjs'; - -import { migrateToSubdoc } from '../blocksuite/index.js'; - -const fixturePath = resolve( - dirname(fileURLToPath(import.meta.url)), - 'workspace.ydoc' -); -const yDocBuffer = readFileSync(fixturePath); -const doc = new Doc(); -applyUpdate(doc, new Uint8Array(yDocBuffer)); -const migratedDoc = migrateToSubdoc(doc); - -describe('migration', () => { - test('migration to subdoc', async () => { - const { default: json } = await import('@affine-test/fixtures/output.json'); - const length = Object.keys(json).length; - const binary = new Uint8Array(length); - for (let i = 0; i < length; i++) { - binary[i] = (json as any)[i]; - } - const doc = new Doc(); - applyUpdate(doc, binary); - { - // invoke data - doc.getMap('space:hello-world'); - doc.getMap('space:meta'); - } - const blocks = doc.getMap('space:hello-world').toJSON(); - const newDoc = migrateToSubdoc(doc); - const subDoc = newDoc.getMap('spaces').values().next().value as Doc; - const data = (subDoc.toJSON() as any).blocks; - Object.keys(data).forEach(id => { - if (id === 'xyWNqindHH') { - return; - } - if ( - blocks[id]['sys:flavour'] === 'affine:surface' && - !blocks[id]['prop:elements'] - ) { - blocks[id]['prop:elements'] = data[id]['prop:elements']; - } - expect(data[id]).toEqual(blocks[id]); - }); - }); - - test('test fixture should be set correctly', () => { - const meta = doc.getMap('space:meta'); - const versions = meta.get('versions') as YMap; - expect(versions.get('affine:code')).toBeTypeOf('number'); - }); - - test('metadata should be migrated correctly', () => { - const originalMeta = doc.getMap('space:meta'); - const originalVersions = originalMeta.get('versions') as YMap; - - const meta = migratedDoc.getMap('meta'); - const blockVersions = meta.get('blockVersions') as YMap; - - expect(meta.get('workspaceVersion')).toBe(1); - expect(blockVersions.get('affine:code')).toBe( - originalVersions.get('affine:code') - ); - expect((meta.get('pages') as YArray).length).toBe( - (originalMeta.get('pages') as YArray).length - ); - - expect(blockVersions.get('affine:embed')).toBeUndefined(); - expect(blockVersions.get('affine:image')).toBe( - originalVersions.get('affine:embed') - ); - - expect(blockVersions.get('affine:frame')).toBeUndefined(); - expect(blockVersions.get('affine:note')).toBe( - originalVersions.get('affine:frame') - ); - }); -}); diff --git a/packages/common/infra/src/__tests__/workspace.ydoc b/packages/common/infra/src/__tests__/workspace.ydoc deleted file mode 100644 index 2abc1ca25dbf0956a213c71aedaea071d6bdf3de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5915 zcma)AU2Ggz751!m*K6;FBoaIU%8e_UR@$}KcKj2!R!Gt`tyECdm_(>V;?B&S-C<|v zPUqh7dO?0ctpzlJ2U^;sln7A>5Bxl#00KlG@(_%m0f{$|f)EW4KqMa8N6wvl@BD1X zt{*Jh_xGIhedoL9jPaK7=DYuUZ({72F~tIGk<~uoxDwzFVPg|xa?W@}{$Z3{+Ze=? z?W1a_!d>o>WW|&f63odH@MC=G^ybyhqyKm?rngVA$P_0(Z8Iav-&orqA#6^sPjO!gN3LOZcu{Ex*KB&$zDed)f*vo9vQ#R(<#7r1`%&1EYgahry{M^F) zQhRY_slD3P{vWQgAzKwN5Y?dEH{UPt}!_9 zT)WwBuC&|D<16jUdd0zbg^8`645Tr5sMV58X{DnrMl9;vI2^Vt>d{c|mRPyIO*V}| z3Aeuz!|+%>5c4t+j~hCAHR6#z@j25YPZ|lS&c%6cwABsgD(T^RsLY1}f!t?Z9FSyC zI(Z13Y|Vj>>PP!|uFQzYlh^NG`EgzEnT$_Zk54Oy#Nv9Q8e-dxn6ahh;#}2nJr52T z>Lrt6;EafcG5A;#u>gC7bJF4=_91mUl$b8S603CYmu`hn#~a^*xO^39T-%dV*sz zi$0fk|G0GjvUdN=#zPNoeDe*oP8dfZ+OCC&?Q+-eAhH>d&?UY_W_FLkqK?5$qc8}I z%D9{G5EKb{CJHx=!Z6%4_KHI?D-ciaDvZPnMm`jaG88WwIu<`Nj{N=lwg3M78|VTF zHweNEot;06xCjlTU^v_(4of-?JH>HWQnu}Ua2$4u(%dGd+(4K_C1647|#-0qAhZX5n3i106SHd?v7+ z=@;T7u9xbW33=@I<*{WSQbVr#LFo_@)d!*jAI|E!!5)w;YshYu3aPuSAiGt{Q+GG1 zx>YLV@2ygnzoqWH%HU*NASQG5Pb0`IOJx3>AoHuz^cf0Fgg}c7O$!$UozYj4v&VgRj2S`h>PLJ9*LE{54l z#C&%B41$b~i+E%XwOM&vr?dO}5QAyt&=3p*17j_NOYyOPa{EJu==lq2tqaO8yK$o+&PFICR3Qz_KD$Wa_|WMLn%fLN|GjB$;_3$gzK z1(+b9*tSJpr8N3$Wt2vLt4y90+twUPC6(S$Yf>uRuY5uv>$n}%LhIoW(SZ2!U{Pu$ zbd~$BR!8sndUf=USJj&Ij@PP9$Ogm*6xpuh5K$x|=(`vK76CsYBLq94xP`mf(Yz=e z$TVVeNzr_}njoHEpdi0p-5=z)tA&u?u4W;xJRea`lolpaDdtxy&}-z(l%QX&XkqwW z^_fq@5i$z}WU{-E{zoPw&qpFAB99niT^e~d@+ptOh#^jaNCAIsVib&P6ItE(j+#$_ zxG{0vkeU(WAu`{B=6432@)&I*JBr&)al`rf^T@|M3JIc)%IBu2GCT^TgWs?S=HLJT z&LbGg4(gNG0WB19Ng5k3IM|H;0;X}{sOvN6?vqJSL=YHBv0v26CiU!$8ve3Y#oho9 znOyK&wIFrtt=a@sfKa23XhjZ_q#M3dE2fU_hws$(N1Z#hLh9V9WvP=@i)1Ec&Q5iN zIjV*JeN{8(54E2ePdh?`L7Qd7s1M>DORh*N087RfmV_eqae(81ngrkiWUwRNpO82q zVck@LJK|$eMsRInMxBn3Ty#1DjO48Y40uUJ7Bvqk`{GAI=Na_td@=c#$xrxKnp&Y_f3Au%cZ*Kc{m z;jk-&3QN3O>PdFLC;|x<>$g%xZ7=#HA1=1*#q`miF1G9YqtAA|kUrb>-RP6dr1be? zZG=AR!^7J(O`n(QpFagTDxPA*-5`Yxs#p^mZPbTa!3{i;Jl5&^AiRY=O>E(tzAVvI@#$!^f7$}c=D1ej% zK2{C^KG2~74SV1ni~BzdI?fsN6ozidiTu4@k)-Xv+bG6TH~x1U`@`~XqY%rxjoq+J zW>PG#)JL#fkY6*d!uSV%3{)Qo{?a%iu*3dPz-EiDSxxv{0P;+rGGmY>60CO{ag(!< zG&vn;fFd()Z8%K>JZnPY_n7$dIO{SN5vE$4_Zo*YA0_3KJo>8#;-fQ-&esl95cKU= ojkq~FIBqN%j~l0qv&Llu`dMh@pl5&*8Y(1sFG2W#yx{Zy0qXd-)Bpeg diff --git a/packages/common/infra/src/blocksuite/index.ts b/packages/common/infra/src/blocksuite/index.ts index aad2e06ff0221..91bf7d9c7408c 100644 --- a/packages/common/infra/src/blocksuite/index.ts +++ b/packages/common/infra/src/blocksuite/index.ts @@ -1,19 +1 @@ export * from './blocks'; -export { - migratePages as forceUpgradePages, - migrateGuidCompatibility, -} from './migration/blocksuite'; // campatible with electron -export * from './migration/fixing'; -export { migrateToSubdoc, upgradeV1ToV2 } from './migration/subdoc'; -export * from './migration/workspace'; - -/** - * @deprecated - * Use workspace meta data to determine the workspace version. - */ -export enum WorkspaceVersion { - // v1 is treated as undefined - SubDoc = 2, - DatabaseV3 = 3, - Surface = 4, -} diff --git a/packages/common/infra/src/blocksuite/migration/blocksuite.ts b/packages/common/infra/src/blocksuite/migration/blocksuite.ts deleted file mode 100644 index cb891abb97e04..0000000000000 --- a/packages/common/infra/src/blocksuite/migration/blocksuite.ts +++ /dev/null @@ -1,100 +0,0 @@ -import type { Schema } from '@blocksuite/affine/store'; -import type { Array as YArray } from 'yjs'; -import { - applyUpdate, - Doc as YDoc, - encodeStateAsUpdate, - Map as YMap, - transact, -} from 'yjs'; - -export const getLatestVersions = (schema: Schema): Record => { - return [...schema.flavourSchemaMap.entries()].reduce( - (record, [flavour, schema]) => { - record[flavour] = schema.version; - return record; - }, - {} as Record - ); -}; - -export async function migratePages( - rootDoc: YDoc, - schema: Schema -): Promise { - const spaces = rootDoc.getMap('spaces') as YMap; - const meta = rootDoc.getMap('meta') as YMap; - const versions = meta.get('blockVersions') as YMap; - const oldVersions = versions?.toJSON() ?? {}; - - spaces.forEach((space: YDoc) => { - try { - // Catch page upgrade error to avoid blocking the whole workspace migration. - schema.upgradeDoc(0, oldVersions, space); - } catch (e) { - console.error(e); - } - }); - schema.upgradeCollection(rootDoc); - - // Hard code to upgrade page version to 2. - // Let e2e to ensure the data version is correct. - return transact( - rootDoc, - () => { - const pageVersion = meta.get('pageVersion'); - if (typeof pageVersion !== 'number' || pageVersion < 2) { - meta.set('pageVersion', 2); - } - - const newVersions = getLatestVersions(schema); - meta.set('blockVersions', new YMap(Object.entries(newVersions))); - return Object.entries(oldVersions).some( - ([flavour, version]) => newVersions[flavour] !== version - ); - }, - 'migratePages', - /** - * transact as remote update, because blocksuite will skip local changes. - * https://github.com/toeverything/blocksuite/blob/9c2df3f7aa5617c050e0dccdd73e99bb67e0c0f7/packages/store/src/reactive/utils.ts#L143 - */ - false - ); -} - -// patch root doc's space guid compatibility issue -// -// in version 0.10, page id in spaces no longer has prefix "space:" -// The data flow for fetching a doc's updates is: -// - page id in `meta.pages` -> find `${page-id}` in `doc.spaces` -> `doc` -> `doc.guid` -// if `doc` is not found in `doc.spaces`, a new doc will be created and its `doc.guid` is the same with its pageId -// - because of guid logic change, the doc that previously prefixed with "space:" will not be found in `doc.spaces` -// - when fetching the rows of this doc using the doc id === page id, -// it will return empty since there is no updates associated with the page id -export function migrateGuidCompatibility(rootDoc: YDoc) { - const meta = rootDoc.getMap('meta') as YMap; - const pages = meta.get('pages') as YArray>; - pages?.forEach(page => { - const pageId = page.get('id') as string | undefined; - if (pageId?.includes(':')) { - // remove the prefix "space:" from page id - page.set('id', pageId.split(':').at(-1)); - } - }); - const spaces = rootDoc.getMap('spaces') as YMap; - spaces?.forEach((doc: YDoc, pageId: string) => { - if (pageId.includes(':')) { - const newPageId = pageId.split(':').at(-1) ?? pageId; - const newDoc = new YDoc(); - // clone the original doc. yjs is not happy to use the same doc instance - applyUpdate(newDoc, encodeStateAsUpdate(doc)); - newDoc.guid = doc.guid; - spaces.set(newPageId, newDoc); - // should remove the old doc, otherwise we will do it again in the next run - spaces.delete(pageId); - console.debug( - `fixed space id ${pageId} -> ${newPageId}, doc id: ${doc.guid}` - ); - } - }); -} diff --git a/packages/common/infra/src/blocksuite/migration/fixing.ts b/packages/common/infra/src/blocksuite/migration/fixing.ts deleted file mode 100644 index 840cb5a623638..0000000000000 --- a/packages/common/infra/src/blocksuite/migration/fixing.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { Doc as YDoc, Map as YMap } from 'yjs'; -import { transact } from 'yjs'; - -/** - * Hard code to fix workspace version to be compatible with legacy data. - * Let e2e to ensure the data version is correct. - */ -export function fixWorkspaceVersion(rootDoc: YDoc) { - const meta = rootDoc.getMap('meta') as YMap; - - /** - * It doesn't matter to upgrade workspace version from 1 or undefined to 2. - * Blocksuite just set the value, do nothing else. - */ - function doFix() { - if (meta.size === 0) { - return; - } - const workspaceVersion = meta.get('workspaceVersion'); - if (typeof workspaceVersion !== 'number' || workspaceVersion < 2) { - transact( - rootDoc, - () => { - meta.set('workspaceVersion', 2); - }, - 'fixWorkspaceVersion', - // transact as remote update, because blocksuite will skip local changes. - false - ); - } - const pageVersion = meta.get('pageVersion'); - if (typeof pageVersion !== 'number' || pageVersion < 2) { - transact( - rootDoc, - () => { - meta.set('pageVersion', 2); - }, - 'fixPageVersion', - // transact as remote update, because blocksuite will skip local changes. - false - ); - } - } - - doFix(); - - // do fix every time when meta changed - meta.observe(() => doFix()); -} diff --git a/packages/common/infra/src/blocksuite/migration/subdoc.ts b/packages/common/infra/src/blocksuite/migration/subdoc.ts deleted file mode 100644 index 7b189e9a1a7e1..0000000000000 --- a/packages/common/infra/src/blocksuite/migration/subdoc.ts +++ /dev/null @@ -1,284 +0,0 @@ -import { nanoid } from 'nanoid'; -import { - applyUpdate, - Array as YArray, - Doc as YDoc, - encodeStateAsUpdate, - Map as YMap, -} from 'yjs'; - -const migrationOrigin = 'affine-migration'; - -type XYWH = [number, number, number, number]; - -function deserializeXYWH(xywh: string): XYWH { - return JSON.parse(xywh) as XYWH; -} - -function migrateDatabase(data: YMap) { - data.delete('prop:mode'); - data.set('prop:views', new YArray()); - const columns = (data.get('prop:columns') as YArray).toJSON() as { - id: string; - name: string; - hide: boolean; - type: string; - width: number; - selection?: unknown[]; - }[]; - const views = [ - { - id: 'default', - name: 'Table', - columns: columns.map(col => ({ - id: col.id, - width: col.width, - hide: col.hide, - })), - filter: { type: 'group', op: 'and', conditions: [] }, - mode: 'table', - }, - ]; - const cells = (data.get('prop:cells') as YMap).toJSON() as Record< - string, - Record< - string, - { - id: string; - value: unknown; - } - > - >; - const convertColumn = ( - id: string, - update: (cell: { id: string; value: unknown }) => void - ) => { - Object.values(cells).forEach(row => { - if (row[id] !== null && row[id] !== undefined) { - update(row[id]); - } - }); - }; - const newColumns = columns.map(v => { - let data: Record = {}; - if (v.type === 'select' || v.type === 'multi-select') { - data = { options: v.selection }; - if (v.type === 'select') { - convertColumn(v.id, cell => { - if (Array.isArray(cell.value)) { - cell.value = cell.value[0]?.id; - } - }); - } else { - convertColumn(v.id, cell => { - if (Array.isArray(cell.value)) { - cell.value = cell.value.map(v => v.id); - } - }); - } - } - if (v.type === 'number') { - convertColumn(v.id, cell => { - if (typeof cell.value === 'string') { - cell.value = Number.parseFloat(cell.value.toString()); - } - }); - } - return { - id: v.id, - type: v.type, - name: v.name, - data, - }; - }); - data.set('prop:columns', newColumns); - data.set('prop:views', views); - data.set('prop:cells', cells); -} - -function runBlockMigration( - flavour: string, - data: YMap, - version: number -) { - if (flavour === 'affine:frame') { - data.set('sys:flavour', 'affine:note'); - return; - } - if (flavour === 'affine:surface' && version <= 3) { - if (data.has('elements')) { - const elements = data.get('elements') as YMap; - migrateSurface(elements); - data.set('prop:elements', elements.clone()); - data.delete('elements'); - } else { - data.set('prop:elements', new YMap()); - } - } - if (flavour === 'affine:embed') { - data.set('sys:flavour', 'affine:image'); - data.delete('prop:type'); - } - if (flavour === 'affine:database' && version < 2) { - migrateDatabase(data); - } -} - -function migrateSurface(data: YMap) { - for (const [, value] of ]>>( - data.entries() - )) { - if (value.get('type') === 'connector') { - migrateSurfaceConnector(value); - } - } -} - -function migrateSurfaceConnector(data: YMap) { - let id = data.get('startElement')?.id; - const controllers = data.get('controllers'); - const length = controllers.length; - const xywh = deserializeXYWH(data.get('xywh')); - if (id) { - data.set('source', { id }); - } else { - data.set('source', { - position: [controllers[0].x + xywh[0], controllers[0].y + xywh[1]], - }); - } - - id = data.get('endElement')?.id; - if (id) { - data.set('target', { id }); - } else { - data.set('target', { - position: [ - controllers[length - 1].x + xywh[0], - controllers[length - 1].y + xywh[1], - ], - }); - } - - const width = data.get('lineWidth') ?? 4; - data.set('strokeWidth', width); - const color = data.get('color'); - data.set('stroke', color); - - data.delete('startElement'); - data.delete('endElement'); - data.delete('controllers'); - data.delete('lineWidth'); - data.delete('color'); - data.delete('xywh'); -} - -function updateBlockVersions(versions: YMap) { - const frameVersion = versions.get('affine:frame'); - if (frameVersion !== undefined) { - versions.set('affine:note', frameVersion); - versions.delete('affine:frame'); - } - const embedVersion = versions.get('affine:embed'); - if (embedVersion !== undefined) { - versions.set('affine:image', embedVersion); - versions.delete('affine:embed'); - } - const databaseVersion = versions.get('affine:database'); - if (databaseVersion !== undefined && databaseVersion < 2) { - versions.set('affine:database', 2); - } -} - -function migrateMeta( - oldDoc: YDoc, - newDoc: YDoc, - idMap: Record -) { - const originalMeta = oldDoc.getMap('space:meta'); - const originalVersions = originalMeta.get('versions') as YMap; - const originalPages = originalMeta.get('pages') as YArray>; - const meta = newDoc.getMap('meta'); - const pages = new YArray(); - const blockVersions = originalVersions.clone(); - - meta.set('workspaceVersion', 1); - meta.set('blockVersions', blockVersions); - meta.set('pages', pages); - meta.set('name', originalMeta.get('name') as string); - - updateBlockVersions(blockVersions); - const mapList = originalPages.map(page => { - const map = new YMap(); - Array.from(page.entries()) - .filter(([key]) => key !== 'subpageIds') - .forEach(([key, value]) => { - if (key === 'id') { - idMap[value] = nanoid(); - map.set(key, idMap[value]); - } else { - map.set(key, value); - } - }); - return map; - }); - pages.push(mapList); -} - -function migrateBlocks( - oldDoc: YDoc, - newDoc: YDoc, - idMap: Record -) { - const spaces = newDoc.getMap('spaces'); - const originalMeta = oldDoc.getMap('space:meta'); - const originalVersions = originalMeta.get('versions') as YMap; - const originalPages = originalMeta.get('pages') as YArray>; - originalPages.forEach(page => { - const id = page.get('id') as string; - const newId = idMap[id]; - const spaceId = id.startsWith('space:') ? id : `space:${id}`; - const originalBlocks = oldDoc.getMap(spaceId) as YMap; - const subdoc = new YDoc(); - spaces.set(newId, subdoc); - subdoc.guid = id; - const blocks = subdoc.getMap('blocks'); - Array.from(originalBlocks.entries()).forEach(([key, value]) => { - // @ts-expect-error clone method exists - const blockData = value.clone(); - blocks.set(key, blockData); - const flavour = blockData.get('sys:flavour') as string; - const version = originalVersions.get(flavour); - if (version !== undefined) { - runBlockMigration(flavour, blockData, version); - } - }); - }); -} - -export function migrateToSubdoc(oldDoc: YDoc): YDoc { - const needMigration = - Array.from(oldDoc.getMap('space:meta').keys()).length > 0; - if (!needMigration) { - return oldDoc; - } - const newDoc = new YDoc(); - const idMap = {} as Record; - migrateMeta(oldDoc, newDoc, idMap); - migrateBlocks(oldDoc, newDoc, idMap); - return newDoc; -} - -/** - * upgrade oldDoc to v2, write to targetDoc - */ -export const upgradeV1ToV2 = async (oldDoc: YDoc, targetDoc: YDoc) => { - const newDoc = migrateToSubdoc(oldDoc); - applyUpdate(targetDoc, encodeStateAsUpdate(newDoc), migrationOrigin); - newDoc.getSubdocs().forEach(subdoc => { - targetDoc.getSubdocs().forEach(newDoc => { - if (subdoc.guid === newDoc.guid) { - applyUpdate(newDoc, encodeStateAsUpdate(subdoc), migrationOrigin); - } - }); - }); -}; diff --git a/packages/common/infra/src/blocksuite/migration/workspace.ts b/packages/common/infra/src/blocksuite/migration/workspace.ts deleted file mode 100644 index 1b36b5e525572..0000000000000 --- a/packages/common/infra/src/blocksuite/migration/workspace.ts +++ /dev/null @@ -1,76 +0,0 @@ -import type { DocCollection } from '@blocksuite/affine/store'; -import type { Array as YArray, Doc as YDoc, Map as YMap } from 'yjs'; - -/** - * For split migrate function from MigrationQueue. - */ -export enum MigrationPoint { - SubDoc = 1, - GuidFix = 2, - BlockVersion = 3, -} - -export function checkWorkspaceCompatibility( - docCollection: DocCollection, - isCloud: boolean -): MigrationPoint | null { - // check if there is any key starts with 'space:' on root doc - const spaceMetaObj = docCollection.doc.share.get('space:meta') as - | YMap - | undefined; - const docKeys = Array.from(docCollection.doc.share.keys()); - const haveSpaceMeta = !!spaceMetaObj && spaceMetaObj.size > 0; - const haveLegacySpace = docKeys.some(key => key.startsWith('space:')); - - // DON'T UPGRADE SUBDOC ON CLOUD - if (!isCloud && (haveSpaceMeta || haveLegacySpace)) { - return MigrationPoint.SubDoc; - } - - // exit if no pages - if (!docCollection.meta.docs?.length) { - return null; - } - - // check guid compatibility - const meta = docCollection.doc.getMap('meta') as YMap; - const pages = meta.get('pages') as YArray>; - for (const page of pages) { - const pageId = page.get('id') as string | undefined; - if (pageId?.includes(':')) { - return MigrationPoint.GuidFix; - } - } - const spaces = docCollection.doc.getMap('spaces') as YMap; - for (const [pageId, _] of spaces) { - if (pageId.includes(':')) { - return MigrationPoint.GuidFix; - } - } - - const hasVersion = docCollection.meta.hasVersion; - if (!hasVersion) { - return MigrationPoint.BlockVersion; - } - - // Temporarily follow the check logic of blocksuite. - if ((docCollection.meta.docs?.length ?? 0) <= 1) { - try { - docCollection.meta.validateVersion(docCollection); - } catch (e) { - console.info('validateVersion error', e); - return MigrationPoint.BlockVersion; - } - } - - // From v2, we depend on blocksuite to check and migrate data. - const blockVersions = docCollection.meta.blockVersions; - for (const [flavour, version] of Object.entries(blockVersions ?? {})) { - const schema = docCollection.schema.flavourSchemaMap.get(flavour); - if (schema?.version !== version) { - return MigrationPoint.BlockVersion; - } - } - - return null; -} diff --git a/packages/common/infra/src/modules/workspace/entities/upgrade.ts b/packages/common/infra/src/modules/workspace/entities/upgrade.ts deleted file mode 100644 index ee3ee2e537f37..0000000000000 --- a/packages/common/infra/src/modules/workspace/entities/upgrade.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { Unreachable } from '@affine/env/constant'; -import { WorkspaceFlavour } from '@affine/env/workspace'; -import { applyUpdate, Doc as YDoc, encodeStateAsUpdate } from 'yjs'; - -import { - checkWorkspaceCompatibility, - forceUpgradePages, - migrateGuidCompatibility, - MigrationPoint, - upgradeV1ToV2, -} from '../../../blocksuite'; -import { Entity } from '../../../framework'; -import { LiveData } from '../../../livedata'; -import type { WorkspaceMetadata } from '../metadata'; -import type { WorkspaceDestroyService } from '../services/destroy'; -import type { WorkspaceFactoryService } from '../services/factory'; -import type { WorkspaceService } from '../services/workspace'; - -export class WorkspaceUpgrade extends Entity { - needUpgrade$ = new LiveData(false); - upgrading$ = new LiveData(false); - - constructor( - private readonly workspaceService: WorkspaceService, - private readonly workspaceFactory: WorkspaceFactoryService, - private readonly workspaceDestroy: WorkspaceDestroyService - ) { - super(); - this.checkIfNeedUpgrade(); - workspaceService.workspace.docCollection.doc.on('update', () => { - this.checkIfNeedUpgrade(); - }); - } - - checkIfNeedUpgrade() { - const needUpgrade = !!checkWorkspaceCompatibility( - this.workspaceService.workspace.docCollection, - this.workspaceService.workspace.flavour === WorkspaceFlavour.AFFINE_CLOUD - ); - this.needUpgrade$.next(needUpgrade); - return needUpgrade; - } - - async upgrade(): Promise { - if (this.upgrading$.value) { - return null; - } - - this.upgrading$.next(true); - - try { - await this.workspaceService.workspace.engine.waitForDocSynced(); - - const step = checkWorkspaceCompatibility( - this.workspaceService.workspace.docCollection, - this.workspaceService.workspace.flavour === - WorkspaceFlavour.AFFINE_CLOUD - ); - - if (!step) { - return null; - } - - // Clone a new doc to prevent change events. - const clonedDoc = new YDoc({ - guid: this.workspaceService.workspace.docCollection.doc.guid, - }); - applyDoc(clonedDoc, this.workspaceService.workspace.docCollection.doc); - - if (step === MigrationPoint.SubDoc) { - const newWorkspace = await this.workspaceFactory.create( - WorkspaceFlavour.LOCAL, - async (workspace, blobStorage) => { - await upgradeV1ToV2(clonedDoc, workspace.doc); - migrateGuidCompatibility(clonedDoc); - await forceUpgradePages( - workspace.doc, - this.workspaceService.workspace.docCollection.schema - ); - const blobList = - await this.workspaceService.workspace.docCollection.blobSync.list(); - - for (const blobKey of blobList) { - const blob = - await this.workspaceService.workspace.docCollection.blobSync.get( - blobKey - ); - if (blob) { - await blobStorage.set(blobKey, blob); - } - } - } - ); - await this.workspaceDestroy.deleteWorkspace( - this.workspaceService.workspace.meta - ); - return newWorkspace; - } else if (step === MigrationPoint.GuidFix) { - migrateGuidCompatibility(clonedDoc); - await forceUpgradePages( - clonedDoc, - this.workspaceService.workspace.docCollection.schema - ); - applyDoc(this.workspaceService.workspace.docCollection.doc, clonedDoc); - await this.workspaceService.workspace.engine.waitForDocSynced(); - return null; - } else if (step === MigrationPoint.BlockVersion) { - await forceUpgradePages( - clonedDoc, - this.workspaceService.workspace.docCollection.schema - ); - applyDoc(this.workspaceService.workspace.docCollection.doc, clonedDoc); - await this.workspaceService.workspace.engine.waitForDocSynced(); - return null; - } else { - throw new Unreachable(); - } - } finally { - this.upgrading$.next(false); - } - } -} - -function applyDoc(target: YDoc, result: YDoc) { - applyUpdate(target, encodeStateAsUpdate(result)); - for (const targetSubDoc of target.subdocs.values()) { - const resultSubDocs = Array.from(result.subdocs.values()); - const resultSubDoc = resultSubDocs.find( - item => item.guid === targetSubDoc.guid - ); - if (resultSubDoc) { - applyDoc(targetSubDoc, resultSubDoc); - } - } -} diff --git a/packages/common/infra/src/modules/workspace/entities/workspace.ts b/packages/common/infra/src/modules/workspace/entities/workspace.ts index 4150389b1c4b2..8eaac10a307c4 100644 --- a/packages/common/infra/src/modules/workspace/entities/workspace.ts +++ b/packages/common/infra/src/modules/workspace/entities/workspace.ts @@ -9,7 +9,6 @@ import { WorkspaceDBService } from '../../db'; import { getAFFiNEWorkspaceSchema } from '../global-schema'; import type { WorkspaceScope } from '../scopes/workspace'; import { WorkspaceEngineService } from '../services/engine'; -import { WorkspaceUpgradeService } from '../services/upgrade'; export class Workspace extends Entity { constructor(public readonly scope: WorkspaceScope) { @@ -64,10 +63,6 @@ export class Workspace extends Entity { return this.framework.get(WorkspaceEngineService).engine; } - get upgrade() { - return this.framework.get(WorkspaceUpgradeService).upgrade; - } - name$ = LiveData.from( new Observable(subscriber => { subscriber.next(this.docCollection.meta.name); diff --git a/packages/common/infra/src/modules/workspace/index.ts b/packages/common/infra/src/modules/workspace/index.ts index ee707e8a0e127..8568d47ab7787 100644 --- a/packages/common/infra/src/modules/workspace/index.ts +++ b/packages/common/infra/src/modules/workspace/index.ts @@ -16,7 +16,6 @@ import { GlobalCache, GlobalState } from '../storage'; import { WorkspaceEngine } from './entities/engine'; import { WorkspaceList } from './entities/list'; import { WorkspaceProfile } from './entities/profile'; -import { WorkspaceUpgrade } from './entities/upgrade'; import { Workspace } from './entities/workspace'; import { WorkspaceLocalCacheImpl, @@ -32,7 +31,6 @@ import { WorkspaceListService } from './services/list'; import { WorkspaceProfileService } from './services/profile'; import { WorkspaceRepositoryService } from './services/repo'; import { WorkspaceTransformService } from './services/transform'; -import { WorkspaceUpgradeService } from './services/upgrade'; import { WorkspaceService } from './services/workspace'; import { WorkspacesService } from './services/workspaces'; import { WorkspaceProfileCacheStore } from './stores/profile-cache'; @@ -72,12 +70,6 @@ export function configureWorkspaceModule(framework: Framework) { .entity(Workspace, [WorkspaceScope]) .service(WorkspaceEngineService, [WorkspaceScope]) .entity(WorkspaceEngine, [WorkspaceService]) - .service(WorkspaceUpgradeService) - .entity(WorkspaceUpgrade, [ - WorkspaceService, - WorkspaceFactoryService, - WorkspaceDestroyService, - ]) .impl(WorkspaceLocalState, WorkspaceLocalStateImpl, [ WorkspaceService, GlobalState, diff --git a/packages/common/infra/src/modules/workspace/services/repo.ts b/packages/common/infra/src/modules/workspace/services/repo.ts index a38652f079fe3..91b45e37842b9 100644 --- a/packages/common/infra/src/modules/workspace/services/repo.ts +++ b/packages/common/infra/src/modules/workspace/services/repo.ts @@ -1,6 +1,5 @@ import { DebugLogger } from '@affine/debug'; -import { fixWorkspaceVersion } from '../../../blocksuite'; import { Service } from '../../../framework'; import { ObjectPool } from '../../../utils'; import type { Workspace } from '../entities/workspace'; @@ -105,9 +104,6 @@ export class WorkspaceRepositoryService extends Service { workspace.engine.setRootDoc(workspace.docCollection.doc); workspace.engine.start(); - // apply compatibility fix - fixWorkspaceVersion(workspace.docCollection.doc); - this.framework.emitEvent(WorkspaceInitialized, workspace); this.profileRepo diff --git a/packages/common/infra/src/modules/workspace/services/upgrade.ts b/packages/common/infra/src/modules/workspace/services/upgrade.ts deleted file mode 100644 index b2539c62e1b1a..0000000000000 --- a/packages/common/infra/src/modules/workspace/services/upgrade.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Service } from '../../../framework'; -import { WorkspaceUpgrade } from '../entities/upgrade'; - -export class WorkspaceUpgradeService extends Service { - upgrade = this.framework.createEntity(WorkspaceUpgrade); -} diff --git a/packages/frontend/apps/android/package.json b/packages/frontend/apps/android/package.json index 8d202d05f7459..9831aa32f1cdf 100644 --- a/packages/frontend/apps/android/package.json +++ b/packages/frontend/apps/android/package.json @@ -13,7 +13,7 @@ "@affine/component": "workspace:*", "@affine/core": "workspace:*", "@affine/i18n": "workspace:*", - "@blocksuite/affine": "0.17.33", + "@blocksuite/affine": "0.18.0", "@blocksuite/icons": "^2.1.70", "@capacitor/android": "^6.1.2", "@capacitor/core": "^6.1.2", diff --git a/packages/frontend/apps/electron/package.json b/packages/frontend/apps/electron/package.json index a044adf788ac2..49a014e8c8d61 100644 --- a/packages/frontend/apps/electron/package.json +++ b/packages/frontend/apps/electron/package.json @@ -28,7 +28,7 @@ "@affine/core": "workspace:*", "@affine/i18n": "workspace:*", "@affine/native": "workspace:*", - "@blocksuite/affine": "0.17.33", + "@blocksuite/affine": "0.18.0", "@electron-forge/cli": "^7.3.0", "@electron-forge/core": "^7.3.0", "@electron-forge/core-utils": "^7.3.0", diff --git a/packages/frontend/apps/ios/package.json b/packages/frontend/apps/ios/package.json index 15e1ad1a9e3f4..40fd1a0ff57f4 100644 --- a/packages/frontend/apps/ios/package.json +++ b/packages/frontend/apps/ios/package.json @@ -15,7 +15,7 @@ "@affine/component": "workspace:*", "@affine/core": "workspace:*", "@affine/i18n": "workspace:*", - "@blocksuite/affine": "0.17.33", + "@blocksuite/affine": "0.18.0", "@blocksuite/icons": "^2.1.70", "@capacitor/app": "^6.0.1", "@capacitor/browser": "^6.0.3", diff --git a/packages/frontend/apps/mobile/package.json b/packages/frontend/apps/mobile/package.json index fdbb4e4736ca9..3e6ace32ef9af 100644 --- a/packages/frontend/apps/mobile/package.json +++ b/packages/frontend/apps/mobile/package.json @@ -13,7 +13,7 @@ "@affine/component": "workspace:*", "@affine/core": "workspace:*", "@affine/i18n": "workspace:*", - "@blocksuite/affine": "0.17.33", + "@blocksuite/affine": "0.18.0", "@blocksuite/icons": "^2.1.70", "@sentry/react": "^8.0.0", "react": "^18.2.0", diff --git a/packages/frontend/component/package.json b/packages/frontend/component/package.json index ac663083893ce..c97270291e78c 100644 --- a/packages/frontend/component/package.json +++ b/packages/frontend/component/package.json @@ -63,7 +63,7 @@ "zod": "^3.22.4" }, "devDependencies": { - "@blocksuite/affine": "0.17.33", + "@blocksuite/affine": "0.18.0", "@blocksuite/icons": "2.1.70", "@chromatic-com/storybook": "^3.0.0", "@storybook/addon-essentials": "^8.2.9", diff --git a/packages/frontend/core/package.json b/packages/frontend/core/package.json index af421324cd1e7..d06ee2edf1697 100644 --- a/packages/frontend/core/package.json +++ b/packages/frontend/core/package.json @@ -16,7 +16,7 @@ "@affine/i18n": "workspace:*", "@affine/templates": "workspace:*", "@affine/track": "workspace:*", - "@blocksuite/affine": "0.17.33", + "@blocksuite/affine": "0.18.0", "@blocksuite/icons": "2.1.70", "@capacitor/app": "^6.0.1", "@capacitor/browser": "^6.0.3", diff --git a/packages/frontend/core/src/components/affine/page-history-modal/data.ts b/packages/frontend/core/src/components/affine/page-history-modal/data.ts index bcfec57606fb1..b563d96b06f6f 100644 --- a/packages/frontend/core/src/components/affine/page-history-modal/data.ts +++ b/packages/frontend/core/src/components/affine/page-history-modal/data.ts @@ -170,7 +170,6 @@ export const useSnapshotPage = ( const spaceDoc = page.spaceDoc; page.load(() => { applyUpdate(spaceDoc, new Uint8Array(snapshot)); - historyShellWorkspace.schema.upgradeDoc(0, {}, spaceDoc); }); // must load before applyUpdate } return page ?? undefined; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/linked.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/linked.ts index 5970c9554e837..1bb0ce4f1984a 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/linked.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/linked.ts @@ -26,16 +26,17 @@ function createNewDocMenuGroup( inlineEditor ); + const items = Array.isArray(originalNewDocMenuGroup.items) + ? originalNewDocMenuGroup.items + : originalNewDocMenuGroup.items.value; + // Patch the import item, to use the custom import dialog. - const importItemIndex = originalNewDocMenuGroup.items.findIndex( - item => item.key === 'import' - ); + const importItemIndex = items.findIndex(item => item.key === 'import'); if (importItemIndex === -1) { return originalNewDocMenuGroup; } - const originalItems = originalNewDocMenuGroup.items; - const originalImportItem = originalItems[importItemIndex]; + const originalImportItem = items[importItemIndex]; const customImportItem = { ...originalImportItem, action: () => { @@ -70,7 +71,7 @@ function createNewDocMenuGroup( }; // only replace the original import item - originalItems.splice(importItemIndex, 1, customImportItem); + items.splice(importItemIndex, 1, customImportItem); return originalNewDocMenuGroup; } diff --git a/packages/frontend/core/src/components/workspace-upgrade/index.tsx b/packages/frontend/core/src/components/workspace-upgrade/index.tsx deleted file mode 100644 index 7eecc97e974a3..0000000000000 --- a/packages/frontend/core/src/components/workspace-upgrade/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { WorkspaceUpgrade } from './upgrade'; diff --git a/packages/frontend/core/src/components/workspace-upgrade/upgrade-icon.tsx b/packages/frontend/core/src/components/workspace-upgrade/upgrade-icon.tsx deleted file mode 100644 index e604d098e8f5f..0000000000000 --- a/packages/frontend/core/src/components/workspace-upgrade/upgrade-icon.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import type React from 'react'; - -/** - * TODO(@eyhn): move to icons package - */ -export const ArrowCircleIcon = (props: React.SVGProps) => { - return ( - - - - ); -}; - -export const HeartBreakIcon = (props: React.SVGProps) => { - return ( - - - - ); -}; diff --git a/packages/frontend/core/src/components/workspace-upgrade/upgrade.css.ts b/packages/frontend/core/src/components/workspace-upgrade/upgrade.css.ts deleted file mode 100644 index d5f7a31381b3d..0000000000000 --- a/packages/frontend/core/src/components/workspace-upgrade/upgrade.css.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { cssVar } from '@toeverything/theme'; -import { style } from '@vanilla-extract/css'; -export const layout = style({ - margin: '80px auto', - maxWidth: '536px', -}); -export const upgradeBox = style({ - padding: '48px 52px', - display: 'flex', - flexDirection: 'column', - alignItems: 'center', -}); -export const upgradeTips = style({ - margin: '20px 0', - color: cssVar('textSecondaryColor'), - fontSize: '12px', - fontStyle: 'normal', - fontWeight: '400', - lineHeight: '20px', - textAlign: 'center', -}); diff --git a/packages/frontend/core/src/components/workspace-upgrade/upgrade.tsx b/packages/frontend/core/src/components/workspace-upgrade/upgrade.tsx deleted file mode 100644 index 7db72d761bef1..0000000000000 --- a/packages/frontend/core/src/components/workspace-upgrade/upgrade.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { Button } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; -import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; -import { AffineShapeIcon } from '@affine/core/components/page-list'; // TODO(@eyhn): import from page-list temporarily, need to defined common svg icon/images management. -import { useI18n } from '@affine/i18n'; -import { track } from '@affine/track'; -import { useLiveData, useService, WorkspaceService } from '@toeverything/infra'; -import { useState } from 'react'; - -import * as styles from './upgrade.css'; -import { ArrowCircleIcon, HeartBreakIcon } from './upgrade-icon'; - -/** - * TODO(@eyhn): Help info is not implemented yet. - */ -export const WorkspaceUpgrade = function WorkspaceUpgrade() { - const [error, setError] = useState(null); - const currentWorkspace = useService(WorkspaceService).workspace; - const upgrading = useLiveData(currentWorkspace.upgrade.upgrading$); - const t = useI18n(); - const { openPage } = useNavigateHelper(); - - const onButtonClick = useAsyncCallback(async () => { - if (upgrading) { - return; - } - - track.workspace.$.$.upgradeWorkspace(); - - try { - const newWorkspace = await currentWorkspace.upgrade.upgrade(); - if (newWorkspace) { - openPage(newWorkspace.id, 'all'); - } else { - // blocksuite may enter an incorrect state, reload to reset it. - location.reload(); - } - } catch (error) { - setError(error instanceof Error ? error.message : '' + error); - } - }, [upgrading, currentWorkspace.upgrade, openPage]); - - return ( -
-
- -

- {error ? error : t['com.affine.upgrade.tips.normal']()} -

- -
-
- ); -}; diff --git a/packages/frontend/core/src/desktop/pages/workspace/layouts/workspace-layout.tsx b/packages/frontend/core/src/desktop/pages/workspace/layouts/workspace-layout.tsx index 37e385fbed18f..2807198ce1f28 100644 --- a/packages/frontend/core/src/desktop/pages/workspace/layouts/workspace-layout.tsx +++ b/packages/frontend/core/src/desktop/pages/workspace/layouts/workspace-layout.tsx @@ -6,7 +6,6 @@ import { } from '@affine/core/components/affine/quota-reached-modal'; import { SWRConfigProvider } from '@affine/core/components/providers/swr-config-provider'; import { WorkspaceSideEffects } from '@affine/core/components/providers/workspace-side-effects'; -import { WorkspaceUpgrade } from '@affine/core/components/workspace-upgrade'; import { AIIsland } from '@affine/core/desktop/components/ai-island'; import { AppContainer } from '@affine/core/desktop/components/app-container'; import { WorkspaceDialogs } from '@affine/core/desktop/dialogs'; @@ -64,14 +63,5 @@ const WorkspaceLayoutUIContainer = ({ children }: PropsWithChildren) => { ); }; const WorkspaceLayoutInner = ({ children }: PropsWithChildren) => { - const workspace = useService(WorkspaceService).workspace; - - const upgrading = useLiveData(workspace.upgrade.upgrading$); - const needUpgrade = useLiveData(workspace.upgrade.needUpgrade$); - - return ( - - {needUpgrade || upgrading ? : children} - - ); + return {children}; }; diff --git a/tests/affine-migration/.gitignore b/tests/affine-migration/.gitignore deleted file mode 100644 index 58f3409d7ee74..0000000000000 --- a/tests/affine-migration/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -static -fixtures/*.ydoc -test-results -*.zip -web-static diff --git a/tests/affine-migration/README.md b/tests/affine-migration/README.md deleted file mode 100644 index f1326a66d85d8..0000000000000 --- a/tests/affine-migration/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# AFFiNE Migration Testings - -This package is used to testing migration logic for every breaking version. - -```sh -BUILD_TYPE=canary yarn run build -cd tests/affine-migration -yarn run e2e -``` - -> Tips: -> Run `yarn dev` to start dev server in 8080 could make debugging more quickly. diff --git a/tests/affine-migration/e2e/basic.spec.ts b/tests/affine-migration/e2e/basic.spec.ts deleted file mode 100644 index 43f4a5d3669b5..0000000000000 --- a/tests/affine-migration/e2e/basic.spec.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { patchDataEnhancement } from '@affine-test/kit/e2e-enhance/initializer'; -import { SnapshotStorage } from '@affine-test/kit/e2e-enhance/snapshot'; -import { test } from '@affine-test/kit/playwright'; -import { clickEdgelessModeButton } from '@affine-test/kit/utils/editor'; -import { coreUrl } from '@affine-test/kit/utils/load-page'; -import { waitForEditorLoad } from '@affine-test/kit/utils/page-logic'; -import { clickSideBarAllPageButton } from '@affine-test/kit/utils/sidebar'; -import type { Page } from '@playwright/test'; -import { expect } from '@playwright/test'; - -async function open404PageToInitData(page: Page, version: string) { - const snapshotStorage = new SnapshotStorage(version); - const { binaries, idbData, localStorageData } = await snapshotStorage.read(); - - // Open other page to init data - await page.goto(`${coreUrl}/404`); - await page.evaluate( - ([v1, v2]) => window.writeAffineDatabase(v1, v2), - [idbData, binaries] - ); - await page.evaluate( - value => window.writeAffineLocalStorage(value), - localStorageData - ); - - return { localStorageData }; -} - -test.beforeEach(async ({ page }) => { - await patchDataEnhancement(page); -}); - -test('v1 to v4', async ({ page }) => { - await open404PageToInitData(page, '0.7.0-canary.18'); - - await page.goto(coreUrl); - await clickSideBarAllPageButton(page); - - await expect(page.getByTestId('upgrade-workspace-button')).toBeVisible(); - await page.getByTestId('upgrade-workspace-button').click(); - - await expect(page.getByTestId('page-list-item')).toHaveCount(2); - await page - .getByTestId('page-list-item-title-text') - .getByText('hello') - .click(); - - await waitForEditorLoad(page); - await expect(page.locator('v-line').nth(0)).toHaveText('hello'); -}); - -test('v2 to v4, database migration', async ({ page }) => { - const { localStorageData } = await open404PageToInitData( - page, - '0.8.0-canary.7' - ); - - const detailPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/${localStorageData.last_page_id}`; - await page.goto(detailPagePath); - - await expect(page.getByTestId('upgrade-workspace-button')).toBeVisible(); - await page.getByTestId('upgrade-workspace-button').click(); - - // check page mode is correct - await expect(page.locator('v-line').nth(0)).toHaveText('hello'); - await expect(page.locator('affine-database')).toBeVisible(); - - // check edgeless mode is correct - await clickEdgelessModeButton(page); - await expect(page.locator('affine-database')).toBeVisible(); -}); - -test('v3 to v4, surface migration', async ({ page }) => { - const { localStorageData } = await open404PageToInitData(page, '0.8.4'); - - const detailPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/${localStorageData.last_page_id}`; - await page.goto(detailPagePath); - - await expect(page.getByTestId('upgrade-workspace-button')).toBeVisible(); - await page.getByTestId('upgrade-workspace-button').click(); - await waitForEditorLoad(page); - - await page.waitForTimeout(500); - - // check edgeless mode is correct - await clickEdgelessModeButton(page); - await expect(page.locator('.edgeless-toolbar-container')).toBeVisible(); - await expect(page.locator('affine-edgeless-root')).toBeVisible(); -}); - -test('v0 to v4, subdoc migration', async ({ page }) => { - await open404PageToInitData(page, '0.6.1-beta.1'); - - await page.goto(coreUrl); - await clickSideBarAllPageButton(page); - - await expect(page.getByTestId('upgrade-workspace-button')).toBeVisible(); - await page.getByTestId('upgrade-workspace-button').click(); - - await expect(page.getByTestId('page-list-item')).toHaveCount(2); - await page - .getByTestId('page-list-item-title-text') - .getByText('hello') - .click(); - - await waitForEditorLoad(page); - - // check page mode is correct - await expect(page.locator('v-line').nth(0)).toHaveText('hello'); - await expect(page.locator('v-line').nth(1)).toHaveText('TEST CONTENT'); - - // check edgeless mode is correct - await clickEdgelessModeButton(page); - await expect(page.locator('.edgeless-toolbar-container')).toBeVisible(); - await expect(page.locator('affine-edgeless-root')).toBeVisible(); -}); diff --git a/tests/affine-migration/package.json b/tests/affine-migration/package.json deleted file mode 100644 index 65373bb1edf57..0000000000000 --- a/tests/affine-migration/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "@affine-test/affine-migration", - "description": "AFFiNE migration e2e tests", - "scripts": { - "e2e": "yarn playwright test" - }, - "devDependencies": { - "@affine-test/kit": "workspace:*", - "@playwright/test": "=1.48.2" - }, - "version": "0.18.0" -} diff --git a/tests/affine-migration/playwright.config.ts b/tests/affine-migration/playwright.config.ts deleted file mode 100644 index 25c807118e03a..0000000000000 --- a/tests/affine-migration/playwright.config.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { testResultDir } from '@affine-test/kit/playwright'; -import type { - PlaywrightTestConfig, - PlaywrightWorkerOptions, -} from '@playwright/test'; - -const config: PlaywrightTestConfig = { - testDir: './e2e', - fullyParallel: !process.env.CI, - timeout: process.env.CI ? 50_000 : 30_000, - outputDir: testResultDir, - use: { - baseURL: 'http://localhost:8080/', - browserName: - (process.env.BROWSER as PlaywrightWorkerOptions['browserName']) ?? - 'chromium', - permissions: ['clipboard-read', 'clipboard-write'], - viewport: { width: 1440, height: 800 }, - actionTimeout: 5 * 1000, - locale: 'en-US', - trace: 'on-first-retry', - video: 'on-first-retry', - }, - forbidOnly: !!process.env.CI, - workers: process.env.CI ? 1 : 4, - retries: 1, - reporter: process.env.CI ? 'github' : 'list', - webServer: [ - // Intentionally not building the web, reminds you to run it by yourself. - { - command: 'yarn -T run start:web-static', - port: 8080, - timeout: 120 * 1000, - reuseExistingServer: !process.env.CI, - env: { - COVERAGE: process.env.COVERAGE || 'false', - }, - }, - ], -}; - -if (process.env.CI) { - config.retries = 3; -} - -export default config; diff --git a/tests/affine-migration/tsconfig.json b/tests/affine-migration/tsconfig.json deleted file mode 100644 index c942835b30a68..0000000000000 --- a/tests/affine-migration/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "esModuleInterop": true, - "resolveJsonModule": true, - "outDir": "lib" - }, - "include": ["e2e"], - "references": [ - { - "path": "../../tests/kit" - }, - { - "path": "../../tests/fixtures" - } - ] -} diff --git a/tools/cli/package.json b/tools/cli/package.json index ebf70dcbd09cb..f90b8710aaf2c 100644 --- a/tools/cli/package.json +++ b/tools/cli/package.json @@ -6,7 +6,7 @@ "@affine/env": "workspace:*", "@affine/templates": "workspace:*", "@aws-sdk/client-s3": "^3.620.0", - "@blocksuite/affine": "0.17.33", + "@blocksuite/affine": "0.18.0", "@clack/core": "^0.3.4", "@clack/prompts": "^0.7.0", "@magic-works/i18n-codegen": "^0.6.0", diff --git a/tsconfig.json b/tsconfig.json index 17a68dee4a50d..7bae404222dce 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -149,9 +149,6 @@ { "path": "./tests/affine-local" }, - { - "path": "./tests/affine-migration" - }, { "path": "./tests/affine-mobile" }, diff --git a/yarn.lock b/yarn.lock index f8fe4106d112b..84f044fc8a871 100644 --- a/yarn.lock +++ b/yarn.lock @@ -116,15 +116,6 @@ __metadata: languageName: unknown linkType: soft -"@affine-test/affine-migration@workspace:tests/affine-migration": - version: 0.0.0-use.local - resolution: "@affine-test/affine-migration@workspace:tests/affine-migration" - dependencies: - "@affine-test/kit": "workspace:*" - "@playwright/test": "npm:=1.48.2" - languageName: unknown - linkType: soft - "@affine-test/affine-mobile@workspace:tests/affine-mobile": version: 0.0.0-use.local resolution: "@affine-test/affine-mobile@workspace:tests/affine-mobile" @@ -222,7 +213,7 @@ __metadata: "@affine/component": "workspace:*" "@affine/core": "workspace:*" "@affine/i18n": "workspace:*" - "@blocksuite/affine": "npm:0.17.33" + "@blocksuite/affine": "npm:0.18.0" "@blocksuite/icons": "npm:^2.1.70" "@capacitor/android": "npm:^6.1.2" "@capacitor/cli": "npm:^6.1.2" @@ -269,7 +260,7 @@ __metadata: "@affine/env": "workspace:*" "@affine/templates": "workspace:*" "@aws-sdk/client-s3": "npm:^3.620.0" - "@blocksuite/affine": "npm:0.17.33" + "@blocksuite/affine": "npm:0.18.0" "@clack/core": "npm:^0.3.4" "@clack/prompts": "npm:^0.7.0" "@magic-works/i18n-codegen": "npm:^0.6.0" @@ -326,7 +317,7 @@ __metadata: "@affine/i18n": "workspace:*" "@atlaskit/pragmatic-drag-and-drop": "npm:^1.2.1" "@atlaskit/pragmatic-drag-and-drop-hitbox": "npm:^1.0.3" - "@blocksuite/affine": "npm:0.17.33" + "@blocksuite/affine": "npm:0.18.0" "@blocksuite/icons": "npm:2.1.70" "@chromatic-com/storybook": "npm:^3.0.0" "@emotion/react": "npm:^11.11.4" @@ -409,7 +400,7 @@ __metadata: "@affine/i18n": "workspace:*" "@affine/templates": "workspace:*" "@affine/track": "workspace:*" - "@blocksuite/affine": "npm:0.17.33" + "@blocksuite/affine": "npm:0.18.0" "@blocksuite/icons": "npm:2.1.70" "@capacitor/app": "npm:^6.0.1" "@capacitor/browser": "npm:^6.0.3" @@ -518,7 +509,7 @@ __metadata: "@affine/core": "workspace:*" "@affine/i18n": "workspace:*" "@affine/native": "workspace:*" - "@blocksuite/affine": "npm:0.17.33" + "@blocksuite/affine": "npm:0.18.0" "@electron-forge/cli": "npm:^7.3.0" "@electron-forge/core": "npm:^7.3.0" "@electron-forge/core-utils": "npm:^7.3.0" @@ -572,7 +563,7 @@ __metadata: version: 0.0.0-use.local resolution: "@affine/env@workspace:packages/common/env" dependencies: - "@blocksuite/affine": "npm:0.17.33" + "@blocksuite/affine": "npm:0.18.0" vitest: "npm:2.1.4" zod: "npm:^3.22.4" peerDependencies: @@ -621,7 +612,7 @@ __metadata: "@affine/component": "workspace:*" "@affine/core": "workspace:*" "@affine/i18n": "workspace:*" - "@blocksuite/affine": "npm:0.17.33" + "@blocksuite/affine": "npm:0.18.0" "@blocksuite/icons": "npm:^2.1.70" "@capacitor/app": "npm:^6.0.1" "@capacitor/browser": "npm:^6.0.3" @@ -647,7 +638,7 @@ __metadata: "@affine/component": "workspace:*" "@affine/core": "workspace:*" "@affine/i18n": "workspace:*" - "@blocksuite/affine": "npm:0.17.33" + "@blocksuite/affine": "npm:0.18.0" "@blocksuite/icons": "npm:^2.1.70" "@sentry/react": "npm:^8.0.0" "@types/react": "npm:^18.2.75" @@ -2533,113 +2524,113 @@ __metadata: languageName: node linkType: hard -"@blocksuite/affine-block-embed@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/affine-block-embed@npm:0.17.33" - dependencies: - "@blocksuite/affine-block-surface": "npm:0.17.33" - "@blocksuite/affine-components": "npm:0.17.33" - "@blocksuite/affine-model": "npm:0.17.33" - "@blocksuite/affine-shared": "npm:0.17.33" - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" +"@blocksuite/affine-block-embed@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/affine-block-embed@npm:0.18.0" + dependencies: + "@blocksuite/affine-block-surface": "npm:0.18.0" + "@blocksuite/affine-components": "npm:0.18.0" + "@blocksuite/affine-model": "npm:0.18.0" + "@blocksuite/affine-shared": "npm:0.18.0" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" "@blocksuite/icons": "npm:^2.1.70" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" "@floating-ui/dom": "npm:^1.6.10" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" - "@toeverything/theme": "npm:^1.0.15" + "@toeverything/theme": "npm:^1.0.19" lit: "npm:^3.2.0" minimatch: "npm:^10.0.1" zod: "npm:^3.23.8" - checksum: 10/ca10ef815186413a5ac9b7cdb60f31a1e4ab982a4507edf5d8f6f131429bae50e27624c632639e17ebd8d45cabb946291ff33ed6ce94670d08e51ca5d598b6fb + checksum: 10/b46c6f59c52f86a615498a73dbc183aab73cc8f1c771bf2b24bd5b1768765bacd07428c66d675be1f6629fc5026ae15bc75a35586724dc3241f57aac5c636990 languageName: node linkType: hard -"@blocksuite/affine-block-list@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/affine-block-list@npm:0.17.33" - dependencies: - "@blocksuite/affine-components": "npm:0.17.33" - "@blocksuite/affine-model": "npm:0.17.33" - "@blocksuite/affine-shared": "npm:0.17.33" - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" +"@blocksuite/affine-block-list@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/affine-block-list@npm:0.18.0" + dependencies: + "@blocksuite/affine-components": "npm:0.18.0" + "@blocksuite/affine-model": "npm:0.18.0" + "@blocksuite/affine-shared": "npm:0.18.0" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" "@floating-ui/dom": "npm:^1.6.10" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" - "@toeverything/theme": "npm:^1.0.15" + "@toeverything/theme": "npm:^1.0.19" lit: "npm:^3.2.0" minimatch: "npm:^10.0.1" zod: "npm:^3.23.8" - checksum: 10/25fdc0d014df56c70737276638ddf3262d569924b37fdd3d5ed35323344c8b1573a6091761f220aa878e089cae5869fdf23569365f7f531db70266ae3f1067cf + checksum: 10/bbcf28e6da235735c61857b49e5f360a4ee0046ab6b5ceae62abac7c073cf118256c49cdcafb5ac9a3acea31fde8d4e115f7dba9b5e58aa2745ff1cb6e27224c languageName: node linkType: hard -"@blocksuite/affine-block-paragraph@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/affine-block-paragraph@npm:0.17.33" - dependencies: - "@blocksuite/affine-components": "npm:0.17.33" - "@blocksuite/affine-model": "npm:0.17.33" - "@blocksuite/affine-shared": "npm:0.17.33" - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" +"@blocksuite/affine-block-paragraph@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/affine-block-paragraph@npm:0.18.0" + dependencies: + "@blocksuite/affine-components": "npm:0.18.0" + "@blocksuite/affine-model": "npm:0.18.0" + "@blocksuite/affine-shared": "npm:0.18.0" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" "@floating-ui/dom": "npm:^1.6.10" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" - "@toeverything/theme": "npm:^1.0.15" + "@toeverything/theme": "npm:^1.0.19" lit: "npm:^3.2.0" minimatch: "npm:^10.0.1" zod: "npm:^3.23.8" - checksum: 10/a07710ae717e87ae793f052fe4e55875affb3a5ccb78fffe1692ad014404ee73508f36bc26b1f3a1196ef334beaef6219bdb7f2bad5a16c0afd150374cd6641f + checksum: 10/b45d22337f26236b089d3180aedf3643a68e1c1afee850d08000705d5d6796a67692d95fb3b52310d8976cb82cb99cbe397717241bb27f44e69959bcc0bae1e8 languageName: node linkType: hard -"@blocksuite/affine-block-surface@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/affine-block-surface@npm:0.17.33" - dependencies: - "@blocksuite/affine-components": "npm:0.17.33" - "@blocksuite/affine-model": "npm:0.17.33" - "@blocksuite/affine-shared": "npm:0.17.33" - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" +"@blocksuite/affine-block-surface@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/affine-block-surface@npm:0.18.0" + dependencies: + "@blocksuite/affine-components": "npm:0.18.0" + "@blocksuite/affine-model": "npm:0.18.0" + "@blocksuite/affine-shared": "npm:0.18.0" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" - "@toeverything/theme": "npm:^1.0.15" + "@toeverything/theme": "npm:^1.0.19" fractional-indexing: "npm:^3.2.0" lit: "npm:^3.2.0" lodash.chunk: "npm:^4.2.0" nanoid: "npm:^5.0.7" zod: "npm:^3.23.8" - checksum: 10/19b607d8ee38252666d02d2428a923d0c7ff018cd0c7ecd27047327fac183ac69c0ff97d58824940962a3e5c8958a4055a10503b04e00975e00cc93a13aed660 + checksum: 10/ec7d41ae64b13ad8f7423bd7f96ab734c2cb479d35ec9fee465068cc14d9d98d5c44671cfe039138ec150267cf37368a8cfb9a6f64fe06e46401bee017dfe0e5 languageName: node linkType: hard -"@blocksuite/affine-components@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/affine-components@npm:0.17.33" +"@blocksuite/affine-components@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/affine-components@npm:0.18.0" dependencies: - "@blocksuite/affine-model": "npm:0.17.33" - "@blocksuite/affine-shared": "npm:0.17.33" - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" + "@blocksuite/affine-model": "npm:0.18.0" + "@blocksuite/affine-shared": "npm:0.18.0" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" "@blocksuite/icons": "npm:^2.1.70" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" "@floating-ui/dom": "npm:^1.6.10" "@lit/context": "npm:^1.1.2" "@lottiefiles/dotlottie-wc": "npm:^0.2.16" "@preact/signals-core": "npm:^1.8.0" - "@toeverything/theme": "npm:^1.0.15" + "@toeverything/theme": "npm:^1.0.19" date-fns: "npm:^4.0.0" katex: "npm:^0.16.11" lit: "npm:^3.2.0" @@ -2647,82 +2638,82 @@ __metadata: lodash.clonedeep: "npm:^4.5.0" shiki: "npm:^1.12.0" zod: "npm:^3.23.8" - checksum: 10/9bd77f4064c19c34d35fe9b1a988b901a9c181ea8e7e23b5a92255efc8136fef9d699e6d5f83bc303a2c2450777d0d41d153893a5a5c024fd7a8ca1d9bc85b70 + checksum: 10/adcd514573254ce163ce49d0c62269a5c43575f279b4b62b712c6ae30b0973f0fee4d7310ddbff58700529d59c20b0d257f72e1b7329ee4d009af680767c01ea languageName: node linkType: hard -"@blocksuite/affine-model@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/affine-model@npm:0.17.33" +"@blocksuite/affine-model@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/affine-model@npm:0.18.0" dependencies: - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" fractional-indexing: "npm:^3.2.0" zod: "npm:^3.23.8" - checksum: 10/7d184d6d6d1ebd97213a17a2eed82a550e5cdd03f6fa34e0d911c87d2c4424a86869c1325fd97ed565e96159f4e5c579510ed7f09fc9a73944ad8bc940843ebc + checksum: 10/6f607753b4609e9436e0740386308b2ec36c0dc114d9a2feb48155c1d23ecfff4d8452792f4b4ac8c77997f3b13d8984e6db5f8123ae6e16003a439f556e8431 languageName: node linkType: hard -"@blocksuite/affine-shared@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/affine-shared@npm:0.17.33" +"@blocksuite/affine-shared@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/affine-shared@npm:0.18.0" dependencies: - "@blocksuite/affine-model": "npm:0.17.33" - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" + "@blocksuite/affine-model": "npm:0.18.0" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" "@floating-ui/dom": "npm:^1.6.10" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" - "@toeverything/theme": "npm:^1.0.15" + "@toeverything/theme": "npm:^1.0.19" lit: "npm:^3.2.0" lodash.clonedeep: "npm:^4.5.0" lodash.mergewith: "npm:^4.6.2" minimatch: "npm:^10.0.1" zod: "npm:^3.23.8" - checksum: 10/c25a2297f2e28caae8f858f6427092e87e34ad6e8be60f81c3e79edb2d3f92162b1a13f1e449edd321fdb782d696718a95595a76704fe2386e4c197bdfd9acfb + checksum: 10/8e89b78d6bad1a3e29b8dcca3de6cfbc7c069a7522df9a3027eca3ba4369694ae9c8002d6daabe6258b143937e89b90e8c7c0e4bbdd2cbed4a0f0972fb0667f3 languageName: node linkType: hard -"@blocksuite/affine-widget-scroll-anchoring@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/affine-widget-scroll-anchoring@npm:0.17.33" +"@blocksuite/affine-widget-scroll-anchoring@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/affine-widget-scroll-anchoring@npm:0.18.0" dependencies: - "@blocksuite/affine-model": "npm:0.17.33" - "@blocksuite/affine-shared": "npm:0.17.33" - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" + "@blocksuite/affine-model": "npm:0.18.0" + "@blocksuite/affine-shared": "npm:0.18.0" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" "@preact/signals-core": "npm:^1.8.0" - "@toeverything/theme": "npm:^1.0.15" + "@toeverything/theme": "npm:^1.0.19" lit: "npm:^3.2.0" - checksum: 10/2acb2e66270513c954bf6230278e8ce54929ab98d152cb1b9dfa1c7969b8906b7db1cf5d57a5adff2c5c72be7674a1a9ae421e49e771216b32899ba313579c97 + checksum: 10/b098d837eff42ba3633c28ed95ad0eedd5cb07dad16ed8c2cb416086f796973990f4d3111205e356f53357008f034732a59123df8f0a694e69e066c663849200 languageName: node linkType: hard -"@blocksuite/affine@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/affine@npm:0.17.33" +"@blocksuite/affine@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/affine@npm:0.18.0" dependencies: - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/blocks": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/presets": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" - checksum: 10/cc1c63bd804f2d089b9ee72b2a59c4745d7c2c54ac1e19e9af67f4d02a97ba9c91ae87e4d2e97c94ff1ea9519f61a95069d5a7c9bd84023afd365b7d8189ff76 + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/blocks": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/presets": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" + checksum: 10/bd6ef74ba998754abaf502e4e53e3e21041a165f9dad8a204269f19128da890329c3bddca48fa2f959791d23dd2ede53f4f1814542a97f7d3313c381b27c72f5 languageName: node linkType: hard -"@blocksuite/block-std@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/block-std@npm:0.17.33" +"@blocksuite/block-std@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/block-std@npm:0.18.0" dependencies: - "@blocksuite/global": "npm:0.17.33" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" + "@blocksuite/global": "npm:0.18.0" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" "@types/hast": "npm:^3.0.4" @@ -2734,32 +2725,32 @@ __metadata: unified: "npm:^11.0.5" w3c-keyname: "npm:^2.2.8" zod: "npm:^3.23.8" - checksum: 10/18bb597c6d62763cfa1939d680cd522a8cc1285cbb312b83c8d96861d6d56a2004a7cabd389491580e3897e9ea4f787f22ecf583f79c83dbe223cf3d2845b7de + checksum: 10/a3eadd461bdd8417dda1489dd84298084e8a5e2f81fd1ed147985891867945bc828d6df65a7f7b92ddd2406434a995a8b5b659a7354654d86ae20b684ae42acb languageName: node linkType: hard -"@blocksuite/blocks@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/blocks@npm:0.17.33" - dependencies: - "@blocksuite/affine-block-embed": "npm:0.17.33" - "@blocksuite/affine-block-list": "npm:0.17.33" - "@blocksuite/affine-block-paragraph": "npm:0.17.33" - "@blocksuite/affine-block-surface": "npm:0.17.33" - "@blocksuite/affine-components": "npm:0.17.33" - "@blocksuite/affine-model": "npm:0.17.33" - "@blocksuite/affine-shared": "npm:0.17.33" - "@blocksuite/affine-widget-scroll-anchoring": "npm:0.17.33" - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/data-view": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" +"@blocksuite/blocks@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/blocks@npm:0.18.0" + dependencies: + "@blocksuite/affine-block-embed": "npm:0.18.0" + "@blocksuite/affine-block-list": "npm:0.18.0" + "@blocksuite/affine-block-paragraph": "npm:0.18.0" + "@blocksuite/affine-block-surface": "npm:0.18.0" + "@blocksuite/affine-components": "npm:0.18.0" + "@blocksuite/affine-model": "npm:0.18.0" + "@blocksuite/affine-shared": "npm:0.18.0" + "@blocksuite/affine-widget-scroll-anchoring": "npm:0.18.0" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/data-view": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" "@blocksuite/icons": "npm:^2.1.70" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" "@floating-ui/dom": "npm:^1.6.10" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" - "@toeverything/theme": "npm:^1.0.15" + "@toeverything/theme": "npm:^1.0.19" "@types/hast": "npm:^3.0.4" "@types/mdast": "npm:^4.0.4" collapse-white-space: "npm:^2.1.0" @@ -2792,41 +2783,41 @@ __metadata: simple-xml-to-json: "npm:^1.2.2" unified: "npm:^11.0.5" zod: "npm:^3.23.8" - checksum: 10/b14381b0b0d35e6cba962abf02b88df545cb05780c950ef5ed622235cbeee447230cf358de4834fc9876c7be352a504f479e7295c58b697287561f7d38b18efa + checksum: 10/42167bf16f754673c171829d25112bb489093f19c809b8b3860cfcf98d4dc40f1f1500d8c23bcae1366672de1088858b889b5bec18a24e8dc63e13916a7b56c2 languageName: node linkType: hard -"@blocksuite/data-view@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/data-view@npm:0.17.33" +"@blocksuite/data-view@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/data-view@npm:0.18.0" dependencies: - "@blocksuite/affine-components": "npm:0.17.33" - "@blocksuite/affine-shared": "npm:0.17.33" - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" + "@blocksuite/affine-components": "npm:0.18.0" + "@blocksuite/affine-shared": "npm:0.18.0" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" "@blocksuite/icons": "npm:^2.1.70" - "@blocksuite/store": "npm:0.17.33" + "@blocksuite/store": "npm:0.18.0" "@emotion/hash": "npm:^0.9.2" "@floating-ui/dom": "npm:^1.6.10" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" - "@toeverything/theme": "npm:^1.0.15" + "@toeverything/theme": "npm:^1.0.19" date-fns: "npm:^4.0.0" lit: "npm:^3.2.0" zod: "npm:^3.23.8" - checksum: 10/9b25844c4200c303e0703f4b3240a9d3bbfe6e08770aa492013d69cd1e9a32d793fc64bd075ca6f256c5c49074fc8f10cb8ccb448e5e44b9033287965549c35d + checksum: 10/63c1732df0b7275502bc77012808b8028507b072158845eea6d3da37a90d17e8c4f71bf702cdf6db88130b3955383709f3b986ba0455a0225b7b5c94a276f3a4 languageName: node linkType: hard -"@blocksuite/global@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/global@npm:0.17.33" +"@blocksuite/global@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/global@npm:0.18.0" dependencies: "@preact/signals-core": "npm:^1.8.0" lib0: "npm:^0.2.97" lit: "npm:^3.2.0" zod: "npm:^3.23.8" - checksum: 10/adc172e6687f66b6b68966aff1cb5e0ccd88056585d8c41264be556837e37e92dba37169103087d57c040419238c58cf607b7ad1173def9921aac5d0748857d9 + checksum: 10/7dfb0d8e65fd09c9b7ef7e29bc63ab253c3ed3f2258cab40fbd4dd086f907a1a57f5e76d96e154dee6c91ab7cc5e0a71c4e6a0380b01aa4e223c21d327b095f9 languageName: node linkType: hard @@ -2846,49 +2837,49 @@ __metadata: languageName: node linkType: hard -"@blocksuite/inline@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/inline@npm:0.17.33" +"@blocksuite/inline@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/inline@npm:0.18.0" dependencies: - "@blocksuite/global": "npm:0.17.33" + "@blocksuite/global": "npm:0.18.0" "@preact/signals-core": "npm:^1.8.0" zod: "npm:^3.23.8" peerDependencies: lit: ^3.2.0 yjs: ^13.6.18 - checksum: 10/007b0f4401ba5215760970d70896ef064033e176e3d492110980fd3e87c9522190aae2b7fd15f3f7b187a1a64598cbbfbb77b57ade18abf5fce7079c60996992 + checksum: 10/f6db02fb6c3bda59c3af1619f333b81faa069062b5705032dd74841e49a19bbfece803ea2ab483a2d9e0677a2894e7aaebb5ccc0baa9a6c1ff553fd5530002b4 languageName: node linkType: hard -"@blocksuite/presets@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/presets@npm:0.17.33" - dependencies: - "@blocksuite/affine-block-surface": "npm:0.17.33" - "@blocksuite/affine-model": "npm:0.17.33" - "@blocksuite/affine-shared": "npm:0.17.33" - "@blocksuite/block-std": "npm:0.17.33" - "@blocksuite/blocks": "npm:0.17.33" - "@blocksuite/global": "npm:0.17.33" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/store": "npm:0.17.33" +"@blocksuite/presets@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/presets@npm:0.18.0" + dependencies: + "@blocksuite/affine-block-surface": "npm:0.18.0" + "@blocksuite/affine-model": "npm:0.18.0" + "@blocksuite/affine-shared": "npm:0.18.0" + "@blocksuite/block-std": "npm:0.18.0" + "@blocksuite/blocks": "npm:0.18.0" + "@blocksuite/global": "npm:0.18.0" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/store": "npm:0.18.0" "@floating-ui/dom": "npm:^1.6.10" "@lottiefiles/dotlottie-wc": "npm:^0.2.16" "@preact/signals-core": "npm:^1.8.0" - "@toeverything/theme": "npm:^1.0.15" + "@toeverything/theme": "npm:^1.0.19" lit: "npm:^3.2.0" zod: "npm:^3.23.8" - checksum: 10/f46861883b57112153c1b4e1d43957788b711b20ecd0efd31bb4e9b12012ddf44c3e3a394d729ed204c6bcd710c9901468a8641da0754d1c2e280793eb6615b0 + checksum: 10/a000d5730a1bdc0bd14302eaaf829130930683c4042f1a4bd555796683fb06cb4b01a5b0e450cdd9875ba75a2611c63e10791a06a5165284f71e1949d6304c5d languageName: node linkType: hard -"@blocksuite/store@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/store@npm:0.17.33" +"@blocksuite/store@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/store@npm:0.18.0" dependencies: - "@blocksuite/global": "npm:0.17.33" - "@blocksuite/inline": "npm:0.17.33" - "@blocksuite/sync": "npm:0.17.33" + "@blocksuite/global": "npm:0.18.0" + "@blocksuite/inline": "npm:0.18.0" + "@blocksuite/sync": "npm:0.18.0" "@preact/signals-core": "npm:^1.8.0" "@types/flexsearch": "npm:^0.7.6" "@types/lodash.ismatch": "npm:^4.4.9" @@ -2904,21 +2895,21 @@ __metadata: zod: "npm:^3.23.8" peerDependencies: yjs: ^13.6.18 - checksum: 10/2a5c6065df2405d9238603228303432ade303c7765d8b42a5e707e257634af8844c2572bcf92da2e8e5ceda0740854c583877236514dcc7d5794377fea86e61c + checksum: 10/f70fa3b4492bf8fdee5a8a3da19a437bfe1b4836b661265724b7269b2b6afbf8b22942a3e0793947a6f43e29854f3a90e848ac1e1e088b30987b560ca2100e5c languageName: node linkType: hard -"@blocksuite/sync@npm:0.17.33": - version: 0.17.33 - resolution: "@blocksuite/sync@npm:0.17.33" +"@blocksuite/sync@npm:0.18.0": + version: 0.18.0 + resolution: "@blocksuite/sync@npm:0.18.0" dependencies: - "@blocksuite/global": "npm:0.17.33" + "@blocksuite/global": "npm:0.18.0" idb: "npm:^8.0.0" idb-keyval: "npm:^6.2.1" y-protocols: "npm:^1.0.6" peerDependencies: yjs: ^13.6.15 - checksum: 10/a4cdd81333c5b64658f520cac1c6ea8d557342a96e8062bc1ebc24421d0f9b66674f66ae0fcea7accc9504fdcd4fcbc7c92dcd458265eb4fdcbc33ce69be19d3 + checksum: 10/ab11fb95b8a41a277bad32728cc07dff700362d52ed2b83f5fc33ff92a4c12ffb1a326eb4a340b0d55f00c1ee13930f2705c2aa6ae20635079c084826f0a9732 languageName: node linkType: hard @@ -13092,7 +13083,7 @@ __metadata: "@affine/debug": "workspace:*" "@affine/env": "workspace:*" "@affine/templates": "workspace:*" - "@blocksuite/affine": "npm:0.17.33" + "@blocksuite/affine": "npm:0.18.0" "@datastructures-js/binary-search-tree": "npm:^5.3.2" "@testing-library/react": "npm:^16.0.0" eventemitter2: "npm:^6.4.9" @@ -13152,10 +13143,10 @@ __metadata: languageName: node linkType: hard -"@toeverything/theme@npm:^1.0.15, @toeverything/theme@npm:^1.0.18": - version: 1.0.18 - resolution: "@toeverything/theme@npm:1.0.18" - checksum: 10/0a72d7e171037bd1867a78f8d0346dc8fc8f64d6777a6944df99dd32eedd698de0a5ef405fbd41bc7f58e94384f57a67e6c912b3c2914808268de6136f7eea64 +"@toeverything/theme@npm:^1.0.18, @toeverything/theme@npm:^1.0.19": + version: 1.0.19 + resolution: "@toeverything/theme@npm:1.0.19" + checksum: 10/3f7f1a084394f34beb2f065cc6a79a08be3f7197c365daf089a01a8ca152f3ec84533601019dfefb60dc0e0743a98979e719e9f984dcd58b32998e0e58c8fb92 languageName: node linkType: hard