feat: init affine blob storage (#2045)

This commit is contained in:
Himself65
2023-04-20 03:23:41 -05:00
committed by GitHub
parent c08c587efb
commit 63f7b2556e
25 changed files with 828 additions and 448 deletions

View File

@@ -8,6 +8,7 @@ import { readFile } from 'node:fs/promises';
import { MessageCode } from '@affine/env/constant';
import { createStatusApis } from '@affine/workspace/affine/api/status';
import { KeckProvider } from '@affine/workspace/affine/keck';
import { WorkspaceFlavour } from '@affine/workspace/type';
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
import user1 from '@affine-test/fixtures/built-in-user1.json';
import user2 from '@affine-test/fixtures/built-in-user2.json';
@@ -119,7 +120,7 @@ async function createWorkspace(
): Promise<string> {
const workspace = createEmptyBlockSuiteWorkspace(
faker.datatype.uuid(),
_ => undefined
WorkspaceFlavour.LOCAL
);
if (callback) {
callback(workspace);
@@ -408,9 +409,15 @@ describe('api', () => {
);
});
const binary = await workspaceApis.downloadWorkspace(id, false);
const workspace = createEmptyBlockSuiteWorkspace(id, () => undefined);
const workspace = createEmptyBlockSuiteWorkspace(
id,
WorkspaceFlavour.LOCAL
);
Workspace.Y.applyUpdate(workspace.doc, new Uint8Array(binary));
const workspace2 = createEmptyBlockSuiteWorkspace(id, () => undefined);
const workspace2 = createEmptyBlockSuiteWorkspace(
id,
WorkspaceFlavour.LOCAL
);
{
const wsUrl = `ws://127.0.0.1:3000/api/sync/`;
const provider = new KeckProvider(wsUrl, workspace.id, workspace.doc, {
@@ -459,7 +466,7 @@ describe('api', () => {
);
const publicWorkspace = createEmptyBlockSuiteWorkspace(
id,
() => undefined
WorkspaceFlavour.LOCAL
);
Workspace.Y.applyUpdate(publicWorkspace.doc, new Uint8Array(binary));
const publicPage = publicWorkspace.getPage(pageId) as Page;

View File

@@ -1,3 +1,8 @@
/**
* @vitest-environment happy-dom
*/
import 'fake-indexeddb/auto';
import type { Workspace } from '@affine/workspace/affine/api';
import {
createWorkspaceApis,
@@ -6,6 +11,7 @@ import {
import { KeckProvider } from '@affine/workspace/affine/keck';
import type { LoginResponse } from '@affine/workspace/affine/login';
import { loginResponseSchema } from '@affine/workspace/affine/login';
import { WorkspaceFlavour } from '@affine/workspace/type';
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
import user1 from '@affine-test/fixtures/built-in-user1.json';
import user2 from '@affine-test/fixtures/built-in-user2.json';
@@ -80,11 +86,17 @@ describe('ydoc sync', () => {
const binary = await workspaceApis.downloadWorkspace(root.id);
const workspace1 = createEmptyBlockSuiteWorkspace(
root.id,
(k: string) => ({ api: '/api/workspace', token: user1Token.token }[k])
WorkspaceFlavour.AFFINE,
{
workspaceApis,
}
);
const workspace2 = createEmptyBlockSuiteWorkspace(
root.id,
(k: string) => ({ api: '/api/workspace', token: user2Token.token }[k])
WorkspaceFlavour.AFFINE,
{
workspaceApis,
}
);
BlockSuiteWorkspace.Y.applyUpdate(workspace1.doc, new Uint8Array(binary));
BlockSuiteWorkspace.Y.applyUpdate(workspace2.doc, new Uint8Array(binary));