mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-14 00:26:51 +08:00
refactor(infra): record legacy data to improve testing stability (#4590)
This commit is contained in:
@@ -154,12 +154,6 @@ jobs:
|
||||
name: E2E Migration Test
|
||||
runs-on: ubuntu-latest
|
||||
environment: development
|
||||
strategy:
|
||||
matrix:
|
||||
spec:
|
||||
- { package: 0.7.0-canary.18 }
|
||||
- { package: 0.8.0-canary.7 }
|
||||
- { package: 0.8.4 }
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Node.js
|
||||
@@ -168,18 +162,15 @@ jobs:
|
||||
playwright-install: true
|
||||
electron-install: false
|
||||
|
||||
- name: Unzip
|
||||
run: yarn workspace @affine-legacy/${{ matrix.spec.package }} unzip
|
||||
|
||||
- name: Run playwright tests
|
||||
run: yarn workspace @affine-legacy/${{ matrix.spec.package }} e2e --forbid-only
|
||||
run: yarn workspace @affine-test/affine-migration e2e --forbid-only
|
||||
|
||||
- name: Upload test results
|
||||
if: ${{ failure() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: test-results-e2e-migration-${{ matrix.spec.package }}
|
||||
path: ./tests/affine-legacy/${{ matrix.spec.package }}/test-results
|
||||
name: test-results-e2e-migration
|
||||
path: ./tests/affine-migration/test-results
|
||||
if-no-files-found: ignore
|
||||
|
||||
unit-test:
|
||||
|
||||
+1
-1
@@ -102,7 +102,7 @@ yarn test
|
||||
### E2E Test
|
||||
|
||||
```shell
|
||||
# there are `affine-local`, `affine-legacy/*`, `affine-local`, `affine-plugin`, `affine-prototype` e2e tests,
|
||||
# there are `affine-local`, `affine-migration`, `affine-local`, `affine-plugin`, `affine-prototype` e2e tests,
|
||||
# which are run under different situations.
|
||||
cd tests/affine-local
|
||||
yarn e2e
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"tests/kit",
|
||||
"tests/affine-legacy/*",
|
||||
"tests/affine-local",
|
||||
"tests/affine-migration",
|
||||
"tests/affine-desktop",
|
||||
"tests/affine-desktop-cloud",
|
||||
"tests/affine-plugin",
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
# AFFiNE Legacy 0.7.0-canary.18
|
||||
|
||||
> This package is static output of AFFiNE 0.7.0-canary.18
|
||||
>
|
||||
> **This package is for debug only**.
|
||||
>
|
||||
> DO NOT MODIFY `affine-web.zip`
|
||||
This package is used to record legacy data of 0.7.0-canary.18.
|
||||
Run following commands locally to record data to `tests/fixtures/legacy/0.7.0-canary.18`.
|
||||
|
||||
```sh
|
||||
cd tests/affine-legacy/0.7.0-canary.18
|
||||
yarn run unzip
|
||||
yarn run e2e
|
||||
```
|
||||
|
||||
If you want to debug, running `yarn run e2e --ui` is ok. Or using https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright is more better.
|
||||
|
||||
@@ -1,36 +1,33 @@
|
||||
import { resolve } from 'node:path';
|
||||
|
||||
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 {
|
||||
clickNewPageButton,
|
||||
waitForEditorLoad,
|
||||
} from '@affine-test/kit/utils/page-logic';
|
||||
import {
|
||||
check8080Available,
|
||||
setupProxyServer,
|
||||
} from '@affine-test/kit/utils/proxy';
|
||||
import { clickSideBarAllPageButton } from '@affine-test/kit/utils/sidebar';
|
||||
import { expect } from '@playwright/test';
|
||||
|
||||
const { switchToNext } = setupProxyServer(
|
||||
test,
|
||||
resolve(__dirname, '..', 'static')
|
||||
);
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await patchDataEnhancement(page);
|
||||
});
|
||||
|
||||
test('init page', async ({ page, context }) => {
|
||||
await check8080Available(context);
|
||||
test('record 0.7.0-canary.18 legacy data', async ({ page }) => {
|
||||
await page.goto('http://localhost:8081/');
|
||||
await waitForEditorLoad(page);
|
||||
await clickNewPageButton(page);
|
||||
const locator = page.locator('v-line').nth(0);
|
||||
await locator.fill('hello');
|
||||
|
||||
await switchToNext();
|
||||
await page.waitForTimeout(1000);
|
||||
await page.goto('http://localhost:8081/');
|
||||
await waitForEditorLoad(page);
|
||||
await clickSideBarAllPageButton(page);
|
||||
await page.getByText('hello').click();
|
||||
await waitForEditorLoad(page);
|
||||
expect(await page.locator('v-line').nth(0).textContent()).toBe('hello');
|
||||
const localStorageData = await page.evaluate(() =>
|
||||
window.readAffineLocalStorage()
|
||||
);
|
||||
const { idbData, binaries } = await page.evaluate(() =>
|
||||
window.readAffineDatabase()
|
||||
);
|
||||
|
||||
const snapshotStorage = new SnapshotStorage('0.7.0-canary.18');
|
||||
await snapshotStorage.write({
|
||||
idbData,
|
||||
localStorageData,
|
||||
binaries,
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
"description": "AFFiNE 0.7.0-canary.18 static output",
|
||||
"scripts": {
|
||||
"unzip": "wget -O static.zip https://github.com/toeverything/AFFiNE/releases/download/v0.7.0-canary.18/web-static.zip && unzip static.zip -d static",
|
||||
"start": "yarn exec serve -s static -l 8082",
|
||||
"e2e": "yarn playwright test",
|
||||
"test": "vitest --run"
|
||||
"start": "yarn exec serve -s static -l 8081",
|
||||
"e2e": "yarn playwright test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@affine-test/fixtures": "workspace:*",
|
||||
|
||||
@@ -24,15 +24,11 @@ const config: PlaywrightTestConfig = {
|
||||
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,
|
||||
command: 'yarn run start',
|
||||
port: 8081,
|
||||
timeout: 120 * 1000,
|
||||
reuseExistingServer: !process.env.CI,
|
||||
env: {
|
||||
COVERAGE: process.env.COVERAGE || 'false',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
# AFFiNE Legacy 0.8.0-canary.7
|
||||
|
||||
> This package is static output of AFFiNE 0.8.0-canary.7
|
||||
>
|
||||
> **This package is for debug only**.
|
||||
>
|
||||
> DO NOT MODIFY `affine-core.zip`
|
||||
This package is used to record legacy data of 0.8.0-canary.7.
|
||||
Run following commands locally to record data to `tests/fixtures/legacy/0.8.0-canary.7`.
|
||||
|
||||
```sh
|
||||
cd tests/affine-legacy/0.8.0-canary.7
|
||||
yarn run unzip
|
||||
yarn run e2e
|
||||
```
|
||||
|
||||
If you want to debug, running `yarn run e2e --ui` is ok. Or using https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright is more better.
|
||||
|
||||
@@ -1,20 +1,12 @@
|
||||
import { join } from 'node:path';
|
||||
import { patchDataEnhancement } from '@affine-test/kit/e2e-enhance/initializer';
|
||||
import { SnapshotStorage } from '@affine-test/kit/e2e-enhance/snapshot';
|
||||
import { test } from '@playwright/test';
|
||||
|
||||
import { clickEdgelessModeButton } from '@affine-test/kit/utils/editor';
|
||||
import { waitForEditorLoad } from '@affine-test/kit/utils/page-logic';
|
||||
import {
|
||||
check8080Available,
|
||||
setupProxyServer,
|
||||
} from '@affine-test/kit/utils/proxy';
|
||||
import { expect, test } from '@playwright/test';
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await patchDataEnhancement(page);
|
||||
});
|
||||
|
||||
const { switchToNext } = setupProxyServer(
|
||||
test,
|
||||
join(__dirname, '..', 'web-static')
|
||||
);
|
||||
|
||||
test('database migration', async ({ page, context }) => {
|
||||
await check8080Available(context);
|
||||
test('record 0.8.0-canary.7 database legacy data', async ({ page }) => {
|
||||
await page.goto('http://localhost:8081/');
|
||||
await page.waitForSelector('v-line', {
|
||||
timeout: 10000,
|
||||
@@ -32,22 +24,17 @@ test('database migration', async ({ page, context }) => {
|
||||
await page.keyboard.press('a', { delay: 50 });
|
||||
await page.keyboard.press('Enter', { delay: 50 });
|
||||
|
||||
const url = page.url();
|
||||
const localStorageData = await page.evaluate(() =>
|
||||
window.readAffineLocalStorage()
|
||||
);
|
||||
const { idbData, binaries } = await page.evaluate(() =>
|
||||
window.readAffineDatabase()
|
||||
);
|
||||
|
||||
await switchToNext();
|
||||
await page.waitForTimeout(1000);
|
||||
await page.goto(url);
|
||||
//#region fixme(himself65): blocksuite issue, data cannot be loaded to store
|
||||
await page.waitForTimeout(5000);
|
||||
await page.reload();
|
||||
//#endregion
|
||||
await waitForEditorLoad(page);
|
||||
// check page mode is correct
|
||||
expect(await page.locator('v-line').nth(0).textContent()).toBe('hello');
|
||||
expect(await page.locator('affine-database').isVisible()).toBe(true);
|
||||
|
||||
// check edgeless mode is correct
|
||||
await clickEdgelessModeButton(page);
|
||||
await page.waitForTimeout(200);
|
||||
expect(await page.locator('affine-database').isVisible()).toBe(true);
|
||||
const snapshotStorage = new SnapshotStorage('0.8.0-canary.7');
|
||||
await snapshotStorage.write({
|
||||
idbData,
|
||||
localStorageData,
|
||||
binaries,
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"description": "AFFiNE 0.8.0-canary.7 static output",
|
||||
"scripts": {
|
||||
"unzip": "wget -O static.zip https://github.com/toeverything/AFFiNE/releases/download/v0.8.0-canary.7/web-static.zip && unzip static.zip",
|
||||
"start": "yarn exec serve -s web-static -l 8082",
|
||||
"start": "yarn exec serve -s web-static -l 8081",
|
||||
"e2e": "yarn playwright test"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -24,15 +24,11 @@ const config: PlaywrightTestConfig = {
|
||||
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,
|
||||
command: 'yarn run start',
|
||||
port: 8081,
|
||||
timeout: 120 * 1000,
|
||||
reuseExistingServer: !process.env.CI,
|
||||
env: {
|
||||
COVERAGE: process.env.COVERAGE || 'false',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
# AFFiNE Legacy 0.8.3
|
||||
# AFFiNE Legacy 0.8.4
|
||||
|
||||
> This package is static output of AFFiNE 0.8.3
|
||||
>
|
||||
> **This package is for debug only**.
|
||||
>
|
||||
> DO NOT MODIFY `affine-core.zip`
|
||||
This package is used to record legacy data of 0.8.4.
|
||||
Run following commands locally to record data to `tests/fixtures/legacy/0.8.4`.
|
||||
|
||||
```sh
|
||||
cd tests/affine-legacy/0.8.4
|
||||
yarn run unzip
|
||||
yarn run e2e
|
||||
```
|
||||
|
||||
If you want to debug, running `yarn run e2e --ui` is ok. Or using https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright is more better.
|
||||
|
||||
@@ -1,23 +1,13 @@
|
||||
import { join } from 'node:path';
|
||||
import { patchDataEnhancement } from '@affine-test/kit/e2e-enhance/initializer';
|
||||
import { SnapshotStorage } from '@affine-test/kit/e2e-enhance/snapshot';
|
||||
import { getBlockSuiteEditorTitle } from '@affine-test/kit/utils/page-logic';
|
||||
import { test } from '@playwright/test';
|
||||
|
||||
import { clickEdgelessModeButton } from '@affine-test/kit/utils/editor';
|
||||
import {
|
||||
getBlockSuiteEditorTitle,
|
||||
waitForEditorLoad,
|
||||
} from '@affine-test/kit/utils/page-logic';
|
||||
import {
|
||||
check8080Available,
|
||||
setupProxyServer,
|
||||
} from '@affine-test/kit/utils/proxy';
|
||||
import { expect, test } from '@playwright/test';
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await patchDataEnhancement(page);
|
||||
});
|
||||
|
||||
const { switchToNext } = setupProxyServer(
|
||||
test,
|
||||
join(__dirname, '..', 'web-static')
|
||||
);
|
||||
|
||||
test('surface migration', async ({ page, context }) => {
|
||||
await check8080Available(context);
|
||||
test('record 0.8.4 surface legacy data', async ({ page }) => {
|
||||
await page.goto('http://localhost:8081/');
|
||||
await page.waitForSelector('v-line', {
|
||||
timeout: 10000,
|
||||
@@ -47,19 +37,18 @@ test('surface migration', async ({ page, context }) => {
|
||||
steps: 10,
|
||||
});
|
||||
await page.mouse.up();
|
||||
const url = page.url();
|
||||
|
||||
await switchToNext();
|
||||
await page.waitForTimeout(1000);
|
||||
await page.goto(url);
|
||||
//#region fixme(himself65): blocksuite issue, data cannot be loaded to store
|
||||
await page.waitForTimeout(5000);
|
||||
await page.reload();
|
||||
//#endregion
|
||||
await waitForEditorLoad(page);
|
||||
const localStorageData = await page.evaluate(() =>
|
||||
window.readAffineLocalStorage()
|
||||
);
|
||||
const { idbData, binaries } = await page.evaluate(() =>
|
||||
window.readAffineDatabase()
|
||||
);
|
||||
|
||||
// check edgeless mode is correct
|
||||
await clickEdgelessModeButton(page);
|
||||
await expect(page.locator('edgeless-toolbar')).toBeVisible();
|
||||
await expect(page.locator('affine-edgeless-page')).toBeVisible();
|
||||
const snapshotStorage = new SnapshotStorage('0.8.4');
|
||||
await snapshotStorage.write({
|
||||
idbData,
|
||||
localStorageData,
|
||||
binaries,
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"description": "AFFiNE 0.8.4 static output",
|
||||
"scripts": {
|
||||
"unzip": "wget -O static.zip https://github.com/toeverything/AFFiNE/releases/download/v0.8.4/web-static.zip && unzip static.zip",
|
||||
"start": "yarn exec serve -s web-static -l 8082",
|
||||
"start": "yarn exec serve -s web-static -l 8081",
|
||||
"e2e": "yarn playwright test"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -24,15 +24,11 @@ const config: PlaywrightTestConfig = {
|
||||
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,
|
||||
command: 'yarn run start',
|
||||
port: 8081,
|
||||
timeout: 120 * 1000,
|
||||
reuseExistingServer: !process.env.CI,
|
||||
env: {
|
||||
COVERAGE: process.env.COVERAGE || 'false',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
static
|
||||
fixtures/*.ydoc
|
||||
test-results
|
||||
*.zip
|
||||
web-static
|
||||
@@ -0,0 +1,9 @@
|
||||
# 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
|
||||
```
|
||||
@@ -0,0 +1,122 @@
|
||||
import { patchDataEnhancement } from '@affine-test/kit/e2e-enhance/initializer';
|
||||
import { SnapshotStorage } from '@affine-test/kit/e2e-enhance/snapshot';
|
||||
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, test } 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 page.getByText('hello').click();
|
||||
|
||||
//#region fixme(himself65): blocksuite issue, data cannot be loaded to store
|
||||
const url = page.url();
|
||||
await page.waitForTimeout(5000);
|
||||
await page.goto(url);
|
||||
//#endregion
|
||||
|
||||
await waitForEditorLoad(page);
|
||||
expect(await page.locator('v-line').nth(0).textContent()).toBe('hello');
|
||||
|
||||
const changedLocalStorageData = await page.evaluate(() =>
|
||||
window.readAffineLocalStorage()
|
||||
);
|
||||
const workspaces = JSON.parse(
|
||||
changedLocalStorageData['jotai-workspaces']
|
||||
) as any[];
|
||||
for (const workspace of workspaces) {
|
||||
expect(workspace.version).toBe(4);
|
||||
}
|
||||
});
|
||||
|
||||
test('v2 to v4, database migration', async ({ page }) => {
|
||||
const { localStorageData } = await open404PageToInitData(
|
||||
page,
|
||||
'0.8.0-canary.7'
|
||||
);
|
||||
|
||||
//#region fixme(himself65): blocksuite issue, data cannot be loaded to store
|
||||
const allPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/all`;
|
||||
await page.goto(allPagePath);
|
||||
await page.waitForTimeout(5000);
|
||||
//#endregion
|
||||
|
||||
const detailPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/${localStorageData.last_page_id}`;
|
||||
await page.goto(detailPagePath);
|
||||
await waitForEditorLoad(page);
|
||||
|
||||
// check page mode is correct
|
||||
expect(await page.locator('v-line').nth(0).textContent()).toBe('hello');
|
||||
expect(await page.locator('affine-database').isVisible()).toBe(true);
|
||||
|
||||
// check edgeless mode is correct
|
||||
await clickEdgelessModeButton(page);
|
||||
await page.waitForTimeout(200);
|
||||
expect(await page.locator('affine-database').isVisible()).toBe(true);
|
||||
|
||||
const changedLocalStorageData = await page.evaluate(() =>
|
||||
window.readAffineLocalStorage()
|
||||
);
|
||||
const workspaces = JSON.parse(
|
||||
changedLocalStorageData['jotai-workspaces']
|
||||
) as any[];
|
||||
for (const workspace of workspaces) {
|
||||
expect(workspace.version).toBe(4);
|
||||
}
|
||||
});
|
||||
|
||||
test('v3 to v4, surface migration', async ({ page }) => {
|
||||
const { localStorageData } = await open404PageToInitData(page, '0.8.4');
|
||||
|
||||
//#region fixme(himself65): blocksuite issue, data cannot be loaded to store
|
||||
const allPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/all`;
|
||||
await page.goto(allPagePath);
|
||||
await page.waitForTimeout(5000);
|
||||
//#endregion
|
||||
|
||||
const detailPagePath = `${coreUrl}/workspace/${localStorageData.last_workspace_id}/${localStorageData.last_page_id}`;
|
||||
await page.goto(detailPagePath);
|
||||
await waitForEditorLoad(page);
|
||||
|
||||
// check edgeless mode is correct
|
||||
await clickEdgelessModeButton(page);
|
||||
await expect(page.locator('edgeless-toolbar')).toBeVisible();
|
||||
await expect(page.locator('affine-edgeless-page')).toBeVisible();
|
||||
|
||||
const changedLocalStorageData = await page.evaluate(() =>
|
||||
window.readAffineLocalStorage()
|
||||
);
|
||||
const workspaces = JSON.parse(
|
||||
changedLocalStorageData['jotai-workspaces']
|
||||
) as any[];
|
||||
for (const workspace of workspaces) {
|
||||
expect(workspace.version).toBe(4);
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "@affine-test/affine-migration",
|
||||
"description": "AFFiNE migration e2e tests",
|
||||
"scripts": {
|
||||
"e2e": "yarn playwright test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@affine-test/fixtures": "workspace:*",
|
||||
"@affine-test/kit": "workspace:*",
|
||||
"@blocksuite/block-std": "0.0.0-20230926212737-6d4b1569-nightly",
|
||||
"@blocksuite/blocks": "0.0.0-20230926212737-6d4b1569-nightly",
|
||||
"@blocksuite/global": "0.0.0-20230926212737-6d4b1569-nightly",
|
||||
"@blocksuite/store": "0.0.0-20230926212737-6d4b1569-nightly",
|
||||
"@playwright/test": "^1.38.1"
|
||||
},
|
||||
"version": "0.9.0-canary.13"
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
import type {
|
||||
PlaywrightTestConfig,
|
||||
PlaywrightWorkerOptions,
|
||||
} from '@playwright/test';
|
||||
|
||||
const config: PlaywrightTestConfig = {
|
||||
testDir: './e2e',
|
||||
fullyParallel: !process.env.CI,
|
||||
timeout: process.env.CI ? 50_000 : 30_000,
|
||||
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;
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"esModuleInterop": true,
|
||||
"resolveJsonModule": true,
|
||||
"outDir": "lib"
|
||||
},
|
||||
"include": ["e2e"],
|
||||
"references": [
|
||||
{
|
||||
"path": "../fixtures"
|
||||
},
|
||||
{
|
||||
"path": "../kit"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Binary file not shown.
+470
@@ -0,0 +1,470 @@
|
||||
[
|
||||
{
|
||||
"name": "IBBNBMBvfp_blob",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "blob",
|
||||
"keyPath": null,
|
||||
"values": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "affine-local",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "milestone",
|
||||
"keyPath": "id",
|
||||
"values": []
|
||||
},
|
||||
{
|
||||
"name": "workspace",
|
||||
"keyPath": "id",
|
||||
"values": [
|
||||
{
|
||||
"id": "IBBNBMBvfp",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697038970936,
|
||||
"update": "__BINARY__1"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970941,
|
||||
"update": "__BINARY__2"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970943,
|
||||
"update": "__BINARY__3"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970946,
|
||||
"update": "__BINARY__4"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970946,
|
||||
"update": "__BINARY__5"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970947,
|
||||
"update": "__BINARY__6"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970948,
|
||||
"update": "__BINARY__7"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970949,
|
||||
"update": "__BINARY__8"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970949,
|
||||
"update": "__BINARY__9"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970964,
|
||||
"update": "__BINARY__10"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970968,
|
||||
"update": "__BINARY__11"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970975,
|
||||
"update": "__BINARY__12"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970978,
|
||||
"update": "__BINARY__13"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970981,
|
||||
"update": "__BINARY__14"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970984,
|
||||
"update": "__BINARY__15"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970987,
|
||||
"update": "__BINARY__16"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970990,
|
||||
"update": "__BINARY__17"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970993,
|
||||
"update": "__BINARY__18"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038970996,
|
||||
"update": "__BINARY__19"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971001,
|
||||
"update": "__BINARY__20"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971006,
|
||||
"update": "__BINARY__21"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971009,
|
||||
"update": "__BINARY__22"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971012,
|
||||
"update": "__BINARY__23"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971015,
|
||||
"update": "__BINARY__24"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971017,
|
||||
"update": "__BINARY__25"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971020,
|
||||
"update": "__BINARY__26"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971022,
|
||||
"update": "__BINARY__27"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971025,
|
||||
"update": "__BINARY__28"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971028,
|
||||
"update": "__BINARY__29"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971031,
|
||||
"update": "__BINARY__30"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971034,
|
||||
"update": "__BINARY__31"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971037,
|
||||
"update": "__BINARY__32"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971040,
|
||||
"update": "__BINARY__33"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971042,
|
||||
"update": "__BINARY__34"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971045,
|
||||
"update": "__BINARY__35"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971047,
|
||||
"update": "__BINARY__36"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971050,
|
||||
"update": "__BINARY__37"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971052,
|
||||
"update": "__BINARY__38"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971055,
|
||||
"update": "__BINARY__39"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971058,
|
||||
"update": "__BINARY__40"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971061,
|
||||
"update": "__BINARY__41"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971063,
|
||||
"update": "__BINARY__42"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971066,
|
||||
"update": "__BINARY__43"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971068,
|
||||
"update": "__BINARY__44"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971071,
|
||||
"update": "__BINARY__45"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971074,
|
||||
"update": "__BINARY__46"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971076,
|
||||
"update": "__BINARY__47"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971079,
|
||||
"update": "__BINARY__48"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971081,
|
||||
"update": "__BINARY__49"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971083,
|
||||
"update": "__BINARY__50"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971086,
|
||||
"update": "__BINARY__51"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971089,
|
||||
"update": "__BINARY__52"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971091,
|
||||
"update": "__BINARY__53"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971095,
|
||||
"update": "__BINARY__54"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971098,
|
||||
"update": "__BINARY__55"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971100,
|
||||
"update": "__BINARY__56"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971103,
|
||||
"update": "__BINARY__57"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971106,
|
||||
"update": "__BINARY__58"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971109,
|
||||
"update": "__BINARY__59"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971112,
|
||||
"update": "__BINARY__60"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971114,
|
||||
"update": "__BINARY__61"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971117,
|
||||
"update": "__BINARY__62"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971119,
|
||||
"update": "__BINARY__63"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971123,
|
||||
"update": "__BINARY__64"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971125,
|
||||
"update": "__BINARY__65"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971128,
|
||||
"update": "__BINARY__66"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971131,
|
||||
"update": "__BINARY__67"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971134,
|
||||
"update": "__BINARY__68"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971136,
|
||||
"update": "__BINARY__69"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971139,
|
||||
"update": "__BINARY__70"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971142,
|
||||
"update": "__BINARY__71"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971146,
|
||||
"update": "__BINARY__72"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971149,
|
||||
"update": "__BINARY__73"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971153,
|
||||
"update": "__BINARY__74"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971155,
|
||||
"update": "__BINARY__75"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971158,
|
||||
"update": "__BINARY__76"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038971798,
|
||||
"update": "__BINARY__77"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038972979,
|
||||
"update": "__BINARY__78"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973588,
|
||||
"update": "__BINARY__79"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973913,
|
||||
"update": "__BINARY__80"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973916,
|
||||
"update": "__BINARY__81"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973920,
|
||||
"update": "__BINARY__82"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973924,
|
||||
"update": "__BINARY__83"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973928,
|
||||
"update": "__BINARY__84"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973931,
|
||||
"update": "__BINARY__85"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973935,
|
||||
"update": "__BINARY__86"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973938,
|
||||
"update": "__BINARY__87"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973942,
|
||||
"update": "__BINARY__88"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973945,
|
||||
"update": "__BINARY__89"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973948,
|
||||
"update": "__BINARY__90"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038973951,
|
||||
"update": "__BINARY__91"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974427,
|
||||
"update": "__BINARY__92"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974450,
|
||||
"update": "__BINARY__93"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974453,
|
||||
"update": "__BINARY__94"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974459,
|
||||
"update": "__BINARY__95"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974464,
|
||||
"update": "__BINARY__96"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974467,
|
||||
"update": "__BINARY__97"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974475,
|
||||
"update": "__BINARY__98"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974497,
|
||||
"update": "__BINARY__99"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974501,
|
||||
"update": "__BINARY__100"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974504,
|
||||
"update": "__BINARY__101"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974511,
|
||||
"update": "__BINARY__102"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974515,
|
||||
"update": "__BINARY__103"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974518,
|
||||
"update": "__BINARY__104"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974523,
|
||||
"update": "__BINARY__105"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697038974527,
|
||||
"update": "__BINARY__106"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "page-view",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "view",
|
||||
"keyPath": "id",
|
||||
"values": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,532 @@
|
||||
[
|
||||
{
|
||||
"name": "__BINARY__1",
|
||||
"start": 0,
|
||||
"end": 189
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__2",
|
||||
"start": 189,
|
||||
"end": 251
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__3",
|
||||
"start": 251,
|
||||
"end": 564
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__4",
|
||||
"start": 564,
|
||||
"end": 626
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__5",
|
||||
"start": 626,
|
||||
"end": 923
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__6",
|
||||
"start": 923,
|
||||
"end": 985
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__7",
|
||||
"start": 985,
|
||||
"end": 1280
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__8",
|
||||
"start": 1280,
|
||||
"end": 1342
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__9",
|
||||
"start": 1342,
|
||||
"end": 126036
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__10",
|
||||
"start": 126036,
|
||||
"end": 126099
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__11",
|
||||
"start": 126099,
|
||||
"end": 126402
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__12",
|
||||
"start": 126402,
|
||||
"end": 126467
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__13",
|
||||
"start": 126467,
|
||||
"end": 126769
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__14",
|
||||
"start": 126769,
|
||||
"end": 126834
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__15",
|
||||
"start": 126834,
|
||||
"end": 127137
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__16",
|
||||
"start": 127137,
|
||||
"end": 127202
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__17",
|
||||
"start": 127202,
|
||||
"end": 127504
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__18",
|
||||
"start": 127504,
|
||||
"end": 127569
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__19",
|
||||
"start": 127569,
|
||||
"end": 127873
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__20",
|
||||
"start": 127873,
|
||||
"end": 127938
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__21",
|
||||
"start": 127938,
|
||||
"end": 128261
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__22",
|
||||
"start": 128261,
|
||||
"end": 128326
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__23",
|
||||
"start": 128326,
|
||||
"end": 128647
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__24",
|
||||
"start": 128647,
|
||||
"end": 128712
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__25",
|
||||
"start": 128712,
|
||||
"end": 129034
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__26",
|
||||
"start": 129034,
|
||||
"end": 129099
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__27",
|
||||
"start": 129099,
|
||||
"end": 129370
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__28",
|
||||
"start": 129370,
|
||||
"end": 129435
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__29",
|
||||
"start": 129435,
|
||||
"end": 129895
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__30",
|
||||
"start": 129895,
|
||||
"end": 129960
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__31",
|
||||
"start": 129960,
|
||||
"end": 130307
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__32",
|
||||
"start": 130307,
|
||||
"end": 130372
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__33",
|
||||
"start": 130372,
|
||||
"end": 130738
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__34",
|
||||
"start": 130738,
|
||||
"end": 130803
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__35",
|
||||
"start": 130803,
|
||||
"end": 131698
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__36",
|
||||
"start": 131698,
|
||||
"end": 131763
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__37",
|
||||
"start": 131763,
|
||||
"end": 131916
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__38",
|
||||
"start": 131916,
|
||||
"end": 131981
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__39",
|
||||
"start": 131981,
|
||||
"end": 132435
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__40",
|
||||
"start": 132435,
|
||||
"end": 132500
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__41",
|
||||
"start": 132500,
|
||||
"end": 132730
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__42",
|
||||
"start": 132730,
|
||||
"end": 132795
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__43",
|
||||
"start": 132795,
|
||||
"end": 133172
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__44",
|
||||
"start": 133172,
|
||||
"end": 133237
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__45",
|
||||
"start": 133237,
|
||||
"end": 133466
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__46",
|
||||
"start": 133466,
|
||||
"end": 133531
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__47",
|
||||
"start": 133531,
|
||||
"end": 133935
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__48",
|
||||
"start": 133935,
|
||||
"end": 134000
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__49",
|
||||
"start": 134000,
|
||||
"end": 134228
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__50",
|
||||
"start": 134228,
|
||||
"end": 134293
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__51",
|
||||
"start": 134293,
|
||||
"end": 134626
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__52",
|
||||
"start": 134626,
|
||||
"end": 134691
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__53",
|
||||
"start": 134691,
|
||||
"end": 134921
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__54",
|
||||
"start": 134921,
|
||||
"end": 134986
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__55",
|
||||
"start": 134986,
|
||||
"end": 135372
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__56",
|
||||
"start": 135372,
|
||||
"end": 135437
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__57",
|
||||
"start": 135437,
|
||||
"end": 135679
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__58",
|
||||
"start": 135679,
|
||||
"end": 135744
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__59",
|
||||
"start": 135744,
|
||||
"end": 136129
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__60",
|
||||
"start": 136129,
|
||||
"end": 136194
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__61",
|
||||
"start": 136194,
|
||||
"end": 136417
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__62",
|
||||
"start": 136417,
|
||||
"end": 136482
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__63",
|
||||
"start": 136482,
|
||||
"end": 136758
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__64",
|
||||
"start": 136758,
|
||||
"end": 136823
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__65",
|
||||
"start": 136823,
|
||||
"end": 137319
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__66",
|
||||
"start": 137319,
|
||||
"end": 137384
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__67",
|
||||
"start": 137384,
|
||||
"end": 137538
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__68",
|
||||
"start": 137538,
|
||||
"end": 137603
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__69",
|
||||
"start": 137603,
|
||||
"end": 139400
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__70",
|
||||
"start": 139400,
|
||||
"end": 139465
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__71",
|
||||
"start": 139465,
|
||||
"end": 139692
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__72",
|
||||
"start": 139692,
|
||||
"end": 139757
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__73",
|
||||
"start": 139757,
|
||||
"end": 139980
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__74",
|
||||
"start": 139980,
|
||||
"end": 140045
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__75",
|
||||
"start": 140045,
|
||||
"end": 140266
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__76",
|
||||
"start": 140266,
|
||||
"end": 140331
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__77",
|
||||
"start": 140331,
|
||||
"end": 278777
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__78",
|
||||
"start": 278777,
|
||||
"end": 278804
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__79",
|
||||
"start": 278804,
|
||||
"end": 417260
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__80",
|
||||
"start": 417260,
|
||||
"end": 417300
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__81",
|
||||
"start": 417300,
|
||||
"end": 417388
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__82",
|
||||
"start": 417388,
|
||||
"end": 417475
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__83",
|
||||
"start": 417475,
|
||||
"end": 417565
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__84",
|
||||
"start": 417565,
|
||||
"end": 417655
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__85",
|
||||
"start": 417655,
|
||||
"end": 417743
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__86",
|
||||
"start": 417743,
|
||||
"end": 417832
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__87",
|
||||
"start": 417832,
|
||||
"end": 417922
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__88",
|
||||
"start": 417922,
|
||||
"end": 418014
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__89",
|
||||
"start": 418014,
|
||||
"end": 418103
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__90",
|
||||
"start": 418103,
|
||||
"end": 418193
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__91",
|
||||
"start": 418193,
|
||||
"end": 418230
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__92",
|
||||
"start": 418230,
|
||||
"end": 418344
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__93",
|
||||
"start": 418344,
|
||||
"end": 418493
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__94",
|
||||
"start": 418493,
|
||||
"end": 418523
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__95",
|
||||
"start": 418523,
|
||||
"end": 418676
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__96",
|
||||
"start": 418676,
|
||||
"end": 418706
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__97",
|
||||
"start": 418706,
|
||||
"end": 418979
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__98",
|
||||
"start": 418979,
|
||||
"end": 419009
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__99",
|
||||
"start": 419009,
|
||||
"end": 419210
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__100",
|
||||
"start": 419210,
|
||||
"end": 419240
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__101",
|
||||
"start": 419240,
|
||||
"end": 419281
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__102",
|
||||
"start": 419281,
|
||||
"end": 419323
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__103",
|
||||
"start": 419323,
|
||||
"end": 419360
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__104",
|
||||
"start": 419360,
|
||||
"end": 419397
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__105",
|
||||
"start": 419397,
|
||||
"end": 419438
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__106",
|
||||
"start": 419438,
|
||||
"end": 419473
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"jotai-workspaces": "[{\"id\":\"IBBNBMBvfp\",\"flavour\":\"local\"}]",
|
||||
"last_page_id": "P2JKlb2H46",
|
||||
"last_workspace_id": "IBBNBMBvfp",
|
||||
"affine-local-workspace": "[\"IBBNBMBvfp\"]",
|
||||
"is-first-open": "false"
|
||||
}
|
||||
BIN
Binary file not shown.
+255
@@ -0,0 +1,255 @@
|
||||
[
|
||||
{
|
||||
"name": "52FVff-1rf_blob",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "blob",
|
||||
"keyPath": null,
|
||||
"values": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "52FVff-1rf_blob_mime",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "blob_mime",
|
||||
"keyPath": null,
|
||||
"values": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "affine-local",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "milestone",
|
||||
"keyPath": "id",
|
||||
"values": []
|
||||
},
|
||||
{
|
||||
"name": "workspace",
|
||||
"keyPath": "id",
|
||||
"values": [
|
||||
{
|
||||
"id": "52FVff-1rf",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039052176,
|
||||
"update": "__BINARY__1"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052473,
|
||||
"update": "__BINARY__2"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052508,
|
||||
"update": "__BINARY__3"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052513,
|
||||
"update": "__BINARY__4"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052647,
|
||||
"update": "__BINARY__5"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052649,
|
||||
"update": "__BINARY__6"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052651,
|
||||
"update": "__BINARY__7"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052652,
|
||||
"update": "__BINARY__8"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052653,
|
||||
"update": "__BINARY__9"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052654,
|
||||
"update": "__BINARY__10"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052655,
|
||||
"update": "__BINARY__11"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052657,
|
||||
"update": "__BINARY__12"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052658,
|
||||
"update": "__BINARY__13"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052659,
|
||||
"update": "__BINARY__14"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052661,
|
||||
"update": "__BINARY__15"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052942,
|
||||
"update": "__BINARY__16"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052943,
|
||||
"update": "__BINARY__17"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052945,
|
||||
"update": "__BINARY__18"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052947,
|
||||
"update": "__BINARY__19"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "space:52FVff-1rf-hello-world",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039052209,
|
||||
"update": "__BINARY__20"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "space:wtCoS4jUeY",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039052615,
|
||||
"update": "__BINARY__21"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052648,
|
||||
"update": "__BINARY__22"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052650,
|
||||
"update": "__BINARY__23"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052652,
|
||||
"update": "__BINARY__24"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052653,
|
||||
"update": "__BINARY__25"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052655,
|
||||
"update": "__BINARY__26"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052656,
|
||||
"update": "__BINARY__27"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052657,
|
||||
"update": "__BINARY__28"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052659,
|
||||
"update": "__BINARY__29"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052660,
|
||||
"update": "__BINARY__30"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052661,
|
||||
"update": "__BINARY__31"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052730,
|
||||
"update": "__BINARY__32"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052791,
|
||||
"update": "__BINARY__33"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052802,
|
||||
"update": "__BINARY__34"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052803,
|
||||
"update": "__BINARY__35"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052821,
|
||||
"update": "__BINARY__36"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052822,
|
||||
"update": "__BINARY__37"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052823,
|
||||
"update": "__BINARY__38"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052938,
|
||||
"update": "__BINARY__39"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052939,
|
||||
"update": "__BINARY__40"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052940,
|
||||
"update": "__BINARY__41"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052941,
|
||||
"update": "__BINARY__42"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052942,
|
||||
"update": "__BINARY__43"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052944,
|
||||
"update": "__BINARY__44"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052946,
|
||||
"update": "__BINARY__45"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052948,
|
||||
"update": "__BINARY__46"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039052949,
|
||||
"update": "__BINARY__47"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "page-view",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "view",
|
||||
"keyPath": "id",
|
||||
"values": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
+237
@@ -0,0 +1,237 @@
|
||||
[
|
||||
{
|
||||
"name": "__BINARY__1",
|
||||
"start": 0,
|
||||
"end": 774
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__2",
|
||||
"start": 774,
|
||||
"end": 920
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__3",
|
||||
"start": 920,
|
||||
"end": 974
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__4",
|
||||
"start": 974,
|
||||
"end": 1013
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__5",
|
||||
"start": 1013,
|
||||
"end": 1040
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__6",
|
||||
"start": 1040,
|
||||
"end": 1067
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__7",
|
||||
"start": 1067,
|
||||
"end": 1094
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__8",
|
||||
"start": 1094,
|
||||
"end": 1121
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__9",
|
||||
"start": 1121,
|
||||
"end": 1155
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__10",
|
||||
"start": 1155,
|
||||
"end": 1183
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__11",
|
||||
"start": 1183,
|
||||
"end": 1212
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__12",
|
||||
"start": 1212,
|
||||
"end": 1242
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__13",
|
||||
"start": 1242,
|
||||
"end": 1273
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__14",
|
||||
"start": 1273,
|
||||
"end": 1305
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__15",
|
||||
"start": 1305,
|
||||
"end": 1337
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__16",
|
||||
"start": 1337,
|
||||
"end": 1369
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__17",
|
||||
"start": 1369,
|
||||
"end": 1401
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__18",
|
||||
"start": 1401,
|
||||
"end": 1433
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__19",
|
||||
"start": 1433,
|
||||
"end": 1465
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__20",
|
||||
"start": 1465,
|
||||
"end": 141929
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__21",
|
||||
"start": 141929,
|
||||
"end": 142063
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__22",
|
||||
"start": 142063,
|
||||
"end": 142224
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__23",
|
||||
"start": 142224,
|
||||
"end": 142500
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__24",
|
||||
"start": 142500,
|
||||
"end": 142684
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__25",
|
||||
"start": 142684,
|
||||
"end": 143412
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__26",
|
||||
"start": 143412,
|
||||
"end": 143431
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__27",
|
||||
"start": 143431,
|
||||
"end": 143449
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__28",
|
||||
"start": 143449,
|
||||
"end": 143467
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__29",
|
||||
"start": 143467,
|
||||
"end": 143485
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__30",
|
||||
"start": 143485,
|
||||
"end": 143503
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__31",
|
||||
"start": 143503,
|
||||
"end": 143686
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__32",
|
||||
"start": 143686,
|
||||
"end": 143705
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__33",
|
||||
"start": 143705,
|
||||
"end": 143723
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__34",
|
||||
"start": 143723,
|
||||
"end": 143741
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__35",
|
||||
"start": 143741,
|
||||
"end": 143759
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__36",
|
||||
"start": 143759,
|
||||
"end": 143777
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__37",
|
||||
"start": 143777,
|
||||
"end": 143795
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__38",
|
||||
"start": 143795,
|
||||
"end": 143819
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__39",
|
||||
"start": 143819,
|
||||
"end": 143831
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__40",
|
||||
"start": 143831,
|
||||
"end": 144329
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__41",
|
||||
"start": 144329,
|
||||
"end": 144593
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__42",
|
||||
"start": 144593,
|
||||
"end": 144768
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__43",
|
||||
"start": 144768,
|
||||
"end": 144952
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__44",
|
||||
"start": 144952,
|
||||
"end": 145135
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__45",
|
||||
"start": 145135,
|
||||
"end": 145318
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__46",
|
||||
"start": 145318,
|
||||
"end": 145437
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__47",
|
||||
"start": 145437,
|
||||
"end": 145665
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"jotai-workspaces": "[{\"id\":\"52FVff-1rf\",\"flavour\":\"local\",\"version\":2}]",
|
||||
"last_page_id": "wtCoS4jUeY",
|
||||
"last_workspace_id": "52FVff-1rf",
|
||||
"affine-local-workspace": "[\"52FVff-1rf\"]",
|
||||
"is-first-open": "false"
|
||||
}
|
||||
Vendored
BIN
Binary file not shown.
Vendored
+350
@@ -0,0 +1,350 @@
|
||||
[
|
||||
{
|
||||
"name": "affine-local",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "milestone",
|
||||
"keyPath": "id",
|
||||
"values": []
|
||||
},
|
||||
{
|
||||
"name": "workspace",
|
||||
"keyPath": "id",
|
||||
"values": [
|
||||
{
|
||||
"id": "hsraMjtX5k",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130426,
|
||||
"update": "__BINARY__1"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130428,
|
||||
"update": "__BINARY__2"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130654,
|
||||
"update": "__BINARY__3"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130699,
|
||||
"update": "__BINARY__4"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130701,
|
||||
"update": "__BINARY__5"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130822,
|
||||
"update": "__BINARY__6"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130824,
|
||||
"update": "__BINARY__7"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130826,
|
||||
"update": "__BINARY__8"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130828,
|
||||
"update": "__BINARY__9"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130855,
|
||||
"update": "__BINARY__10"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130857,
|
||||
"update": "__BINARY__11"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130858,
|
||||
"update": "__BINARY__12"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130860,
|
||||
"update": "__BINARY__13"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130861,
|
||||
"update": "__BINARY__14"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130862,
|
||||
"update": "__BINARY__15"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130866,
|
||||
"update": "__BINARY__16"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039131400,
|
||||
"update": "__BINARY__17"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:0N0WzwmtK_",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130472,
|
||||
"update": "__BINARY__18"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:3R9X-gMh3m",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130468,
|
||||
"update": "__BINARY__19"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:6gexHy-jto",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130473,
|
||||
"update": "__BINARY__20"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:A4wBRdQZN0",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130485,
|
||||
"update": "__BINARY__21"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:F1SX6cgNxy",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130469,
|
||||
"update": "__BINARY__22"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:PqZ7MLlL_9",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130478,
|
||||
"update": "__BINARY__23"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:Ra-VT4A8dt",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130821,
|
||||
"update": "__BINARY__24"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130823,
|
||||
"update": "__BINARY__25"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130825,
|
||||
"update": "__BINARY__26"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130827,
|
||||
"update": "__BINARY__27"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130856,
|
||||
"update": "__BINARY__28"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130857,
|
||||
"update": "__BINARY__29"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130859,
|
||||
"update": "__BINARY__30"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130860,
|
||||
"update": "__BINARY__31"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130862,
|
||||
"update": "__BINARY__32"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130863,
|
||||
"update": "__BINARY__33"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130864,
|
||||
"update": "__BINARY__34"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130913,
|
||||
"update": "__BINARY__35"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039130972,
|
||||
"update": "__BINARY__36"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039131030,
|
||||
"update": "__BINARY__37"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039131085,
|
||||
"update": "__BINARY__38"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039131140,
|
||||
"update": "__BINARY__39"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039131404,
|
||||
"update": "__BINARY__40"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132167,
|
||||
"update": "__BINARY__41"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132167,
|
||||
"update": "__BINARY__42"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132189,
|
||||
"update": "__BINARY__43"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132203,
|
||||
"update": "__BINARY__44"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132219,
|
||||
"update": "__BINARY__45"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132236,
|
||||
"update": "__BINARY__46"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132251,
|
||||
"update": "__BINARY__47"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132271,
|
||||
"update": "__BINARY__48"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132287,
|
||||
"update": "__BINARY__49"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132302,
|
||||
"update": "__BINARY__50"
|
||||
},
|
||||
{
|
||||
"timestamp": 1697039132321,
|
||||
"update": "__BINARY__51"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:bj_cuI1tN7",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130476,
|
||||
"update": "__BINARY__52"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:fFoDX2J1Z5",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130477,
|
||||
"update": "__BINARY__53"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:gc5FeppNDv-hello-world",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130467,
|
||||
"update": "__BINARY__54"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:kBB4lzhm7C",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130486,
|
||||
"update": "__BINARY__55"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:nQd2Bdvoqz",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130479,
|
||||
"update": "__BINARY__56"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hsraMjtX5k:space:z_v6LOqNpp",
|
||||
"updates": [
|
||||
{
|
||||
"timestamp": 1697039130469,
|
||||
"update": "__BINARY__57"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hsraMjtX5k_blob",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "blob",
|
||||
"keyPath": null,
|
||||
"values": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hsraMjtX5k_blob_mime",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "blob_mime",
|
||||
"keyPath": null,
|
||||
"values": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "page-view",
|
||||
"version": 1,
|
||||
"stores": [
|
||||
{
|
||||
"name": "view",
|
||||
"keyPath": "id",
|
||||
"values": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
+287
@@ -0,0 +1,287 @@
|
||||
[
|
||||
{
|
||||
"name": "__BINARY__1",
|
||||
"start": 0,
|
||||
"end": 35
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__2",
|
||||
"start": 35,
|
||||
"end": 4639
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__3",
|
||||
"start": 4639,
|
||||
"end": 4802
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__4",
|
||||
"start": 4802,
|
||||
"end": 4868
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__5",
|
||||
"start": 4868,
|
||||
"end": 4909
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__6",
|
||||
"start": 4909,
|
||||
"end": 4939
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__7",
|
||||
"start": 4939,
|
||||
"end": 4969
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__8",
|
||||
"start": 4969,
|
||||
"end": 4999
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__9",
|
||||
"start": 4999,
|
||||
"end": 5029
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__10",
|
||||
"start": 5029,
|
||||
"end": 5066
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__11",
|
||||
"start": 5066,
|
||||
"end": 5097
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__12",
|
||||
"start": 5097,
|
||||
"end": 5129
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__13",
|
||||
"start": 5129,
|
||||
"end": 5162
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__14",
|
||||
"start": 5162,
|
||||
"end": 5196
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__15",
|
||||
"start": 5196,
|
||||
"end": 5231
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__16",
|
||||
"start": 5231,
|
||||
"end": 5266
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__17",
|
||||
"start": 5266,
|
||||
"end": 5303
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__18",
|
||||
"start": 5303,
|
||||
"end": 9423
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__19",
|
||||
"start": 9423,
|
||||
"end": 12533
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__20",
|
||||
"start": 12533,
|
||||
"end": 14760
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__21",
|
||||
"start": 14760,
|
||||
"end": 18476
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__22",
|
||||
"start": 18476,
|
||||
"end": 158902
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__23",
|
||||
"start": 158902,
|
||||
"end": 163325
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__24",
|
||||
"start": 163325,
|
||||
"end": 163459
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__25",
|
||||
"start": 163459,
|
||||
"end": 163620
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__26",
|
||||
"start": 163620,
|
||||
"end": 163895
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__27",
|
||||
"start": 163895,
|
||||
"end": 164079
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__28",
|
||||
"start": 164079,
|
||||
"end": 164806
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__29",
|
||||
"start": 164806,
|
||||
"end": 164825
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__30",
|
||||
"start": 164825,
|
||||
"end": 164843
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__31",
|
||||
"start": 164843,
|
||||
"end": 164861
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__32",
|
||||
"start": 164861,
|
||||
"end": 164879
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__33",
|
||||
"start": 164879,
|
||||
"end": 164897
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__34",
|
||||
"start": 164897,
|
||||
"end": 165080
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__35",
|
||||
"start": 165080,
|
||||
"end": 165099
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__36",
|
||||
"start": 165099,
|
||||
"end": 165117
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__37",
|
||||
"start": 165117,
|
||||
"end": 165135
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__38",
|
||||
"start": 165135,
|
||||
"end": 165153
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__39",
|
||||
"start": 165153,
|
||||
"end": 165171
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__40",
|
||||
"start": 165171,
|
||||
"end": 165211
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__41",
|
||||
"start": 165211,
|
||||
"end": 165469
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__42",
|
||||
"start": 165469,
|
||||
"end": 165596
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__43",
|
||||
"start": 165596,
|
||||
"end": 165732
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__44",
|
||||
"start": 165732,
|
||||
"end": 165882
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__45",
|
||||
"start": 165882,
|
||||
"end": 166044
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__46",
|
||||
"start": 166044,
|
||||
"end": 166216
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__47",
|
||||
"start": 166216,
|
||||
"end": 166404
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__48",
|
||||
"start": 166404,
|
||||
"end": 166605
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__49",
|
||||
"start": 166605,
|
||||
"end": 166819
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__50",
|
||||
"start": 166819,
|
||||
"end": 167046
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__51",
|
||||
"start": 167046,
|
||||
"end": 167286
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__52",
|
||||
"start": 167286,
|
||||
"end": 177177
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__53",
|
||||
"start": 177177,
|
||||
"end": 185089
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__54",
|
||||
"start": 185089,
|
||||
"end": 190349
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__55",
|
||||
"start": 190349,
|
||||
"end": 195939
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__56",
|
||||
"start": 195939,
|
||||
"end": 284834
|
||||
},
|
||||
{
|
||||
"name": "__BINARY__57",
|
||||
"start": 284834,
|
||||
"end": 287903
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"jotai-workspaces": "[{\"id\":\"hsraMjtX5k\",\"flavour\":\"local\",\"version\":3}]",
|
||||
"last_page_id": "Ra-VT4A8dt",
|
||||
"last_workspace_id": "hsraMjtX5k",
|
||||
"affine-local-workspace": "[\"hsraMjtX5k\"]",
|
||||
"is-first-open": "false"
|
||||
}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
# fixtures/legacy
|
||||
|
||||
The legacy data of affine is stored here to do migration testing.
|
||||
Running e2e testing in `tests/affine-legacy` will record data to here.
|
||||
Vendored
+1
-1
@@ -8,6 +8,6 @@
|
||||
"module": "NodeNext",
|
||||
"resolveJsonModule": true
|
||||
},
|
||||
"include": [".", "./*.json"],
|
||||
"include": [".", "./*.json", "./legacy/**/*.json"],
|
||||
"exclude": ["./tsconfig.json"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
import { dirname, join } from 'node:path';
|
||||
|
||||
import type { Page } from '@playwright/test';
|
||||
|
||||
declare global {
|
||||
function readAffineDatabase(): Promise<any>;
|
||||
function writeAffineDatabase(data: any, binaries: any): Promise<void>;
|
||||
function readAffineLocalStorage(): Promise<any>;
|
||||
function writeAffineLocalStorage(data: any): Promise<void>;
|
||||
}
|
||||
|
||||
export async function patchDataEnhancement(page: Page) {
|
||||
const idbPath = join(dirname(require.resolve('idb')), 'umd.js');
|
||||
await page.addInitScript({ path: idbPath });
|
||||
|
||||
const patchPath = join(__dirname, './storage-patch.js');
|
||||
await page.addInitScript({ path: patchPath });
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
import { readFile, writeFile } from 'node:fs/promises';
|
||||
import { dirname, join } from 'node:path';
|
||||
|
||||
import { mkdirp, readJSON } from 'fs-extra';
|
||||
|
||||
interface SnapshotData {
|
||||
idbData: Record<string, any>;
|
||||
localStorageData: Record<string, string>;
|
||||
binaries: Record<string, number[]>;
|
||||
}
|
||||
|
||||
interface BinaryIndexData {
|
||||
name: string;
|
||||
start: number;
|
||||
end: number;
|
||||
}
|
||||
|
||||
export class SnapshotStorage {
|
||||
idbFilePath: string;
|
||||
localStorageFilePath: string;
|
||||
binaryIndexPath: string;
|
||||
binaryFilePath: string;
|
||||
|
||||
constructor(version: string) {
|
||||
// The snapshots data is stored in "@affine-test/fixtures/legacy", just keep all fixtures in one place
|
||||
const legacyReadMeFilePath = require.resolve(
|
||||
'@affine-test/fixtures/legacy/README.md'
|
||||
);
|
||||
const dir = dirname(legacyReadMeFilePath);
|
||||
|
||||
this.idbFilePath = join(dir, version, 'idb.json');
|
||||
this.binaryFilePath = join(dir, version, 'idb.bin');
|
||||
this.binaryIndexPath = join(dir, version, 'idb_index.json');
|
||||
this.localStorageFilePath = join(dir, version, 'local-storage.json');
|
||||
}
|
||||
|
||||
async read(): Promise<SnapshotData> {
|
||||
const {
|
||||
idbFilePath,
|
||||
localStorageFilePath,
|
||||
binaryIndexPath,
|
||||
binaryFilePath,
|
||||
} = this;
|
||||
|
||||
const [idbData, localStorageData, binaryIndexArr, binaryContent] =
|
||||
await Promise.all([
|
||||
readJSON(idbFilePath),
|
||||
readJSON(localStorageFilePath),
|
||||
readJSON(binaryIndexPath) as Promise<BinaryIndexData[]>,
|
||||
readFile(binaryFilePath),
|
||||
]);
|
||||
|
||||
const binaries: Record<string, number[]> = {};
|
||||
for (const index of binaryIndexArr) {
|
||||
const chunk = binaryContent.subarray(index.start, index.end);
|
||||
binaries[index.name] = Array.from(chunk);
|
||||
}
|
||||
|
||||
return {
|
||||
binaries,
|
||||
idbData,
|
||||
localStorageData,
|
||||
};
|
||||
}
|
||||
|
||||
async write(data: SnapshotData) {
|
||||
const {
|
||||
idbFilePath,
|
||||
localStorageFilePath,
|
||||
binaryIndexPath,
|
||||
binaryFilePath,
|
||||
} = this;
|
||||
const { idbData, localStorageData, binaries } = data;
|
||||
|
||||
await mkdirp(dirname(idbFilePath));
|
||||
|
||||
const binaryIndexData: BinaryIndexData[] = [];
|
||||
const binaryBuffers: Buffer[] = [];
|
||||
let currentIndex = 0;
|
||||
for (const [name, value] of Object.entries(binaries)) {
|
||||
const buffer = Buffer.from(value);
|
||||
const endIndex = currentIndex + buffer.length;
|
||||
|
||||
binaryIndexData.push({
|
||||
name,
|
||||
start: currentIndex,
|
||||
end: endIndex,
|
||||
});
|
||||
binaryBuffers.push(buffer);
|
||||
|
||||
currentIndex += buffer.length;
|
||||
}
|
||||
|
||||
await Promise.all([
|
||||
writeFile(
|
||||
localStorageFilePath,
|
||||
JSON.stringify(localStorageData, null, 2),
|
||||
'utf-8'
|
||||
),
|
||||
writeFile(idbFilePath, JSON.stringify(idbData, null, 2), 'utf-8'),
|
||||
writeFile(
|
||||
binaryIndexPath,
|
||||
JSON.stringify(binaryIndexData, null, 2),
|
||||
'utf-8'
|
||||
),
|
||||
writeFile(binaryFilePath, Buffer.concat(binaryBuffers), 'utf-8'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
/**
|
||||
* @type {import('idb')}
|
||||
*/
|
||||
const idb = window.idb;
|
||||
|
||||
const createUniqueIndex = (() => {
|
||||
let index = 0;
|
||||
return () => ++index;
|
||||
})();
|
||||
|
||||
function replaceBinary(value, binaries) {
|
||||
if (value instanceof Uint8Array) {
|
||||
const name = `__BINARY__${createUniqueIndex()}`;
|
||||
binaries[name] = Array.from(value);
|
||||
return name;
|
||||
}
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
return value.map(item => replaceBinary(item, binaries));
|
||||
}
|
||||
|
||||
if (typeof value === 'object' && value !== null) {
|
||||
const replaced = {};
|
||||
for (const key of Object.keys(value)) {
|
||||
replaced[key] = replaceBinary(value[key], binaries);
|
||||
}
|
||||
return replaced;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
function recoveryBinary(value, binaries) {
|
||||
if (typeof value === 'string') {
|
||||
const arr = binaries[value];
|
||||
if (arr) {
|
||||
return new Uint8Array(arr);
|
||||
}
|
||||
}
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
return value.map(item => recoveryBinary(item, binaries));
|
||||
}
|
||||
|
||||
if (typeof value === 'object' && value !== null) {
|
||||
const result = {};
|
||||
for (const key of Object.keys(value)) {
|
||||
result[key] = recoveryBinary(value[key], binaries);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
async function readAffineDatabase() {
|
||||
const idbData = [];
|
||||
const binaries = {};
|
||||
|
||||
const databases = await indexedDB.databases();
|
||||
for (const databaseInfo of databases) {
|
||||
const idbDatabase = await idb.openDB(
|
||||
databaseInfo.name,
|
||||
databaseInfo.version
|
||||
);
|
||||
if (!idbDatabase) {
|
||||
throw new Error('idbDatabase is null');
|
||||
}
|
||||
|
||||
const stores = [];
|
||||
const objectStoreNames = Array.from(idbDatabase.objectStoreNames);
|
||||
const transaction = idbDatabase.transaction(objectStoreNames, 'readonly');
|
||||
|
||||
for (const storeName of objectStoreNames) {
|
||||
const objectStore = transaction.objectStore(storeName);
|
||||
const objectValues = await objectStore.getAll();
|
||||
|
||||
stores.push({
|
||||
name: storeName,
|
||||
keyPath: objectStore.keyPath,
|
||||
values: replaceBinary(objectValues, binaries),
|
||||
});
|
||||
}
|
||||
|
||||
idbData.push({ ...databaseInfo, stores });
|
||||
}
|
||||
|
||||
return { idbData, binaries };
|
||||
}
|
||||
|
||||
async function writeAffineDatabase(allDatabases, binaries) {
|
||||
for (const database of allDatabases) {
|
||||
const idbDatabase = await idb.openDB(database.name, database.version, {
|
||||
upgrade(db) {
|
||||
for (const objectStore of database.stores) {
|
||||
db.createObjectStore(objectStore.name, {
|
||||
keyPath: objectStore.keyPath,
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
for (const store of database.stores) {
|
||||
const transaction = idbDatabase.transaction(store.name, 'readwrite');
|
||||
const objectStore = transaction.objectStore(store.name);
|
||||
|
||||
for (const value of store.values) {
|
||||
await objectStore.add(recoveryBinary(value, binaries));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function readAffineLocalStorage() {
|
||||
const data = {};
|
||||
|
||||
const keys = [
|
||||
'jotai-workspaces',
|
||||
'last_page_id',
|
||||
'last_workspace_id',
|
||||
'affine-local-workspace',
|
||||
'is-first-open',
|
||||
];
|
||||
for (const key of keys) {
|
||||
const value = window.localStorage.getItem(key);
|
||||
data[key] = value;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
async function writeAffineLocalStorage(data) {
|
||||
for (const [key, value] of Object.entries(data)) {
|
||||
window.localStorage.setItem(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
window.readAffineDatabase = readAffineDatabase;
|
||||
window.writeAffineDatabase = writeAffineDatabase;
|
||||
window.readAffineLocalStorage = readAffineLocalStorage;
|
||||
window.writeAffineLocalStorage = writeAffineLocalStorage;
|
||||
@@ -6,7 +6,8 @@
|
||||
"exports": {
|
||||
"./electron": "./electron.ts",
|
||||
"./playwright": "./playwright.ts",
|
||||
"./utils/*": "./utils/*.ts"
|
||||
"./utils/*": "./utils/*.ts",
|
||||
"./e2e-enhance/*": "./e2e-enhance/*.ts"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@node-rs/argon2": "^1.5.2",
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
"noEmit": false,
|
||||
"outDir": "lib"
|
||||
},
|
||||
"include": ["./*.ts", "utils"]
|
||||
"include": ["./*.ts", "utils", "e2e-enhance"]
|
||||
}
|
||||
|
||||
@@ -172,6 +172,9 @@
|
||||
{
|
||||
"path": "./tests/affine-plugin"
|
||||
},
|
||||
{
|
||||
"path": "./tests/affine-migration"
|
||||
},
|
||||
{
|
||||
"path": "./tests/affine-legacy/0.7.0-canary.18"
|
||||
},
|
||||
|
||||
@@ -115,6 +115,20 @@ __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/fixtures": "workspace:*"
|
||||
"@affine-test/kit": "workspace:*"
|
||||
"@blocksuite/block-std": 0.0.0-20230926212737-6d4b1569-nightly
|
||||
"@blocksuite/blocks": 0.0.0-20230926212737-6d4b1569-nightly
|
||||
"@blocksuite/global": 0.0.0-20230926212737-6d4b1569-nightly
|
||||
"@blocksuite/store": 0.0.0-20230926212737-6d4b1569-nightly
|
||||
"@playwright/test": ^1.38.1
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@affine-test/affine-plugin@workspace:tests/affine-plugin":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@affine-test/affine-plugin@workspace:tests/affine-plugin"
|
||||
|
||||
Reference in New Issue
Block a user