@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.
Files changed (44) hide show
  1. package/.turbo/turbo-build.log +8 -8
  2. package/CHANGELOG.md +77 -0
  3. package/README.md +0 -64
  4. package/dist/index.d.mts +40 -119
  5. package/dist/index.d.ts +40 -119
  6. package/dist/index.js +142 -268
  7. package/dist/index.mjs +147 -273
  8. package/package.json +5 -5
  9. package/src/array/YjsArray.ts +18 -0
  10. package/src/array/array.ts +5 -3
  11. package/src/array/index.ts +1 -1
  12. package/src/doc/CrdtYjsDoc.ts +58 -69
  13. package/src/doc/CrdtYjsDocFactory.ts +30 -26
  14. package/src/doc/doc.ts +2 -2
  15. package/src/map/YjsMap.ts +16 -0
  16. package/src/map/index.ts +1 -1
  17. package/src/map/map.ts +7 -3
  18. package/src/object/YjsObject.ts +16 -0
  19. package/src/object/index.ts +1 -1
  20. package/src/object/object.ts +5 -3
  21. package/src/text/YjsText.ts +16 -0
  22. package/src/text/index.ts +1 -1
  23. package/src/text/text.ts +5 -3
  24. package/src/types.ts +5 -63
  25. package/src/xmlElement/YjsXmlElement.ts +22 -0
  26. package/src/xmlElement/index.ts +1 -1
  27. package/src/xmlElement/xmlElement.ts +6 -6
  28. package/src/xmlFragment/YjsXmlFragment.ts +19 -0
  29. package/src/xmlFragment/index.ts +1 -1
  30. package/src/xmlFragment/xmlFragment.ts +6 -5
  31. package/src/xmlText/YjsXmlText.ts +16 -0
  32. package/src/xmlText/index.ts +1 -1
  33. package/src/xmlText/xmlText.ts +5 -3
  34. package/src/yjs.ts +9 -9
  35. package/src/array/CrdtYjsArray.ts +0 -50
  36. package/src/map/CrdtYjsMap.ts +0 -40
  37. package/src/object/CrdtYjsObject.ts +0 -30
  38. package/src/shared/index.ts +0 -2
  39. package/src/shared/isWrapper.ts +0 -21
  40. package/src/shared/toYjsValue.ts +0 -5
  41. package/src/text/CrdtYjsText.ts +0 -34
  42. package/src/xmlElement/CrdtYjsXmlElement.ts +0 -50
  43. package/src/xmlFragment/CrdtYjsXmlFragment.ts +0 -49
  44. 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/CrdtYjsArray.ts
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.initialValue = value.map(([k, v]) => [k, toYjsValue(v)]);
56
- this.value = new YMap(this.initialValue);
57
- }
58
- get size() {
59
- return this.value.size;
43
+ this.insert(0, value);
44
+ this.initialValue = value;
60
45
  }
