@pluv/crdt-yjs 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/README.md +0 -64
- package/dist/index.d.mts +40 -119
- package/dist/index.d.ts +40 -119
- package/dist/index.js +142 -268
- package/dist/index.mjs +147 -273
- package/package.json +5 -5
- 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,315 +25,156 @@ 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
|
-
}
|
|
101
|
-
get length() {
|
|
102
|
-
return this.value.length;
|
|
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
102
|
}
|
|
112
|
-
|
|
113
|
-
return
|
|
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
|
-
}
|
|
203
|
-
get length() {
|
|
204
|
-
return this.value.length;
|
|
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
127
|
}
|
|
214
|
-
|
|
215
|
-
return
|
|
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
|
}, {});
|
|
@@ -373,9 +214,9 @@ var CrdtYjsDoc = class extends AbstractCrdtDoc {
|
|
|
373
214
|
(_a = this._undoManager) == null ? void 0 : _a.destroy();
|
|
374
215
|
this.value.destroy();
|
|
375
216
|
}
|
|
376
|
-
get(
|
|
377
|
-
if (typeof
|
|
378
|
-
return this._storage[
|
|
217
|
+
get(type) {
|
|
218
|
+
if (typeof type === "undefined") return this._storage;
|
|
219
|
+
return this._storage[type];
|
|
379
220
|
}
|
|
380
221
|
getEncodedState() {
|
|
381
222
|
return fromUint8Array(encodeStateAsUpdate(this.value));
|
|
@@ -406,8 +247,8 @@ var CrdtYjsDoc = class extends AbstractCrdtDoc {
|
|
|
406
247
|
var _a;
|
|
407
248
|
if (this._undoManager) this._undoManager.destroy();
|
|
408
249
|
const sharedTypes = Object.values(this._storage).reduce((acc, type) => {
|
|
409
|
-
if (type instanceof
|
|
410
|
-
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);
|
|
411
252
|
}
|
|
412
253
|
return acc;
|
|
413
254
|
}, []);
|
|
@@ -423,9 +264,10 @@ var CrdtYjsDoc = class extends AbstractCrdtDoc {
|
|
|
423
264
|
this.value.transact(fn);
|
|
424
265
|
return this;
|
|
425
266
|
}
|
|
426
|
-
toJson() {
|
|
267
|
+
toJson(type) {
|
|
268
|
+
if (typeof type === "string") return this._storage[type].toJSON();
|
|
427
269
|
return Object.entries(this._storage).reduce(
|
|
428
|
-
(acc, [key, value]) => __spreadProps(__spreadValues({}, acc), { [key]: value.
|
|
270
|
+
(acc, [key, value]) => __spreadProps(__spreadValues({}, acc), { [key]: value.toJSON() }),
|
|
429
271
|
{}
|
|
430
272
|
);
|
|
431
273
|
}
|
|
@@ -438,15 +280,49 @@ var CrdtYjsDoc = class extends AbstractCrdtDoc {
|
|
|
438
280
|
|
|
439
281
|
// src/doc/CrdtYjsDocFactory.ts
|
|
440
282
|
import { AbstractCrdtDocFactory } from "@pluv/crdt";
|
|
283
|
+
import { XmlFragment as YXmlFragment3 } from "yjs";
|
|
441
284
|
|
|
442
285
|
// src/map/map.ts
|
|
443
286
|
var map = (value = []) => {
|
|
444
|
-
return new
|
|
287
|
+
return new YjsMap(value);
|
|
445
288
|
};
|
|
446
289
|
|
|
447
290
|
// src/object/object.ts
|
|
448
|
-
var object = (value) => {
|
|
449
|
-
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();
|
|
450
326
|
};
|
|
451
327
|
|
|
452
328
|
// src/doc/CrdtYjsDocFactory.ts
|
|
@@ -465,28 +341,26 @@ var CrdtYjsDocFactory = class _CrdtYjsDocFactory extends AbstractCrdtDocFactory
|
|
|
465
341
|
const storage = this._initialStorage();
|
|
466
342
|
return new CrdtYjsDoc(
|
|
467
343
|
Object.entries(storage).reduce((acc, [key, node]) => {
|
|
468
|
-
if (node instanceof
|
|
469
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
344
|
+
if (node instanceof YjsArray) {
|
|
345
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: array() });
|
|
470
346
|
}
|
|
471
|
-
if (node instanceof
|
|
472
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
347
|
+
if (node instanceof YjsMap) {
|
|
348
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: map() });
|
|
473
349
|
}
|
|
474
|
-
if (node instanceof
|
|
475
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
350
|
+
if (node instanceof YjsObject) {
|
|
351
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: object() });
|
|
476
352
|
}
|
|
477
|
-
if (node instanceof
|
|
478
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
353
|
+
if (node instanceof YjsText) {
|
|
354
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: text() });
|
|
479
355
|
}
|
|
480
|
-
if (node instanceof
|
|
481
|
-
return __spreadProps(__spreadValues({}, acc), {
|
|
482
|
-
[key]: new CrdtYjsXmlElement(node.name, [])
|
|
483
|
-
});
|
|
356
|
+
if (node instanceof YjsXmlElement) {
|
|
357
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: xmlElement(node.nodeName, []) });
|
|
484
358
|
}
|
|
485
|
-
if (node instanceof
|
|
486
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
359
|
+
if (node instanceof YXmlFragment3) {
|
|
360
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: xmlFragment([]) });
|
|
487
361
|
}
|
|
488
|
-
if (node instanceof
|
|
489
|
-
return __spreadProps(__spreadValues({}, acc), { [key]:
|
|
362
|
+
if (node instanceof YjsXmlText) {
|
|
363
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: xmlText() });
|
|
490
364
|
}
|
|
491
365
|
return acc;
|
|
492
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,8 +18,8 @@
|
|
|
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"
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"tsup": "^8.1.0",
|
|
30
30
|
"typescript": "^5.4.5",
|
|
31
31
|
"yjs": "^13.6.18",
|
|
32
|
-
"@pluv/tsconfig": "^0.
|
|
33
|
-
"eslint-config-pluv": "^0.
|
|
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";
|