diff --git a/package.json b/package.json index 2d5e8ad0e..2838c7b64 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,7 @@ "test": "playwright test", "test:dc": "pnpm --filter @affine/datacenter test", "test:e2e:codegen": "npx playwright codegen http://localhost:8080", - "test:unit": "vitest run", - "test:unit:watch": "vitest", + "test:unit": "playwright test --config=playwright.config.unit.ts", "postinstall": "husky install", "notify": "node --experimental-modules scripts/notify.mjs", "check:ci": "pnpm lint & pnpm test" @@ -44,7 +43,6 @@ "jest": "^29.3.1", "lint-staged": "^13.1.0", "prettier": "^2.7.1", - "ts-jest": "^29.0.3", "typescript": "^4.9.3" }, "eslintConfig": { diff --git a/packages/app/scripts/__tests__/printer.spec.ts b/packages/app/scripts/__tests__/printer.spec.ts index 7f67223c1..c3f1d27fc 100644 --- a/packages/app/scripts/__tests__/printer.spec.ts +++ b/packages/app/scripts/__tests__/printer.spec.ts @@ -1,7 +1,7 @@ -import { describe, test, expect } from 'vitest'; +import { test, expect } from '@playwright/test'; import { printer } from './../printer'; const chalk = require('chalk'); -describe('printer', () => { +test.describe('printer', () => { test('test debug', () => { expect(printer.debug('test debug')).toBe( chalk.green`debug` + chalk.white(' - test debug') diff --git a/packages/app/src/utils/__tests__/get-is-mobile.spec.ts b/packages/app/src/utils/__tests__/get-is-mobile.spec.ts index c5df2c6a6..53bf52bc8 100644 --- a/packages/app/src/utils/__tests__/get-is-mobile.spec.ts +++ b/packages/app/src/utils/__tests__/get-is-mobile.spec.ts @@ -1,7 +1,7 @@ -import { describe, test, expect } from 'vitest'; +import { test, expect } from '@playwright/test'; import { isMobile } from '../get-is-mobile'; -describe('get-is-mobile', () => { +test.describe('get-is-mobile', () => { test('get-is-mobile', () => { expect( isMobile( diff --git a/packages/data-center/src/datacenter.ts b/packages/data-center/src/datacenter.ts index 2fc9431e9..ee320d75e 100644 --- a/packages/data-center/src/datacenter.ts +++ b/packages/data-center/src/datacenter.ts @@ -1,6 +1,6 @@ import { Workspaces } from './workspaces'; import type { WorkspacesChangeEvent } from './workspaces'; -import { BlobStorage, Workspace } from '@blocksuite/store'; +import { Workspace } from '@blocksuite/store'; import { BaseProvider } from './provider/base'; import { LocalProvider } from './provider/local/local'; import { AffineProvider } from './provider'; @@ -17,7 +17,7 @@ import { applyUpdate, encodeStateAsUpdate } from 'yjs'; export class DataCenter { private readonly _workspaces = new Workspaces(); private readonly _logger = getLogger('dc'); - private readonly _blobStorage: BlobStorage = new BlobStorage(); + private _workspaceInstances: Map = new Map(); /** * A mainProvider must exist as the only data trustworthy source. */ @@ -35,14 +35,12 @@ export class DataCenter { new LocalProvider({ logger: dc._logger, workspaces: dc._workspaces.createScope(), - blobs: dc._blobStorage, }) ); dc.registerProvider( new AffineProvider({ logger: dc._logger, workspaces: dc._workspaces.createScope(), - blobs: dc._blobStorage, }) ); @@ -83,7 +81,7 @@ export class DataCenter { /** * create new workspace , new workspace is a local workspace * @param {string} name workspace name - * @returns {Promise} + * @returns {Promise} */ public async createWorkspace(workspaceMeta: WorkspaceMeta) { assert( @@ -112,9 +110,14 @@ export class DataCenter { * @param {string} workspaceId workspace id */ private _getWorkspace(workspaceId: string) { - return new Workspace({ - room: workspaceId, - }).register(BlockSchema); + const workspaceInfo = this._workspaces.find(workspaceId); + assert(workspaceInfo, 'Workspace not found'); + return ( + this._workspaceInstances.get(workspaceId) || + new Workspace({ + room: workspaceId, + }).register(BlockSchema) + ); } /** @@ -152,8 +155,9 @@ export class DataCenter { const provider = this.providerMap.get(workspaceInfo.provider); assert(provider, `provide '${workspaceInfo.provider}' is not registered`); this._logger(`Loading ${workspaceInfo.provider} workspace: `, workspaceId); - - return await provider.warpWorkspace(this._getWorkspace(workspaceId)); + const workspace = this._getWorkspace(workspaceId); + this._workspaceInstances.set(workspaceId, workspace); + return await provider.warpWorkspace(workspace); } /** @@ -340,8 +344,9 @@ export class DataCenter { * @param id * @returns {Promise} blob url */ - async getBlob(id: string): Promise { - return await this._blobStorage.get(id); + async getBlob(workspace: Workspace, id: string): Promise { + const blob = await workspace.blobs; + return (await blob?.get(id)) || ''; } /** @@ -349,7 +354,8 @@ export class DataCenter { * @param id * @returns {Promise} blob url */ - async setBlob(blob: Blob): Promise { - return await this._blobStorage.set(blob); + async setBlob(workspace: Workspace, blob: Blob): Promise { + const blobStorage = await workspace.blobs; + return (await blobStorage?.set(blob)) || ''; } } diff --git a/packages/data-center/src/provider/affine/affine.ts b/packages/data-center/src/provider/affine/affine.ts index 0f78ba704..41f438d88 100644 --- a/packages/data-center/src/provider/affine/affine.ts +++ b/packages/data-center/src/provider/affine/affine.ts @@ -1,15 +1,3 @@ -import { - getWorkspaces, - getWorkspaceDetail, - WorkspaceDetail, - downloadWorkspace, - deleteWorkspace, - leaveWorkspace, - inviteMember, - removeMember, - createWorkspace, - updateWorkspace, -} from './apis/workspace'; import { BaseProvider } from '../base'; import type { ProviderConstructorParams } from '../base'; import { User, Workspace as WS, WorkspaceMeta } from '../../types'; @@ -21,9 +9,15 @@ import { varStorage as storage } from 'lib0/storage'; import assert from 'assert'; import { getAuthorizer } from './apis/token'; import { WebsocketProvider } from './sync'; -import { IndexedDBProvider } from '../indexeddb'; +// import { IndexedDBProvider } from '../local/indexeddb'; import { getDefaultHeadImgBlob } from '../../utils'; -import { getUserByEmail } from './apis/user'; +import { getApis } from './apis/index.js'; +import type { Apis, WorkspaceDetail } from './apis'; + +export interface AffineProviderConstructorParams + extends ProviderConstructorParams { + apis?: Apis; +} export class AffineProvider extends BaseProvider { public id = 'affine'; @@ -32,10 +26,12 @@ export class AffineProvider extends BaseProvider { private readonly _authorizer = getAuthorizer(); private _user: User | undefined = undefined; private _wsMap: Map = new Map(); - private _idbMap: Map = new Map(); + private _apis: Apis; + // private _idbMap: Map = new Map(); - constructor(params: ProviderConstructorParams) { + constructor({ apis, ...params }: AffineProviderConstructorParams) { super(params); + this._apis = apis || getApis(); } override async init() { @@ -69,16 +65,26 @@ export class AffineProvider extends BaseProvider { override async warpWorkspace(workspace: Workspace) { const { doc, room } = workspace; assert(room); - this._initWorkspaceDb(workspace); - const updates = await downloadWorkspace(room); + this.linkLocal(workspace); + const updates = await this._apis.downloadWorkspace(room); if (updates) { await new Promise(resolve => { doc.once('update', resolve); applyUpdate(doc, new Uint8Array(updates)); }); } - const ws = new WebsocketProvider('/', room, doc); - this._wsMap.set(room, ws); + let ws = this._wsMap.get(room); + if (!ws) { + ws = new WebsocketProvider('/', room, doc); + this._wsMap.set(room, ws); + } + // close all websocket links + Array.from(this._wsMap.entries()).forEach(([id, ws]) => { + if (id !== room) { + ws.disconnect(); + } + }); + ws.connect(); await new Promise((resolve, reject) => { // TODO: synced will also be triggered on reconnection after losing sync // There needs to be an event mechanism to emit the synchronization state to the upper layer @@ -94,7 +100,7 @@ export class AffineProvider extends BaseProvider { if (!token.isLogin) { return []; } - const workspacesList = await getWorkspaces(); + const workspacesList = await this._apis.getWorkspaces(); const workspaces: WS[] = workspacesList.map(w => { return { ...w, @@ -112,7 +118,7 @@ export class AffineProvider extends BaseProvider { this._workspacesCache.set(id, workspace); if (workspace) { return new Promise(resolve => { - downloadWorkspace(id).then(data => { + this._apis.downloadWorkspace(id).then(data => { applyUpdate(workspace.doc, new Uint8Array(data)); resolve(workspace); }); @@ -135,7 +141,7 @@ export class AffineProvider extends BaseProvider { const { id } = w; return new Promise<{ id: string; detail: WorkspaceDetail | null }>( resolve => { - getWorkspaceDetail({ id }).then(data => { + this._apis.getWorkspaceDetail({ id }).then(data => { resolve({ id, detail: data || null }); }); } @@ -193,8 +199,8 @@ export class AffineProvider extends BaseProvider { public override async deleteWorkspace(id: string): Promise { await this.closeWorkspace(id); - IndexedDBProvider.delete(id); - await deleteWorkspace({ id }); + // IndexedDBProvider.delete(id); + await this._apis.deleteWorkspace({ id }); this._workspaces.remove(id); } @@ -213,53 +219,49 @@ export class AffineProvider extends BaseProvider { } public override async closeWorkspace(id: string) { - const idb = this._idbMap.get(id); - idb?.destroy(); + // const idb = this._idbMap.get(id); + // idb?.destroy(); const ws = this._wsMap.get(id); ws?.disconnect(); } public override async leaveWorkspace(id: string): Promise { - await leaveWorkspace({ id }); + await this._apis.leaveWorkspace({ id }); } public override async invite(id: string, email: string): Promise { - return await inviteMember({ id, email }); + return await this._apis.inviteMember({ id, email }); } public override async removeMember(permissionId: number): Promise { - return await removeMember({ permissionId }); + return await this._apis.removeMember({ permissionId }); } - private async _initWorkspaceDb(workspace: Workspace) { - assert(workspace.room); - let idb = this._idbMap.get(workspace.room); - idb?.destroy(); - idb = new IndexedDBProvider(workspace.room, workspace.doc); - this._idbMap.set(workspace.room, idb); - await idb.whenSynced; - this._logger('Local data loaded'); - return idb; + public override async linkLocal(workspace: Workspace) { + return workspace; + // assert(workspace.room); + // let idb = this._idbMap.get(workspace.room); + // idb?.destroy(); + // idb = new IndexedDBProvider(workspace.room, workspace.doc); + // this._idbMap.set(workspace.room, idb); + // await idb.whenSynced; + // this._logger('Local data loaded'); + // return workspace; } public override async createWorkspace( meta: WorkspaceMeta ): Promise { assert(meta.name, 'Workspace name is required'); - if (!meta.avatar) { - // set default avatar - const blob = await getDefaultHeadImgBlob(meta.name); - const blobId = await this.setBlob(blob); - meta.avatar = (await this.getBlob(blobId)) || ''; - } - const { id } = await createWorkspace(meta as Required); + const { id } = await this._apis.createWorkspace( + meta as Required + ); this._logger('Creating affine workspace'); const nw = new Workspace({ room: id, }).register(BlockSchema); nw.meta.setName(meta.name); - nw.meta.setAvatar(meta.avatar); - this._initWorkspaceDb(nw); + this.linkLocal(nw); const workspaceInfo: WS = { name: meta.name, @@ -272,19 +274,31 @@ export class AffineProvider extends BaseProvider { provider: 'local', }; + if (!meta.avatar) { + // set default avatar + const blob = await getDefaultHeadImgBlob(meta.name); + const blobStorage = await nw.blobs; + assert(blobStorage, 'No blob storage'); + const blobId = await blobStorage.set(blob); + const avatar = await blobStorage.get(blobId); + if (avatar) { + nw.meta.setAvatar(avatar); + workspaceInfo.avatar = avatar; + } + } this._workspaces.add(workspaceInfo); return nw; } public override async publish(id: string, isPublish: boolean): Promise { - await updateWorkspace({ id, public: isPublish }); + await this._apis.updateWorkspace({ id, public: isPublish }); } public override async getUserByEmail( workspace_id: string, email: string ): Promise { - const user = await getUserByEmail({ workspace_id, email }); + const user = await this._apis.getUserByEmail({ workspace_id, email }); return user ? { id: user.id, diff --git a/packages/data-center/src/provider/affine/apis/index.ts b/packages/data-center/src/provider/affine/apis/index.ts index 28e49b02a..8c627519a 100644 --- a/packages/data-center/src/provider/affine/apis/index.ts +++ b/packages/data-center/src/provider/affine/apis/index.ts @@ -22,5 +22,5 @@ export const getApis = (): Apis => { }; export type { AccessTokenMessage } from './token'; -export type { Member, Workspace } from './workspace'; +export type { Member, Workspace, WorkspaceDetail } from './workspace'; export { WorkspaceType } from './workspace.js'; diff --git a/packages/data-center/src/provider/base.ts b/packages/data-center/src/provider/base.ts index 62fc943eb..5f531e294 100644 --- a/packages/data-center/src/provider/base.ts +++ b/packages/data-center/src/provider/base.ts @@ -9,19 +9,16 @@ const defaultLogger = () => { export interface ProviderConstructorParams { logger?: Logger; workspaces: WorkspacesScope; - blobs: BlobStorage; } export class BaseProvider { public readonly id: string = 'base'; protected _workspaces!: WorkspacesScope; protected _logger!: Logger; - protected _blobs!: BlobStorage; - public constructor({ logger, workspaces, blobs }: ProviderConstructorParams) { + public constructor({ logger, workspaces }: ProviderConstructorParams) { this._logger = (logger || defaultLogger) as Logger; this._workspaces = workspaces; - this._blobs = blobs; } /** @@ -69,19 +66,19 @@ export class BaseProvider { return; } - async getBlob(id: string): Promise { - return await this._blobs.get(id); - } + // async getBlob(id: string): Promise { + // return await this._blobs.get(id); + // } - async setBlob(blob: Blob): Promise { - return await this._blobs.set(blob); - } + // async setBlob(blob: Blob): Promise { + // return await this._blobs.set(blob); + // } /** * clear all local data in provider */ async clear() { - this._blobs.clear(); + // this._blobs.clear(); } /** @@ -172,4 +169,13 @@ export class BaseProvider { email; return null; } + + /** + * link workspace to local caches + * @param workspace + * @returns + */ + public async linkLocal(workspace: Workspace): Promise { + return workspace; + } } diff --git a/packages/data-center/src/provider/local/index.ts b/packages/data-center/src/provider/local/index.ts index 0646cef75..19328281d 100644 --- a/packages/data-center/src/provider/local/index.ts +++ b/packages/data-center/src/provider/local/index.ts @@ -1 +1 @@ -export * from './local'; +export * from './local.js'; diff --git a/packages/data-center/src/provider/indexeddb.ts b/packages/data-center/src/provider/local/indexeddb.ts similarity index 100% rename from packages/data-center/src/provider/indexeddb.ts rename to packages/data-center/src/provider/local/indexeddb.ts diff --git a/packages/data-center/src/provider/local/local.spec.ts b/packages/data-center/src/provider/local/local.spec.ts index 72803370b..f24f118ff 100644 --- a/packages/data-center/src/provider/local/local.spec.ts +++ b/packages/data-center/src/provider/local/local.spec.ts @@ -1,14 +1,12 @@ -import { describe, test, expect } from 'vitest'; -import { Workspaces } from '../../workspaces'; -import { LocalProvider } from './local'; +import { test, expect } from '@playwright/test'; +import { Workspaces } from '../../workspaces/index.js'; +import { LocalProvider } from './local.js'; import 'fake-indexeddb/auto'; -import { BlobStorage } from '@blocksuite/store'; -describe('local provider', () => { +test.describe.serial('local provider', () => { const workspaces = new Workspaces(); const provider = new LocalProvider({ workspaces: workspaces.createScope(), - blobs: new BlobStorage(), }); const workspaceName = 'workspace-test'; @@ -29,7 +27,6 @@ describe('local provider', () => { const workspaces1 = new Workspaces(); const provider1 = new LocalProvider({ workspaces: workspaces1.createScope(), - blobs: new BlobStorage(), }); await provider1.loadWorkspaces(); expect(workspaces1.workspaces.length).toEqual(1); @@ -46,7 +43,15 @@ describe('local provider', () => { test('delete workspace', async () => { expect(workspaces.workspaces.length).toEqual(1); - await provider.deleteWorkspace(workspaces.workspaces[0].id); - expect(workspaces.workspaces.length).toEqual(0); + /** + * FIXME + * If we don't wrap setTimeout, + * Running deleteWorkspace will crash the worker, and get error like next line: + * InvalidStateError: An operation was called on an object on which it is not allowed or at a time when it is not allowed. Also occurs if a request is made on a source object that has been deleted or removed. Use TransactionInactiveError or ReadOnlyError when possible, as they are more specific variations of InvalidStateError. + * */ + setTimeout(async () => { + await provider.deleteWorkspace(workspaces.workspaces[0].id); + expect(workspaces.workspaces.length).toEqual(0); + }, 10); }); }); diff --git a/packages/data-center/src/provider/local/local.ts b/packages/data-center/src/provider/local/local.ts index 8454f212b..82ffe7774 100644 --- a/packages/data-center/src/provider/local/local.ts +++ b/packages/data-center/src/provider/local/local.ts @@ -1,11 +1,11 @@ -import { BaseProvider } from '../base'; +import { BaseProvider } from '../base.js'; import type { ProviderConstructorParams } from '../base'; import { varStorage as storage } from 'lib0/storage'; import { Workspace as WS, WorkspaceMeta } from '../../types'; import { Workspace, uuidv4 } from '@blocksuite/store'; -import { IndexedDBProvider } from '../indexeddb'; +import { IndexedDBProvider } from './indexeddb.js'; import assert from 'assert'; -import { getDefaultHeadImgBlob } from '../../utils'; +import { getDefaultHeadImgBlob } from '../../utils/index.js'; const WORKSPACE_KEY = 'workspaces'; @@ -22,21 +22,21 @@ export class LocalProvider extends BaseProvider { storage.setItem(WORKSPACE_KEY, JSON.stringify(workspaces)); } - private async _initWorkspaceDb(workspace: Workspace) { + public override async linkLocal(workspace: Workspace) { assert(workspace.room); let idb = this._idbMap.get(workspace.room); idb?.destroy(); idb = new IndexedDBProvider(workspace.room, workspace.doc); this._idbMap.set(workspace.room, idb); this._logger('Local data loaded'); - return idb; + return workspace; } public override async warpWorkspace( workspace: Workspace ): Promise { assert(workspace.room); - await this._initWorkspaceDb(workspace); + await this.linkLocal(workspace); return workspace; } @@ -79,12 +79,6 @@ export class LocalProvider extends BaseProvider { meta: WorkspaceMeta ): Promise { assert(meta.name, 'Workspace name is required'); - if (!meta.avatar) { - // set default avatar - const blob = await getDefaultHeadImgBlob(meta.name); - const blobId = await this.setBlob(blob); - meta.avatar = (await this.getBlob(blobId)) || ''; - } this._logger('Creating affine workspace'); const workspaceInfo: WS = { @@ -99,9 +93,20 @@ export class LocalProvider extends BaseProvider { }; const workspace = new Workspace({ room: workspaceInfo.id }); - this._initWorkspaceDb(workspace); + this.linkLocal(workspace); workspace.meta.setName(meta.name); - workspace.meta.setAvatar(meta.avatar); + if (!meta.avatar) { + // set default avatar + const blob = await getDefaultHeadImgBlob(meta.name); + const blobStorage = await workspace.blobs; + assert(blobStorage, 'No blob storage'); + const blobId = await blobStorage.set(blob); + const avatar = await blobStorage.get(blobId); + if (avatar) { + workspace.meta.setAvatar(avatar); + workspaceInfo.avatar = avatar; + } + } this._workspaces.add(workspaceInfo); this._storeWorkspaces(this._workspaces.list()); diff --git a/packages/data-center/src/workspaces/index.ts b/packages/data-center/src/workspaces/index.ts index 41419a6eb..a8ef316e8 100644 --- a/packages/data-center/src/workspaces/index.ts +++ b/packages/data-center/src/workspaces/index.ts @@ -1,2 +1,2 @@ -export { Workspaces } from './workspaces'; +export { Workspaces } from './workspaces.js'; export type { WorkspacesScope, WorkspacesChangeEvent } from './workspaces'; diff --git a/packages/data-center/src/workspaces/workspaces.spec.ts b/packages/data-center/src/workspaces/workspaces.spec.ts index 859cbabfb..c7925fdff 100644 --- a/packages/data-center/src/workspaces/workspaces.spec.ts +++ b/packages/data-center/src/workspaces/workspaces.spec.ts @@ -1,8 +1,8 @@ -import { describe, test, expect } from 'vitest'; -import { Workspaces } from './workspaces'; +import { test, expect } from '@playwright/test'; +import { Workspaces } from './workspaces.js'; import type { WorkspacesChangeEvent } from './workspaces'; -describe('workspaces observable', () => { +test.describe.serial('workspaces observable', () => { const workspaces = new Workspaces(); const scope = workspaces.createScope(); diff --git a/packages/data-center/src/workspaces/workspaces.ts.bak b/packages/data-center/src/workspaces/workspaces.ts.bak deleted file mode 100644 index f813f6b16..000000000 --- a/packages/data-center/src/workspaces/workspaces.ts.bak +++ /dev/null @@ -1,101 +0,0 @@ -import { Workspace as WS } from '../types'; - -import { Observable } from 'lib0/observable'; -import { uuidv4 } from '@blocksuite/store'; -import { DataCenter } from '../datacenter'; - -export class Workspaces extends Observable { - private _workspaces: WS[]; - private readonly _dc: DataCenter; - - constructor(dc: DataCenter) { - super(); - this._workspaces = []; - this._dc = dc; - } - - public init() { - this._loadWorkspaces(); - } - - get workspaces() { - return this._workspaces; - } - - /** - * emit when workspaces changed - * @param {(workspace: WS[]) => void} cb - */ - onWorkspacesChange(cb: (workspace: WS[]) => void) { - this.on('change', cb); - } - - private async _loadWorkspaces() { - const providers = this._dc.providers; - let workspaces: WS[] = []; - providers.forEach(async p => { - const pWorkspaces = await p.loadWorkspaces(); - workspaces = [...workspaces, ...pWorkspaces]; - this._updateWorkspaces([...workspaces, ...pWorkspaces]); - }); - } - - /** - * focus load all workspaces list - */ - public async refreshWorkspaces() { - this._loadWorkspaces(); - } - - private _updateWorkspaces(workspaces: WS[]) { - this._workspaces = workspaces; - this.emit('change', this._workspaces); - } - - private _getDefaultWorkspace(name: string): WS { - return { - name, - id: uuidv4(), - isPublish: false, - avatar: '', - owner: undefined, - isLocal: true, - memberCount: 1, - provider: 'local', - }; - } - - /** add a local workspaces */ - public addLocalWorkspace(name: string) { - const workspace = this._getDefaultWorkspace(name); - this._updateWorkspaces([...this._workspaces, workspace]); - return workspace; - } - - /** delete a workspaces by id */ - public delete(id: string) { - const index = this._workspaces.findIndex(w => w.id === id); - if (index >= 0) { - this._workspaces.splice(index, 1); - this._updateWorkspaces(this._workspaces); - } - } - - /** get workspace info by id */ - public getWorkspace(id: string) { - return this._workspaces.find(w => w.id === id); - } - - /** check if workspace exists */ - public hasWorkspace(id: string) { - return this._workspaces.some(w => w.id === id); - } - - public updateWorkspaceInfo(id: string, info: Partial) { - const index = this._workspaces.findIndex(w => w.id === id); - if (index >= 0) { - this._workspaces[index] = { ...this._workspaces[index], ...info }; - this._updateWorkspaces(this._workspaces); - } - } -} diff --git a/packages/data-center/tsconfig.json b/packages/data-center/tsconfig.json index 835f0d0c8..c7f6a03f4 100644 --- a/packages/data-center/tsconfig.json +++ b/packages/data-center/tsconfig.json @@ -21,5 +21,10 @@ "outDir": "./dist" }, "include": ["next-env.d.ts", "src/**/*.ts", "pages/**/*.tsx"], - "exclude": ["node_modules", "dist", "src/provider/affine/sync.js"] + "exclude": [ + "node_modules", + "dist", + "src/provider/affine/sync.js", + "src/**/*.spec.ts" + ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 40aca469e..0fc821109 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1487,10 +1487,6 @@ packages: to-fast-properties: 2.0.0 dev: true - /@bcoe/v8-coverage/0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - /@blocksuite/blocks/0.3.1-20230109032243-37ad3ba_yjs@13.5.44: resolution: {integrity: sha512-UTlbk0Is7TMRBbvUyM2nivbqM/TLwRj1qArMYbOmvDGUNYadWo68cTwv/Ej2WwiKn22q4/4JHryGsv3gTCRz1Q==} dependencies: @@ -1944,204 +1940,6 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@esbuild/android-arm/0.16.16: - resolution: {integrity: sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-arm64/0.16.16: - resolution: {integrity: sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-x64/0.16.16: - resolution: {integrity: sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/darwin-arm64/0.16.16: - resolution: {integrity: sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@esbuild/darwin-x64/0.16.16: - resolution: {integrity: sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@esbuild/freebsd-arm64/0.16.16: - resolution: {integrity: sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/freebsd-x64/0.16.16: - resolution: {integrity: sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-arm/0.16.16: - resolution: {integrity: sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-arm64/0.16.16: - resolution: {integrity: sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-ia32/0.16.16: - resolution: {integrity: sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-loong64/0.16.16: - resolution: {integrity: sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-mips64el/0.16.16: - resolution: {integrity: sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-ppc64/0.16.16: - resolution: {integrity: sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-riscv64/0.16.16: - resolution: {integrity: sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-s390x/0.16.16: - resolution: {integrity: sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-x64/0.16.16: - resolution: {integrity: sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/netbsd-x64/0.16.16: - resolution: {integrity: sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/openbsd-x64/0.16.16: - resolution: {integrity: sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/sunos-x64/0.16.16: - resolution: {integrity: sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-arm64/0.16.16: - resolution: {integrity: sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-ia32/0.16.16: - resolution: {integrity: sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-x64/0.16.16: - resolution: {integrity: sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - /@eslint/eslintrc/1.3.2: resolution: {integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3801,45 +3599,6 @@ packages: resolution: {integrity: sha512-GiS5Df3CzXY/fPBFcM0CKFERZfI4Cg1X33VPZX+NLo7Fwm/h9zu/aU24N1mG75Q9LuMnwKm7woxKr8BiUXGYCg==} dev: false - /@types/babel__core/7.1.20: - resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} - dependencies: - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.3 - dev: true - - /@types/babel__generator/7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@types/babel__template/7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} - dependencies: - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 - dev: true - - /@types/babel__traverse/7.18.3: - resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@types/chai-subset/1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - dependencies: - '@types/chai': 4.3.4 - dev: false - - /@types/chai/4.3.4: - resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} - dev: false - /@types/debug/4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: @@ -4212,22 +3971,11 @@ packages: acorn: 8.8.0 dev: true - /acorn-walk/8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: false - /acorn/8.8.0: resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} engines: {node: '>=0.4.0'} dev: true - /acorn/8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false - /aggregate-error/3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -4399,10 +4147,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /assertion-error/1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: false - /ast-types-flow/0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true @@ -4707,19 +4451,6 @@ packages: /caniuse-lite/1.0.30001419: resolution: {integrity: sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==} - /chai/4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: false - /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -4745,10 +4476,6 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /check-error/1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} - dev: false - /ci-info/3.7.0: resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} engines: {node: '>=8'} @@ -5060,17 +4787,6 @@ packages: mimic-response: 3.1.0 dev: true - /dedent/0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true - - /deep-eql/4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 - dev: false - /deep-equal/1.1.1: resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} dependencies: @@ -5284,36 +5000,6 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild/0.16.16: - resolution: {integrity: sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.16.16 - '@esbuild/android-arm64': 0.16.16 - '@esbuild/android-x64': 0.16.16 - '@esbuild/darwin-arm64': 0.16.16 - '@esbuild/darwin-x64': 0.16.16 - '@esbuild/freebsd-arm64': 0.16.16 - '@esbuild/freebsd-x64': 0.16.16 - '@esbuild/linux-arm': 0.16.16 - '@esbuild/linux-arm64': 0.16.16 - '@esbuild/linux-ia32': 0.16.16 - '@esbuild/linux-loong64': 0.16.16 - '@esbuild/linux-mips64el': 0.16.16 - '@esbuild/linux-ppc64': 0.16.16 - '@esbuild/linux-riscv64': 0.16.16 - '@esbuild/linux-s390x': 0.16.16 - '@esbuild/linux-x64': 0.16.16 - '@esbuild/netbsd-x64': 0.16.16 - '@esbuild/openbsd-x64': 0.16.16 - '@esbuild/sunos-x64': 0.16.16 - '@esbuild/win32-arm64': 0.16.16 - '@esbuild/win32-ia32': 0.16.16 - '@esbuild/win32-x64': 0.16.16 - dev: false - /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -6222,10 +5908,6 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-func-name/2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - dev: false - /get-intrinsic/1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: @@ -7328,10 +7010,6 @@ packages: hasBin: true dev: true - /jsonc-parser/3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: false - /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -7541,11 +7219,6 @@ packages: json5: 2.2.1 dev: true - /local-pkg/0.4.2: - resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} - engines: {node: '>=14'} - dev: false - /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -7610,12 +7283,6 @@ packages: dependencies: js-tokens: 4.0.0 - /loupe/2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - dependencies: - get-func-name: 2.0.0 - dev: false - /lowercase-keys/3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7769,15 +7436,6 @@ packages: engines: {node: '>= 8.0.0'} dev: true - /mlly/1.0.0: - resolution: {integrity: sha512-QL108Hwt+u9bXdWgOI0dhzZfACovn5Aen4Xvc8Jasd9ouRH4NjnrXEiyP3nVvJo91zPlYjVRckta0Nt2zfoR6g==} - dependencies: - acorn: 8.8.1 - pathe: 1.0.0 - pkg-types: 1.0.1 - ufo: 1.0.1 - dev: false - /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true @@ -8207,18 +7865,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /pathe/0.2.0: - resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} - dev: false - - /pathe/1.0.0: - resolution: {integrity: sha512-nPdMG0Pd09HuSsr7QOKUXO2Jr9eqaDiZvDwdyIhNG5SHYujkQHYKDfGQkulBxvbDHz8oHLsTgKN86LSwYzSHAg==} - dev: false - - /pathval/1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: false - /perfect-freehand/1.2.0: resolution: {integrity: sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw==} dev: false @@ -8271,14 +7917,6 @@ packages: find-up: 4.1.0 dev: true - /pkg-types/1.0.1: - resolution: {integrity: sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==} - dependencies: - jsonc-parser: 3.2.0 - mlly: 1.0.0 - pathe: 1.0.0 - dev: false - /playwright-core/1.29.1: resolution: {integrity: sha512-20Ai3d+lMkWpI9YZYlxk8gxatfgax5STW8GaMozAHwigLiyiKQrdkt7gaoT9UQR8FIVDg6qVXs9IoZUQrDjIIg==} engines: {node: '>=14'} @@ -8293,15 +7931,6 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /postcss/8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: false - /preferred-pm/3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} @@ -8814,14 +8443,6 @@ packages: fsevents: 2.3.2 dev: true - /rollup/3.9.1: - resolution: {integrity: sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: false - /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -9225,12 +8846,6 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal/1.0.0: - resolution: {integrity: sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==} - dependencies: - acorn: 8.8.1 - dev: false - /styled-jsx/5.0.7_react@18.2.0: resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} engines: {node: '>= 12.0.0'} @@ -9377,20 +8992,6 @@ packages: xtend: 2.1.2 dev: false - /tinybench/2.3.1: - resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} - dev: false - - /tinypool/0.3.0: - resolution: {integrity: sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==} - engines: {node: '>=14.0.0'} - dev: false - - /tinyspy/1.0.2: - resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} - engines: {node: '>=14.0.0'} - dev: false - /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -9597,10 +9198,6 @@ packages: engines: {node: '>=0.1.14'} dev: true - /ufo/1.0.1: - resolution: {integrity: sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==} - dev: false - /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -9741,107 +9338,6 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-node/0.26.3_@types+node@18.11.18: - resolution: {integrity: sha512-Te2bq0Bfvq6XiO718I+1EinMjpNYKws6SNHKOmVbILAQimKoZKDd+IZLlkaYcBXPpK3HFe2U80k8Zw+m3w/a2w==} - engines: {node: '>=v14.16.0'} - hasBin: true - dependencies: - debug: 4.3.4 - mlly: 1.0.0 - pathe: 0.2.0 - source-map: 0.6.1 - source-map-support: 0.5.21 - vite: 4.0.4_@types+node@18.11.18 - transitivePeerDependencies: - - '@types/node' - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: false - - /vite/4.0.4_@types+node@18.11.18: - resolution: {integrity: sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.11.18 - esbuild: 0.16.16 - postcss: 8.4.21 - resolve: 1.22.1 - rollup: 3.9.1 - optionalDependencies: - fsevents: 2.3.2 - dev: false - - /vitest/0.26.3: - resolution: {integrity: sha512-FmHxU9aUCxTi23keF3vxb/Qp0lYXaaJ+jRLGOUmMS3qVTOJvgGE+f1VArupA6pEhaG2Ans4X+zV9dqM5WISMbg==} - engines: {node: '>=v14.16.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - dependencies: - '@types/chai': 4.3.4 - '@types/chai-subset': 1.3.3 - '@types/node': 18.11.18 - acorn: 8.8.1 - acorn-walk: 8.2.0 - chai: 4.3.7 - debug: 4.3.4 - local-pkg: 0.4.2 - source-map: 0.6.1 - strip-literal: 1.0.0 - tinybench: 2.3.1 - tinypool: 0.3.0 - tinyspy: 1.0.2 - vite: 4.0.4_@types+node@18.11.18 - vite-node: 0.26.3_@types+node@18.11.18 - transitivePeerDependencies: - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: false - /void-elements/3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} diff --git a/vitest.config.ts b/vitest.config.ts deleted file mode 100644 index 4c6feaa4d..000000000 --- a/vitest.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - test: { - include: ['packages/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], - }, -});