Add crdt as a separate package

This commit is contained in:
Hakan Shehu
2024-11-07 09:32:26 +01:00
parent 8a5409ad29
commit 3042625e34
11 changed files with 130 additions and 61 deletions

View File

@@ -6,7 +6,7 @@ export default defineConfig({
main: {
plugins: [
externalizeDepsPlugin({
exclude: ['@colanode/core'],
exclude: ['@colanode/core', '@colanode/crdt'],
}),
],
resolve: {
@@ -20,7 +20,11 @@ export default defineConfig({
},
},
preload: {
plugins: [externalizeDepsPlugin()],
plugins: [
externalizeDepsPlugin({
exclude: ['@colanode/core', '@colanode/crdt'],
}),
],
resolve: {
alias: {
'@/lib': resolve('src/lib'),

View File

@@ -21,6 +21,7 @@
},
"dependencies": {
"@colanode/core": "workspace:*",
"@colanode/crdt": "workspace:*",
"@electron-toolkit/preload": "^3.0.1",
"@electron-toolkit/utils": "^3.0.0",
"@hookform/resolvers": "^3.9.0",

View File

@@ -1,5 +1,6 @@
import * as Y from 'yjs';
import { NodeAttributes, registry, applyCrdt } from '@colanode/core';
import { NodeAttributes, registry } from '@colanode/core';
import { applyCrdt } from '@colanode/crdt';
import { fromUint8Array, toUint8Array } from 'js-base64';
import {
LocalCreateNodeChangeData,

View File

@@ -2,6 +2,7 @@
"files": [],
"references": [
{ "path": "../../packages/core/tsconfig.json" },
{ "path": "../../packages/crdt/tsconfig.json" },
{ "path": "./tsconfig.node.json" },
{ "path": "./tsconfig.web.json" }
]

View File

@@ -14,7 +14,7 @@
"build": "turbo run build",
"clean": "turbo run clean",
"dev": "turbo run dev",
"watch": "turbo watch build --filter=@colanode/core --filter=@colanode/server --filter=@colanode/desktop",
"watch": "turbo watch build --filter=@colanode/core --filter=@colanode/crdt --filter=@colanode/server --filter=@colanode/desktop",
"lint": "turbo run lint --parallel",
"test": "turbo run test -- --watch false",
"format": "prettier --write ."

View File

@@ -24,8 +24,6 @@
"vitest": "^1.6.0"
},
"dependencies": {
"diff": "^7.0.0",
"yjs": "^13.6.20",
"zod": "^3.23.8"
}
}

View File

@@ -1,6 +1,3 @@
import * as yjs from 'yjs';
import { z as zod } from 'zod';
import { applyCrdt } from './crdt';
import {
ChannelAttributes,
channelAttributesSchema,
@@ -160,10 +157,10 @@ import {
UserNode,
Node,
} from './registry';
import { ZodText } from './registry/zod';
export {
yjs,
zod,
ZodText,
registry,
type ChannelAttributes,
channelAttributesSchema,
@@ -299,5 +296,4 @@ export {
type BlockLeaf,
type Block,
type Node,
applyCrdt,
};

View File

@@ -0,0 +1,32 @@
{
"name": "@colanode/crdt",
"version": "1.0.0",
"type": "module",
"types": "./src/index.ts",
"exports": {
".": "./src/index.ts"
},
"files": [
"src"
],
"scripts": {
"compile": "tsc --noEmit",
"test": "vitest",
"lint": "eslint . --max-warnings 0",
"build?": "No build step required. This package links directly to its source files",
"coverage": "vitest run --coverage "
},
"author": "Hakan Shehu",
"devDependencies": {
"eslint": "^8.57.1",
"prettier": "^3.3.3",
"typescript": "^5.6.3",
"vitest": "^1.6.0"
},
"dependencies": {
"@colanode/core": "workspace:*",
"diff": "^7.0.0",
"yjs": "^13.6.20",
"zod": "^3.23.8"
}
}

View File

@@ -1,6 +1,6 @@
import { z } from 'zod';
import * as Y from 'yjs';
import { ZodText } from './registry/zod';
import { ZodText } from '@colanode/core';
import { isEqual } from 'lodash';
import { diffChars } from 'diff';

View File

@@ -0,0 +1,15 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Crdt Library",
"extends": "../../tsconfig.base.json",
"references": [
{
"path": "../core"
}
],
"compilerOptions": {
"declaration": true,
"declarationMap": true,
"composite": true,
},
}

117
pnpm-lock.yaml generated
View File

@@ -33,6 +33,9 @@ importers:
'@colanode/core':
specifier: workspace:*
version: link:../../packages/core
'@colanode/crdt':
specifier: workspace:*
version: link:../../packages/crdt
'@electron-toolkit/preload':
specifier: ^3.0.1
version: 3.0.1(electron@31.7.3)
@@ -500,6 +503,28 @@ importers:
packages/core:
dependencies:
zod:
specifier: ^3.23.8
version: 3.23.8
devDependencies:
eslint:
specifier: ^8.57.1
version: 8.57.1
prettier:
specifier: ^3.3.3
version: 3.3.3
typescript:
specifier: ^5.6.3
version: 5.6.3
vitest:
specifier: ^1.6.0
version: 1.6.0(@types/node@22.9.0)
packages/crdt:
dependencies:
'@colanode/core':
specifier: workspace:*
version: link:../core
diff:
specifier: ^7.0.0
version: 7.0.0
@@ -7299,7 +7324,7 @@ snapshots:
'@babel/traverse': 7.25.9
'@babel/types': 7.26.0
convert-source-map: 2.0.0
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -7387,7 +7412,7 @@ snapshots:
'@babel/parser': 7.26.2
'@babel/template': 7.25.9
'@babel/types': 7.26.0
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -7413,7 +7438,7 @@ snapshots:
'@electron/get': 3.1.0
chalk: 4.1.2
commander: 4.1.1
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 10.1.0
listr2: 7.0.2
semver: 7.6.3
@@ -7428,7 +7453,7 @@ snapshots:
'@electron/rebuild': 3.7.0
'@malept/cross-spawn-promise': 2.0.0
chalk: 4.1.2
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
find-up: 5.0.0
fs-extra: 10.1.0
log-symbols: 4.1.0
@@ -7456,7 +7481,7 @@ snapshots:
'@electron/rebuild': 3.7.0
'@malept/cross-spawn-promise': 2.0.0
chalk: 4.1.2
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fast-glob: 3.3.2
filenamify: 4.3.0
find-up: 5.0.0
@@ -7562,7 +7587,7 @@ snapshots:
'@electron-forge/shared-types': 7.5.0
'@electron-forge/web-multi-logger': 7.5.0
chalk: 4.1.2
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 10.1.0
listr2: 7.0.2
transitivePeerDependencies:
@@ -7592,7 +7617,7 @@ snapshots:
dependencies:
'@electron-forge/shared-types': 7.5.0
'@malept/cross-spawn-promise': 2.0.0
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 10.1.0
username: 5.1.0
transitivePeerDependencies:
@@ -7696,7 +7721,7 @@ snapshots:
'@electron/get@2.0.3':
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
env-paths: 2.2.1
fs-extra: 8.1.0
got: 11.8.6
@@ -7710,7 +7735,7 @@ snapshots:
'@electron/get@3.1.0':
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
env-paths: 2.2.1
fs-extra: 8.1.0
got: 11.8.6
@@ -7740,7 +7765,7 @@ snapshots:
'@electron/notarize@2.2.1':
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 9.1.0
promise-retry: 2.0.1
transitivePeerDependencies:
@@ -7749,7 +7774,7 @@ snapshots:
'@electron/osx-sign@1.0.5':
dependencies:
compare-version: 0.1.2
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 10.1.0
isbinaryfile: 4.0.10
minimist: 1.2.8
@@ -7765,7 +7790,7 @@ snapshots:
'@electron/osx-sign': 1.0.5
'@electron/universal': 2.0.1
'@electron/windows-sign': 1.1.3
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
extract-zip: 2.0.1
filenamify: 4.3.0
fs-extra: 11.2.0
@@ -7786,7 +7811,7 @@ snapshots:
'@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2
'@malept/cross-spawn-promise': 2.0.0
chalk: 4.1.2
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
detect-libc: 2.0.3
fs-extra: 10.1.0
got: 11.8.6
@@ -7805,7 +7830,7 @@ snapshots:
dependencies:
'@electron/asar': 3.2.16
'@malept/cross-spawn-promise': 1.1.1
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
dir-compare: 3.3.0
fs-extra: 9.1.0
minimatch: 3.1.2
@@ -7817,7 +7842,7 @@ snapshots:
dependencies:
'@electron/asar': 3.2.16
'@malept/cross-spawn-promise': 2.0.0
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
dir-compare: 4.2.0
fs-extra: 11.2.0
minimatch: 9.0.5
@@ -7828,7 +7853,7 @@ snapshots:
'@electron/windows-sign@1.1.3':
dependencies:
cross-dirname: 0.1.0
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 11.2.0
minimist: 1.2.8
postject: 1.0.0-alpha.6
@@ -7991,7 +8016,7 @@ snapshots:
'@eslint/eslintrc@2.1.4':
dependencies:
ajv: 6.12.6
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.2
@@ -8030,7 +8055,7 @@ snapshots:
'@humanwhocodes/config-array@0.13.0':
dependencies:
'@humanwhocodes/object-schema': 2.0.3
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -8161,7 +8186,7 @@ snapshots:
'@malept/flatpak-bundler@0.4.0':
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 9.1.0
lodash: 4.17.21
tmp-promise: 3.0.3
@@ -9535,7 +9560,7 @@ snapshots:
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3)
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
eslint: 8.57.1
graphemer: 1.4.0
ignore: 5.3.2
@@ -9570,7 +9595,7 @@ snapshots:
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3)
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
eslint: 8.57.1
optionalDependencies:
typescript: 5.6.3
@@ -9583,7 +9608,7 @@ snapshots:
'@typescript-eslint/types': 7.18.0
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 7.18.0
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
eslint: 8.57.1
optionalDependencies:
typescript: 5.6.3
@@ -9604,7 +9629,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3)
'@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3)
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
eslint: 8.57.1
tsutils: 3.21.0(typescript@5.6.3)
optionalDependencies:
@@ -9616,7 +9641,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3)
'@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3)
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
eslint: 8.57.1
ts-api-utils: 1.4.0(typescript@5.6.3)
optionalDependencies:
@@ -9632,7 +9657,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/visitor-keys': 5.62.0
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
semver: 7.6.3
@@ -9646,7 +9671,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 7.18.0
'@typescript-eslint/visitor-keys': 7.18.0
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.5
@@ -9756,7 +9781,7 @@ snapshots:
agent-base@6.0.2:
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -9818,7 +9843,7 @@ snapshots:
builder-util: 24.13.1
builder-util-runtime: 9.2.4
chromium-pickle-js: 0.2.0
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
dmg-builder: 24.13.3(electron-builder-squirrel-windows@24.13.3)
ejs: 3.1.10
electron-builder-squirrel-windows: 24.13.3(dmg-builder@24.13.3)
@@ -10103,14 +10128,14 @@ snapshots:
builder-util-runtime@9.2.10:
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
sax: 1.4.1
transitivePeerDependencies:
- supports-color
builder-util-runtime@9.2.4:
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
sax: 1.4.1
transitivePeerDependencies:
- supports-color
@@ -10124,7 +10149,7 @@ snapshots:
builder-util-runtime: 9.2.4
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 10.1.0
http-proxy-agent: 5.0.0
https-proxy-agent: 5.0.1
@@ -10470,10 +10495,6 @@ snapshots:
dependencies:
ms: 2.1.3
debug@4.3.7:
dependencies:
ms: 2.1.3
debug@4.3.7(supports-color@5.5.0):
dependencies:
ms: 2.1.3
@@ -10642,7 +10663,7 @@ snapshots:
dependencies:
'@malept/cross-spawn-promise': 1.1.1
asar: 3.2.0
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 9.1.0
glob: 7.2.3
lodash: 4.17.21
@@ -10658,7 +10679,7 @@ snapshots:
electron-installer-debian@3.2.0:
dependencies:
'@malept/cross-spawn-promise': 1.1.1
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
electron-installer-common: 0.10.3
fs-extra: 9.1.0
get-folder-size: 2.0.1
@@ -10672,7 +10693,7 @@ snapshots:
electron-installer-redhat@3.4.0:
dependencies:
'@malept/cross-spawn-promise': 1.1.1
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
electron-installer-common: 0.10.3
fs-extra: 9.1.0
lodash: 4.17.21
@@ -10724,7 +10745,7 @@ snapshots:
electron-winstaller@5.4.0:
dependencies:
'@electron/asar': 3.2.16
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 7.0.1
lodash: 4.17.21
temp: 0.9.4
@@ -11033,7 +11054,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@@ -11167,7 +11188,7 @@ snapshots:
extract-zip@2.0.1:
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
get-stream: 5.2.0
yauzl: 2.10.0
optionalDependencies:
@@ -11268,7 +11289,7 @@ snapshots:
flora-colossus@2.0.0:
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
fs-extra: 10.1.0
transitivePeerDependencies:
- supports-color
@@ -11354,7 +11375,7 @@ snapshots:
galactus@1.0.0:
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
flora-colossus: 2.0.0
fs-extra: 10.1.0
transitivePeerDependencies:
@@ -11584,7 +11605,7 @@ snapshots:
dependencies:
'@tootallnate/once': 2.0.0
agent-base: 6.0.2
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -11596,7 +11617,7 @@ snapshots:
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -12946,7 +12967,7 @@ snapshots:
read-binary-file-arch@1.0.6:
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -13320,7 +13341,7 @@ snapshots:
socks-proxy-agent@7.0.0:
dependencies:
agent-base: 6.0.2
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
socks: 2.8.3
transitivePeerDependencies:
- supports-color
@@ -13478,7 +13499,7 @@ snapshots:
sumchecker@3.0.1:
dependencies:
debug: 4.3.7
debug: 4.3.7(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color