@pluv/crdt 1.0.2 → 2.0.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@1.0.2 build /home/runner/work/pluv/pluv/packages/crdt
2
+ > @pluv/crdt@2.0.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.46 KB
12
- ESM ⚡️ Build success in 32ms
11
+ ESM dist/index.mjs 1.51 KB
12
+ ESM ⚡️ Build success in 23ms
13
13
  CJS dist/index.js 2.63 KB
14
- CJS ⚡️ Build success in 32ms
14
+ CJS ⚡️ Build success in 23ms
15
15
  DTS Build start
16
- DTS ⚡️ Build success in 475ms
17
- DTS dist/index.d.mts 3.48 KB
18
- DTS dist/index.d.ts 3.48 KB
16
+ DTS ⚡️ Build success in 519ms
17
+ DTS dist/index.d.mts 2.78 KB
18
+ DTS dist/index.d.ts 2.78 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @pluv/crdt
2
2
 
3
+ ## 2.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - @pluv/types@2.0.1
8
+
9
+ ## 2.0.0
10
+
11
+ ### Patch Changes
12
+
13
+ - 047a1d8: Moved several internal types to `@pluv/types`.
14
+ - Updated dependencies [047a1d8]
15
+ - @pluv/types@2.0.0
16
+
3
17
  ## 1.0.2
4
18
 
5
19
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,4 +1,5 @@
1
- import { Json, Maybe } from '@pluv/types';
1
+ import { Json, CrdtDocLike, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams } from '@pluv/types';
2
+ export { CrdtDocLike, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams } from '@pluv/types';
2
3
 
3
4
  type CrdtType<TValue extends unknown, TJson extends unknown = any> = Omit<TValue, "__pluvType"> & {
4
5
  __pluvType: () => TJson;
@@ -6,49 +7,20 @@ type CrdtType<TValue extends unknown, TJson extends unknown = any> = Omit<TValue
6
7
  type InferCrdtJson<T extends unknown> = T extends CrdtType<any, infer IJson> ? InferCrdtJson<IJson> : T extends Record<string, any> ? {
7
8
  [P in keyof T]: InferCrdtJson<T[P]>;
8
9
  } : T extends (infer IJson)[] ? InferCrdtJson<IJson>[] : T extends readonly (infer IJson)[] ? readonly InferCrdtJson<IJson>[] : T extends Json ? T : string;
9
-
10
- interface DocApplyEncodedStateParams {
11
- origin?: string;
12
- update?: Maybe<string | Uint8Array>;
13
- }
14
- interface DocBatchApplyEncodedStateParams {
15
- origin?: string;
16
- updates?: Maybe<readonly Maybe<string | Uint8Array>[]>;
17
- }
18
- interface DocSubscribeCallbackParams<TStorage extends Record<string, CrdtType<any, any>>> {
19
- doc: AbstractCrdtDoc<TStorage>;
20
- local: boolean;
21
- origin?: string | null;
22
- update: string;
23
- }
24
- declare abstract class AbstractCrdtDoc<TStorage extends Record<string, CrdtType<any, any>>> {
25
- abstract applyEncodedState(params: DocApplyEncodedStateParams): this;
26
- abstract batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this;
27
- abstract canRedo(): boolean;
28
- abstract canUndo(): boolean;
29
- abstract destroy(): void;
30
- abstract get(key?: undefined): TStorage;
31
- abstract get<TKey extends keyof TStorage>(key: TKey): TStorage[TKey];
32
- abstract getEncodedState(): string;
33
- abstract isEmpty(): boolean;
34
- abstract rebuildStorage(reference: TStorage): this;
35
- abstract redo(): this;
36
- abstract subscribe(listener: (params: DocSubscribeCallbackParams<TStorage>) => void): () => void;
37
- abstract toJson(): InferCrdtJson<TStorage>;
38
- abstract toJson<TKey extends keyof TStorage>(type: TKey): InferCrdtJson<TStorage[TKey]>;
39
- abstract track(): this;
40
- abstract transact(fn: () => void, origin?: string): this;
41
- abstract undo(): this;
42
- }
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];
43
13
 
