@pluv/crdt-yjs 0.18.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 +15 -15
- package/CHANGELOG.md +84 -0
- package/README.md +0 -64
- package/dist/index.d.mts +40 -119
- package/dist/index.d.ts +40 -119
- package/dist/index.js +145 -275
- package/dist/index.mjs +150 -280
- package/package.json +7 -7
- package/src/array/YjsArray.ts +18 -0
- package/src/array/array.ts +5 -3
- package/src/array/index.ts +1 -1
- package/src/doc/CrdtYjsDoc.ts +58 -69
- package/src/doc/CrdtYjsDocFactory.ts +30 -26
- package/src/doc/doc.ts +2 -2
- package/src/map/YjsMap.ts +16 -0
- package/src/map/index.ts +1 -1
- package/src/map/map.ts +7 -3
- package/src/object/YjsObject.ts +16 -0
- package/src/object/index.ts +1 -1
- package/src/object/object.ts +5 -3
- package/src/text/YjsText.ts +16 -0
- package/src/text/index.ts +1 -1
- package/src/text/text.ts +5 -3
- package/src/types.ts +5 -63
- package/src/xmlElement/YjsXmlElement.ts +22 -0
- package/src/xmlElement/index.ts +1 -1
- package/src/xmlElement/xmlElement.ts +6 -6
- package/src/xmlFragment/YjsXmlFragment.ts +19 -0
- package/src/xmlFragment/index.ts +1 -1
- package/src/xmlFragment/xmlFragment.ts +6 -5
- package/src/xmlText/YjsXmlText.ts +16 -0
- package/src/xmlText/index.ts +1 -1
- package/src/xmlText/xmlText.ts +5 -3
- package/src/yjs.ts +9 -9
- package/src/array/CrdtYjsArray.ts +0 -50
- package/src/map/CrdtYjsMap.ts +0 -40
- package/src/object/CrdtYjsObject.ts +0 -30
- package/src/shared/index.ts +0 -2
- package/src/shared/isWrapper.ts +0 -21
- package/src/shared/toYjsValue.ts +0 -5
- package/src/text/CrdtYjsText.ts +0 -34
- package/src/xmlElement/CrdtYjsXmlElement.ts +0 -50
- package/src/xmlFragment/CrdtYjsXmlFragment.ts +0 -49
- package/src/xmlText/CrdtYjsXmlText.ts +0 -34
package/dist/index.mjs
CHANGED
|
@@ -25,331 +25,170 @@ var __export = (target, all) => {
|
|
|
25
25
|
// src/yjs.ts
|
|
26
26
|
var yjs_exports = {};
|
|
27
27
|
__export(yjs_exports, {
|
|
28
|
-
CrdtYjsArray: () => CrdtYjsArray,
|
|
29
|
-
CrdtYjsDoc: () => CrdtYjsDoc,
|
|
30
|
-
CrdtYjsMap: () => CrdtYjsMap,
|
|
31
|
-
CrdtYjsObject: () => CrdtYjsObject,
|
|
32
|
-
CrdtYjsText: () => CrdtYjsText,
|
|
33
|
-
CrdtYjsXmlElement: () => CrdtYjsXmlElement,
|
|
34
|
-
CrdtYjsXmlFragment: () => CrdtYjsXmlFragment,
|
|
35
|
-
CrdtYjsXmlText: () => CrdtYjsXmlText,
|
|
36
28
|
array: () => array,
|
|
37
29
|
doc: () => doc,
|
|
38
30
|
map: () => map,
|
|
39
31
|
object: () => object,
|
|
32
|
+
text: () => text,
|
|
40
33
|
xmlElement: () => xmlElement,
|
|
41
34
|
xmlFragment: () => xmlFragment,
|
|
42
35
|
xmlText: () => xmlText
|
|
43
36
|
});
|
|
44
37
|
|
|
45
|
-
// src/array/
|
|
46
|
-
import { AbstractCrdtType as AbstractCrdtType7 } from "@pluv/crdt";
|
|
38
|
+
// src/array/YjsArray.ts
|
|
47
39
|
import { Array as YArray } from "yjs";
|
|
48
|
-
|
|
49
|
-
// src/map/CrdtYjsMap.ts
|
|
50
|
-
import { AbstractCrdtType } from "@pluv/crdt";
|
|
51
|
-
import { Map as YMap } from "yjs";
|
|
52
|
-
var CrdtYjsMap = class extends AbstractCrdtType {
|
|
40
|
+
var YjsArray = class extends YArray {
|
|
53
41
|
constructor(value = []) {
|
|
54
42
|
super();
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
}
|
|
58
|
-
get size() {
|
|
59
|
-
return this.value.size;
|
|
43
|
+
this.insert(0, value);
|
|
44
|
+
this.initialValue = value;
|
|
60
45
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return this;
|
|
46
|
+
__pluvType() {
|
|
47
|
+
return {};
|
|
64
48
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// src/array/array.ts
|
|
52
|
+
var array = (value = []) => {
|
|
53
|
+
return new YjsArray(value);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// src/doc/CrdtYjsDoc.ts
|
|
57
|
+
import { AbstractCrdtDoc } from "@pluv/crdt";
|
|
58
|
+
import { fromUint8Array, toUint8Array } from "js-base64";
|
|
59
|
+
import {
|
|
60
|
+
UndoManager,
|
|
61
|
+
Array as YArray2,
|
|
62
|
+
Doc as YDoc,
|
|
63
|
+
Map as YMap3,
|
|
64
|
+
Text as YText2,
|
|
65
|
+
XmlElement as YXmlElement2,
|
|
66
|
+
XmlFragment as YXmlFragment,
|
|
67
|
+
XmlText as YXmlText2,
|
|
68
|
+
applyUpdate,
|
|
69
|
+
encodeStateAsUpdate
|
|
70
|
+
} from "yjs";
|
|
71
|
+
|
|
72
|
+
// src/map/YjsMap.ts
|
|
73
|
+
import { Map as YMap } from "yjs";
|
|
74
|
+
var YjsMap = class extends YMap {
|
|
75
|
+
constructor(value = []) {
|
|
76
|
+
super(value);
|
|
77
|
+
this.initialValue = value;
|
|
68
78
|
}
|
|
69
|
-
|
|
70
|
-
return
|
|
79
|
+
__pluvType() {
|
|
80
|
+
return {};
|
|
71
81
|
}
|
|
72
82
|
};
|
|
73
83
|
|
|
74
|
-
// src/object/
|
|
75
|
-
import { AbstractCrdtType as AbstractCrdtType2 } from "@pluv/crdt";
|
|
84
|
+
// src/object/YjsObject.ts
|
|
76
85
|
import { Map as YMap2 } from "yjs";
|
|
77
|
-
var
|
|
78
|
-
constructor(value
|
|
79
|
-
super();
|
|
80
|
-
this.initialValue =
|
|
81
|
-
this.value = new YMap2(this.initialValue);
|
|
82
|
-
}
|
|
83
|
-
set(prop, value) {
|
|
84
|
-
this.value.set(prop.toString(), toYjsValue(value));
|
|
85
|
-
return this;
|
|
86
|
+
var YjsObject = class extends YMap2 {
|
|
87
|
+
constructor(value) {
|
|
88
|
+
super(Object.entries(value));
|
|
89
|
+
this.initialValue = value;
|
|
86
90
|
}
|
|
87
|
-
|
|
88
|
-
return
|
|
91
|
+
__pluvType() {
|
|
92
|
+
return {};
|
|
89
93
|
}
|
|
90
94
|
};
|
|
91
95
|
|
|
92
|
-
// src/text/
|
|
93
|
-
import { AbstractCrdtType as AbstractCrdtType3 } from "@pluv/crdt";
|
|
96
|
+
// src/text/YjsText.ts
|
|
94
97
|
import { Text as YText } from "yjs";
|
|
95
|
-
var
|
|
98
|
+
var YjsText = class extends YText {
|
|
96
99
|
constructor(value = "") {
|
|
97
100
|
super();
|
|
98
101
|
this.initialValue = value;
|
|
99
|
-
this.value = new YText(value);
|
|
100
102
|
}
|
|
101
|
-
|
|
102
|
-
return
|
|
103
|
-
}
|
|
104
|
-
delete(index, length = 1) {
|
|
105
|
-
this.value.delete(index, length);
|
|
106
|
-
return this;
|
|
107
|
-
}
|
|
108
|
-
insert(index, text2) {
|
|
109
|
-
this.value.insert(index, text2);
|
|
110
|
-
return this;
|
|
111
|
-
}
|
|
112
|
-
toJson() {
|
|
113
|
-
return this.value.toJSON();
|
|
103
|
+
__pluvType() {
|
|
104
|
+
return {};
|
|
114
105
|
}
|
|
115
106
|
};
|
|
116
107
|
|
|
117
|
-
// src/xmlElement/
|
|
118
|
-
import { AbstractCrdtType as AbstractCrdtType4 } from "@pluv/crdt";
|
|
108
|
+
// src/xmlElement/YjsXmlElement.ts
|
|
119
109
|
import { XmlElement as YXmlElement } from "yjs";
|
|
120
|
-
var
|
|
121
|
-
constructor(name,
|
|
122
|
-
super();
|
|
123
|
-
|
|
124
|
-
this.
|
|
125
|
-
this.value = new YXmlElement(name);
|
|
126
|
-
this.push(...children);
|
|
127
|
-
}
|
|
128
|
-
get length() {
|
|
129
|
-
return this.value.length;
|
|
130
|
-
}
|
|
131
|
-
delete(index, length = 1) {
|
|
132
|
-
this.value.delete(index, length);
|
|
133
|
-
return this;
|
|
134
|
-
}
|
|
135
|
-
insert(index, ...children) {
|
|
136
|
-
const converted = children.map((child) => toYjsValue(child));
|
|
137
|
-
this.value.insert(index, converted);
|
|
138
|
-
return this;
|
|
139
|
-
}
|
|
140
|
-
push(...children) {
|
|
141
|
-
return this.insert(this.length, ...children);
|
|
142
|
-
}
|
|
143
|
-
unshift(...children) {
|
|
144
|
-
return this.insert(0, ...children);
|
|
145
|
-
}
|
|
146
|
-
toJson() {
|
|
147
|
-
return this.value.toJSON();
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
// src/xmlElement/xmlElement.ts
|
|
152
|
-
var xmlElement = (name, children) => {
|
|
153
|
-
return new CrdtYjsXmlElement(name, children);
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
// src/xmlFragment/CrdtYjsXmlFragment.ts
|
|
157
|
-
import { AbstractCrdtType as AbstractCrdtType5 } from "@pluv/crdt";
|
|
158
|
-
import { XmlFragment as YXmlFragment } from "yjs";
|
|
159
|
-
var CrdtYjsXmlFragment = class extends AbstractCrdtType5 {
|
|
160
|
-
constructor(children) {
|
|
161
|
-
super();
|
|
162
|
-
this.initialValue = children.map((item) => item.value);
|
|
163
|
-
this.value = new YXmlFragment();
|
|
164
|
-
this.push(...children);
|
|
165
|
-
}
|
|
166
|
-
get length() {
|
|
167
|
-
return this.value.length;
|
|
168
|
-
}
|
|
169
|
-
delete(index, length = 1) {
|
|
170
|
-
this.value.delete(index, length);
|
|
171
|
-
return this;
|
|
172
|
-
}
|
|
173
|
-
insert(index, ...children) {
|
|
174
|
-
const converted = children.map((child) => toYjsValue(child));
|
|
175
|
-
this.value.insert(index, converted);
|
|
176
|
-
return this;
|
|
177
|
-
}
|
|
178
|
-
push(...children) {
|
|
179
|
-
return this.insert(this.length, ...children);
|
|
180
|
-
}
|
|
181
|
-
unshift(...children) {
|
|
182
|
-
return this.insert(0, ...children);
|
|
110
|
+
var YjsXmlElement = class extends YXmlElement {
|
|
111
|
+
constructor(name, value) {
|
|
112
|
+
super(name);
|
|
113
|
+
!!value.length && this.insert(0, value);
|
|
114
|
+
this.initialValue = value;
|
|
183
115
|
}
|
|
184
|
-
|
|
185
|
-
return
|
|
116
|
+
__pluvType() {
|
|
117
|
+
return {};
|
|
186
118
|
}
|
|
187
119
|
};
|
|
188
120
|
|
|
189
|
-
// src/
|
|
190
|
-
var xmlFragment = (children) => {
|
|
191
|
-
return new CrdtYjsXmlFragment(children);
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
// src/xmlText/CrdtYjsXmlText.ts
|
|
195
|
-
import { AbstractCrdtType as AbstractCrdtType6 } from "@pluv/crdt";
|
|
121
|
+
// src/xmlText/YjsXmlText.ts
|
|
196
122
|
import { XmlText as YXmlText } from "yjs";
|
|
197
|
-
var
|
|
123
|
+
var YjsXmlText = class extends YXmlText {
|
|
198
124
|
constructor(value = "") {
|
|
199
125
|
super();
|
|
200
126
|
this.initialValue = value;
|
|
201
|
-
this.value = new YXmlText(value);
|
|
202
127
|
}
|
|
203
|
-
|
|
204
|
-
return
|
|
205
|
-
}
|
|
206
|
-
delete(index, length = 1) {
|
|
207
|
-
this.value.delete(index, length);
|
|
208
|
-
return this;
|
|
209
|
-
}
|
|
210
|
-
insert(index, text2, attributes) {
|
|
211
|
-
this.value.insert(index, text2, attributes);
|
|
212
|
-
return this;
|
|
213
|
-
}
|
|
214
|
-
toJson() {
|
|
215
|
-
return this.value.toJSON();
|
|
128
|
+
__pluvType() {
|
|
129
|
+
return {};
|
|
216
130
|
}
|
|
217
131
|
};
|
|
218
132
|
|
|
219
|
-
// src/xmlText/xmlText.ts
|
|
220
|
-
var xmlText = (value = "") => {
|
|
221
|
-
return new CrdtYjsXmlText(value);
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
// src/shared/isWrapper.ts
|
|
225
|
-
var isWrapper = (item) => {
|
|
226
|
-
return item instanceof CrdtYjsArray || item instanceof CrdtYjsMap || item instanceof CrdtYjsObject || item instanceof CrdtYjsText || item instanceof CrdtYjsXmlElement || item instanceof CrdtYjsXmlFragment || item instanceof CrdtYjsXmlText;
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
// src/shared/toYjsValue.ts
|
|
230
|
-
var toYjsValue = (item) => {
|
|
231
|
-
return isWrapper(item) ? item.value : item;
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
// src/array/CrdtYjsArray.ts
|
|
235
|
-
var CrdtYjsArray = class extends AbstractCrdtType7 {
|
|
236
|
-
constructor(value = []) {
|
|
237
|
-
super();
|
|
238
|
-
const initialValue = value.map((item) => toYjsValue(item));
|
|
239
|
-
this.initialValue = initialValue;
|
|
240
|
-
this.value = new YArray();
|
|
241
|
-
this.push(...value);
|
|
242
|
-
}
|
|
243
|
-
get length() {
|
|
244
|
-
return this.value.length;
|
|
245
|
-
}
|
|
246
|
-
delete(index, length = 1) {
|
|
247
|
-
this.value.delete(index, length);
|
|
248
|
-
return this;
|
|
249
|
-
}
|
|
250
|
-
insert(index, ...items) {
|
|
251
|
-
const converted = items.map((item) => toYjsValue(item));
|
|
252
|
-
this.value.insert(index, converted);
|
|
253
|
-
return this;
|
|
254
|
-
}
|
|
255
|
-
push(...items) {
|
|
256
|
-
return this.insert(this.length, ...items);
|
|
257
|
-
}
|
|
258
|
-
unshift(...items) {
|
|
259
|
-
return this.insert(0, ...items);
|
|
260
|
-
}
|
|
261
|
-
toJson() {
|
|
262
|
-
return this.value.toJSON();
|
|
263
|
-
}
|
|
264
|
-
};
|
|
265
|
-
|
|
266
|
-
// src/array/array.ts
|
|
267
|
-
var array = (value = []) => {
|
|
268
|
-
return new CrdtYjsArray(value);
|
|
269
|
-
};
|
|
270
|
-
|
|
271
133
|
// src/doc/CrdtYjsDoc.ts
|
|
272
|
-
import { AbstractCrdtDoc } from "@pluv/crdt";
|
|
273
|
-
import { fromUint8Array, toUint8Array } from "js-base64";
|
|
274
|
-
import {
|
|
275
|
-
UndoManager,
|
|
276
|
-
Array as YArray2,
|
|
277
|
-
Doc as YDoc,
|
|
278
|
-
Map as YMap3,
|
|
279
|
-
Text as YText2,
|
|
280
|
-
XmlElement as YXmlElement2,
|
|
281
|
-
XmlFragment as YXmlFragment2,
|
|
282
|
-
XmlText as YXmlText2,
|
|
283
|
-
applyUpdate,
|
|
284
|
-
encodeStateAsUpdate
|
|
285
|
-
} from "yjs";
|
|
286
134
|
var CrdtYjsDoc = class extends AbstractCrdtDoc {
|
|
287
135
|
constructor(value = {}) {
|
|
288
136
|
super();
|
|
289
137
|
this.value = new YDoc();
|
|
290
138
|
this._undoManager = null;
|
|
291
139
|
this._storage = Object.entries(value).reduce((acc, [key, node]) => {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
yArray
|
|
295
|
-
node.
|
|
296
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
140
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
141
|
+
if (node instanceof YjsArray) {
|
|
142
|
+
const yArray = this.value.getArray(key);
|
|
143
|
+
!!((_a = node.initialValue) == null ? void 0 : _a.length) && yArray.insert(0, (_b = node.initialValue) == null ? void 0 : _b.slice(0));
|
|
144
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: yArray });
|
|
297
145
|
}
|
|
298
|
-
if (node instanceof
|
|
299
|
-
const yMap = this.value.
|
|
300
|
-
node.initialValue.forEach(([k, v]) => {
|
|
146
|
+
if (node instanceof YjsMap) {
|
|
147
|
+
const yMap = this.value.getMap(key);
|
|
148
|
+
((_c = node.initialValue) != null ? _c : []).forEach(([k, v]) => {
|
|
301
149
|
yMap.set(k.toString(), v);
|
|
302
150
|
});
|
|
303
|
-
|
|
304
|
-
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
151
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: yMap });
|
|
305
152
|
}
|
|
306
|
-
if (node instanceof
|
|
307
|
-
const yMap = this.value.
|
|
308
|
-
node.initialValue.forEach(([k, v]) => {
|
|
153
|
+
if (node instanceof YjsObject) {
|
|
154
|
+
const yMap = this.value.getMap(key);
|
|
155
|
+
Object.entries((_d = node.initialValue) != null ? _d : {}).forEach(([k, v]) => {
|
|
309
156
|
yMap.set(k.toString(), v);
|
|
310
157
|
});
|
|
311
|
-
|
|
312
|
-
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
158
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: yMap });
|
|
313
159
|
}
|
|
314
|
-
if (node instanceof
|
|
315
|
-
const yText = this.value.
|
|
316
|
-
yText.insert(0, node.initialValue);
|
|
317
|
-
|
|
318
|
-
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
160
|
+
if (node instanceof YjsText) {
|
|
161
|
+
const yText = this.value.getText(key);
|
|
162
|
+
typeof node.initialValue === "string" && yText.insert(0, node.initialValue);
|
|
163
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: yText });
|
|
319
164
|
}
|
|
320
|
-
if (node instanceof
|
|
321
|
-
const yXmlElement = this.value.
|
|
322
|
-
yXmlElement.insert(0, node.initialValue.slice(0));
|
|
323
|
-
|
|
324
|
-
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
165
|
+
if (node instanceof YjsXmlElement) {
|
|
166
|
+
const yXmlElement = this.value.getXmlElement(key);
|
|
167
|
+
!!((_e = node.initialValue) == null ? void 0 : _e.length) && yXmlElement.insert(0, (_f = node.initialValue) == null ? void 0 : _f.slice(0));
|
|
168
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: yXmlElement });
|
|
325
169
|
}
|
|
326
|
-
if (node instanceof
|
|
327
|
-
const yXmlFragment = this.value.
|
|
328
|
-
yXmlFragment.insert(0, node.initialValue.slice(0));
|
|
329
|
-
|
|
330
|
-
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
170
|
+
if (node instanceof YXmlFragment) {
|
|
171
|
+
const yXmlFragment = this.value.getXmlFragment(key);
|
|
172
|
+
!!((_g = node.initialValue) == null ? void 0 : _g.length) && yXmlFragment.insert(0, (_h = node.initialValue) == null ? void 0 : _h.slice(0));
|
|
173
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: yXmlFragment });
|
|
331
174
|
}
|
|
332
|
-
if (node instanceof
|
|
175
|
+
if (node instanceof YjsXmlText) {
|
|
333
176
|
const yXmlText = this.value.get(key, YXmlText2);
|
|
334
|
-
|
|
335
|
-
node.value = yXmlText;
|
|
336
|
-
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
177
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: yXmlText });
|
|
337
178
|
}
|
|
338
179
|
return acc;
|
|
339
180
|
}, {});
|
|
340
181
|
}
|
|
341
182
|
applyEncodedState(params) {
|
|
342
183
|
const { origin, update } = params;
|
|
343
|
-
if (update === null || typeof update === "undefined")
|
|
344
|
-
return this;
|
|
184
|
+
if (update === null || typeof update === "undefined") return this;
|
|
345
185
|
const uint8Update = typeof update === "string" ? toUint8Array(update) : update;
|
|
346
186
|
applyUpdate(this.value, uint8Update, origin);
|
|
347
187
|
return this;
|
|
348
188
|
}
|
|
349
189
|
batchApplyEncodedState(updates) {
|
|
350
190
|
const params = updates.reduce((acc, update) => {
|
|
351
|
-
if (!update)
|
|
352
|
-
return acc;
|
|
191
|
+
if (!update) return acc;
|
|
353
192
|
if (typeof update === "string") {
|
|
354
193
|
acc.push({ update });
|
|
355
194
|
return acc;
|
|
@@ -375,10 +214,9 @@ var CrdtYjsDoc = class extends AbstractCrdtDoc {
|
|
|
375
214
|
(_a = this._undoManager) == null ? void 0 : _a.destroy();
|
|
376
215
|
this.value.destroy();
|
|
377
216
|
}
|
|
378
|
-
get(
|
|
379
|
-
if (typeof
|
|
380
|
-
|
|
381
|
-
return this._storage[key];
|
|
217
|
+
get(type) {
|
|
218
|
+
if (typeof type === "undefined") return this._storage;
|
|
219
|
+
return this._storage[type];
|
|
382
220
|
}
|
|
383
221
|
getEncodedState() {
|
|
384
222
|
return fromUint8Array(encodeStateAsUpdate(this.value));
|
|
@@ -407,11 +245,10 @@ var CrdtYjsDoc = class extends AbstractCrdtDoc {
|
|
|
407
245
|
}
|
|
408
246
|
track() {
|
|
409
247
|
var _a;
|
|
410
|
-
if (this._undoManager)
|
|
411
|
-
this._undoManager.destroy();
|
|
248
|
+
if (this._undoManager) this._undoManager.destroy();
|
|
412
249
|
const sharedTypes = Object.values(this._storage).reduce((acc, type) => {
|
|
413
|
-
if (type instanceof
|
|
414
|
-
acc.push(type
|
|
250
|
+
if (type instanceof YArray2 || type instanceof YMap3 || type instanceof YText2 || type instanceof YXmlElement2 || type instanceof YXmlFragment || type instanceof YXmlText2) {
|
|
251
|
+
acc.push(type);
|
|
415
252
|
}
|
|
416
253
|
return acc;
|
|
417
254
|
}, []);
|
|
@@ -427,9 +264,10 @@ var CrdtYjsDoc = class extends AbstractCrdtDoc {
|
|
|
427
264
|
this.value.transact(fn);
|
|
428
265
|
return this;
|
|
429
266
|
}
|
|
430
|
-
toJson() {
|
|
267
|
+
toJson(type) {
|
|
268
|
+
if (typeof type === "string") return this._storage[type].toJSON();
|
|
431
269
|
return Object.entries(this._storage).reduce(
|
|
432
|
-
(acc, [key, value]) => __spreadProps(__spreadValues({}, acc), { [key]: value.
|
|
270
|
+
(acc, [key, value]) => __spreadProps(__spreadValues({}, acc), { [key]: value.toJSON() }),
|
|
433
271
|
{}
|
|
434
272
|
);
|
|
435
273
|
}
|
|
@@ -442,15 +280,49 @@ var CrdtYjsDoc = class extends AbstractCrdtDoc {
|
|
|
442
280
|
|
|
443
281
|
// src/doc/CrdtYjsDocFactory.ts
|
|
444
282
|
import { AbstractCrdtDocFactory } from "@pluv/crdt";
|
|
283
|
+
import { XmlFragment as YXmlFragment3 } from "yjs";
|
|
445
284
|
|
|
446
285
|
// src/map/map.ts
|
|
447
286
|
var map = (value = []) => {
|
|
448
|
-
return new
|
|
287
|
+
return new YjsMap(value);
|
|
449
288
|
};
|
|
450
289
|
|
|
451
290
|
// src/object/object.ts
|
|
452
|
-
var object = (value) => {
|
|
453
|
-
return new
|
|
291
|
+
var object = (value = {}) => {
|
|
292
|
+
return new YjsObject(value);
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
// src/text/text.ts
|
|
296
|
+
var text = (value = "") => {
|
|
297
|
+
return new YjsText(value);
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
// src/xmlElement/xmlElement.ts
|
|
301
|
+
var xmlElement = (name, children) => {
|
|
302
|
+
return new YjsXmlElement(name, children);
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
// src/xmlFragment/YjsXmlFragment.ts
|
|
306
|
+
import { XmlFragment as YXmlFragment2 } from "yjs";
|
|
307
|
+
var YjsXmlFragment = class extends YXmlFragment2 {
|
|
308
|
+
constructor(value) {
|
|
309
|
+
super();
|
|
310
|
+
!!value.length && this.insert(0, value);
|
|
311
|
+
this.initialValue = value;
|
|
312
|
+
}
|
|
313
|
+
__pluvType() {
|
|
314
|
+
return {};
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
// src/xmlFragment/xmlFragment.ts
|
|
319
|
+
var xmlFragment = (children) => {
|
|
320
|
+
return new YjsXmlFragment(children);
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
// src/xmlText/xmlText.ts
|
|
324
|
+
var xmlText = () => {
|
|
325
|
+
return new YjsXmlText();
|
|
454
326
|
};
|
|
455
327
|
|
|
456
328
|
// src/doc/CrdtYjsDocFactory.ts
|
|
@@ -469,28 +341,26 @@ var CrdtYjsDocFactory = class _CrdtYjsDocFactory extends AbstractCrdtDocFactory
|
|
|
469
341
|
const storage = this._initialStorage();
|
|
470
342
|
return new CrdtYjsDoc(
|
|
471
343
|
Object.entries(storage).reduce((acc, [key, node]) => {
|
|
472
|
-
if (node instanceof
|
|
473
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
344
|
+
if (node instanceof YjsArray) {
|
|
345
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: array() });
|
|
474
346
|
}
|
|
475
|
-
if (node instanceof
|
|
476
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
347
|
+
if (node instanceof YjsMap) {
|
|
348
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: map() });
|
|
477
349
|
}
|
|
478
|
-
if (node instanceof
|
|
479
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
350
|
+
if (node instanceof YjsObject) {
|
|
351
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: object() });
|
|
480
352
|
}
|
|
481
|
-
if (node instanceof
|
|
482
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
353
|
+
if (node instanceof YjsText) {
|
|
354
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: text() });
|
|
483
355
|
}
|
|
484
|
-
if (node instanceof
|
|
485
|
-
return __spreadProps(__spreadValues({}, acc), {
|
|
486
|
-
[key]: new CrdtYjsXmlElement(node.name, [])
|
|
487
|
-
});
|
|
356
|
+
if (node instanceof YjsXmlElement) {
|
|
357
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: xmlElement(node.nodeName, []) });
|
|
488
358
|
}
|
|
489
|
-
if (node instanceof
|
|
490
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
359
|
+
if (node instanceof YXmlFragment3) {
|
|
360
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: xmlFragment([]) });
|
|
491
361
|
}
|
|
492
|
-
if (node instanceof
|
|
493
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
362
|
+
if (node instanceof YjsXmlText) {
|
|
363
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: xmlText() });
|
|
494
364
|
}
|
|
495
365
|
return acc;
|
|
496
366
|
}, {})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pluv/crdt-yjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "yjs for @pluv/io",
|
|
5
5
|
"author": "leedavidcs",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,19 +18,19 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"js-base64": "^3.7.7",
|
|
21
|
-
"@pluv/crdt": "^0.
|
|
22
|
-
"@pluv/types": "^0.
|
|
21
|
+
"@pluv/crdt": "^0.20.0",
|
|
22
|
+
"@pluv/types": "^0.20.0"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"yjs": "^13.0.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"eslint": "^8.57.0",
|
|
29
|
-
"tsup": "^8.0
|
|
29
|
+
"tsup": "^8.1.0",
|
|
30
30
|
"typescript": "^5.4.5",
|
|
31
|
-
"yjs": "^13.6.
|
|
32
|
-
"@pluv/tsconfig": "^0.
|
|
33
|
-
"eslint-config-pluv": "^0.
|
|
31
|
+
"yjs": "^13.6.18",
|
|
32
|
+
"@pluv/tsconfig": "^0.20.0",
|
|
33
|
+
"eslint-config-pluv": "^0.20.0"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"build": "tsup src/index.ts --format esm,cjs --dts",
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Array as YArray } from "yjs";
|
|
2
|
+
import type { YjsType } from "../types";
|
|
3
|
+
|
|
4
|
+
export class YjsArray<T extends unknown> extends YArray<T> implements YjsType<YArray<T>, T[]> {
|
|
5
|
+
public initialValue?: T[] | readonly T[];
|
|
6
|
+
|
|
7
|
+
constructor(value: T[] | readonly T[] = []) {
|
|
8
|
+
super();
|
|
9
|
+
|
|
10
|
+
this.insert(0, value as T[]);
|
|
11
|
+
|
|
12
|
+
this.initialValue = value;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public __pluvType() {
|
|
16
|
+
return {} as any;
|
|
17
|
+
}
|
|
18
|
+
}
|
package/src/array/array.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Array as YArray } from "yjs";
|
|
2
|
+
import type { YjsType } from "../types";
|
|
3
|
+
import { YjsArray } from "./YjsArray";
|
|
2
4
|
|
|
3
|
-
export const array = <T extends unknown>(value: T[] | readonly T[] = []):
|
|
4
|
-
return new
|
|
5
|
+
export const array = <T extends unknown>(value: T[] | readonly T[] = []): YjsType<YArray<T>, T[]> => {
|
|
6
|
+
return new YjsArray(value);
|
|
5
7
|
};
|
package/src/array/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { array } from "./array";
|
|
2
|
-
export {
|
|
2
|
+
export type { YjsArray } from "./YjsArray";
|