61
- delete(prop) {
62
- this.value.delete(prop);
63
- return this;
46
+ __pluvType() {
47
+ return {};
64
48
  }
65
- set(prop, value) {
66
- this.value.set(prop, toYjsValue(value));
67
- return this;
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
- toJson() {
70
- return this.value.toJSON();
79
+ __pluvType() {
80
+ return {};
71
81
  }
72
82
  };
73
83
 
74
- // src/object/CrdtYjsObject.ts
75
- import { AbstractCrdtType as AbstractCrdtType2 } from "@pluv/crdt";
84
+ // src/object/YjsObject.ts
76
85
  import { Map as YMap2 } from "yjs";
77
- var CrdtYjsObject = class extends AbstractCrdtType2 {
78
- constructor(value = {}) {
79
- super();
80
- this.initialValue = Object.entries(value).map(([k, v]) => [k, toYjsValue(v)]);
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
- toJson() {
88
- return this.value.toJSON();
91
+ __pluvType() {
92
+ return {};
89
93
  }
90
94
  };
91
95
 
92
- // src/text/CrdtYjsText.ts
93
- import { AbstractCrdtType as AbstractCrdtType3 } from "@pluv/crdt";
96
+ // src/text/YjsText.ts
94
97
  import { Text as YText } from "yjs";
95
- var CrdtYjsText = class extends AbstractCrdtType3 {
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
- toJson() {
113
- return this.value.toJSON();
103
+ __pluvType() {
104
+ return {};
114
105
  }
115
106
  };
116
107
 
117
- // src/xmlElement/CrdtYjsXmlElement.ts
118
- import { AbstractCrdtType as AbstractCrdtType4 } from "@pluv/crdt";
108
+ // src/xmlElement/YjsXmlElement.ts
119
109
  import { XmlElement as YXmlElement } from "yjs";
120
- var CrdtYjsXmlElement = class extends AbstractCrdtType4 {
121
- constructor(name, children) {
122
- super();
123
- this.initialValue = children.map((item) => item.value);
124
- this.name = name;
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
- toJson() {
185
- return this.value.toJSON();
116
+ __pluvType() {
117
+ return {};
186
118
  }
187
119
  };
188
120
 
189
- // src/xmlFragment/xmlFragment.ts
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 CrdtYjsXmlText = class extends AbstractCrdtType6 {
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
- 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
- if (node instanceof CrdtYjsArray) {
293
- const yArray = this.value.get(key, YArray2);
294
- yArray.insert(0, node.initialValue.slice(0));
295
- node.value = yArray;
296
- return __spreadProps(__spreadValues({}, acc), { [key]: node });
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 CrdtYjsMap || node instanceof CrdtYjsObject) {
299
- const yMap = this.value.get(key, YMap3);
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
- node.value = yMap;
304
- return __spreadProps(__spreadValues({}, acc), { [key]: node });
151
+ return __spreadProps(__spreadValues({}, acc), { [key]: yMap });
305
152
  }
306
- if (node instanceof CrdtYjsObject) {
307
- const yMap = this.value.get(key, YMap3);
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
- node.value = yMap;
312
- return __spreadProps(__spreadValues({}, acc), { [key]: node });
158
+ return __spreadProps(__spreadValues({}, acc), { [key]: yMap });
313
159
  }
314
- if (node instanceof CrdtYjsText) {
315
- const yText = this.value.get(key, YText2);
316
- yText.insert(0, node.initialValue);
317
- node.value = yText;
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 CrdtYjsXmlElement) {
321
- const yXmlElement = this.value.get(key, YXmlElement2);
322
- yXmlElement.insert(0, node.initialValue.slice(0));
323
- node.value = yXmlElement;
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 CrdtYjsXmlFragment) {
327
- const yXmlFragment = this.value.get(key, YXmlFragment2);
328
- yXmlFragment.insert(0, node.initialValue.slice(0));
329
- node.value = yXmlFragment;
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 CrdtYjsXmlText) {
175
+ if (node instanceof YjsXmlText) {
333
176
  const yXmlText = this.value.get(key, YXmlText2);
334
- yXmlText.insert(0, node.initialValue);
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(key) {
377
- if (typeof key === "undefined") return this._storage;
378
- return this._storage[key];
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 CrdtYjsArray || type instanceof CrdtYjsMap || type instanceof CrdtYjsObject || type instanceof CrdtYjsText || type instanceof CrdtYjsXmlElement || type instanceof CrdtYjsXmlFragment || type instanceof CrdtYjsXmlText) {
410
- acc.push(type.value);
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.toJson() }),
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 CrdtYjsMap(value);
287
+ return new YjsMap(value);
445
288
  };
446
289
 
447
290
  // src/object/object.ts
448
- var object = (value) => {
449
- return new CrdtYjsObject(value);
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 CrdtYjsArray) {
469
- return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsArray([]) });
344
+ if (node instanceof YjsArray) {
345
+ return __spreadProps(__spreadValues({}, acc), { [key]: array() });
470
346
  }
471
- if (node instanceof CrdtYjsMap) {
472
- return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsMap([]) });
347
+ if (node instanceof YjsMap) {
348
+ return __spreadProps(__spreadValues({}, acc), { [key]: map() });
473
349
  }
474
- if (node instanceof CrdtYjsObject) {
475
- return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsObject({}) });
350
+ if (node instanceof YjsObject) {
351
+ return __spreadProps(__spreadValues({}, acc), { [key]: object() });
476
352
  }
477
- if (node instanceof CrdtYjsText) {
478
- return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsText("") });
353
+ if (node instanceof YjsText) {
354
+ return __spreadProps(__spreadValues({}, acc), { [key]: text() });
479
355
  }
480
- if (node instanceof CrdtYjsXmlElement) {
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 CrdtYjsXmlFragment) {
486
- return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsXmlFragment([]) });
359
+ if (node instanceof YXmlFragment3) {
360
+ return __spreadProps(__spreadValues({}, acc), { [key]: xmlFragment([]) });
487
361
  }
488
- if (node instanceof CrdtYjsXmlText) {
489
- return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsXmlText("") });
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.19.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.19.0",
22
- "@pluv/types": "^0.19.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.19.0",
33
- "eslint-config-pluv": "^0.19.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
+ }
@@ -1,5 +1,7 @@
1
- import { CrdtYjsArray } from "./CrdtYjsArray";
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[] = []): CrdtYjsArray<T> => {
4
- return new CrdtYjsArray<T>(value);
5
+ export const array = <T extends unknown>(value: T[] | readonly T[] = []): YjsType<YArray<T>, T[]> => {
6
+ return new YjsArray(value);
5
7
  };
@@ -1,2 +1,2 @@
1
1
  export { array } from "./array";
2
- export { CrdtYjsArray } from "./CrdtYjsArray";
2
+ export type { YjsArray } from "./YjsArray";