44
14
  declare abstract class AbstractCrdtDocFactory<TStorage extends Record<string, CrdtType<any, any>>> {
45
- abstract getEmpty(): AbstractCrdtDoc<TStorage>;
46
- abstract getFactory(initialStorage?: () => TStorage): AbstractCrdtDocFactory<TStorage>;
47
- abstract getInitialized(initialStorage?: () => TStorage): AbstractCrdtDoc<TStorage>;
15
+ _initialStorage: (builder: any) => TStorage;
16
+ 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>;
48
20
  resolveEncodedState(updates: string | string[] | readonly string[]): string | null;
49
21
  }
50
22
 
51
- declare class NoopCrdtDoc extends AbstractCrdtDoc<any> {
23
+ declare class NoopCrdtDoc implements CrdtDocLike<any> {
52
24
  applyEncodedState(params: DocApplyEncodedStateParams): this;
53
25
  batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this;
54
26
  canRedo(): boolean;
@@ -68,13 +40,14 @@ declare class NoopCrdtDoc extends AbstractCrdtDoc<any> {
68
40
  }
69
41
 
70
42
  declare class NoopCrdtDocFactory extends AbstractCrdtDocFactory<any> {
43
+ constructor(initialStorage?: () => {});
71
44
  getEmpty(): NoopCrdtDoc;
72
- getFactory(initialStorage?: (() => any) | undefined): NoopCrdtDocFactory;
73
- getInitialized(initialStorage?: (() => any) | undefined): NoopCrdtDoc;
45
+ getFactory(initialStorage?: ((builder: any) => any) | undefined): NoopCrdtDocFactory;
46
+ getInitialized(initialStorage?: ((builder: any) => any) | undefined): NoopCrdtDoc;
74
47
  }
75
48
 
76
49
  declare const noop: {
77
50
  doc: (args?: any) => NoopCrdtDocFactory;
78
51
  };
79
52
 
80
- export { AbstractCrdtDoc, AbstractCrdtDocFactory, type CrdtType, type DocApplyEncodedStateParams, type DocBatchApplyEncodedStateParams, type DocSubscribeCallbackParams, type InferCrdtJson, NoopCrdtDoc, NoopCrdtDocFactory, noop };
53
+ export { AbstractCrdtDocFactory, type CrdtType, type InferBuilder, type InferCrdtJson, type InferInitialStorageFn, type InferStorage, NoopCrdtDoc, NoopCrdtDocFactory, noop };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { Json, Maybe } from '@pluv/types';
1
+ import { Json, CrdtDocLike, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams } from '@pluv/types';
2
+ export { CrdtDocLike, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams } from '@pluv/types';
2
3
 
3
4
  type CrdtType<TValue extends unknown, TJson extends unknown = any> = Omit<TValue, "__pluvType"> & {
4
5
  __pluvType: () => TJson;
@@ -6,49 +7,20 @@ type CrdtType<TValue extends unknown, TJson extends unknown = any> = Omit<TValue
6
7
  type InferCrdtJson<T extends unknown> = T extends CrdtType<any, infer IJson> ? InferCrdtJson<IJson> : T extends Record<string, any> ? {
7
8
  [P in keyof T]: InferCrdtJson<T[P]>;
8
9
  } : T extends (infer IJson)[] ? InferCrdtJson<IJson>[] : T extends readonly (infer IJson)[] ? readonly InferCrdtJson<IJson>[] : T extends Json ? T : string;
9
-
10
- interface DocApplyEncodedStateParams {
11
- origin?: string;
12
- update?: Maybe<string | Uint8Array>;
13
- }
14
- interface DocBatchApplyEncodedStateParams {
15
- origin?: string;
16
- updates?: Maybe<readonly Maybe<string | Uint8Array>[]>;
17
- }
18
- interface DocSubscribeCallbackParams<TStorage extends Record<string, CrdtType<any, any>>> {
19
- doc: AbstractCrdtDoc<TStorage>;
20
- local: boolean;
21
- origin?: string | null;
22
- update: string;
23
- }
24
- declare abstract class AbstractCrdtDoc<TStorage extends Record<string, CrdtType<any, any>>> {
25
- abstract applyEncodedState(params: DocApplyEncodedStateParams): this;
26
- abstract batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this;
27
- abstract canRedo(): boolean;
28
- abstract canUndo(): boolean;
29
- abstract destroy(): void;
30
- abstract get(key?: undefined): TStorage;
31
- abstract get<TKey extends keyof TStorage>(key: TKey): TStorage[TKey];
32
- abstract getEncodedState(): string;
33
- abstract isEmpty(): boolean;
34
- abstract rebuildStorage(reference: TStorage): this;
35
- abstract redo(): this;
36
- abstract subscribe(listener: (params: DocSubscribeCallbackParams<TStorage>) => void): () => void;
37
- abstract toJson(): InferCrdtJson<TStorage>;
38
- abstract toJson<TKey extends keyof TStorage>(type: TKey): InferCrdtJson<TStorage[TKey]>;
39
- abstract track(): this;
40
- abstract transact(fn: () => void, origin?: string): this;
41
- abstract undo(): this;
42
- }
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];
43
13
 
44
14
  declare abstract class AbstractCrdtDocFactory<TStorage extends Record<string, CrdtType<any, any>>> {
45
- abstract getEmpty(): AbstractCrdtDoc<TStorage>;
46
- abstract getFactory(initialStorage?: () => TStorage): AbstractCrdtDocFactory<TStorage>;
47
- abstract getInitialized(initialStorage?: () => TStorage): AbstractCrdtDoc<TStorage>;
15
+ _initialStorage: (builder: any) => TStorage;
16
+ 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>;
48
20
  resolveEncodedState(updates: string | string[] | readonly string[]): string | null;
49
21
  }
50
22
 
51
- declare class NoopCrdtDoc extends AbstractCrdtDoc<any> {
23
+ declare class NoopCrdtDoc implements CrdtDocLike<any> {
52
24
  applyEncodedState(params: DocApplyEncodedStateParams): this;
53
25
  batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this;
54
26
  canRedo(): boolean;
@@ -68,13 +40,14 @@ declare class NoopCrdtDoc extends AbstractCrdtDoc<any> {
68
40
  }
69
41
 
70
42
  declare class NoopCrdtDocFactory extends AbstractCrdtDocFactory<any> {
43
+ constructor(initialStorage?: () => {});
71
44
  getEmpty(): NoopCrdtDoc;
72
- getFactory(initialStorage?: (() => any) | undefined): NoopCrdtDocFactory;
73
- getInitialized(initialStorage?: (() => any) | undefined): NoopCrdtDoc;
45
+ getFactory(initialStorage?: ((builder: any) => any) | undefined): NoopCrdtDocFactory;
46
+ getInitialized(initialStorage?: ((builder: any) => any) | undefined): NoopCrdtDoc;
74
47
  }
75
48
 
76
49
  declare const noop: {
77
50
  doc: (args?: any) => NoopCrdtDocFactory;
78
51
  };
79
52
 
80
- export { AbstractCrdtDoc, AbstractCrdtDocFactory, type CrdtType, type DocApplyEncodedStateParams, type DocBatchApplyEncodedStateParams, type DocSubscribeCallbackParams, type InferCrdtJson, NoopCrdtDoc, NoopCrdtDocFactory, noop };
53
+ export { AbstractCrdtDocFactory, type CrdtType, type InferBuilder, type InferCrdtJson, type InferInitialStorageFn, type InferStorage, NoopCrdtDoc, NoopCrdtDocFactory, noop };
package/dist/index.js CHANGED
@@ -20,7 +20,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
- AbstractCrdtDoc: () => AbstractCrdtDoc,
24
23
  AbstractCrdtDocFactory: () => AbstractCrdtDocFactory,
25
24
  NoopCrdtDoc: () => NoopCrdtDoc,
26
25
  NoopCrdtDocFactory: () => NoopCrdtDocFactory,
@@ -28,12 +27,11 @@ __export(index_exports, {
28
27
  });
29
28
  module.exports = __toCommonJS(index_exports);
30
29
 
31
- // src/AbstractCrdtDoc.ts
32
- var AbstractCrdtDoc = class {
33
- };
34
-
35
30
  // src/AbstractCrdtDocFactory.ts
36
31
  var AbstractCrdtDocFactory = class {
32
+ constructor(initialStorage) {
33
+ this._initialStorage = initialStorage;
34
+ }
37
35
  resolveEncodedState(updates) {
38
36
  if (typeof updates === "string") return updates;
39
37
  if (!updates.length) return null;
@@ -42,7 +40,7 @@ var AbstractCrdtDocFactory = class {
42
40
  };
43
41
 
44
42
  // src/NoopCrdtDoc.ts
45
- var NoopCrdtDoc = class extends AbstractCrdtDoc {
43
+ var NoopCrdtDoc = class {
46
44
  applyEncodedState(params) {
47
45
  return this;
48
46
  }
@@ -93,6 +91,9 @@ var NoopCrdtDoc = class extends AbstractCrdtDoc {
93
91
 
94
92
  // src/NoopCrdtDocFactory.ts
95
93
  var NoopCrdtDocFactory = class extends AbstractCrdtDocFactory {
94
+ constructor(initialStorage = () => ({})) {
95
+ super(initialStorage);
96
+ }
96
97
  getEmpty() {
97
98
  return new NoopCrdtDoc();
98
99
  }
@@ -110,7 +111,6 @@ var noop = {
110
111
  };
111
112
  // Annotate the CommonJS export names for ESM import in node:
112
113
  0 && (module.exports = {
113
- AbstractCrdtDoc,
114
114
  AbstractCrdtDocFactory,
115
115
  NoopCrdtDoc,
116
116
  NoopCrdtDocFactory,
package/dist/index.mjs CHANGED
@@ -1,9 +1,8 @@
1
- // src/AbstractCrdtDoc.ts
2
- var AbstractCrdtDoc = class {
3
- };
4
-
5
1
  // src/AbstractCrdtDocFactory.ts
6
2
  var AbstractCrdtDocFactory = class {
3
+ constructor(initialStorage) {
4
+ this._initialStorage = initialStorage;
5
+ }
7
6
  resolveEncodedState(updates) {
8
7
  if (typeof updates === "string") return updates;
9
8
  if (!updates.length) return null;
@@ -12,7 +11,7 @@ var AbstractCrdtDocFactory = class {
12
11
  };
13
12
 
14
13
  // src/NoopCrdtDoc.ts
15
- var NoopCrdtDoc = class extends AbstractCrdtDoc {
14
+ var NoopCrdtDoc = class {
16
15
  applyEncodedState(params) {
17
16
  return this;
18
17
  }
@@ -63,6 +62,9 @@ var NoopCrdtDoc = class extends AbstractCrdtDoc {
63
62
 
64
63
  // src/NoopCrdtDocFactory.ts
65
64
  var NoopCrdtDocFactory = class extends AbstractCrdtDocFactory {
65
+ constructor(initialStorage = () => ({})) {
66
+ super(initialStorage);
67
+ }
66
68
  getEmpty() {
67
69
  return new NoopCrdtDoc();
68
70
  }
@@ -79,7 +81,6 @@ var noop = {
79
81
  doc: (args) => new NoopCrdtDocFactory()
80
82
  };
81
83
  export {
82
- AbstractCrdtDoc,
83
84
  AbstractCrdtDocFactory,
84
85
  NoopCrdtDoc,
85
86
  NoopCrdtDocFactory,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pluv/crdt",
3
- "version": "1.0.2",
3
+ "version": "2.0.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": "^1.0.2"
20
+ "@pluv/types": "^2.0.1"
21
21
  },
22
22
  "devDependencies": {
23
23
  "eslint": "^9.25.1",
24
24
  "tsup": "^8.4.0",
25
25
  "typescript": "^5.8.3",
26
- "@pluv/tsconfig": "^1.0.2",
27
- "eslint-config-pluv": "^1.0.2"
26
+ "@pluv/tsconfig": "^2.0.1",
27
+ "eslint-config-pluv": "^2.0.1"
28
28
  },
29
29
  "scripts": {
30
30
  "build": "tsup src/index.ts --format esm,cjs --dts",
@@ -1,10 +1,20 @@
1
- import type { AbstractCrdtDoc } from "./AbstractCrdtDoc";
1
+ import type { CrdtDocLike } from "@pluv/types";
2
2
  import type { CrdtType } from "./types";
3
3
 
4
4
  export abstract class AbstractCrdtDocFactory<TStorage extends Record<string, CrdtType<any, any>>> {
5
- public abstract getEmpty(): AbstractCrdtDoc<TStorage>;
6
- public abstract getFactory(initialStorage?: () => TStorage): AbstractCrdtDocFactory<TStorage>;
7
- public abstract getInitialized(initialStorage?: () => TStorage): AbstractCrdtDoc<TStorage>;
5
+ public _initialStorage: (builder: any) => TStorage;
6
+
7
+ constructor(initialStorage: (builder: any) => TStorage) {
8
+ this._initialStorage = initialStorage;
9
+ }
10
+
11
+ public abstract getEmpty(): CrdtDocLike<TStorage>;
12
+ public abstract getFactory(
13
+ initialStorage?: (builder: any) => TStorage,
14
+ ): AbstractCrdtDocFactory<TStorage>;
15
+ public abstract getInitialized(
16
+ initialStorage?: (builder: any) => TStorage,
17
+ ): CrdtDocLike<TStorage>;
8
18
 
9
19
  public resolveEncodedState(updates: string | string[] | readonly string[]): string | null {
10
20
  if (typeof updates === "string") return updates;
@@ -1,11 +1,11 @@
1
- import type {
1
+ import {
2
+ CrdtDocLike,
2
3
  DocApplyEncodedStateParams,
3
4
  DocBatchApplyEncodedStateParams,
4
5
  DocSubscribeCallbackParams,
5
- } from "./AbstractCrdtDoc";
6
- import { AbstractCrdtDoc } from "./AbstractCrdtDoc";
6
+ } from "@pluv/types";
7
7
 
8
- export class NoopCrdtDoc extends AbstractCrdtDoc<any> {
8
+ export class NoopCrdtDoc implements CrdtDocLike<any> {
9
9
  public applyEncodedState(params: DocApplyEncodedStateParams): this {
10
10
  return this;
11
11
  }
@@ -2,15 +2,19 @@ import { AbstractCrdtDocFactory } from "./AbstractCrdtDocFactory";
2
2
  import { NoopCrdtDoc } from "./NoopCrdtDoc";
3
3
 
4
4
  export class NoopCrdtDocFactory extends AbstractCrdtDocFactory<any> {
5
+ constructor(initialStorage: () => {} = () => ({})) {
6
+ super(initialStorage);
7
+ }
8
+
5
9
  public getEmpty(): NoopCrdtDoc {
6
10
  return new NoopCrdtDoc();
7
11
  }
8
12
 
9
- public getFactory(initialStorage?: (() => any) | undefined): NoopCrdtDocFactory {
13
+ public getFactory(initialStorage?: ((builder: any) => any) | undefined): NoopCrdtDocFactory {
10
14
  return this;
11
15
  }
12
16
 
13
- public getInitialized(initialStorage?: (() => any) | undefined): NoopCrdtDoc {
17
+ public getInitialized(initialStorage?: ((builder: any) => any) | undefined): NoopCrdtDoc {
14
18
  return new NoopCrdtDoc();
15
19
  }
16
20
  }
package/src/index.ts CHANGED
@@ -1,11 +1,17 @@
1
- export { AbstractCrdtDoc } from "./AbstractCrdtDoc";
2
1
  export type {
2
+ CrdtDocLike,
3
3
  DocApplyEncodedStateParams,
4
4
  DocBatchApplyEncodedStateParams,
5
5
  DocSubscribeCallbackParams,
6
- } from "./AbstractCrdtDoc";
6
+ } from "@pluv/types";
7
7
  export { AbstractCrdtDocFactory } from "./AbstractCrdtDocFactory";
8
8
  export { noop } from "./noop";
9
9
  export { NoopCrdtDoc } from "./NoopCrdtDoc";
10
10
  export { NoopCrdtDocFactory } from "./NoopCrdtDocFactory";
11
- export type { CrdtType, InferCrdtJson } from "./types";
11
+ export type {
12
+ CrdtType,
13
+ InferBuilder,
14
+ InferCrdtJson,
15
+ InferInitialStorageFn,
16
+ InferStorage,
17
+ } from "./types";
package/src/types.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { Json } from "@pluv/types";
2
+ import { AbstractCrdtDocFactory } from "./AbstractCrdtDocFactory";
2
3
 
3
4
  export type CrdtType<TValue extends unknown, TJson extends unknown = any> = Omit<
4
5
  TValue,
@@ -19,3 +20,14 @@ export type InferCrdtJson<T extends unknown> =
19
20
  : T extends Json
20
21
  ? T
21
22
  : string;
23
+
24
+ export type InferInitialStorageFn<TFactory extends AbstractCrdtDocFactory<any>> =
25
+ TFactory["_initialStorage"];
26
+
27
+ export type InferStorage<TFactory extends AbstractCrdtDocFactory<any>> = ReturnType<
28
+ InferInitialStorageFn<TFactory>
29
+ >;
30
+
31
+ export type InferBuilder<TFactory extends AbstractCrdtDocFactory<any>> = Parameters<
32
+ InferInitialStorageFn<TFactory>
33
+ >[0];
@@ -1,41 +0,0 @@
1
- import type { Maybe } from "@pluv/types";
2
- import type { CrdtType, InferCrdtJson } from "./types";
3
-
4
- export interface DocApplyEncodedStateParams {
5
- origin?: string;
6
- update?: Maybe<string | Uint8Array>;
7
- }
8
-
9
- export interface DocBatchApplyEncodedStateParams {
10
- origin?: string;
11
- updates?: Maybe<readonly Maybe<string | Uint8Array>[]>;
12
- }
13
-
14
- export interface DocSubscribeCallbackParams<TStorage extends Record<string, CrdtType<any, any>>> {
15
- doc: AbstractCrdtDoc<TStorage>;
16
- local: boolean;
17
- origin?: string | null;
18
- update: string;
19
- }
20
-
21
- export abstract class AbstractCrdtDoc<TStorage extends Record<string, CrdtType<any, any>>> {
22
- public abstract applyEncodedState(params: DocApplyEncodedStateParams): this;
23
- public abstract batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this;
24
- public abstract canRedo(): boolean;
25
- public abstract canUndo(): boolean;
26
- public abstract destroy(): void;
27
- public abstract get(key?: undefined): TStorage;
28
- public abstract get<TKey extends keyof TStorage>(key: TKey): TStorage[TKey];
29
- public abstract getEncodedState(): string;
30
- public abstract isEmpty(): boolean;
31
- public abstract rebuildStorage(reference: TStorage): this;
32
- public abstract redo(): this;
33
- public abstract subscribe(
34
- listener: (params: DocSubscribeCallbackParams<TStorage>) => void,
35
- ): () => void;
36
- public abstract toJson(): InferCrdtJson<TStorage>;
37
- public abstract toJson<TKey extends keyof TStorage>(type: TKey): InferCrdtJson<TStorage[TKey]>;
38
- public abstract track(): this;
39
- public abstract transact(fn: () => void, origin?: string): this;
40
- public abstract undo(): this;
41
- }