@pluv/crdt-loro 0.19.0 → 0.20.0
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.
- package/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +77 -0
- package/dist/index.d.mts +24 -102
- package/dist/index.d.ts +24 -102
- package/dist/index.js +84 -448
- package/dist/index.mjs +79 -443
- package/package.json +7 -7
- package/src/doc/CrdtLoroDoc.ts +43 -39
- package/src/doc/CrdtLoroDocFactory.ts +9 -16
- package/src/doc/doc.ts +2 -2
- package/src/list.ts +13 -0
- package/src/loro.ts +5 -5
- package/src/map.ts +15 -0
- package/src/object.ts +13 -0
- package/src/text.ts +10 -0
- package/src/types.ts +6 -39
- package/src/array/CrdtLoroArray.ts +0 -96
- package/src/array/array.ts +0 -5
- package/src/array/index.ts +0 -2
- package/src/map/CrdtLoroMap.ts +0 -88
- package/src/map/index.ts +0 -2
- package/src/map/map.ts +0 -5
- package/src/object/CrdtLoroObject.ts +0 -75
- package/src/object/index.ts +0 -2
- package/src/object/object.ts +0 -5
- package/src/shared/cloneType.ts +0 -234
- package/src/shared/getLoroContainerType.ts +0 -22
- package/src/shared/index.ts +0 -5
- package/src/shared/isWrapper.ts +0 -15
- package/src/shared/toLoroValue.ts +0 -5
- package/src/text/CrdtLoroText.ts +0 -68
- package/src/text/index.ts +0 -2
- package/src/text/text.ts +0 -5
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @pluv/crdt-loro@0.
|
|
2
|
+
> @pluv/crdt-loro@0.20.0 build /home/runner/work/pluv/pluv/packages/crdt-loro
|
|
3
3
|
> tsup src/index.ts --format esm,cjs --dts
|
|
4
4
|
|
|
5
5
|
CLI Building entry: src/index.ts
|
|
@@ -8,11 +8,11 @@ CLI tsup v8.1.0
|
|
|
8
8
|
CLI Target: es6
|
|
9
9
|
ESM Build start
|
|
10
10
|
CJS Build start
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
CJS dist/index.js 9.39 KB
|
|
12
|
+
CJS ⚡️ Build success in 80ms
|
|
13
|
+
ESM dist/index.mjs 8.33 KB
|
|
14
|
+
ESM ⚡️ Build success in 80ms
|
|
15
15
|
DTS Build start
|
|
16
|
-
DTS ⚡️ Build success in
|
|
17
|
-
DTS dist/index.d.mts
|
|
18
|
-
DTS dist/index.d.ts
|
|
16
|
+
DTS ⚡️ Build success in 1828ms
|
|
17
|
+
DTS dist/index.d.mts 3.41 KB
|
|
18
|
+
DTS dist/index.d.ts 3.41 KB
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,82 @@
|
|
|
1
1
|
# @pluv/crdt-loro
|
|
2
2
|
|
|
3
|
+
## 0.20.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 9492085: **BREAKING**: `@pluv/crdt-yjs` and `@pluv/crdt-loro` have been updated so that the utilities to create shared-types/containers no-longer return a wrapper around the underlying shared-types and containers, but rather return the shared-types/containers directly.
|
|
8
|
+
|
|
9
|
+
This means that for methods such as `getStorage` from `@pluv/client` and `useStorage` from `@pluv/react`, the shared-types/containers are also returned instead of the wrapper types.
|
|
10
|
+
|
|
11
|
+
The motivation for these changes are so that pluv.io is supplementary to `yjs` and `loro-crdt`, instead of having these libraries be an internal implementation of pluv.io.
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
// Before
|
|
15
|
+
|
|
16
|
+
import { yjs } from "@pluv/crdt-yjs";
|
|
17
|
+
|
|
18
|
+
yjs.array([]); // Returns CrdtYjsArray
|
|
19
|
+
yjs.object([]); // Returns CrdtYjsObject
|
|
20
|
+
|
|
21
|
+
const room: PluvRoom = /* ... */;
|
|
22
|
+
|
|
23
|
+
room.getStorage("messages"); // Returns AbstractCrdtType
|
|
24
|
+
|
|
25
|
+
const [, sharedType] = useStorage("messages"); // sharedType is an AbstractCrdtType
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
// Now
|
|
30
|
+
|
|
31
|
+
import { yjs } from "@pluv/crdt-yjs";
|
|
32
|
+
|
|
33
|
+
yjs.array([]); // Returns yjs.Array
|
|
34
|
+
yjs.object([]); // Returns yjs.Map
|
|
35
|
+
|
|
36
|
+
const room: PluvRoom = /* ... */;
|
|
37
|
+
|
|
38
|
+
room.getStorage("messages"); // Returns yjs.AbstractType
|
|
39
|
+
|
|
40
|
+
const [, sharedType] = useStorage("messages"); // sharedType is a yjs.AbstractType
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
For `@pluv/crdt-loro` specifically, `@pluv/client` relies on [loro events and subscriptions](https://www.loro.dev/docs/tutorial/get_started#event) to detect changes. The `AbstractLoroCrdt` types previously called `Loro.commit` after each change as an abstraction, but now this no-longer happens. To ensure that changes to loro containers are properly handled in `@pluv/react`, make sure to commit your changes whenever possible:
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
// Before
|
|
47
|
+
|
|
48
|
+
const [data, container] = useStorage("messages");
|
|
49
|
+
|
|
50
|
+
// This automatically called Loro.commit under the hood and rerendered the page with updated data.
|
|
51
|
+
container.push(loro.object({ name: "John Doe", age: 35 }));
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
// Now
|
|
56
|
+
|
|
57
|
+
const [data, container] = useStorage("messages");
|
|
58
|
+
|
|
59
|
+
const doc = useDoc();
|
|
60
|
+
const transact = useTransact();
|
|
61
|
+
|
|
62
|
+
// Updates need to be committed back to the doc whenever the changes need to be emitted to other users
|
|
63
|
+
// The returned data also will not update until the changes are commited
|
|
64
|
+
|
|
65
|
+
// The two operations below are functionally equivalent
|
|
66
|
+
transact(() => {
|
|
67
|
+
container.push(loro.object({ name: "John Doe", age: 35 }));
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
container.push(loro.object({ name: "John Doe", age: 35 }));
|
|
71
|
+
doc.value.commit();
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Patch Changes
|
|
75
|
+
|
|
76
|
+
- Updated dependencies [9492085]
|
|
77
|
+
- @pluv/crdt@0.20.0
|
|
78
|
+
- @pluv/types@0.20.0
|
|
79
|
+
|
|
3
80
|
## 0.19.0
|
|
4
81
|
|
|
5
82
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Loro, LoroMap, LoroText
|
|
3
|
-
import { Json } from '@pluv/types';
|
|
1
|
+
import { CrdtType, AbstractCrdtDoc, DocApplyEncodedStateParams, InferCrdtJson, DocSubscribeCallbackParams, AbstractCrdtDocFactory } from '@pluv/crdt';
|
|
2
|
+
import { Loro, LoroList, LoroMap, LoroText } from 'loro-crdt';
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
type LoroType<TValue extends unknown, TJson extends unknown = any> = TValue & CrdtType<TValue, TJson> & {
|
|
5
|
+
toJSON?: () => any;
|
|
6
|
+
toString?: () => string;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
declare class CrdtLoroDoc<TStorage extends Record<string, LoroType<any, any>>> extends AbstractCrdtDoc<TStorage> {
|
|
6
10
|
value: Loro;
|
|
7
11
|
private _storage;
|
|
8
12
|
constructor(value?: TStorage);
|
|
@@ -22,7 +26,8 @@ declare class CrdtLoroDoc<TStorage extends Record<string, AbstractCrdtType<any,
|
|
|
22
26
|
get(key?: undefined): TStorage;
|
|
23
27
|
get<TKey extends keyof TStorage>(key: TKey): TStorage[TKey];
|
|
24
28
|
getEncodedState(): string;
|
|
25
|
-
toJson():
|
|
29
|
+
toJson(): InferCrdtJson<TStorage>;
|
|
30
|
+
toJson<TKey extends keyof TStorage>(type: TKey): InferCrdtJson<TStorage[TKey]>;
|
|
26
31
|
isEmpty(): boolean;
|
|
27
32
|
/**
|
|
28
33
|
* TODO
|
|
@@ -47,89 +52,7 @@ declare class CrdtLoroDoc<TStorage extends Record<string, AbstractCrdtType<any,
|
|
|
47
52
|
undo(): this;
|
|
48
53
|
}
|
|
49
54
|
|
|
50
|
-
declare class
|
|
51
|
-
readonly initialValue: readonly (readonly [key: string, value: T])[];
|
|
52
|
-
private _doc;
|
|
53
|
-
private _initialized;
|
|
54
|
-
private _value;
|
|
55
|
-
constructor(value?: readonly (readonly [key: string, value: T])[]);
|
|
56
|
-
set doc(doc: CrdtLoroDoc<any>);
|
|
57
|
-
get size(): number;
|
|
58
|
-
get value(): LoroMap<Record<string, T>>;
|
|
59
|
-
set value(value: LoroMap<Record<string, T>>);
|
|
60
|
-
delete(prop: string): this;
|
|
61
|
-
set(prop: string, value: T): this;
|
|
62
|
-
toJson(): InferCrdtStorageJson<Record<string, InferLoroJson<T>>>;
|
|
63
|
-
private _guardInitialized;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
declare const map: <T extends unknown>(value?: readonly (readonly [key: string, value: T])[]) => CrdtLoroMap<T>;
|
|
67
|
-
|
|
68
|
-
declare class CrdtLoroObject<T extends Record<string, any>> extends AbstractCrdtType<LoroMap<T>, InferLoroJson<T>> {
|
|
69
|
-
readonly initialValue: readonly (readonly [key: string, value: T])[];
|
|
70
|
-
private _doc;
|
|
71
|
-
private _initialized;
|
|
72
|
-
private _value;
|
|
73
|
-
constructor(value: T);
|
|
74
|
-
set doc(doc: CrdtLoroDoc<any>);
|
|
75
|
-
get size(): number;
|
|
76
|
-
get value(): LoroMap<T>;
|
|
77
|
-
set value(value: LoroMap<T>);
|
|
78
|
-
set(prop: string, value: T): this;
|
|
79
|
-
toJson(): InferCrdtStorageJson<InferLoroJson<T>>;
|
|
80
|
-
private _guardInitialized;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
declare const object: <T extends Record<string, any>>(value: T) => CrdtLoroObject<T>;
|
|
84
|
-
|
|
85
|
-
declare class CrdtLoroText extends AbstractCrdtType<LoroText, string> {
|
|
86
|
-
initalValue: string;
|
|
87
|
-
private _doc;
|
|
88
|
-
private _initialized;
|
|
89
|
-
private _value;
|
|
90
|
-
constructor(value?: string);
|
|
91
|
-
set doc(doc: CrdtLoroDoc<any>);
|
|
92
|
-
get length(): number;
|
|
93
|
-
get value(): LoroText;
|
|
94
|
-
set value(value: LoroText);
|
|
95
|
-
delete(index: number, length?: number): this;
|
|
96
|
-
insert(index: number, text: string): this;
|
|
97
|
-
toJson(): string;
|
|
98
|
-
private _guardInitialized;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
declare const text: (value?: string) => CrdtLoroText;
|
|
102
|
-
|
|
103
|
-
type InferLoroType<T extends unknown> = T extends CrdtLoroArray<infer IType> ? LoroList<IType[]> : T extends CrdtLoroMap<infer IType> ? LoroMap<Record<string, IType>> : T extends CrdtLoroObject<infer IType> ? LoroMap<IType> : T extends CrdtLoroText ? LoroText : T extends Json ? T : never;
|
|
104
|
-
type InferLoroJson<T extends unknown> = T extends CrdtLoroArray<infer IType> ? InferLoroJson<IType>[] : T extends CrdtLoroMap<infer IType> ? Record<string, InferLoroJson<IType>> : T extends CrdtLoroObject<infer IType> ? {
|
|
105
|
-
[P in keyof IType]: InferLoroJson<IType[P]>;
|
|
106
|
-
} : T extends CrdtLoroText | LoroText ? string : T extends LoroList<infer IType> ? InferLoroJson<IType> : T extends LoroMap<infer IType> ? {
|
|
107
|
-
[P in keyof IType]: InferLoroJson<IType[P]>;
|
|
108
|
-
} : T extends (infer IType)[] ? InferLoroJson<IType>[] : T extends Record<any, any> ? {
|
|
109
|
-
[P in keyof T]: InferLoroJson<T[P]>;
|
|
110
|
-
} : T extends Json ? T : never;
|
|
111
|
-
|
|
112
|
-
declare class CrdtLoroArray<T extends unknown> extends AbstractCrdtType<LoroList<T[]>, InferLoroJson<T>[]> {
|
|
113
|
-
readonly initialValue: T[] | readonly T[];
|
|
114
|
-
private _doc;
|
|
115
|
-
private _initialized;
|
|
116
|
-
private _value;
|
|
117
|
-
constructor(value?: T[] | readonly T[]);
|
|
118
|
-
set doc(doc: CrdtLoroDoc<any>);
|
|
119
|
-
get length(): number;
|
|
120
|
-
get value(): LoroList<T[]>;
|
|
121
|
-
set value(value: LoroList<T[]>);
|
|
122
|
-
delete(index: number, length?: number): this;
|
|
123
|
-
insert(index: number, ...items: T[]): this;
|
|
124
|
-
push(...items: T[]): this;
|
|
125
|
-
unshift(...items: T[]): this;
|
|
126
|
-
toJson(): InferCrdtStorageJson<InferLoroJson<T>>[];
|
|
127
|
-
private _guardInitialized;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
declare const array: <T extends unknown>(value?: T[] | readonly T[]) => CrdtLoroArray<T>;
|
|
131
|
-
|
|
132
|
-
declare class CrdtLoroDocFactory<TStorage extends Record<string, AbstractCrdtType<any, any>>> extends AbstractCrdtDocFactory<TStorage> {
|
|
55
|
+
declare class CrdtLoroDocFactory<TStorage extends Record<string, LoroType<any, any>>> extends AbstractCrdtDocFactory<TStorage> {
|
|
133
56
|
private _initialStorage;
|
|
134
57
|
constructor(initialStorage?: () => TStorage);
|
|
135
58
|
getEmpty(): CrdtLoroDoc<TStorage>;
|
|
@@ -138,27 +61,26 @@ declare class CrdtLoroDocFactory<TStorage extends Record<string, AbstractCrdtTyp
|
|
|
138
61
|
getInitialized(initialStorage?: () => TStorage): CrdtLoroDoc<TStorage>;
|
|
139
62
|
}
|
|
140
63
|
|
|
141
|
-
declare const doc: <TStorage extends Record<string,
|
|
64
|
+
declare const doc: <TStorage extends Record<string, any>>(value?: () => TStorage) => CrdtLoroDocFactory<TStorage>;
|
|
65
|
+
|
|
66
|
+
declare const list: <T extends unknown>(value?: T[] | readonly T[]) => LoroType<LoroList<T>, T[]>;
|
|
67
|
+
|
|
68
|
+
declare const map: <T extends unknown>(value?: readonly (readonly [key: string, value: T])[]) => LoroType<LoroMap<Record<string, T>>, Record<string, T>>;
|
|
69
|
+
|
|
70
|
+
declare const object: <T extends Record<string, any>>(value: T) => LoroType<LoroMap<T>, T>;
|
|
71
|
+
|
|
72
|
+
declare const text: (value?: string) => LoroType<LoroText, string>;
|
|
142
73
|
|
|
143
|
-
type
|
|
144
|
-
declare const loro_CrdtLoroArray: typeof CrdtLoroArray;
|
|
145
|
-
type loro_CrdtLoroDoc<TStorage extends Record<string, AbstractCrdtType<any, any>>> = CrdtLoroDoc<TStorage>;
|
|
74
|
+
type loro_CrdtLoroDoc<TStorage extends Record<string, LoroType<any, any>>> = CrdtLoroDoc<TStorage>;
|
|
146
75
|
declare const loro_CrdtLoroDoc: typeof CrdtLoroDoc;
|
|
147
|
-
type
|
|
148
|
-
declare const loro_CrdtLoroMap: typeof CrdtLoroMap;
|
|
149
|
-
type loro_CrdtLoroObject<T extends Record<string, any>> = CrdtLoroObject<T>;
|
|
150
|
-
declare const loro_CrdtLoroObject: typeof CrdtLoroObject;
|
|
151
|
-
type loro_CrdtLoroText = CrdtLoroText;
|
|
152
|
-
declare const loro_CrdtLoroText: typeof CrdtLoroText;
|
|
153
|
-
type loro_InferLoroJson<T extends unknown> = InferLoroJson<T>;
|
|
154
|
-
type loro_InferLoroType<T extends unknown> = InferLoroType<T>;
|
|
155
|
-
declare const loro_array: typeof array;
|
|
76
|
+
type loro_LoroType<TValue extends unknown, TJson extends unknown = any> = LoroType<TValue, TJson>;
|
|
156
77
|
declare const loro_doc: typeof doc;
|
|
78
|
+
declare const loro_list: typeof list;
|
|
157
79
|
declare const loro_map: typeof map;
|
|
158
80
|
declare const loro_object: typeof object;
|
|
159
81
|
declare const loro_text: typeof text;
|
|
160
82
|
declare namespace loro {
|
|
161
|
-
export {
|
|
83
|
+
export { loro_CrdtLoroDoc as CrdtLoroDoc, type loro_LoroType as LoroType, loro_doc as doc, loro_list as list, loro_map as map, loro_object as object, loro_text as text };
|
|
162
84
|
}
|
|
163
85
|
|
|
164
86
|
export { loro };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Loro, LoroMap, LoroText
|
|
3
|
-
import { Json } from '@pluv/types';
|
|
1
|
+
import { CrdtType, AbstractCrdtDoc, DocApplyEncodedStateParams, InferCrdtJson, DocSubscribeCallbackParams, AbstractCrdtDocFactory } from '@pluv/crdt';
|
|
2
|
+
import { Loro, LoroList, LoroMap, LoroText } from 'loro-crdt';
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
type LoroType<TValue extends unknown, TJson extends unknown = any> = TValue & CrdtType<TValue, TJson> & {
|
|
5
|
+
toJSON?: () => any;
|
|
6
|
+
toString?: () => string;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
declare class CrdtLoroDoc<TStorage extends Record<string, LoroType<any, any>>> extends AbstractCrdtDoc<TStorage> {
|
|
6
10
|
value: Loro;
|
|
7
11
|
private _storage;
|
|
8
12
|
constructor(value?: TStorage);
|
|
@@ -22,7 +26,8 @@ declare class CrdtLoroDoc<TStorage extends Record<string, AbstractCrdtType<any,
|
|
|
22
26
|
get(key?: undefined): TStorage;
|
|
23
27
|
get<TKey extends keyof TStorage>(key: TKey): TStorage[TKey];
|
|
24
28
|
getEncodedState(): string;
|
|
25
|
-
toJson():
|
|
29
|
+
toJson(): InferCrdtJson<TStorage>;
|
|
30
|
+
toJson<TKey extends keyof TStorage>(type: TKey): InferCrdtJson<TStorage[TKey]>;
|
|
26
31
|
isEmpty(): boolean;
|
|
27
32
|
/**
|
|
28
33
|
* TODO
|
|
@@ -47,89 +52,7 @@ declare class CrdtLoroDoc<TStorage extends Record<string, AbstractCrdtType<any,
|
|
|
47
52
|
undo(): this;
|
|
48
53
|
}
|
|
49
54
|
|
|
50
|
-
declare class
|
|
51
|
-
readonly initialValue: readonly (readonly [key: string, value: T])[];
|
|
52
|
-
private _doc;
|
|
53
|
-
private _initialized;
|
|
54
|
-
private _value;
|
|
55
|
-
constructor(value?: readonly (readonly [key: string, value: T])[]);
|
|
56
|
-
set doc(doc: CrdtLoroDoc<any>);
|
|
57
|
-
get size(): number;
|
|
58
|
-
get value(): LoroMap<Record<string, T>>;
|
|
59
|
-
set value(value: LoroMap<Record<string, T>>);
|
|
60
|
-
delete(prop: string): this;
|
|
61
|
-
set(prop: string, value: T): this;
|
|
62
|
-
toJson(): InferCrdtStorageJson<Record<string, InferLoroJson<T>>>;
|
|
63
|
-
private _guardInitialized;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
declare const map: <T extends unknown>(value?: readonly (readonly [key: string, value: T])[]) => CrdtLoroMap<T>;
|
|
67
|
-
|
|
68
|
-
declare class CrdtLoroObject<T extends Record<string, any>> extends AbstractCrdtType<LoroMap<T>, InferLoroJson<T>> {
|
|
69
|
-
readonly initialValue: readonly (readonly [key: string, value: T])[];
|
|
70
|
-
private _doc;
|
|
71
|
-
private _initialized;
|
|
72
|
-
private _value;
|
|
73
|
-
constructor(value: T);
|
|
74
|
-
set doc(doc: CrdtLoroDoc<any>);
|
|
75
|
-
get size(): number;
|
|
76
|
-
get value(): LoroMap<T>;
|
|
77
|
-
set value(value: LoroMap<T>);
|
|
78
|
-
set(prop: string, value: T): this;
|
|
79
|
-
toJson(): InferCrdtStorageJson<InferLoroJson<T>>;
|
|
80
|
-
private _guardInitialized;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
declare const object: <T extends Record<string, any>>(value: T) => CrdtLoroObject<T>;
|
|
84
|
-
|
|
85
|
-
declare class CrdtLoroText extends AbstractCrdtType<LoroText, string> {
|
|
86
|
-
initalValue: string;
|
|
87
|
-
private _doc;
|
|
88
|
-
private _initialized;
|
|
89
|
-
private _value;
|
|
90
|
-
constructor(value?: string);
|
|
91
|
-
set doc(doc: CrdtLoroDoc<any>);
|
|
92
|
-
get length(): number;
|
|
93
|
-
get value(): LoroText;
|
|
94
|
-
set value(value: LoroText);
|
|
95
|
-
delete(index: number, length?: number): this;
|
|
96
|
-
insert(index: number, text: string): this;
|
|
97
|
-
toJson(): string;
|
|
98
|
-
private _guardInitialized;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
declare const text: (value?: string) => CrdtLoroText;
|
|
102
|
-
|
|
103
|
-
type InferLoroType<T extends unknown> = T extends CrdtLoroArray<infer IType> ? LoroList<IType[]> : T extends CrdtLoroMap<infer IType> ? LoroMap<Record<string, IType>> : T extends CrdtLoroObject<infer IType> ? LoroMap<IType> : T extends CrdtLoroText ? LoroText : T extends Json ? T : never;
|
|
104
|
-
type InferLoroJson<T extends unknown> = T extends CrdtLoroArray<infer IType> ? InferLoroJson<IType>[] : T extends CrdtLoroMap<infer IType> ? Record<string, InferLoroJson<IType>> : T extends CrdtLoroObject<infer IType> ? {
|
|
105
|
-
[P in keyof IType]: InferLoroJson<IType[P]>;
|
|
106
|
-
} : T extends CrdtLoroText | LoroText ? string : T extends LoroList<infer IType> ? InferLoroJson<IType> : T extends LoroMap<infer IType> ? {
|
|
107
|
-
[P in keyof IType]: InferLoroJson<IType[P]>;
|
|
108
|
-
} : T extends (infer IType)[] ? InferLoroJson<IType>[] : T extends Record<any, any> ? {
|
|
109
|
-
[P in keyof T]: InferLoroJson<T[P]>;
|
|
110
|
-
} : T extends Json ? T : never;
|
|
111
|
-
|
|
112
|
-
declare class CrdtLoroArray<T extends unknown> extends AbstractCrdtType<LoroList<T[]>, InferLoroJson<T>[]> {
|
|
113
|
-
readonly initialValue: T[] | readonly T[];
|
|
114
|
-
private _doc;
|
|
115
|
-
private _initialized;
|
|
116
|
-
private _value;
|
|
117
|
-
constructor(value?: T[] | readonly T[]);
|
|
118
|
-
set doc(doc: CrdtLoroDoc<any>);
|
|
119
|
-
get length(): number;
|
|
120
|
-
get value(): LoroList<T[]>;
|
|
121
|
-
set value(value: LoroList<T[]>);
|
|
122
|
-
delete(index: number, length?: number): this;
|
|
123
|
-
insert(index: number, ...items: T[]): this;
|
|
124
|
-
push(...items: T[]): this;
|
|
125
|
-
unshift(...items: T[]): this;
|
|
126
|
-
toJson(): InferCrdtStorageJson<InferLoroJson<T>>[];
|
|
127
|
-
private _guardInitialized;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
declare const array: <T extends unknown>(value?: T[] | readonly T[]) => CrdtLoroArray<T>;
|
|
131
|
-
|
|
132
|
-
declare class CrdtLoroDocFactory<TStorage extends Record<string, AbstractCrdtType<any, any>>> extends AbstractCrdtDocFactory<TStorage> {
|
|
55
|
+
declare class CrdtLoroDocFactory<TStorage extends Record<string, LoroType<any, any>>> extends AbstractCrdtDocFactory<TStorage> {
|
|
133
56
|
private _initialStorage;
|
|
134
57
|
constructor(initialStorage?: () => TStorage);
|
|
135
58
|
getEmpty(): CrdtLoroDoc<TStorage>;
|
|
@@ -138,27 +61,26 @@ declare class CrdtLoroDocFactory<TStorage extends Record<string, AbstractCrdtTyp
|
|
|
138
61
|
getInitialized(initialStorage?: () => TStorage): CrdtLoroDoc<TStorage>;
|
|
139
62
|
}
|
|
140
63
|
|
|
141
|
-
declare const doc: <TStorage extends Record<string,
|
|
64
|
+
declare const doc: <TStorage extends Record<string, any>>(value?: () => TStorage) => CrdtLoroDocFactory<TStorage>;
|
|
65
|
+
|
|
66
|
+
declare const list: <T extends unknown>(value?: T[] | readonly T[]) => LoroType<LoroList<T>, T[]>;
|
|
67
|
+
|
|
68
|
+
declare const map: <T extends unknown>(value?: readonly (readonly [key: string, value: T])[]) => LoroType<LoroMap<Record<string, T>>, Record<string, T>>;
|
|
69
|
+
|
|
70
|
+
declare const object: <T extends Record<string, any>>(value: T) => LoroType<LoroMap<T>, T>;
|
|
71
|
+
|
|
72
|
+
declare const text: (value?: string) => LoroType<LoroText, string>;
|
|
142
73
|
|
|
143
|
-
type
|
|
144
|
-
declare const loro_CrdtLoroArray: typeof CrdtLoroArray;
|
|
145
|
-
type loro_CrdtLoroDoc<TStorage extends Record<string, AbstractCrdtType<any, any>>> = CrdtLoroDoc<TStorage>;
|
|
74
|
+
type loro_CrdtLoroDoc<TStorage extends Record<string, LoroType<any, any>>> = CrdtLoroDoc<TStorage>;
|
|
146
75
|
declare const loro_CrdtLoroDoc: typeof CrdtLoroDoc;
|
|
147
|
-
type
|
|
148
|
-
declare const loro_CrdtLoroMap: typeof CrdtLoroMap;
|
|
149
|
-
type loro_CrdtLoroObject<T extends Record<string, any>> = CrdtLoroObject<T>;
|
|
150
|
-
declare const loro_CrdtLoroObject: typeof CrdtLoroObject;
|
|
151
|
-
type loro_CrdtLoroText = CrdtLoroText;
|
|
152
|
-
declare const loro_CrdtLoroText: typeof CrdtLoroText;
|
|
153
|
-
type loro_InferLoroJson<T extends unknown> = InferLoroJson<T>;
|
|
154
|
-
type loro_InferLoroType<T extends unknown> = InferLoroType<T>;
|
|
155
|
-
declare const loro_array: typeof array;
|
|
76
|
+
type loro_LoroType<TValue extends unknown, TJson extends unknown = any> = LoroType<TValue, TJson>;
|
|
156
77
|
declare const loro_doc: typeof doc;
|
|
78
|
+
declare const loro_list: typeof list;
|
|
157
79
|
declare const loro_map: typeof map;
|
|
158
80
|
declare const loro_object: typeof object;
|
|
159
81
|
declare const loro_text: typeof text;
|
|
160
82
|
declare namespace loro {
|
|
161
|
-
export {
|
|
83
|
+
export { loro_CrdtLoroDoc as CrdtLoroDoc, type loro_LoroType as LoroType, loro_doc as doc, loro_list as list, loro_map as map, loro_object as object, loro_text as text };
|
|
162
84
|
}
|
|
163
85
|
|
|
164
86
|
export { loro };
|