From 6f6921079e920cebdf397fe094fe26aa6b0d785f Mon Sep 17 00:00:00 2001 From: Himself65 Date: Thu, 16 Feb 2023 20:43:52 -0600 Subject: [PATCH] refactor: remove esm module (#1077) --- apps/web/.env.local.template | 2 + apps/web/next.config.js | 7 +- apps/web/tsconfig.json | 6 +- package.json | 16 +- packages/component/package.json | 1 + packages/data-center/package.json | 11 +- packages/data-center/src/datacenter.ts | 4 +- packages/data-center/src/message/index.ts | 4 +- packages/data-center/src/message/message.ts | 2 +- .../provider/affine/__tests__/affine.spec.ts | 48 -- .../data-center/src/provider/affine/affine.ts | 14 +- .../affine/apis/__tests__/auth.spec.ts | 6 +- .../src/provider/affine/apis/auth.ts | 6 +- .../src/provider/affine/apis/index.ts | 12 +- .../src/provider/affine/apis/request.ts | 4 +- .../src/provider/affine/apis/user.ts | 2 +- .../src/provider/affine/apis/workspace.ts | 4 +- .../src/provider/affine/channel.ts | 2 +- .../data-center/src/provider/affine/idb-kv.ts | 2 +- .../data-center/src/provider/affine/utils.ts | 12 +- packages/data-center/src/provider/base.ts | 2 +- .../data-center/src/provider/local/index.ts | 2 +- .../src/provider/local/indexeddb/indexeddb.ts | 4 +- .../src/provider/local/indexeddb/utils.ts | 4 +- .../src/provider/local/local.spec.ts | 11 +- .../data-center/src/provider/local/local.ts | 8 +- .../data-center/src/provider/local/utils.ts | 8 +- .../tauri-ipc/__tests__/tauri-ipc.spec.ts | 12 +- .../tauri-ipc/blocksuite-provider/blob.ts | 4 +- .../src/provider/tauri-ipc/index.ts | 25 +- .../src/provider/tauri-ipc/utils.ts | 8 +- packages/data-center/src/provider/utils.ts | 2 +- .../src/workspace-unit-collection.spec.ts | 8 +- packages/data-center/tsconfig.json | 2 +- packages/logger/package.json | 6 +- playwright.config.unit.ts | 33 -- pnpm-lock.yaml | 423 ++++++++++++++---- tests/change-page-mode.spec.ts | 6 +- tests/console.spec.ts | 7 +- tests/contact-us.spec.ts | 4 +- tests/exception-page.spec.ts | 4 +- tests/invite-code-page.spec.ts | 4 +- tests/layout.spec.ts | 4 +- tests/local-first-delete-page.spec.ts | 6 +- tests/local-first-export-page.spec.ts | 6 +- tests/local-first-favorite-page.spec.ts | 6 +- tests/local-first-favorites-items.spec.ts | 6 +- tests/local-first-new-page.spec.ts | 6 +- tests/local-first-openpage-newtab.spec.ts | 6 +- tests/local-first-restore-page.spec.ts | 6 +- tests/local-first-show-delete-modal.spec.ts | 6 +- tests/local-first-trash-page.spec.ts | 6 +- tests/local-first-workspace-list.spec.ts | 6 +- tests/local-first-workspace.spec.ts | 4 +- tests/login.spec.ts | 4 +- tests/quick-search.spec.ts | 8 +- tests/shortcuts.spec.ts | 4 +- tests/theme.spec.ts | 4 +- tests/tsconfig.json | 8 + tsconfig.json | 6 +- vitest.config.ts | 13 + 61 files changed, 518 insertions(+), 349 deletions(-) delete mode 100644 packages/data-center/src/provider/affine/__tests__/affine.spec.ts delete mode 100644 playwright.config.unit.ts create mode 100644 tests/tsconfig.json create mode 100644 vitest.config.ts diff --git a/apps/web/.env.local.template b/apps/web/.env.local.template index 54ce7d9b51..fadb3c8bbd 100644 --- a/apps/web/.env.local.template +++ b/apps/web/.env.local.template @@ -7,3 +7,5 @@ NEXT_PUBLIC_FIREBASE_APP_ID= NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID= # absolute path to the block suite directory LOCAL_BLOCK_SUITE= +# see next.config.js +NODE_API_SERVER= diff --git a/apps/web/next.config.js b/apps/web/next.config.js index 9f8dee9d17..1236965386 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -48,7 +48,12 @@ const nextConfig = { COMMIT_HASH: getCommitHash(), EDITOR_VERSION, }, - transpilePackages: ['@affine/component', '@affine/i18n'], + transpilePackages: [ + '@affine/component', + '@affine/i18n', + '@affine/datacenter', + '@toeverything/pathfinder-logger', + ], webpack: config => { config.experiments = { ...config.experiments, topLevelAwait: true }; config.resolve.alias['yjs'] = require.resolve('yjs'); diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index d6d6ed12fc..af61aede2b 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -19,8 +19,10 @@ "baseUrl": ".", "paths": { "@/*": ["src/*"], - "@affine/component": ["../../packages/component/src/index"], - "@affine/i18n": ["../../packages/i18n/src/index"] + "@affine/component": ["../../packages/component"], + "@affine/i18n": ["../../packages/i18n"], + "@affine/datacenter": ["../../packages/data-center"], + "@toeverything/pathfinder-logger": ["../../packages/logger"] } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], diff --git a/package.json b/package.json index 473d139eb3..1268e24118 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,11 @@ "private": true, "author": "toeverything", "license": "MPL-2.0", - "type": "module", "scripts": { - "dev": "cross-env NODE_ENV=development pnpm --filter=!@affine/app build && pnpm --filter @affine/app dev", - "dev:ac": "pnpm --filter=!@affine/app build && cross-env NODE_API_SERVER=ac pnpm --filter @affine/app dev", - "dev:local": "pnpm --filter=!@affine/app build && cross-env NODE_API_SERVER=local pnpm --filter @affine/app dev", - "build": " pnpm --filter=!@affine/app build && pnpm --filter!=@affine/datacenter -r build", + "dev": "pnpm --filter @affine/app dev", + "dev:ac": "cross-env NODE_API_SERVER=ac pnpm --filter @affine/app dev", + "dev:local": "cross-env NODE_API_SERVER=local pnpm --filter @affine/app dev", + "build": "pnpm --filter @affine/app build", "build:client": " pnpm --filter=@affine/client-app build:app", "build:storybook": " pnpm -r build-storybook", "export": "pnpm --filter @affine/app export", @@ -17,7 +16,8 @@ "lint": "pnpm --filter @affine/app lint", "test": "playwright test", "test:coverage": "cross-env COVERAGE=true pnpm test -- --forbid-only", - "test:unit": "playwright test --config=playwright.config.unit.ts", + "test:unit": "vitest --run", + "test:unit:coverage": "vitest run --coverage", "postinstall": "husky install", "notify": "node --experimental-modules scripts/notify.mjs", "update:blocksuite": "pnpm i --filter @affine/app --filter @affine/datacenter @blocksuite/blocks@nightly @blocksuite/store@nightly && pnpm i --filter @affine/app @blocksuite/editor@nightly" @@ -33,6 +33,7 @@ "@types/node": "^18.11.17", "@typescript-eslint/eslint-plugin": "^5.47.0", "@typescript-eslint/parser": "^5.47.0", + "@vitest/coverage-istanbul": "^0.28.5", "concurrently": "^7.6.0", "cross-env": "^7.0.3", "eslint": "^8.30.0", @@ -45,7 +46,8 @@ "lint-staged": "^13.1.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "typescript": "^4.9.5" + "typescript": "^4.9.5", + "vitest": "^0.28.5" }, "eslintConfig": { "root": true, diff --git a/packages/component/package.json b/packages/component/package.json index d69e9204da..9f1ace77fe 100644 --- a/packages/component/package.json +++ b/packages/component/package.json @@ -2,6 +2,7 @@ "name": "@affine/component", "private": true, "version": "0.3.1", + "main": "./src/index.ts", "scripts": { "storybook": "storybook dev", "build-storybook": "storybook build" diff --git a/packages/data-center/package.json b/packages/data-center/package.json index 98111dd180..056510c852 100644 --- a/packages/data-center/package.json +++ b/packages/data-center/package.json @@ -1,25 +1,18 @@ { "name": "@affine/datacenter", "version": "0.3.0", + "private": true, "description": "", - "type": "module", - "main": "dist/src/index.js", - "types": "dist/src/index.d.ts", - "exports": { - ".": "./dist/src/index.js" - }, + "main": "./src/index.ts", "scripts": { "dev": "tsc --project ./tsconfig.json -w", "build": "tsc --project ./tsconfig.json" }, - "keywords": [], - "author": "", "repository": { "type": "git", "url": "git+https://github.com/toeverything/AFFiNE.git" }, "devDependencies": { - "@playwright/test": "^1.29.1", "@types/debug": "^4.1.7", "fake-indexeddb": "4.0.1", "lit": "^2.6.1", diff --git a/packages/data-center/src/datacenter.ts b/packages/data-center/src/datacenter.ts index fe906008f5..92118bcaab 100644 --- a/packages/data-center/src/datacenter.ts +++ b/packages/data-center/src/datacenter.ts @@ -1,4 +1,4 @@ -import { WorkspaceUnitCollection } from './workspace-unit-collection.js'; +import { WorkspaceUnitCollection } from './workspace-unit-collection'; import type { WorkspaceUnitCollectionChangeEvent } from './workspace-unit-collection'; import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store'; import type { @@ -11,7 +11,7 @@ import { AffineProvider } from './provider'; import type { Message } from './types'; import assert from 'assert'; import { getLogger } from './logger'; -import { createBlocksuiteWorkspace } from './utils/index.js'; +import { createBlocksuiteWorkspace } from './utils/index'; import { MessageCenter } from './message'; import { WorkspaceUnit } from './workspace-unit'; /** diff --git a/packages/data-center/src/message/index.ts b/packages/data-center/src/message/index.ts index 7d42b90d8b..b04581df15 100644 --- a/packages/data-center/src/message/index.ts +++ b/packages/data-center/src/message/index.ts @@ -1,2 +1,2 @@ -export { MessageCenter } from './message.js'; -export { MessageCode } from './code.js'; +export { MessageCenter } from './message'; +export { MessageCode } from './code'; diff --git a/packages/data-center/src/message/message.ts b/packages/data-center/src/message/message.ts index 4becebc2ff..93b75de777 100644 --- a/packages/data-center/src/message/message.ts +++ b/packages/data-center/src/message/message.ts @@ -1,6 +1,6 @@ import { Observable } from 'lib0/observable'; import { Message } from '../types'; -import { MessageCode, messages } from './code.js'; +import { MessageCode, messages } from './code'; export class MessageCenter extends Observable { private _messages: Record> = diff --git a/packages/data-center/src/provider/affine/__tests__/affine.spec.ts b/packages/data-center/src/provider/affine/__tests__/affine.spec.ts deleted file mode 100644 index f60af0d139..0000000000 --- a/packages/data-center/src/provider/affine/__tests__/affine.spec.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { test, expect } from '@playwright/test'; -import { AffineProvider } from '../affine.js'; -// import { Workspaces } from '../../../workspaces/index.js'; -import { apis } from './mock-apis.js'; -import 'fake-indexeddb/auto'; - -// TODO: we should find a better way for testing AffineProvider. - -test.describe.serial('affine provider', async () => { - // const workspaces = new Workspaces(); - // const provider = new AffineProvider({ - // workspaces: workspaces.createScope(), - // apis, - // }); - // await provider.auth(); - // const workspaceName = 'workspace-test'; - // let workspaceId: string | undefined; - // test('create workspace', async () => { - // const w = await provider.createWorkspace({ - // name: workspaceName, - // avatar: 'avatar-url-test', - // }); - // workspaceId = w?.room; - // expect(workspaces.workspaces.length).toEqual(1); - // expect(workspaces.workspaces[0].name).toEqual(workspaceName); - // }); - // test('workspace list cache', async () => { - // const workspaces1 = new Workspaces(); - // const provider1 = new AffineProvider({ - // workspaces: workspaces1.createScope(), - // }); - // await provider1.loadWorkspaces(); - // expect(workspaces1.workspaces.length).toEqual(1); - // expect(workspaces1.workspaces[0].name).toEqual(workspaceName); - // expect(workspaces1.workspaces[0].id).toEqual(workspaceId); - // }); - // test('update workspace', async () => { - // await provider.updateWorkspaceMeta(workspaceId!, { - // name: '1111', - // }); - // expect(workspaces.workspaces[0].name).toEqual('1111'); - // }); - // test('delete workspace', async () => { - // expect(workspaces.workspaces.length).toEqual(1); - // await provider.deleteWorkspace(workspaces.workspaces[0].id); - // expect(workspaces.workspaces.length).toEqual(0); - // }); -}); diff --git a/packages/data-center/src/provider/affine/affine.ts b/packages/data-center/src/provider/affine/affine.ts index 9016dde6d3..da03cdb4bc 100644 --- a/packages/data-center/src/provider/affine/affine.ts +++ b/packages/data-center/src/provider/affine/affine.ts @@ -1,4 +1,4 @@ -import { BaseProvider } from '../base.js'; +import { BaseProvider } from '../base'; import type { ProviderConstructorParams, CreateWorkspaceInfoParams, @@ -6,9 +6,9 @@ import type { import type { User } from '../../types'; import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store'; import assert from 'assert'; -import { WebsocketProvider } from './sync.js'; +import { WebsocketProvider } from './sync'; // import { IndexedDBProvider } from '../local/indexeddb'; -import { getApis, Workspace } from './apis/index.js'; +import { getApis, Workspace } from './apis'; import type { Apis, WorkspaceDetail } from './apis'; import { WebsocketClient } from './channel'; import { @@ -16,11 +16,11 @@ import { createWorkspaceUnit, migrateBlobDB, createBlocksuiteWorkspaceWithAuth, -} from './utils.js'; -import { WorkspaceUnit } from '../../workspace-unit.js'; -import { applyUpdate } from '../../utils/index.js'; +} from './utils'; +import { WorkspaceUnit } from '../../workspace-unit'; +import { applyUpdate } from '../../utils'; import type { SyncMode } from '../../workspace-unit'; -import { MessageCenter } from '../../message/index.js'; +import { MessageCenter } from '../../message'; type ChannelMessage = { ws_list: Workspace[]; diff --git a/packages/data-center/src/provider/affine/apis/__tests__/auth.spec.ts b/packages/data-center/src/provider/affine/apis/__tests__/auth.spec.ts index 72a271c12f..9c10d599b3 100644 --- a/packages/data-center/src/provider/affine/apis/__tests__/auth.spec.ts +++ b/packages/data-center/src/provider/affine/apis/__tests__/auth.spec.ts @@ -1,7 +1,7 @@ -import { test, expect } from '@playwright/test'; -import { Auth } from '../auth.js'; +import { describe, test, expect } from 'vitest'; +import { Auth } from '../auth'; -test.describe('class Auth', () => { +describe('class Auth', () => { test('parse tokens', () => { const tokenString = `eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NzU2Nzk1MjAsImlkIjo2LCJuYW1lIjoidGVzdCIsImVtYWlsIjoidGVzdEBnbWFpbC5jb20iLCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly90ZXN0LmNvbS9hdmF0YXIiLCJjcmVhdGVkX2F0IjoxNjc1Njc4OTIwMzU4fQ.R8GxrNhn3gNumtapthrP6_J5eQjXLV7i-LanSPqe7hw`; expect(Auth.parseIdToken(tokenString)).toEqual({ diff --git a/packages/data-center/src/provider/affine/apis/auth.ts b/packages/data-center/src/provider/affine/apis/auth.ts index e84eedbcf1..22a256dde4 100644 --- a/packages/data-center/src/provider/affine/apis/auth.ts +++ b/packages/data-center/src/provider/affine/apis/auth.ts @@ -9,9 +9,9 @@ import { import type { User } from 'firebase/auth'; import { decode } from 'js-base64'; -import { getLogger } from '../../../logger.js'; -import { bareClient } from './request.js'; -import { storage } from '../storage.js'; +import { getLogger } from '../../../logger'; +import { bareClient } from './request'; +import { storage } from '../storage'; export interface AccessTokenMessage { created_at: number; diff --git a/packages/data-center/src/provider/affine/apis/index.ts b/packages/data-center/src/provider/affine/apis/index.ts index d96fc07c57..a8973793e5 100644 --- a/packages/data-center/src/provider/affine/apis/index.ts +++ b/packages/data-center/src/provider/affine/apis/index.ts @@ -1,10 +1,10 @@ // export { token } from './token.js'; -export type { Callback } from './auth.js'; +export type { Callback } from './auth'; -import { getAuthorizer } from './auth.js'; -import * as user from './user.js'; -import * as workspace from './workspace.js'; -import { auth } from './auth.js'; +import { getAuthorizer } from './auth'; +import * as user from './user'; +import * as workspace from './workspace'; +import { auth } from './auth'; // See https://twitter.com/mattpocockuk/status/1622730173446557697 // TODO: move to ts utils? @@ -37,4 +37,4 @@ export const getApis = (): Apis => { export type { AccessTokenMessage } from './auth'; export type { Member, Workspace, WorkspaceDetail } from './workspace'; -export { WorkspaceType } from './workspace.js'; +export { WorkspaceType } from './workspace'; diff --git a/packages/data-center/src/provider/affine/apis/request.ts b/packages/data-center/src/provider/affine/apis/request.ts index d904a67b26..91b3ccbab3 100644 --- a/packages/data-center/src/provider/affine/apis/request.ts +++ b/packages/data-center/src/provider/affine/apis/request.ts @@ -1,6 +1,6 @@ import ky from 'ky-universal'; -import { MessageCenter } from '../../../message/index.js'; -import { auth } from './auth.js'; +import { MessageCenter } from '../../../message'; +import { auth } from './auth'; type KyInstance = typeof ky; diff --git a/packages/data-center/src/provider/affine/apis/user.ts b/packages/data-center/src/provider/affine/apis/user.ts index 58ede20fc3..4a8827c6e8 100644 --- a/packages/data-center/src/provider/affine/apis/user.ts +++ b/packages/data-center/src/provider/affine/apis/user.ts @@ -1,4 +1,4 @@ -import { client } from './request.js'; +import { client } from './request'; export interface GetUserByEmailParams { email: string; diff --git a/packages/data-center/src/provider/affine/apis/workspace.ts b/packages/data-center/src/provider/affine/apis/workspace.ts index e04450ba14..89905e208c 100644 --- a/packages/data-center/src/provider/affine/apis/workspace.ts +++ b/packages/data-center/src/provider/affine/apis/workspace.ts @@ -1,5 +1,5 @@ -import { MessageCenter } from '../../../message/index.js'; -import { bareClient, client } from './request.js'; +import { MessageCenter } from '../../../message'; +import { bareClient, client } from './request'; import type { User } from './user'; const messageCenter = MessageCenter.getInstance(); diff --git a/packages/data-center/src/provider/affine/channel.ts b/packages/data-center/src/provider/affine/channel.ts index ce19a35acf..d646ed976f 100644 --- a/packages/data-center/src/provider/affine/channel.ts +++ b/packages/data-center/src/provider/affine/channel.ts @@ -1,7 +1,7 @@ import * as websocket from 'lib0/websocket'; -import { Logger } from 'src/types'; import { auth } from './apis/auth'; import * as url from 'lib0/url'; +import { Logger } from '../../types'; const RECONNECT_INTERVAL_TIME = 500; const MAX_RECONNECT_TIMES = 50; diff --git a/packages/data-center/src/provider/affine/idb-kv.ts b/packages/data-center/src/provider/affine/idb-kv.ts index 07a12272d8..48cb5c820f 100644 --- a/packages/data-center/src/provider/affine/idb-kv.ts +++ b/packages/data-center/src/provider/affine/idb-kv.ts @@ -1,5 +1,5 @@ import { createStore, keys, setMany, getMany, clear } from 'idb-keyval'; -import * as idb from 'lib0/indexeddb.js'; +import * as idb from 'lib0/indexeddb'; type IDBInstance = { keys: () => Promise; diff --git a/packages/data-center/src/provider/affine/utils.ts b/packages/data-center/src/provider/affine/utils.ts index 5028ab5755..5f98748b95 100644 --- a/packages/data-center/src/provider/affine/utils.ts +++ b/packages/data-center/src/provider/affine/utils.ts @@ -1,11 +1,11 @@ -import { WorkspaceUnit } from '../../workspace-unit.js'; +import { WorkspaceUnit } from '../../workspace-unit'; import type { WorkspaceUnitCtorParams } from '../../workspace-unit'; -import { createBlocksuiteWorkspace as _createBlocksuiteWorkspace } from '../../utils/index.js'; +import { createBlocksuiteWorkspace as _createBlocksuiteWorkspace } from '../../utils'; import type { Apis } from './apis'; -import { setDefaultAvatar } from '../utils.js'; -import { applyUpdate } from '../../utils/index.js'; -import { getDatabase } from './idb-kv.js'; -import { auth } from './apis/auth.js'; +import { setDefaultAvatar } from '../utils'; +import { applyUpdate } from '../../utils'; +import { getDatabase } from './idb-kv'; +import { auth } from './apis/auth'; export const createBlocksuiteWorkspaceWithAuth = async (id: string) => { if (auth.isExpired && auth.isLogin) { diff --git a/packages/data-center/src/provider/base.ts b/packages/data-center/src/provider/base.ts index 38d1cc4782..85c8ac4791 100644 --- a/packages/data-center/src/provider/base.ts +++ b/packages/data-center/src/provider/base.ts @@ -4,7 +4,7 @@ import { Logger, User } from '../types'; import type { WorkspaceUnitCollectionScope } from '../workspace-unit-collection'; import type { WorkspaceUnitCtorParams, WorkspaceUnit } from '../workspace-unit'; import { Member } from './affine/apis'; -import { Permission } from './affine/apis/workspace.js'; +import { Permission } from './affine/apis/workspace'; const defaultLogger = () => { return; diff --git a/packages/data-center/src/provider/local/index.ts b/packages/data-center/src/provider/local/index.ts index 19328281d4..0646cef75a 100644 --- a/packages/data-center/src/provider/local/index.ts +++ b/packages/data-center/src/provider/local/index.ts @@ -1 +1 @@ -export * from './local.js'; +export * from './local'; diff --git a/packages/data-center/src/provider/local/indexeddb/indexeddb.ts b/packages/data-center/src/provider/local/indexeddb/indexeddb.ts index cc79a7d906..24bc147051 100644 --- a/packages/data-center/src/provider/local/indexeddb/indexeddb.ts +++ b/packages/data-center/src/provider/local/indexeddb/indexeddb.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import * as idb from 'lib0/indexeddb.js'; -import { Observable } from 'lib0/observable.js'; +import * as idb from 'lib0/indexeddb'; +import { Observable } from 'lib0/observable'; import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store'; const customStoreName = 'custom'; diff --git a/packages/data-center/src/provider/local/indexeddb/utils.ts b/packages/data-center/src/provider/local/indexeddb/utils.ts index 68a4172eb3..04e93c0fcc 100644 --- a/packages/data-center/src/provider/local/indexeddb/utils.ts +++ b/packages/data-center/src/provider/local/indexeddb/utils.ts @@ -1,7 +1,7 @@ import assert from 'assert'; -import * as idb from 'lib0/indexeddb.js'; +import * as idb from 'lib0/indexeddb'; import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store'; -import { applyUpdate } from '../../../utils/index.js'; +import { applyUpdate } from '../../../utils'; const { encodeStateAsUpdate, mergeUpdates } = BlocksuiteWorkspace.Y; diff --git a/packages/data-center/src/provider/local/local.spec.ts b/packages/data-center/src/provider/local/local.spec.ts index ba9cb8b667..0346c5d050 100644 --- a/packages/data-center/src/provider/local/local.spec.ts +++ b/packages/data-center/src/provider/local/local.spec.ts @@ -1,11 +1,10 @@ -import { test, expect } from '@playwright/test'; -import { WorkspaceUnitCollection } from '../../workspace-unit-collection.js'; -import { LocalProvider } from './local.js'; -import { createBlocksuiteWorkspace } from '../../utils/index.js'; -import { MessageCenter } from '../../message/index.js'; +import { test, describe, expect } from 'vitest'; +import { WorkspaceUnitCollection } from '../../workspace-unit-collection'; +import { LocalProvider } from './local'; +import { MessageCenter } from '../../message'; import 'fake-indexeddb/auto'; -test.describe.serial('local provider', () => { +describe('local provider', () => { const workspaceMetaCollection = new WorkspaceUnitCollection(); const provider = new LocalProvider({ workspaces: workspaceMetaCollection.createScope(), diff --git a/packages/data-center/src/provider/local/local.ts b/packages/data-center/src/provider/local/local.ts index 9a3726b8f4..080a80f408 100644 --- a/packages/data-center/src/provider/local/local.ts +++ b/packages/data-center/src/provider/local/local.ts @@ -1,4 +1,4 @@ -import { BaseProvider } from '../base.js'; +import { BaseProvider } from '../base'; import type { ProviderConstructorParams, WorkspaceMeta0, @@ -7,10 +7,10 @@ import type { } from '../base'; import { varStorage as storage } from 'lib0/storage'; import { Workspace as BlocksuiteWorkspace, uuidv4 } from '@blocksuite/store'; -import { IndexedDBProvider } from './indexeddb/indexeddb.js'; -import { applyLocalUpdates } from './indexeddb/utils.js'; +import { IndexedDBProvider } from './indexeddb/indexeddb'; +import { applyLocalUpdates } from './indexeddb/utils'; import assert from 'assert'; -import { loadWorkspaceUnit, createWorkspaceUnit } from './utils.js'; +import { loadWorkspaceUnit, createWorkspaceUnit } from './utils'; import type { WorkspaceUnit } from '../../workspace-unit'; const WORKSPACE_KEY = 'workspaces'; diff --git a/packages/data-center/src/provider/local/utils.ts b/packages/data-center/src/provider/local/utils.ts index 2bf7fd06f4..69fc23b361 100644 --- a/packages/data-center/src/provider/local/utils.ts +++ b/packages/data-center/src/provider/local/utils.ts @@ -1,8 +1,8 @@ -import { WorkspaceUnit } from '../../workspace-unit.js'; +import { WorkspaceUnit } from '../../workspace-unit'; import type { WorkspaceUnitCtorParams } from '../../workspace-unit'; -import { createBlocksuiteWorkspace } from '../../utils/index.js'; -import { applyLocalUpdates, writeUpdatesToLocal } from './indexeddb/utils.js'; -import { setDefaultAvatar } from '../utils.js'; +import { createBlocksuiteWorkspace } from '../../utils'; +import { applyLocalUpdates, writeUpdatesToLocal } from './indexeddb/utils'; +import { setDefaultAvatar } from '../utils'; export const loadWorkspaceUnit = async (params: WorkspaceUnitCtorParams) => { const workspaceUnit = new WorkspaceUnit(params); diff --git a/packages/data-center/src/provider/tauri-ipc/__tests__/tauri-ipc.spec.ts b/packages/data-center/src/provider/tauri-ipc/__tests__/tauri-ipc.spec.ts index 58bd53163c..f27e6359ff 100644 --- a/packages/data-center/src/provider/tauri-ipc/__tests__/tauri-ipc.spec.ts +++ b/packages/data-center/src/provider/tauri-ipc/__tests__/tauri-ipc.spec.ts @@ -1,12 +1,12 @@ -import { test, expect } from '@playwright/test'; -import { WorkspaceUnitCollection } from '../../../workspace-unit-collection.js'; -import { TauriIPCProvider } from '../index.js'; -import { MessageCenter } from '../../../message/index.js'; -import * as ipcMethods from './mock-apis.js'; +import { describe, test, expect } from 'vitest'; +import { WorkspaceUnitCollection } from '../../../workspace-unit-collection'; +import { TauriIPCProvider } from '..'; +import { MessageCenter } from '../../../message'; +import * as ipcMethods from './mock-apis'; import 'fake-indexeddb/auto'; -test.describe.serial('tauri-ipc provider', async () => { +describe('tauri-ipc provider', async () => { const workspaceMetaCollection = new WorkspaceUnitCollection(); const provider = new TauriIPCProvider({ workspaces: workspaceMetaCollection.createScope(), diff --git a/packages/data-center/src/provider/tauri-ipc/blocksuite-provider/blob.ts b/packages/data-center/src/provider/tauri-ipc/blocksuite-provider/blob.ts index 23994590e8..db56602adc 100644 --- a/packages/data-center/src/provider/tauri-ipc/blocksuite-provider/blob.ts +++ b/packages/data-center/src/provider/tauri-ipc/blocksuite-provider/blob.ts @@ -1,12 +1,12 @@ import { BlobSyncState } from '@blocksuite/store'; -import * as ipcMethods from '../ipc/methods.js'; +import * as ipcMethods from '../ipc/methods'; import { Signal } from '@blocksuite/store'; import type { BlobProvider, BlobSyncStateChangeEvent, BlobId, BlobURL, -} from '@blocksuite/store/dist/persistence/blob/types.js'; +} from '@blocksuite/store/dist/persistence/blob/types'; export class IPCBlobProvider implements BlobProvider { #ipc = ipcMethods; diff --git a/packages/data-center/src/provider/tauri-ipc/index.ts b/packages/data-center/src/provider/tauri-ipc/index.ts index b6e8919cc7..1fc8b07a59 100644 --- a/packages/data-center/src/provider/tauri-ipc/index.ts +++ b/packages/data-center/src/provider/tauri-ipc/index.ts @@ -1,20 +1,17 @@ import * as Y from 'yjs'; import assert from 'assert'; -import { LocalProvider } from '../local/index.js'; -import type { IPCMethodsType } from './ipc/methods.js'; -import { - CreateWorkspaceInfoParams, - ProviderConstructorParams, -} from '../base.js'; +import { LocalProvider } from '../local'; +import type { IPCMethodsType } from './ipc/methods'; +import { CreateWorkspaceInfoParams, ProviderConstructorParams } from '../base'; import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store'; -import { IPCBlobProvider } from './blocksuite-provider/blob.js'; -import type { WorkspaceUnit } from 'src/workspace-unit.js'; -import { loadWorkspaceUnit } from '../local/utils.js'; -import { WorkspaceWithPermission } from './ipc/types/workspace.js'; -import { applyUpdate } from '../../utils/index.js'; -import { User } from 'src/types/index.js'; -import { createWorkspaceUnit } from './utils.js'; +import { IPCBlobProvider } from './blocksuite-provider/blob'; +import type { WorkspaceUnit } from '../../workspace-unit'; +import { loadWorkspaceUnit } from '../local/utils'; +import { WorkspaceWithPermission } from './ipc/types/workspace'; +import { applyUpdate } from '../../utils'; +import { User } from '../../types'; +import { createWorkspaceUnit } from './utils'; /** * init - createUser - create first workspace and ydoc - loadWorkspace - return the first workspace - wrapWorkspace - #initDocFromIPC - applyUpdate - on('update') - updateYDocument @@ -38,7 +35,7 @@ export class TauriIPCProvider extends LocalProvider { if (ipc) { this.#ipc = ipc; } else { - this.#ipc = await import('./ipc/methods.js'); + this.#ipc = await import('./ipc/methods'); } try { const user = await this.#ipc?.getUser({ diff --git a/packages/data-center/src/provider/tauri-ipc/utils.ts b/packages/data-center/src/provider/tauri-ipc/utils.ts index 5ec1c769d6..18eea5652c 100644 --- a/packages/data-center/src/provider/tauri-ipc/utils.ts +++ b/packages/data-center/src/provider/tauri-ipc/utils.ts @@ -1,8 +1,8 @@ -import { WorkspaceUnit } from '../../workspace-unit.js'; +import { WorkspaceUnit } from '../../workspace-unit'; import type { WorkspaceUnitCtorParams } from '../../workspace-unit'; -import { createBlocksuiteWorkspace } from '../../utils/index.js'; -import { setDefaultAvatar } from '../utils.js'; -import { IPCBlobProvider } from './blocksuite-provider/blob.js'; +import { createBlocksuiteWorkspace } from '../../utils'; +import { setDefaultAvatar } from '../utils'; +import { IPCBlobProvider } from './blocksuite-provider/blob'; export const createWorkspaceUnit = async (params: WorkspaceUnitCtorParams) => { const workspaceUnit = new WorkspaceUnit(params); diff --git a/packages/data-center/src/provider/utils.ts b/packages/data-center/src/provider/utils.ts index c193719cc2..587293697d 100644 --- a/packages/data-center/src/provider/utils.ts +++ b/packages/data-center/src/provider/utils.ts @@ -1,6 +1,6 @@ import assert from 'assert'; import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store'; -import { getDefaultHeadImgBlob } from '../utils/index.js'; +import { getDefaultHeadImgBlob } from '../utils'; export const setDefaultAvatar = async ( blocksuiteWorkspace: BlocksuiteWorkspace diff --git a/packages/data-center/src/workspace-unit-collection.spec.ts b/packages/data-center/src/workspace-unit-collection.spec.ts index 93f0027a1c..49c25bc7d7 100644 --- a/packages/data-center/src/workspace-unit-collection.spec.ts +++ b/packages/data-center/src/workspace-unit-collection.spec.ts @@ -1,9 +1,9 @@ -import { test, expect } from '@playwright/test'; -import { WorkspaceUnitCollection } from './workspace-unit-collection.js'; +import { describe, test, expect } from 'vitest'; +import { WorkspaceUnitCollection } from './workspace-unit-collection'; import type { WorkspaceUnitCollectionChangeEvent } from './workspace-unit-collection'; -import { WorkspaceUnit } from './workspace-unit.js'; +import { WorkspaceUnit } from './workspace-unit'; -test.describe.serial('workspace meta collection observable', () => { +describe('workspace meta collection observable', () => { const workspaceUnitCollection = new WorkspaceUnitCollection(); const scope = workspaceUnitCollection.createScope(); diff --git a/packages/data-center/tsconfig.json b/packages/data-center/tsconfig.json index c7f6a03f40..9b54c0195b 100644 --- a/packages/data-center/tsconfig.json +++ b/packages/data-center/tsconfig.json @@ -9,7 +9,7 @@ "noEmit": false, "esModuleInterop": true, "module": "ESNext", - "moduleResolution": "node", + "moduleResolution": "Node", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", diff --git a/packages/logger/package.json b/packages/logger/package.json index e0295266b0..fdb3990f68 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -2,11 +2,7 @@ "name": "@affine/logger", "version": "0.3.0", "description": "", - "main": "dist/src/index.js", - "types": "dist/src/index.d.ts", - "exports": { - ".": "./dist/src/index.js" - }, + "main": "./src/index.ts", "scripts": { "dev": "next dev", "build": "tsc --project ./tsconfig.json" diff --git a/playwright.config.unit.ts b/playwright.config.unit.ts deleted file mode 100644 index 69150b1426..0000000000 --- a/playwright.config.unit.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * For unit tests. - */ -import type { PlaywrightTestConfig } from '@playwright/test'; - -const config: PlaywrightTestConfig = { - testDir: './packages/', - timeout: 30 * 1000, - expect: { - /** - * Maximum time expect() should wait for the condition to be met. - * For example in `await expect(locator).toHaveText();` - */ - timeout: 5000, - }, - fullyParallel: true, - forbidOnly: !!process.env.CI, - retries: process.env.CI ? 2 : 0, - workers: process.env.CI ? 1 : undefined, - use: { - actionTimeout: 0, - - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', - }, - - // 'github' for GitHub Actions CI to generate annotations, plus a concise 'dot' - // default 'list' when running locally - // See https://playwright.dev/docs/test-reporters#github-actions-annotations - reporter: process.env.CI ? 'github' : 'list', -}; - -export default config; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7cdc913361..dfde1c9511 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,6 +18,7 @@ importers: '@types/node': ^18.11.17 '@typescript-eslint/eslint-plugin': ^5.47.0 '@typescript-eslint/parser': ^5.47.0 + '@vitest/coverage-istanbul': ^0.28.5 concurrently: ^7.6.0 cross-env: ^7.0.3 eslint: ^8.30.0 @@ -31,6 +32,7 @@ importers: nyc: ^15.1.0 prettier: ^2.7.1 typescript: ^4.9.5 + vitest: ^0.28.5 devDependencies: '@changesets/cli': 2.26.0 '@playwright/test': 1.29.1 @@ -38,6 +40,7 @@ importers: '@types/node': 18.11.18 '@typescript-eslint/eslint-plugin': 5.48.0_vqm4js66qtp4h6afqe3btrngbi '@typescript-eslint/parser': 5.48.0_ifw3q4r6iq3gw7cspzs2siycvu + '@vitest/coverage-istanbul': 0.28.5 concurrently: 7.6.0 cross-env: 7.0.3 eslint: 8.31.0 @@ -51,6 +54,7 @@ importers: nyc: 15.1.0 prettier: 2.7.1 typescript: 4.9.5 + vitest: 0.28.5 apps/desktop: specifiers: @@ -317,7 +321,6 @@ importers: specifiers: '@blocksuite/blocks': 0.4.0-20230216093909-90a4996 '@blocksuite/store': 0.4.0-20230216093909-90a4996 - '@playwright/test': ^1.29.1 '@tauri-apps/api': ^1.2.0 '@types/debug': ^4.1.7 debug: ^4.3.4 @@ -349,7 +352,6 @@ importers: swr: 2.0.0 y-protocols: 1.0.5 devDependencies: - '@playwright/test': 1.29.1 '@types/debug': 4.1.7 fake-indexeddb: 4.0.1 lit: 2.6.1 @@ -438,7 +440,7 @@ packages: '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-module-transforms': 7.20.11 '@babel/helpers': 7.20.13 - '@babel/parser': 7.20.7 + '@babel/parser': 7.20.15 '@babel/template': 7.20.7 '@babel/traverse': 7.20.13 '@babel/types': 7.20.7 @@ -2656,27 +2658,6 @@ packages: - yjs dev: false - /@blocksuite/blocks/0.4.0-20230216011811-2776d93_trq6tjva7swiv4fhloorah5nty: - resolution: {integrity: sha512-OCbf+nbxZyjWcXfRqBMVKUpFUXSj5HY2BpWMNN68IsbAI09zFiNPH0KuMi72uHyFN+/NucoZGwZH21EgXB+s7g==} - peerDependencies: - '@blocksuite/store': 0.4.0-20230216011811-2776d93 - dependencies: - '@blocksuite/global': 0.4.0-20230216011811-2776d93_lit@2.6.1 - '@blocksuite/phasor': 0.4.0-20230216011811-2776d93_lit@2.6.1+yjs@13.5.45 - '@blocksuite/store': 0.4.0-20230216011811-2776d93_lit@2.6.1+yjs@13.5.45 - '@blocksuite/virgo': 0.4.0-20230216011811-2776d93_lit@2.6.1+yjs@13.5.45 - '@popperjs/core': 2.11.6 - autosize: 6.0.1 - highlight.js: 11.7.0 - hotkeys-js: 3.10.1 - lit: 2.6.1 - quill: 1.3.7 - quill-cursors: 4.0.2 - zod: 3.20.6 - transitivePeerDependencies: - - yjs - dev: false - /@blocksuite/blocks/0.4.0-20230216093909-90a4996_5yoqn4hrdzbvxh2iy2djsrhmqe: resolution: {integrity: sha512-h4Rv3m5mq2loXcGovpnGMixOu4nWI3LBcqxR/bO6gquiaMcwzmHjfJsuuA075YEvHdnL2wtR4Mxsd/63F5nB4Q==} peerDependencies: @@ -2704,9 +2685,9 @@ packages: '@blocksuite/blocks': 0.4.0-20230216011811-2776d93 '@blocksuite/store': 0.4.0-20230216011811-2776d93 dependencies: - '@blocksuite/blocks': 0.4.0-20230216011811-2776d93_trq6tjva7swiv4fhloorah5nty + '@blocksuite/blocks': 0.4.0-20230216011811-2776d93_agtz32e5txbljk4aobo36wfrpe '@blocksuite/global': 0.4.0-20230216011811-2776d93_lit@2.6.1 - '@blocksuite/store': 0.4.0-20230216011811-2776d93_lit@2.6.1+yjs@13.5.45 + '@blocksuite/store': 0.4.0-20230216011811-2776d93_lit@2.6.1 lit: 2.6.1 marked: 4.2.12 turndown: 7.1.1 @@ -2807,20 +2788,6 @@ packages: - lit dev: false - /@blocksuite/phasor/0.4.0-20230216011811-2776d93_lit@2.6.1+yjs@13.5.45: - resolution: {integrity: sha512-fY5XLFIOKZlCMLb093ZHRAjhnkEaJK9vJsh8Asib/hGc0PaDqu65FIM3zXR6YAAKsgKEIu8SVK1B7n+gH82Ugg==} - peerDependencies: - yjs: ^13 - dependencies: - '@blocksuite/global': 0.4.0-20230216011811-2776d93_lit@2.6.1 - fractional-indexing: 3.2.0 - nanoid: 4.0.1 - perfect-freehand: 1.2.0 - yjs: 13.5.45 - transitivePeerDependencies: - - lit - dev: false - /@blocksuite/phasor/0.4.0-20230216093909-90a4996_lit@2.6.1+yjs@13.5.45: resolution: {integrity: sha512-YzcOj17aVW93UQw3BeI9qxvkzggLMZgMywhk7xBJqiDorU3YVUkb4pEauVoC2oKx86p8NkT5kpWNYR+IvxLe5A==} peerDependencies: @@ -2881,32 +2848,6 @@ packages: - utf-8-validate dev: false - /@blocksuite/store/0.4.0-20230216011811-2776d93_lit@2.6.1+yjs@13.5.45: - resolution: {integrity: sha512-UO5ipKxqfeW4MceW+nU5DkSpqXlm3sostGWx5GOl8AxWxqIjUIgOasTegqTZaR2hEUbYeqCzpuQWEERH+Fp5xQ==} - peerDependencies: - yjs: ^13 - dependencies: - '@blocksuite/global': 0.4.0-20230216011811-2776d93_lit@2.6.1 - '@blocksuite/virgo': 0.4.0-20230216011811-2776d93_lit@2.6.1+yjs@13.5.45 - '@types/flexsearch': 0.7.3 - buffer: 6.0.3 - flexsearch: 0.7.21 - idb-keyval: 6.2.0 - ky: 0.33.2 - lib0: 0.2.62 - merge: 2.1.1 - nanoid: 4.0.1 - y-protocols: 1.0.5 - y-webrtc: 10.2.4 - yjs: 13.5.45 - zod: 3.20.6 - transitivePeerDependencies: - - bufferutil - - lit - - supports-color - - utf-8-validate - dev: false - /@blocksuite/store/0.4.0-20230216011811-2776d93_yjs@13.5.45: resolution: {integrity: sha512-UO5ipKxqfeW4MceW+nU5DkSpqXlm3sostGWx5GOl8AxWxqIjUIgOasTegqTZaR2hEUbYeqCzpuQWEERH+Fp5xQ==} peerDependencies: @@ -2970,18 +2911,6 @@ packages: zod: 3.20.6 dev: false - /@blocksuite/virgo/0.4.0-20230216011811-2776d93_lit@2.6.1+yjs@13.5.45: - resolution: {integrity: sha512-R0jIeVa0LDw/ZGFY7X354l9F+RUyGOA8vq3RKttNIYK9pueBOdNv3yqavj/FQu5mGMX9v4HYm9AoZLr6dvWQ6Q==} - peerDependencies: - lit: ^2 - yjs: ^13 - dependencies: - '@blocksuite/global': 0.4.0-20230216011811-2776d93_lit@2.6.1 - lit: 2.6.1 - yjs: 13.5.45 - zod: 3.20.6 - dev: false - /@blocksuite/virgo/0.4.0-20230216011811-2776d93_yjs@13.5.45: resolution: {integrity: sha512-R0jIeVa0LDw/ZGFY7X354l9F+RUyGOA8vq3RKttNIYK9pueBOdNv3yqavj/FQu5mGMX9v4HYm9AoZLr6dvWQ6Q==} peerDependencies: @@ -5560,7 +5489,7 @@ packages: dependencies: '@storybook/client-logger': 7.0.0-beta.46 '@storybook/core-events': 7.0.0-beta.46 - '@storybook/csf': 0.0.2-next.8 + '@storybook/csf': 0.0.2-next.10 '@storybook/global': 5.0.0 '@storybook/manager-api': 7.0.0-beta.46_biqbaboplfbrettd7655fr4n2y '@storybook/preview-api': 7.0.0-beta.46 @@ -5681,7 +5610,7 @@ packages: '@storybook/client-logger': 7.0.0-beta.46 '@storybook/components': 7.0.0-beta.46_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 7.0.0-beta.46 - '@storybook/csf': 0.0.2-next.8 + '@storybook/csf': 0.0.2-next.10 '@storybook/docs-tools': 7.0.0-beta.46 '@storybook/global': 5.0.0 '@storybook/manager-api': 7.0.0-beta.46_biqbaboplfbrettd7655fr4n2y @@ -5850,7 +5779,7 @@ packages: '@babel/core': 7.20.12 '@babel/preset-env': 7.20.2_@babel+core@7.20.12 '@babel/types': 7.20.7 - '@storybook/csf': 0.0.2-next.8 + '@storybook/csf': 0.0.2-next.10 '@storybook/csf-tools': 7.0.0-beta.46 '@storybook/node-logger': 7.0.0-beta.46 '@storybook/types': 7.0.0-beta.46 @@ -5872,7 +5801,7 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/client-logger': 7.0.0-beta.46 - '@storybook/csf': 0.0.2-next.8 + '@storybook/csf': 0.0.2-next.10 '@storybook/global': 5.0.0 '@storybook/theming': 7.0.0-beta.46_biqbaboplfbrettd7655fr4n2y '@storybook/types': 7.0.0-beta.46 @@ -5937,7 +5866,7 @@ packages: '@storybook/builder-manager': 7.0.0-beta.46 '@storybook/core-common': 7.0.0-beta.46 '@storybook/core-events': 7.0.0-beta.46 - '@storybook/csf': 0.0.2-next.8 + '@storybook/csf': 0.0.2-next.10 '@storybook/csf-tools': 7.0.0-beta.46 '@storybook/docs-mdx': 0.0.1-next.6 '@storybook/global': 5.0.0 @@ -5995,7 +5924,7 @@ packages: resolution: {integrity: sha512-H7zXfL1wf/1jWi5MaFISt/taxE41fgpV/uLfi5CHcHLX9ZgeQs2B/2utpUgwvBsxiL+E/jKAt5cLeuZCIvglMg==} dependencies: '@babel/types': 7.20.7 - '@storybook/csf': 0.0.2-next.8 + '@storybook/csf': 0.0.2-next.10 '@storybook/types': 7.0.0-beta.46 fs-extra: 11.1.0 recast: 0.23.1 @@ -6004,11 +5933,9 @@ packages: - supports-color dev: true - /@storybook/csf/0.0.2-next.8: - resolution: {integrity: sha512-3T6rflW7D9q1iXOR+bidwoNbd9rVUTyjYH/sqsnYjbXhb/aOXsQzGKwNeq9QqZIFVpKfg5BoOF5i7DCMtoGknQ==} + /@storybook/csf/0.0.2-next.10: + resolution: {integrity: sha512-m2PFgBP/xRIF85VrDhvesn9ktaD2pN3VUjvMqkAL/cINp/3qXsCyI81uw7N5VEOkQAbWrY2FcydnvEPDEdE8fA==} dependencies: - expect-type: 0.14.2 - lodash: 4.17.21 type-fest: 2.19.0 dev: true @@ -6043,7 +5970,7 @@ packages: '@storybook/channels': 7.0.0-beta.46 '@storybook/client-logger': 7.0.0-beta.46 '@storybook/core-events': 7.0.0-beta.46 - '@storybook/csf': 0.0.2-next.8 + '@storybook/csf': 0.0.2-next.10 '@storybook/global': 5.0.0 '@storybook/router': 7.0.0-beta.46_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 7.0.0-beta.46_biqbaboplfbrettd7655fr4n2y @@ -6089,7 +6016,7 @@ packages: '@storybook/channels': 7.0.0-beta.46 '@storybook/client-logger': 7.0.0-beta.46 '@storybook/core-events': 7.0.0-beta.46 - '@storybook/csf': 0.0.2-next.8 + '@storybook/csf': 0.0.2-next.10 '@storybook/global': 5.0.0 '@storybook/types': 7.0.0-beta.46 '@types/qs': 6.9.7 @@ -6559,6 +6486,16 @@ packages: '@types/responselike': 1.0.0 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: true + + /@types/chai/4.3.4: + resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} + dev: true + /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: @@ -7273,6 +7210,62 @@ packages: - supports-color dev: true + /@vitest/coverage-istanbul/0.28.5: + resolution: {integrity: sha512-na1pkr3AVrdFflzuBXsBh1MvBfhSMrv4nfd4N8rm0HEJlvlbQc+GiqNwtwzfO8TPsXxcjNphSIMp5wvCy+0xrQ==} + dependencies: + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + test-exclude: 6.0.0 + vitest: 0.28.5 + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@vitest/browser' + - '@vitest/ui' + - happy-dom + - jsdom + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /@vitest/expect/0.28.5: + resolution: {integrity: sha512-gqTZwoUTwepwGIatnw4UKpQfnoyV0Z9Czn9+Lo2/jLIt4/AXLTn+oVZxlQ7Ng8bzcNkR+3DqLJ08kNr8jRmdNQ==} + dependencies: + '@vitest/spy': 0.28.5 + '@vitest/utils': 0.28.5 + chai: 4.3.7 + dev: true + + /@vitest/runner/0.28.5: + resolution: {integrity: sha512-NKkHtLB+FGjpp5KmneQjTcPLWPTDfB7ie+MmF1PnUBf/tGe2OjGxWyB62ySYZ25EYp9krR5Bw0YPLS/VWh1QiA==} + dependencies: + '@vitest/utils': 0.28.5 + p-limit: 4.0.0 + pathe: 1.1.0 + dev: true + + /@vitest/spy/0.28.5: + resolution: {integrity: sha512-7if6rsHQr9zbmvxN7h+gGh2L9eIIErgf8nSKYDlg07HHimCxp4H6I/X/DPXktVPPLQfiZ1Cw2cbDIx9fSqDjGw==} + dependencies: + tinyspy: 1.1.1 + dev: true + + /@vitest/utils/0.28.5: + resolution: {integrity: sha512-UyZdYwdULlOa4LTUSwZ+Paz7nBHGTT72jKwdFSV4IjHF1xsokp+CabMdhjvVhYwkLfO88ylJT46YMilnkSARZA==} + dependencies: + cli-truncate: 3.1.0 + diff: 5.1.0 + loupe: 2.3.6 + picocolors: 1.0.0 + pretty-format: 27.5.1 + dev: true + /@webassemblyjs/ast/1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: @@ -7458,6 +7451,12 @@ packages: hasBin: true dev: true + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /address/1.2.2: resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} @@ -7549,6 +7548,11 @@ packages: dependencies: color-convert: 2.0.1 + /ansi-styles/5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + /ansi-styles/6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -7709,6 +7713,10 @@ packages: util: 0.12.5 dev: true + /assertion-error/1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + /ast-types-flow/0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true @@ -8131,6 +8139,11 @@ packages: yargs-parser: 20.2.9 dev: true + /cac/6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + /cacheable-lookup/5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} @@ -8220,6 +8233,19 @@ 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: true + /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -8245,6 +8271,10 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true + /check-error/1.0.2: + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + dev: true + /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -8508,7 +8538,7 @@ packages: dev: true /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} /concat-stream/1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} @@ -8734,6 +8764,13 @@ packages: mimic-response: 3.1.0 dev: true + /deep-eql/4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + /deep-equal/1.1.1: resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} dependencies: @@ -8878,6 +8915,11 @@ packages: engines: {node: '>=0.3.1'} dev: true + /diff/5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + dev: true + /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -10348,10 +10390,6 @@ packages: pify: 2.3.0 dev: true - /expect-type/0.14.2: - resolution: {integrity: sha512-ed3+tr5ujbIYXZ8Pl/VgIphwJQ0q5tBLGGdn7Zvwt1WyPBRX83xjT5pT77P/GkuQbctx0K2ZNSSan7eruJqTCQ==} - dev: true - /express/4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} @@ -10879,6 +10917,10 @@ 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: true + /get-intrinsic/1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: @@ -11771,7 +11813,7 @@ packages: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -12035,6 +12077,10 @@ packages: hasBin: true dev: true + /jsonc-parser/3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -12253,6 +12299,11 @@ packages: json5: 2.2.3 dev: true + /local-pkg/0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + /locate-path/3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -12333,6 +12384,12 @@ 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: true + /lower-case/2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: @@ -12642,6 +12699,15 @@ packages: engines: {node: '>=10'} hasBin: true + /mlly/1.1.1: + resolution: {integrity: sha512-Jnlh4W/aI4GySPo6+DyTN17Q75KKbLTyFK8BrGhjNP4rxuUjbRWhE6gHg3bs33URWAF44FRm7gdQA348i3XxRw==} + dependencies: + acorn: 8.8.2 + pathe: 1.1.0 + pkg-types: 1.0.2 + ufo: 1.1.0 + dev: true + /mri/1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -13244,6 +13310,13 @@ packages: yocto-queue: 0.1.0 dev: true + /p-limit/4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate/3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -13378,6 +13451,10 @@ packages: resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} dev: true + /pathval/1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /pause-stream/0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} dependencies: @@ -13459,6 +13536,14 @@ packages: find-up: 5.0.0 dev: true + /pkg-types/1.0.2: + resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.1.1 + pathe: 1.1.0 + dev: true + /playwright-core/1.29.1: resolution: {integrity: sha512-20Ai3d+lMkWpI9YZYlxk8gxatfgax5STW8GaMozAHwigLiyiKQrdkt7gaoT9UQR8FIVDg6qVXs9IoZUQrDjIIg==} engines: {node: '>=14'} @@ -13536,6 +13621,15 @@ packages: engines: {node: '>=6'} dev: true + /pretty-format/27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + /pretty-hrtime/1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} @@ -13837,6 +13931,10 @@ packages: /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + /react-is/17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true + /react-is/18.1.0: resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} dev: true @@ -14495,6 +14593,10 @@ packages: object-inspect: 1.12.2 dev: true + /siginfo/2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true @@ -14688,11 +14790,19 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true + /stackback/0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + /statuses/2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} dev: true + /std-env/3.3.2: + resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} + dev: true + /store2/2.14.2: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} dev: true @@ -14870,6 +14980,12 @@ packages: engines: {node: '>=8'} dev: true + /strip-literal/1.0.1: + resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} + dependencies: + acorn: 8.8.2 + dev: true + /strip-outer/2.0.0: resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -15151,6 +15267,20 @@ packages: globrex: 0.1.2 dev: true + /tinybench/2.3.1: + resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} + dev: true + + /tinypool/0.3.1: + resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy/1.1.1: + resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} + engines: {node: '>=14.0.0'} + dev: true + /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -15314,6 +15444,11 @@ packages: prelude-ls: 1.2.1 dev: true + /type-detect/4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + /type-fest/0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} @@ -15420,6 +15555,10 @@ packages: - debug dev: true + /ufo/1.1.0: + resolution: {integrity: sha512-LQc2s/ZDMaCN3QLpa+uzHUOQ7SdV0qgv3VBXOolQGXTaaZpIur6PwUclF5nN2hNkiTRcUugXd1zFOW3FLJ135Q==} + dev: true + /uglify-js/3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} @@ -15653,6 +15792,29 @@ packages: engines: {node: '>= 0.8'} dev: true + /vite-node/0.28.5_@types+node@18.11.18: + resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==} + engines: {node: '>=v14.16.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.1.1 + pathe: 1.1.0 + picocolors: 1.0.0 + source-map: 0.6.1 + source-map-support: 0.5.21 + vite: 4.1.1_@types+node@18.11.18 + transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vite/4.1.1: resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -15720,6 +15882,61 @@ packages: fsevents: 2.3.2 dev: true + /vitest/0.28.5: + resolution: {integrity: sha512-pyCQ+wcAOX7mKMcBNkzDwEHRGqQvHUl0XnoHR+3Pb1hytAHISgSxv9h0gUiSiYtISXUU3rMrKiKzFYDrI6ZIHA==} + 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 + '@vitest/expect': 0.28.5 + '@vitest/runner': 0.28.5 + '@vitest/spy': 0.28.5 + '@vitest/utils': 0.28.5 + acorn: 8.8.2 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.7 + debug: 4.3.4 + local-pkg: 0.4.3 + pathe: 1.1.0 + picocolors: 1.0.0 + source-map: 0.6.1 + std-env: 3.3.2 + strip-literal: 1.0.1 + tinybench: 2.3.1 + tinypool: 0.3.1 + tinyspy: 1.1.1 + vite: 4.1.1_@types+node@18.11.18 + vite-node: 0.28.5_@types+node@18.11.18 + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /void-elements/3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} @@ -15903,6 +16120,15 @@ packages: isexe: 2.0.0 dev: true + /why-is-node-running/2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + /wide-align/1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: @@ -16313,6 +16539,11 @@ packages: engines: {node: '>=10'} dev: true + /yocto-queue/1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + /zod/3.20.6: resolution: {integrity: sha512-oyu0m54SGCtzh6EClBVqDDlAYRz4jrVtKwQ7ZnsEmMI9HnzuZFj8QFwAY1M5uniIYACdGvv0PBWPF2kO0aNofA==} dev: false diff --git a/tests/change-page-mode.spec.ts b/tests/change-page-mode.spec.ts index 0ebe5669e0..f504dc7c82 100644 --- a/tests/change-page-mode.spec.ts +++ b/tests/change-page-mode.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { clickPageMoreActions } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { clickPageMoreActions } from './libs/page-logic'; loadPage(); test.describe('Change page mode(Paper or Edgeless)', () => { diff --git a/tests/console.spec.ts b/tests/console.spec.ts index 370867afaf..88a61e4e7b 100644 --- a/tests/console.spec.ts +++ b/tests/console.spec.ts @@ -1,12 +1,9 @@ import fs from 'fs'; import path from 'path'; import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { fileURLToPath } from 'url'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); const pkgPath = path.join(__dirname, '../apps/web/package.json'); const record = fs.readFileSync(pkgPath, 'utf8'); const temp = JSON.parse(record); diff --git a/tests/contact-us.spec.ts b/tests/contact-us.spec.ts index c815eeb507..62e9fa23e7 100644 --- a/tests/contact-us.spec.ts +++ b/tests/contact-us.spec.ts @@ -1,6 +1,6 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; loadPage(); diff --git a/tests/exception-page.spec.ts b/tests/exception-page.spec.ts index b7746fe861..98720f7a9c 100644 --- a/tests/exception-page.spec.ts +++ b/tests/exception-page.spec.ts @@ -1,6 +1,6 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; loadPage(); diff --git a/tests/invite-code-page.spec.ts b/tests/invite-code-page.spec.ts index 05cce9d419..116cc01cc6 100644 --- a/tests/invite-code-page.spec.ts +++ b/tests/invite-code-page.spec.ts @@ -1,6 +1,6 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; loadPage(); diff --git a/tests/layout.spec.ts b/tests/layout.spec.ts index e3937676c9..16aedb56d0 100644 --- a/tests/layout.spec.ts +++ b/tests/layout.spec.ts @@ -1,6 +1,6 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; loadPage(); diff --git a/tests/local-first-delete-page.spec.ts b/tests/local-first-delete-page.spec.ts index 14fb54d86c..2218cd6846 100644 --- a/tests/local-first-delete-page.spec.ts +++ b/tests/local-first-delete-page.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { newPage } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { newPage } from './libs/page-logic'; loadPage(); diff --git a/tests/local-first-export-page.spec.ts b/tests/local-first-export-page.spec.ts index 08579b3a39..2c6db7f640 100644 --- a/tests/local-first-export-page.spec.ts +++ b/tests/local-first-export-page.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { newPage, clickPageMoreActions } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { newPage, clickPageMoreActions } from './libs/page-logic'; loadPage(); test.describe('Local first export page', () => { diff --git a/tests/local-first-favorite-page.spec.ts b/tests/local-first-favorite-page.spec.ts index afb30372bc..99fce26f07 100644 --- a/tests/local-first-favorite-page.spec.ts +++ b/tests/local-first-favorite-page.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { newPage, clickPageMoreActions } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { newPage, clickPageMoreActions } from './libs/page-logic'; loadPage(); test.describe('Local first favorite and cancel favorite page', () => { diff --git a/tests/local-first-favorites-items.spec.ts b/tests/local-first-favorites-items.spec.ts index 8a4b1b9d5d..34b67223f7 100644 --- a/tests/local-first-favorites-items.spec.ts +++ b/tests/local-first-favorites-items.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { newPage, clickPageMoreActions } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { newPage, clickPageMoreActions } from './libs/page-logic'; loadPage(); test.describe('Local first favorite items ui', () => { diff --git a/tests/local-first-new-page.spec.ts b/tests/local-first-new-page.spec.ts index 03e62b805c..4efd359a6b 100644 --- a/tests/local-first-new-page.spec.ts +++ b/tests/local-first-new-page.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { newPage } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { newPage } from './libs/page-logic'; loadPage(); test.describe('local first new page', () => { diff --git a/tests/local-first-openpage-newtab.spec.ts b/tests/local-first-openpage-newtab.spec.ts index 06aa6083e3..6c41e2c5c7 100644 --- a/tests/local-first-openpage-newtab.spec.ts +++ b/tests/local-first-openpage-newtab.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { newPage } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { newPage } from './libs/page-logic'; loadPage(); test.describe('local first new page', () => { diff --git a/tests/local-first-restore-page.spec.ts b/tests/local-first-restore-page.spec.ts index de57af901d..9fcbab0be7 100644 --- a/tests/local-first-restore-page.spec.ts +++ b/tests/local-first-restore-page.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { newPage } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { newPage } from './libs/page-logic'; loadPage(); test.describe('Local first delete page', () => { diff --git a/tests/local-first-show-delete-modal.spec.ts b/tests/local-first-show-delete-modal.spec.ts index 70b4190442..712f3b70ce 100644 --- a/tests/local-first-show-delete-modal.spec.ts +++ b/tests/local-first-show-delete-modal.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { newPage, clickPageMoreActions } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { newPage, clickPageMoreActions } from './libs/page-logic'; loadPage(); test.describe('Local first delete page', () => { diff --git a/tests/local-first-trash-page.spec.ts b/tests/local-first-trash-page.spec.ts index 5bc94d6ef0..c9268fb4f6 100644 --- a/tests/local-first-trash-page.spec.ts +++ b/tests/local-first-trash-page.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { newPage } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { newPage } from './libs/page-logic'; loadPage(); test.describe('Local first trash page', () => { diff --git a/tests/local-first-workspace-list.spec.ts b/tests/local-first-workspace-list.spec.ts index 0f71989c16..2c63396b55 100644 --- a/tests/local-first-workspace-list.spec.ts +++ b/tests/local-first-workspace-list.spec.ts @@ -1,7 +1,7 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { createWorkspace } from './libs/workspace-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { createWorkspace } from './libs/workspace-logic'; loadPage(); test.describe('Local first workspace list', () => { diff --git a/tests/local-first-workspace.spec.ts b/tests/local-first-workspace.spec.ts index 141e24feb4..cbf4f232a0 100644 --- a/tests/local-first-workspace.spec.ts +++ b/tests/local-first-workspace.spec.ts @@ -1,6 +1,6 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; loadPage(); diff --git a/tests/login.spec.ts b/tests/login.spec.ts index ec464c70e3..c5c36c5fc9 100644 --- a/tests/login.spec.ts +++ b/tests/login.spec.ts @@ -1,5 +1,5 @@ -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; loadPage(); diff --git a/tests/quick-search.spec.ts b/tests/quick-search.spec.ts index 90337c47be..c5764c5c35 100644 --- a/tests/quick-search.spec.ts +++ b/tests/quick-search.spec.ts @@ -1,8 +1,8 @@ import { expect, type Page } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; -import { withCtrlOrMeta } from './libs/keyboard.js'; -import { newPage } from './libs/page-logic.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; +import { withCtrlOrMeta } from './libs/keyboard'; +import { newPage } from './libs/page-logic'; loadPage(); const openQuickSearchByShortcut = async (page: Page) => diff --git a/tests/shortcuts.spec.ts b/tests/shortcuts.spec.ts index a743664893..f7010624ee 100644 --- a/tests/shortcuts.spec.ts +++ b/tests/shortcuts.spec.ts @@ -1,6 +1,6 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; loadPage(); diff --git a/tests/theme.spec.ts b/tests/theme.spec.ts index 61bafb8cd6..c48e5f8422 100644 --- a/tests/theme.spec.ts +++ b/tests/theme.spec.ts @@ -1,6 +1,6 @@ import { expect } from '@playwright/test'; -import { test } from './libs/playwright.js'; -import { loadPage } from './libs/load-page.js'; +import { test } from './libs/playwright'; +import { loadPage } from './libs/load-page'; loadPage(); diff --git a/tests/tsconfig.json b/tests/tsconfig.json new file mode 100644 index 0000000000..f50a4ce320 --- /dev/null +++ b/tests/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "noEmit": true + }, + "include": ["**.spec.ts", "**.test.ts"] +} diff --git a/tsconfig.json b/tsconfig.json index e64c0c7874..a2d46c87bc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,13 +17,17 @@ "experimentalDecorators": true, "baseUrl": ".", "paths": { - "@/*": ["src/*"], "@affine/component": ["packages/component/src/index"], "@affine/datacenter": ["packages/datacenter/src"], "@affine/i18n": ["packages/i18n/src"], "@affine/logger": ["packages/logger/src"] } }, + "references": [ + { + "path": "./tests" + } + ], "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules"] } diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000000..85ae2781a5 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + include: ['packages/**/*.spec.ts'], + testTimeout: 5000, + coverage: { + provider: 'istanbul', // or 'c8' + reporter: ['lcov'], + reportsDirectory: '.coverage/store', + }, + }, +});