@pluv/crdt 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
 
2
- > @pluv/crdt@2.1.0 build /home/runner/work/pluv/pluv/packages/crdt
2
+ > @pluv/crdt@2.2.1 build /home/runner/work/pluv/pluv/packages/crdt
3
3
  > tsup src/index.ts --format esm,cjs --dts
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -8,11 +8,11 @@
8
8
  CLI Target: es6
9
9
  ESM Build start
10
10
  CJS Build start
11
- ESM dist/index.mjs 1.51 KB
12
- ESM ⚡️ Build success in 24ms
13
- CJS dist/index.js 2.63 KB
14
- CJS ⚡️ Build success in 24ms
11
+ ESM dist/index.mjs 1.55 KB
12
+ ESM ⚡️ Build success in 21ms
13
+ CJS dist/index.js 2.68 KB
14
+ CJS ⚡️ Build success in 22ms
15
15
  DTS Build start
16
- DTS ⚡️ Build success in 532ms
17
- DTS dist/index.d.mts 2.78 KB
18
- DTS dist/index.d.ts 2.78 KB
16
+ DTS ⚡️ Build success in 519ms
17
+ DTS dist/index.d.mts 2.64 KB
18
+ DTS dist/index.d.ts 2.64 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @pluv/crdt
2
2
 
3
+ ## 2.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - @pluv/types@2.2.1
8
+
9
+ ## 2.2.0
10
+
11
+ ### Patch Changes
12
+
13
+ - @pluv/types@2.2.0
14
+
3
15
  ## 2.1.0
4
16
 
5
17
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,26 +1,17 @@
1
- import { Json, CrdtDocLike, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams } from '@pluv/types';
2
- export { CrdtDocLike, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams } from '@pluv/types';
1
+ import { CrdtType, CrdtDocLike, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams } from '@pluv/types';
2
+ export { CrdtDocLike, CrdtType, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams, InferCrdtJson } from '@pluv/types';
3
3
 
