From a0095496d7b9b364c6ce32fdb7ecf8000469a0df Mon Sep 17 00:00:00 2001 From: Alex Yang Date: Mon, 16 Oct 2023 19:47:05 -0500 Subject: [PATCH] chore: release `y-provider` package (#4642) --- .../src/components/migration-fallback.tsx | 5 +-- apps/core/src/hooks/use-datasource-sync.ts | 2 +- packages/env/src/workspace.ts | 2 +- packages/hooks/package.json | 14 ++++---- packages/hooks/src/use-data-source-status.ts | 2 +- packages/workspace/package.json | 2 +- packages/workspace/src/affine/crud.ts | 2 +- packages/workspace/src/affine/index.ts | 2 +- packages/workspace/src/affine/sync.ts | 2 +- .../__tests__/sqlite-provider.spec.ts | 2 +- packages/workspace/src/providers/index.ts | 2 +- .../src/providers/sqlite-providers.ts | 2 +- packages/y-indexeddb/package.json | 4 +-- packages/y-indexeddb/src/provider.ts | 8 ++--- packages/y-indexeddb/src/shared.ts | 2 +- packages/y-indexeddb/vite.config.ts | 3 +- packages/y-provider/package.json | 32 +++++++++++++---- packages/y-provider/vite.config.ts | 27 ++++++++++++++ scripts/publish.sh | 1 + yarn.lock | 35 ++++++++++--------- 20 files changed, 99 insertions(+), 52 deletions(-) create mode 100644 packages/y-provider/vite.config.ts diff --git a/apps/core/src/components/migration-fallback.tsx b/apps/core/src/components/migration-fallback.tsx index 97fc4de5e..f6c0f12b4 100644 --- a/apps/core/src/components/migration-fallback.tsx +++ b/apps/core/src/components/migration-fallback.tsx @@ -3,14 +3,11 @@ import type { LocalIndexedDBBackgroundProvider, SQLiteProvider, } from '@affine/env/workspace'; -import { - syncDataSourceFromDoc, - syncDocFromDataSource, -} from '@affine/y-provider'; import { assertExists } from '@blocksuite/global/utils'; import { Button } from '@toeverything/components/button'; import { forceUpgradePages } from '@toeverything/infra/blocksuite'; import { useCallback, useMemo, useState } from 'react'; +import { syncDataSourceFromDoc, syncDocFromDataSource } from 'y-provider'; import { useCurrentWorkspace } from '../hooks/current/use-current-workspace'; diff --git a/apps/core/src/hooks/use-datasource-sync.ts b/apps/core/src/hooks/use-datasource-sync.ts index 9524327f9..7bb2e9b54 100644 --- a/apps/core/src/hooks/use-datasource-sync.ts +++ b/apps/core/src/hooks/use-datasource-sync.ts @@ -4,11 +4,11 @@ import type { LocalIndexedDBBackgroundProvider, SQLiteProvider, } from '@affine/env/workspace'; -import { type Status, syncDataSource } from '@affine/y-provider'; import { assertExists } from '@blocksuite/global/utils'; import type { Workspace } from '@blocksuite/store'; import { useSetAtom } from 'jotai'; import { startTransition, useCallback, useMemo, useState } from 'react'; +import { type Status, syncDataSource } from 'y-provider'; export function useDatasourceSync(workspace: Workspace) { const [status, setStatus] = useState({ diff --git a/packages/env/src/workspace.ts b/packages/env/src/workspace.ts index e3f779349..65a383b7e 100644 --- a/packages/env/src/workspace.ts +++ b/packages/env/src/workspace.ts @@ -1,4 +1,3 @@ -import type { DataSourceAdapter } from '@affine/y-provider'; import type { EditorContainer } from '@blocksuite/editor'; import type { Page } from '@blocksuite/store'; import type { @@ -7,6 +6,7 @@ import type { Workspace as BlockSuiteWorkspace, } from '@blocksuite/store'; import type { PropsWithChildren, ReactNode } from 'react'; +import type { DataSourceAdapter } from 'y-provider'; import type { Collection } from './filter.js'; diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 17828e99c..c8f3c38c6 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -14,7 +14,6 @@ }, "devDependencies": { "@affine/env": "workspace:*", - "@affine/y-provider": "workspace:*", "@blocksuite/block-std": "0.0.0-20230926212737-6d4b1569-nightly", "@blocksuite/blocks": "0.0.0-20230926212737-6d4b1569-nightly", "@blocksuite/editor": "0.0.0-20230926212737-6d4b1569-nightly", @@ -24,24 +23,22 @@ "@testing-library/react": "^14.0.0", "@types/lodash.debounce": "^4.0.7", "fake-indexeddb": "^5.0.0", - "vitest": "0.34.6" + "vitest": "0.34.6", + "y-provider": "workspace:*" }, "peerDependencies": { - "@affine/y-provider": "workspace:*", "@blocksuite/block-std": "*", "@blocksuite/blocks": "*", "@blocksuite/editor": "*", "@blocksuite/global": "*", "@blocksuite/lit": "*", - "@blocksuite/store": "*" + "@blocksuite/store": "*", + "y-provider": "workspace:*" }, "peerDependenciesMeta": { "@affine/env": { "optional": true }, - "@affine/y-provider": { - "optional": true - }, "@blocksuite/block-std": { "optional": true }, @@ -59,6 +56,9 @@ }, "@blocksuite/store": { "optional": true + }, + "y-provider": { + "optional": true } }, "version": "0.10.0-canary.1" diff --git a/packages/hooks/src/use-data-source-status.ts b/packages/hooks/src/use-data-source-status.ts index bf0e6c86b..b5c490654 100644 --- a/packages/hooks/src/use-data-source-status.ts +++ b/packages/hooks/src/use-data-source-status.ts @@ -1,5 +1,5 @@ -import type { DataSourceAdapter, Status } from '@affine/y-provider'; import { useCallback, useSyncExternalStore } from 'react'; +import type { DataSourceAdapter, Status } from 'y-provider'; type UIStatus = | Status diff --git a/packages/workspace/package.json b/packages/workspace/package.json index 97a2f2e7c..7f0902b8d 100644 --- a/packages/workspace/package.json +++ b/packages/workspace/package.json @@ -20,7 +20,6 @@ "@affine/debug": "workspace:*", "@affine/env": "workspace:*", "@affine/graphql": "workspace:*", - "@affine/y-provider": "workspace:*", "@toeverything/hooks": "workspace:*", "@toeverything/y-indexeddb": "workspace:*", "async-call-rpc": "^6.3.1", @@ -36,6 +35,7 @@ "swr": "2.2.0", "valtio": "^1.11.2", "y-protocols": "^1.0.6", + "y-provider": "workspace:*", "yjs": "^13.6.8", "zod": "^3.22.4" }, diff --git a/packages/workspace/src/affine/crud.ts b/packages/workspace/src/affine/crud.ts index 430ebc302..2e631f3d0 100644 --- a/packages/workspace/src/affine/crud.ts +++ b/packages/workspace/src/affine/crud.ts @@ -10,7 +10,6 @@ import { getWorkspacesQuery, } from '@affine/graphql'; import { createAffineDataSource } from '@affine/workspace/affine/index'; -import { syncDataSourceFromDoc } from '@affine/y-provider'; import { createIndexeddbStorage, Workspace } from '@blocksuite/store'; import { migrateLocalBlobStorage } from '@toeverything/infra/blocksuite'; import { @@ -19,6 +18,7 @@ import { } from '@toeverything/y-indexeddb'; import { getSession } from 'next-auth/react'; import { proxy } from 'valtio/vanilla'; +import { syncDataSourceFromDoc } from 'y-provider'; import { getOrCreateWorkspace } from '../manager'; import { fetcher } from './gql'; diff --git a/packages/workspace/src/affine/index.ts b/packages/workspace/src/affine/index.ts index 4a566eb0e..2c6827fcb 100644 --- a/packages/workspace/src/affine/index.ts +++ b/packages/workspace/src/affine/index.ts @@ -1,5 +1,4 @@ import { DebugLogger } from '@affine/debug'; -import type { DocDataSource } from '@affine/y-provider'; import type { Socket } from 'socket.io-client'; import { Manager } from 'socket.io-client'; import { @@ -7,6 +6,7 @@ import { type Awareness, encodeAwarenessUpdate, } from 'y-protocols/awareness'; +import type { DocDataSource } from 'y-provider'; import type { Doc } from 'yjs'; import { diff --git a/packages/workspace/src/affine/sync.ts b/packages/workspace/src/affine/sync.ts index 6249d6b7d..c36bba1bb 100644 --- a/packages/workspace/src/affine/sync.ts +++ b/packages/workspace/src/affine/sync.ts @@ -1,10 +1,10 @@ -import { syncDataSource } from '@affine/y-provider'; import { createIndexeddbStorage } from '@blocksuite/store'; import { createIndexedDBDatasource, DEFAULT_DB_NAME, downloadBinary, } from '@toeverything/y-indexeddb'; +import { syncDataSource } from 'y-provider'; import type { Doc } from 'yjs'; import { applyUpdate } from 'yjs'; diff --git a/packages/workspace/src/providers/__tests__/sqlite-provider.spec.ts b/packages/workspace/src/providers/__tests__/sqlite-provider.spec.ts index 945c711fc..f96b4c7e5 100644 --- a/packages/workspace/src/providers/__tests__/sqlite-provider.spec.ts +++ b/packages/workspace/src/providers/__tests__/sqlite-provider.spec.ts @@ -2,7 +2,6 @@ import type { SQLiteDBDownloadProvider, SQLiteProvider, } from '@affine/env/workspace'; -import { getDoc } from '@affine/y-provider'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; import type { Y as YType } from '@blocksuite/store'; import { Schema, Workspace } from '@blocksuite/store'; @@ -14,6 +13,7 @@ import type { import { nanoid } from 'nanoid'; import { setTimeout } from 'timers/promises'; import { beforeEach, describe, expect, test, vi } from 'vitest'; +import { getDoc } from 'y-provider'; import { createSQLiteDBDownloadProvider, diff --git a/packages/workspace/src/providers/index.ts b/packages/workspace/src/providers/index.ts index 3f6632cdd..1a72ca5ab 100644 --- a/packages/workspace/src/providers/index.ts +++ b/packages/workspace/src/providers/index.ts @@ -4,7 +4,6 @@ import type { LocalIndexedDBBackgroundProvider, LocalIndexedDBDownloadProvider, } from '@affine/env/workspace'; -import { createLazyProvider } from '@affine/y-provider'; import { assertExists } from '@blocksuite/global/utils'; import type { DocProviderCreator } from '@blocksuite/store'; import { Workspace } from '@blocksuite/store'; @@ -13,6 +12,7 @@ import { createIndexedDBDatasource, createIndexedDBProvider as create, } from '@toeverything/y-indexeddb'; +import { createLazyProvider } from 'y-provider'; import { encodeStateVector } from 'yjs'; import { createAffineDataSource } from '../affine'; diff --git a/packages/workspace/src/providers/sqlite-providers.ts b/packages/workspace/src/providers/sqlite-providers.ts index f16e53994..0369c65a2 100644 --- a/packages/workspace/src/providers/sqlite-providers.ts +++ b/packages/workspace/src/providers/sqlite-providers.ts @@ -2,10 +2,10 @@ import type { SQLiteDBDownloadProvider, SQLiteProvider, } from '@affine/env/workspace'; -import { createLazyProvider, type DocDataSource } from '@affine/y-provider'; import { assertExists } from '@blocksuite/global/utils'; import type { DocProviderCreator } from '@blocksuite/store'; import { Workspace as BlockSuiteWorkspace } from '@blocksuite/store'; +import { createLazyProvider, type DocDataSource } from 'y-provider'; import type { Doc } from 'yjs'; import { localProviderLogger as logger } from './logger'; diff --git a/packages/y-indexeddb/package.json b/packages/y-indexeddb/package.json index f8a13989c..9ae1901e1 100644 --- a/packages/y-indexeddb/package.json +++ b/packages/y-indexeddb/package.json @@ -33,10 +33,10 @@ }, "dependencies": { "idb": "^7.1.1", - "nanoid": "^5.0.1" + "nanoid": "^5.0.1", + "y-provider": "workspace:*" }, "devDependencies": { - "@affine/y-provider": "workspace:*", "@blocksuite/blocks": "0.0.0-20230926212737-6d4b1569-nightly", "@blocksuite/store": "0.0.0-20230926212737-6d4b1569-nightly", "fake-indexeddb": "^5.0.0", diff --git a/packages/y-indexeddb/src/provider.ts b/packages/y-indexeddb/src/provider.ts index 8fd6f4419..bc974cc2c 100644 --- a/packages/y-indexeddb/src/provider.ts +++ b/packages/y-indexeddb/src/provider.ts @@ -1,11 +1,11 @@ +import { assertExists } from '@blocksuite/global/utils'; +import type { IDBPDatabase } from 'idb'; +import { openDB } from 'idb'; import { createLazyProvider, type DocDataSource, writeOperation, -} from '@affine/y-provider'; -import { assertExists } from '@blocksuite/global/utils'; -import type { IDBPDatabase } from 'idb'; -import { openDB } from 'idb'; +} from 'y-provider'; import type { Doc } from 'yjs'; import { diffUpdate, encodeStateVectorFromUpdate } from 'yjs'; diff --git a/packages/y-indexeddb/src/shared.ts b/packages/y-indexeddb/src/shared.ts index ed85604fa..30ba78355 100644 --- a/packages/y-indexeddb/src/shared.ts +++ b/packages/y-indexeddb/src/shared.ts @@ -1,5 +1,5 @@ -import type { DataSourceAdapter } from '@affine/y-provider'; import type { DBSchema, IDBPDatabase } from 'idb'; +import type { DataSourceAdapter } from 'y-provider'; export const dbVersion = 1; export const DEFAULT_DB_NAME = 'affine-local'; diff --git a/packages/y-indexeddb/vite.config.ts b/packages/y-indexeddb/vite.config.ts index 6195b4230..8c9713f7b 100644 --- a/packages/y-indexeddb/vite.config.ts +++ b/packages/y-indexeddb/vite.config.ts @@ -21,9 +21,10 @@ export default defineConfig({ globals: { idb: 'idb', yjs: 'yjs', + 'y-provider': 'yProvider', }, }, - external: ['idb', 'yjs'], + external: ['idb', 'yjs', 'y-provider'], }, }, plugins: [ diff --git a/packages/y-provider/package.json b/packages/y-provider/package.json index 271b7d1e0..4739415db 100644 --- a/packages/y-provider/package.json +++ b/packages/y-provider/package.json @@ -1,17 +1,35 @@ { - "name": "@affine/y-provider", + "name": "y-provider", "type": "module", - "version": "0.10.0-canary.1", - "description": "Yjs provider utilities for AFFiNE", - "main": "./src/index.ts", - "module": "./src/index.ts", + "version": "0.10.0-canary.0", + "description": "Yjs provider protocol for multi document support", "exports": { ".": "./src/index.ts" }, + "files": [ + "dist" + ], + "publishConfig": { + "access": "public", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs", + "default": "./dist/index.umd.cjs" + } + } + }, + "scripts": { + "build": "vite build" + }, "devDependencies": { - "@blocksuite/store": "0.0.0-20230926212737-6d4b1569-nightly" + "@blocksuite/store": "0.0.0-20230926212737-6d4b1569-nightly", + "vite": "^4.4.11", + "vite-plugin-dts": "3.6.0", + "vitest": "0.34.6" }, "peerDependencies": { - "yjs": "^13.5.51" + "yjs": "^13" } } diff --git a/packages/y-provider/vite.config.ts b/packages/y-provider/vite.config.ts new file mode 100644 index 000000000..25d98e416 --- /dev/null +++ b/packages/y-provider/vite.config.ts @@ -0,0 +1,27 @@ +import { resolve } from 'node:path'; + +import { fileURLToPath } from 'url'; +import { defineConfig } from 'vite'; +import dts from 'vite-plugin-dts'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); + +export default defineConfig({ + build: { + minify: 'esbuild', + sourcemap: true, + lib: { + entry: resolve(__dirname, 'src/index.ts'), + fileName: 'index', + name: 'ToEverythingIndexedDBProvider', + }, + rollupOptions: { + external: ['idb', 'yjs'], + }, + }, + plugins: [ + dts({ + entryRoot: resolve(__dirname, 'src'), + }), + ], +}); diff --git a/scripts/publish.sh b/scripts/publish.sh index 9d3ae5a9d..794c6275a 100755 --- a/scripts/publish.sh +++ b/scripts/publish.sh @@ -2,6 +2,7 @@ packages=( "y-indexeddb" + "y-provider" "infra" "sdk" ) diff --git a/yarn.lock b/yarn.lock index 6353352b8..d5242d010 100644 --- a/yarn.lock +++ b/yarn.lock @@ -839,7 +839,6 @@ __metadata: "@affine/debug": "workspace:*" "@affine/env": "workspace:*" "@affine/graphql": "workspace:*" - "@affine/y-provider": "workspace:*" "@testing-library/react": ^14.0.0 "@toeverything/hooks": "workspace:*" "@toeverything/y-indexeddb": "workspace:*" @@ -860,6 +859,7 @@ __metadata: vitest: 0.34.6 ws: ^8.14.2 y-protocols: ^1.0.6 + y-provider: "workspace:*" yjs: ^13.6.8 zod: ^3.22.4 peerDependencies: @@ -868,16 +868,6 @@ __metadata: languageName: unknown linkType: soft -"@affine/y-provider@workspace:*, @affine/y-provider@workspace:packages/y-provider": - version: 0.0.0-use.local - resolution: "@affine/y-provider@workspace:packages/y-provider" - dependencies: - "@blocksuite/store": 0.0.0-20230926212737-6d4b1569-nightly - peerDependencies: - yjs: ^13.5.51 - languageName: unknown - linkType: soft - "@agoric/babel-generator@npm:^7.17.6": version: 7.17.6 resolution: "@agoric/babel-generator@npm:7.17.6" @@ -12370,7 +12360,6 @@ __metadata: resolution: "@toeverything/hooks@workspace:packages/hooks" dependencies: "@affine/env": "workspace:*" - "@affine/y-provider": "workspace:*" "@blocksuite/block-std": 0.0.0-20230926212737-6d4b1569-nightly "@blocksuite/blocks": 0.0.0-20230926212737-6d4b1569-nightly "@blocksuite/editor": 0.0.0-20230926212737-6d4b1569-nightly @@ -12386,19 +12375,18 @@ __metadata: react: 18.2.0 swr: 2.2.0 vitest: 0.34.6 + y-provider: "workspace:*" peerDependencies: - "@affine/y-provider": "workspace:*" "@blocksuite/block-std": "*" "@blocksuite/blocks": "*" "@blocksuite/editor": "*" "@blocksuite/global": "*" "@blocksuite/lit": "*" "@blocksuite/store": "*" + y-provider: "workspace:*" peerDependenciesMeta: "@affine/env": optional: true - "@affine/y-provider": - optional: true "@blocksuite/block-std": optional: true "@blocksuite/blocks": @@ -12411,6 +12399,8 @@ __metadata: optional: true "@blocksuite/store": optional: true + y-provider: + optional: true languageName: unknown linkType: soft @@ -12475,7 +12465,6 @@ __metadata: version: 0.0.0-use.local resolution: "@toeverything/y-indexeddb@workspace:packages/y-indexeddb" dependencies: - "@affine/y-provider": "workspace:*" "@blocksuite/blocks": 0.0.0-20230926212737-6d4b1569-nightly "@blocksuite/store": 0.0.0-20230926212737-6d4b1569-nightly fake-indexeddb: ^5.0.0 @@ -12485,6 +12474,7 @@ __metadata: vite-plugin-dts: 3.6.0 vitest: 0.34.6 y-indexeddb: ^9.0.11 + y-provider: "workspace:*" peerDependencies: yjs: ^13 languageName: unknown @@ -34487,6 +34477,19 @@ __metadata: languageName: node linkType: hard +"y-provider@workspace:*, y-provider@workspace:packages/y-provider": + version: 0.0.0-use.local + resolution: "y-provider@workspace:packages/y-provider" + dependencies: + "@blocksuite/store": 0.0.0-20230926212737-6d4b1569-nightly + vite: ^4.4.11 + vite-plugin-dts: 3.6.0 + vitest: 0.34.6 + peerDependencies: + yjs: ^13 + languageName: unknown + linkType: soft + "y18n@npm:^4.0.0": version: 4.0.3 resolution: "y18n@npm:4.0.3"