4
- type CrdtType<TValue extends unknown, TJson extends unknown = any> = Omit<TValue, "__pluvType"> & {
5
- __pluvType: () => TJson;
6
- };
7
- type InferCrdtJson<T extends unknown> = T extends CrdtType<any, infer IJson> ? InferCrdtJson<IJson> : T extends Record<string, any> ? {
8
- [P in keyof T]: InferCrdtJson<T[P]>;
9
- } : T extends (infer IJson)[] ? InferCrdtJson<IJson>[] : T extends readonly (infer IJson)[] ? readonly InferCrdtJson<IJson>[] : T extends Json ? T : string;
10
- type InferInitialStorageFn<TFactory extends AbstractCrdtDocFactory<any>> = TFactory["_initialStorage"];
11
- type InferStorage<TFactory extends AbstractCrdtDocFactory<any>> = ReturnType<InferInitialStorageFn<TFactory>>;
12
- type InferBuilder<TFactory extends AbstractCrdtDocFactory<any>> = Parameters<InferInitialStorageFn<TFactory>>[0];
13
-
14
- declare abstract class AbstractCrdtDocFactory<TStorage extends Record<string, CrdtType<any, any>>> {
4
+ declare abstract class AbstractCrdtDocFactory<TDoc extends any, TStorage extends Record<string, CrdtType<any, any>>> {
15
5
  _initialStorage: (builder: any) => TStorage;
16
6
  constructor(initialStorage: (builder: any) => TStorage);
17
- abstract getEmpty(): CrdtDocLike<TStorage>;
18
- abstract getFactory(initialStorage?: (builder: any) => TStorage): AbstractCrdtDocFactory<TStorage>;
19
- abstract getInitialized(initialStorage?: (builder: any) => TStorage): CrdtDocLike<TStorage>;
7
+ abstract getEmpty(): CrdtDocLike<TDoc, TStorage>;
8
+ abstract getFactory(initialStorage?: (builder: any) => TStorage): AbstractCrdtDocFactory<TDoc, TStorage>;
9
+ abstract getInitialized(initialStorage?: (builder: any) => TStorage): CrdtDocLike<TDoc, TStorage>;
20
10
  resolveEncodedState(updates: string | string[] | readonly string[]): string | null;
21
11
  }
22
12
 
23
- declare class NoopCrdtDoc implements CrdtDocLike<any> {
13
+ declare class NoopCrdtDoc implements CrdtDocLike<any, any> {
14
+ value: any;
24
15
  applyEncodedState(params: DocApplyEncodedStateParams): this;
25
16
  batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this;
26
17
  canRedo(): boolean;
@@ -32,14 +23,14 @@ declare class NoopCrdtDoc implements CrdtDocLike<any> {
32
23
  isEmpty(): boolean;
33
24
  rebuildStorage(): this;
34
25
  redo(): this;
35
- subscribe(listener: (params: DocSubscribeCallbackParams<any>) => void): () => void;
26
+ subscribe(listener: (params: DocSubscribeCallbackParams<any, any>) => void): () => void;
36
27
  toJson(): any;
37
28
  track(): this;
38
29
  transact(fn: () => void, origin?: string | undefined): this;
39
30
  undo(): this;
40
31
  }
41
32
 
42
- declare class NoopCrdtDocFactory extends AbstractCrdtDocFactory<any> {
33
+ declare class NoopCrdtDocFactory extends AbstractCrdtDocFactory<any, any> {
43
34
  constructor(initialStorage?: () => {});
44
35
  getEmpty(): NoopCrdtDoc;
45
36
  getFactory(initialStorage?: ((builder: any) => any) | undefined): NoopCrdtDocFactory;
@@ -50,4 +41,10 @@ declare const noop: {
50
41
  doc: (args?: any) => NoopCrdtDocFactory;
51
42
  };
52
43
 
53
- export { AbstractCrdtDocFactory, type CrdtType, type InferBuilder, type InferCrdtJson, type InferInitialStorageFn, type InferStorage, NoopCrdtDoc, NoopCrdtDocFactory, noop };
44
+ type InferDoc<TFactory extends AbstractCrdtDocFactory<any, any>> = InferDocLike<TFactory>["value"];
45
+ type InferDocLike<TFactory extends AbstractCrdtDocFactory<any, any>> = ReturnType<TFactory["getInitialized"]>;
46
+ type InferInitialStorageFn<TFactory extends AbstractCrdtDocFactory<any, any>> = TFactory["_initialStorage"];
47
+ type InferStorage<TFactory extends AbstractCrdtDocFactory<any, any>> = ReturnType<InferInitialStorageFn<TFactory>>;
48
+ type InferBuilder<TFactory extends AbstractCrdtDocFactory<any, any>> = Parameters<InferInitialStorageFn<TFactory>>[0];
49
+
50
+ export { AbstractCrdtDocFactory, type InferBuilder, type InferDoc, type InferDocLike, type InferInitialStorageFn, type InferStorage, NoopCrdtDoc, NoopCrdtDocFactory, noop };
package/dist/index.d.ts CHANGED
@@ -1,26 +1,17 @@
1
- import { Json, CrdtDocLike, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams } from '@pluv/types';
2
- export { CrdtDocLike, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams } from '@pluv/types';
1
+ import { CrdtType, CrdtDocLike, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams } from '@pluv/types';
2
+ export { CrdtDocLike, CrdtType, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams, InferCrdtJson } from '@pluv/types';
3
3
 
4
- type CrdtType<TValue extends unknown, TJson extends unknown = any> = Omit<TValue, "__pluvType"> & {
5
- __pluvType: () => TJson;
6
- };
7
- type InferCrdtJson<T extends unknown> = T extends CrdtType<any, infer IJson> ? InferCrdtJson<IJson> : T extends Record<string, any> ? {
8
- [P in keyof T]: InferCrdtJson<T[P]>;
9
- } : T extends (infer IJson)[] ? InferCrdtJson<IJson>[] : T extends readonly (infer IJson)[] ? readonly InferCrdtJson<IJson>[] : T extends Json ? T : string;
10
- type InferInitialStorageFn<TFactory extends AbstractCrdtDocFactory<any>> = TFactory["_initialStorage"];
11
- type InferStorage<TFactory extends AbstractCrdtDocFactory<any>> = ReturnType<InferInitialStorageFn<TFactory>>;
12
- type InferBuilder<TFactory extends AbstractCrdtDocFactory<any>> = Parameters<InferInitialStorageFn<TFactory>>[0];
13
-
14
- declare abstract class AbstractCrdtDocFactory<TStorage extends Record<string, CrdtType<any, any>>> {
4
+ declare abstract class AbstractCrdtDocFactory<TDoc extends any, TStorage extends Record<string, CrdtType<any, any>>> {
15
5
  _initialStorage: (builder: any) => TStorage;
16
6
  constructor(initialStorage: (builder: any) => TStorage);
17
- abstract getEmpty(): CrdtDocLike<TStorage>;
18
- abstract getFactory(initialStorage?: (builder: any) => TStorage): AbstractCrdtDocFactory<TStorage>;
19
- abstract getInitialized(initialStorage?: (builder: any) => TStorage): CrdtDocLike<TStorage>;
7
+ abstract getEmpty(): CrdtDocLike<TDoc, TStorage>;
8
+ abstract getFactory(initialStorage?: (builder: any) => TStorage): AbstractCrdtDocFactory<TDoc, TStorage>;
9
+ abstract getInitialized(initialStorage?: (builder: any) => TStorage): CrdtDocLike<TDoc, TStorage>;
20
10
  resolveEncodedState(updates: string | string[] | readonly string[]): string | null;
21
11
  }
22
12
 
23
- declare class NoopCrdtDoc implements CrdtDocLike<any> {
13
+ declare class NoopCrdtDoc implements CrdtDocLike<any, any> {
14
+ value: any;
24
15
  applyEncodedState(params: DocApplyEncodedStateParams): this;
25
16
  batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this;
26
17
  canRedo(): boolean;
@@ -32,14 +23,14 @@ declare class NoopCrdtDoc implements CrdtDocLike<any> {
32
23
  isEmpty(): boolean;
33
24
  rebuildStorage(): this;
34
25
  redo(): this;
35
- subscribe(listener: (params: DocSubscribeCallbackParams<any>) => void): () => void;
26
+ subscribe(listener: (params: DocSubscribeCallbackParams<any, any>) => void): () => void;
36
27
  toJson(): any;
37
28
  track(): this;
38
29
  transact(fn: () => void, origin?: string | undefined): this;
39
30
  undo(): this;
40
31
  }
41
32
 
42
- declare class NoopCrdtDocFactory extends AbstractCrdtDocFactory<any> {
33
+ declare class NoopCrdtDocFactory extends AbstractCrdtDocFactory<any, any> {
43
34
  constructor(initialStorage?: () => {});
44
35
  getEmpty(): NoopCrdtDoc;
45
36
  getFactory(initialStorage?: ((builder: any) => any) | undefined): NoopCrdtDocFactory;
@@ -50,4 +41,10 @@ declare const noop: {
50
41
  doc: (args?: any) => NoopCrdtDocFactory;
51
42
  };
52
43
 
53
- export { AbstractCrdtDocFactory, type CrdtType, type InferBuilder, type InferCrdtJson, type InferInitialStorageFn, type InferStorage, NoopCrdtDoc, NoopCrdtDocFactory, noop };
44
+ type InferDoc<TFactory extends AbstractCrdtDocFactory<any, any>> = InferDocLike<TFactory>["value"];
45
+ type InferDocLike<TFactory extends AbstractCrdtDocFactory<any, any>> = ReturnType<TFactory["getInitialized"]>;
46
+ type InferInitialStorageFn<TFactory extends AbstractCrdtDocFactory<any, any>> = TFactory["_initialStorage"];
47
+ type InferStorage<TFactory extends AbstractCrdtDocFactory<any, any>> = ReturnType<InferInitialStorageFn<TFactory>>;
48
+ type InferBuilder<TFactory extends AbstractCrdtDocFactory<any, any>> = Parameters<InferInitialStorageFn<TFactory>>[0];
49
+
50
+ export { AbstractCrdtDocFactory, type InferBuilder, type InferDoc, type InferDocLike, type InferInitialStorageFn, type InferStorage, NoopCrdtDoc, NoopCrdtDocFactory, noop };
package/dist/index.js CHANGED
@@ -41,6 +41,9 @@ var AbstractCrdtDocFactory = class {
41
41
 
42
42
  // src/NoopCrdtDoc.ts
43
43
  var NoopCrdtDoc = class {
44
+ constructor() {
45
+ this.value = null;
46
+ }
44
47
  applyEncodedState(params) {
45
48
  return this;
46
49
  }
package/dist/index.mjs CHANGED
@@ -12,6 +12,9 @@ var AbstractCrdtDocFactory = class {
12
12
 
13
13
  // src/NoopCrdtDoc.ts
14
14
  var NoopCrdtDoc = class {
15
+ constructor() {
16
+ this.value = null;
17
+ }
15
18
  applyEncodedState(params) {
16
19
  return this;
17
20
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pluv/crdt",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
4
4
  "description": "crdt base for @pluv/io",
5
5
  "author": "leedavidcs",
6
6
  "license": "MIT",
@@ -17,14 +17,14 @@
17
17
  "access": "public"
18
18
  },
19
19
  "dependencies": {
20
- "@pluv/types": "^2.1.0"
20
+ "@pluv/types": "^2.2.1"
21
21
  },
22
22
  "devDependencies": {
23
23
  "eslint": "^9.26.0",
24
24
  "tsup": "^8.4.0",
25
25
  "typescript": "^5.8.3",
26
- "@pluv/tsconfig": "^2.1.0",
27
- "eslint-config-pluv": "^2.1.0"
26
+ "@pluv/tsconfig": "^2.2.1",
27
+ "eslint-config-pluv": "^2.2.1"
28
28
  },
29
29
  "scripts": {
30
30
  "build": "tsup src/index.ts --format esm,cjs --dts",
@@ -1,20 +1,22 @@
1
- import type { CrdtDocLike } from "@pluv/types";
2
- import type { CrdtType } from "./types";
1
+ import type { CrdtDocLike, CrdtType } from "@pluv/types";
3
2
 
4
- export abstract class AbstractCrdtDocFactory<TStorage extends Record<string, CrdtType<any, any>>> {
3
+ export abstract class AbstractCrdtDocFactory<
4
+ TDoc extends any,
5
+ TStorage extends Record<string, CrdtType<any, any>>,
6
+ > {
5
7
  public _initialStorage: (builder: any) => TStorage;
6
8
 
7
9
  constructor(initialStorage: (builder: any) => TStorage) {
8
10
  this._initialStorage = initialStorage;
9
11
  }
10
12
 
11
- public abstract getEmpty(): CrdtDocLike<TStorage>;
13
+ public abstract getEmpty(): CrdtDocLike<TDoc, TStorage>;
12
14
  public abstract getFactory(
13
15
  initialStorage?: (builder: any) => TStorage,
14
- ): AbstractCrdtDocFactory<TStorage>;
16
+ ): AbstractCrdtDocFactory<TDoc, TStorage>;
15
17
  public abstract getInitialized(
16
18
  initialStorage?: (builder: any) => TStorage,
17
- ): CrdtDocLike<TStorage>;
19
+ ): CrdtDocLike<TDoc, TStorage>;
18
20
 
19
21
  public resolveEncodedState(updates: string | string[] | readonly string[]): string | null {
20
22
  if (typeof updates === "string") return updates;
@@ -5,7 +5,9 @@ import {
5
5
  DocSubscribeCallbackParams,
6
6
  } from "@pluv/types";
7
7
 
8
- export class NoopCrdtDoc implements CrdtDocLike<any> {
8
+ export class NoopCrdtDoc implements CrdtDocLike<any, any> {
9
+ public value: any = null;
10
+
9
11
  public applyEncodedState(params: DocApplyEncodedStateParams): this {
10
12
  return this;
11
13
  }
@@ -48,7 +50,7 @@ export class NoopCrdtDoc implements CrdtDocLike<any> {
48
50
  return this;
49
51
  }
50
52
 
51
- public subscribe(listener: (params: DocSubscribeCallbackParams<any>) => void): () => void {
53
+ public subscribe(listener: (params: DocSubscribeCallbackParams<any, any>) => void): () => void {
52
54
  return () => undefined;
53
55
  }
54
56
 
@@ -1,7 +1,7 @@
1
1
  import { AbstractCrdtDocFactory } from "./AbstractCrdtDocFactory";
2
2
  import { NoopCrdtDoc } from "./NoopCrdtDoc";
3
3
 
4
- export class NoopCrdtDocFactory extends AbstractCrdtDocFactory<any> {
4
+ export class NoopCrdtDocFactory extends AbstractCrdtDocFactory<any, any> {
5
5
  constructor(initialStorage: () => {} = () => ({})) {
6
6
  super(initialStorage);
7
7
  }
package/src/index.ts CHANGED
@@ -1,17 +1,19 @@
1
1
  export type {
2
2
  CrdtDocLike,
3
+ CrdtType,
3
4
  DocApplyEncodedStateParams,
4
5
  DocBatchApplyEncodedStateParams,
5
6
  DocSubscribeCallbackParams,
7
+ InferCrdtJson,
6
8
  } from "@pluv/types";
7
9
  export { AbstractCrdtDocFactory } from "./AbstractCrdtDocFactory";
8
10
  export { noop } from "./noop";
9
11
  export { NoopCrdtDoc } from "./NoopCrdtDoc";
10
12
  export { NoopCrdtDocFactory } from "./NoopCrdtDocFactory";
11
13
  export type {
12
- CrdtType,
13
14
  InferBuilder,
14
- InferCrdtJson,
15
+ InferDoc,
16
+ InferDocLike,
15
17
  InferInitialStorageFn,
16
18
  InferStorage,
17
19
  } from "./types";
package/src/types.ts CHANGED
@@ -1,33 +1,19 @@
1
- import type { Json } from "@pluv/types";
2
- import { AbstractCrdtDocFactory } from "./AbstractCrdtDocFactory";
1
+ import type { AbstractCrdtDocFactory } from "./AbstractCrdtDocFactory";
3
2
 
4
- export type CrdtType<TValue extends unknown, TJson extends unknown = any> = Omit<
5
- TValue,
6
- "__pluvType"
7
- > & {
8
- __pluvType: () => TJson;
9
- };
3
+ export type InferDoc<TFactory extends AbstractCrdtDocFactory<any, any>> =
4
+ InferDocLike<TFactory>["value"];
10
5
 
11
- export type InferCrdtJson<T extends unknown> =
12
- T extends CrdtType<any, infer IJson>
13
- ? InferCrdtJson<IJson>
14
- : T extends Record<string, any>
15
- ? { [P in keyof T]: InferCrdtJson<T[P]> }
16
- : T extends (infer IJson)[]
17
- ? InferCrdtJson<IJson>[]
18
- : T extends readonly (infer IJson)[]
19
- ? readonly InferCrdtJson<IJson>[]
20
- : T extends Json
21
- ? T
22
- : string;
6
+ export type InferDocLike<TFactory extends AbstractCrdtDocFactory<any, any>> = ReturnType<
7
+ TFactory["getInitialized"]
8
+ >;
23
9
 
24
- export type InferInitialStorageFn<TFactory extends AbstractCrdtDocFactory<any>> =
10
+ export type InferInitialStorageFn<TFactory extends AbstractCrdtDocFactory<any, any>> =
25
11
  TFactory["_initialStorage"];
26
12
 
27
- export type InferStorage<TFactory extends AbstractCrdtDocFactory<any>> = ReturnType<
13
+ export type InferStorage<TFactory extends AbstractCrdtDocFactory<any, any>> = ReturnType<
28
14
  InferInitialStorageFn<TFactory>
29
15
  >;
30
16
 
31
- export type InferBuilder<TFactory extends AbstractCrdtDocFactory<any>> = Parameters<
17
+ export type InferBuilder<TFactory extends AbstractCrdtDocFactory<any, any>> = Parameters<
32
18
  InferInitialStorageFn<TFactory>
33
19
  >[0];