@y/y 14.0.0-19 → 14.0.0-21

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 (135) hide show
  1. package/README.md +7 -5
  2. package/dist/src/index.d.ts +2 -1
  3. package/dist/src/internals.d.ts +2 -9
  4. package/dist/src/structs/ContentType.d.ts +6 -12
  5. package/dist/src/structs/ContentType.d.ts.map +1 -1
  6. package/dist/src/structs/Item.d.ts +5 -6
  7. package/dist/src/structs/Item.d.ts.map +1 -1
  8. package/dist/src/utils/AttributionManager.d.ts +16 -14
  9. package/dist/src/utils/AttributionManager.d.ts.map +1 -1
  10. package/dist/src/utils/Doc.d.ts +7 -70
  11. package/dist/src/utils/Doc.d.ts.map +1 -1
  12. package/dist/src/utils/ID.d.ts +2 -2
  13. package/dist/src/utils/ID.d.ts.map +1 -1
  14. package/dist/src/utils/IdMap.d.ts +22 -19
  15. package/dist/src/utils/IdMap.d.ts.map +1 -1
  16. package/dist/src/utils/IdSet.d.ts +6 -6
  17. package/dist/src/utils/IdSet.d.ts.map +1 -1
  18. package/dist/src/utils/RelativePosition.d.ts +8 -8
  19. package/dist/src/utils/RelativePosition.d.ts.map +1 -1
  20. package/dist/src/utils/Snapshot.d.ts +3 -3
  21. package/dist/src/utils/Snapshot.d.ts.map +1 -1
  22. package/dist/src/utils/Transaction.d.ts +9 -5
  23. package/dist/src/utils/Transaction.d.ts.map +1 -1
  24. package/dist/src/utils/UndoManager.d.ts +14 -12
  25. package/dist/src/utils/UndoManager.d.ts.map +1 -1
  26. package/dist/src/utils/UpdateDecoder.d.ts +8 -4
  27. package/dist/src/utils/UpdateDecoder.d.ts.map +1 -1
  28. package/dist/src/utils/UpdateEncoder.d.ts +2 -0
  29. package/dist/src/utils/UpdateEncoder.d.ts.map +1 -1
  30. package/dist/src/utils/YEvent.d.ts +21 -42
  31. package/dist/src/utils/YEvent.d.ts.map +1 -1
  32. package/dist/src/utils/encoding.d.ts +3 -3
  33. package/dist/src/utils/encoding.d.ts.map +1 -1
  34. package/dist/src/utils/isParentOf.d.ts +1 -1
  35. package/dist/src/utils/isParentOf.d.ts.map +1 -1
  36. package/dist/src/utils/logging.d.ts +2 -2
  37. package/dist/src/utils/logging.d.ts.map +1 -1
  38. package/dist/src/utils/meta.d.ts +71 -0
  39. package/dist/src/utils/meta.d.ts.map +1 -0
  40. package/dist/src/utils/ts.d.ts +4 -0
  41. package/dist/src/utils/ts.d.ts.map +1 -0
  42. package/dist/src/utils/updates.d.ts +11 -11
  43. package/dist/src/utils/updates.d.ts.map +1 -1
  44. package/dist/src/ytype.d.ts +498 -0
  45. package/dist/src/ytype.d.ts.map +1 -0
  46. package/dist/tests/IdMap.tests.d.ts.map +1 -1
  47. package/dist/tests/attribution.tests.d.ts +1 -0
  48. package/dist/tests/attribution.tests.d.ts.map +1 -1
  49. package/dist/tests/compatibility.tests.d.ts.map +1 -1
  50. package/dist/tests/doc.tests.d.ts.map +1 -1
  51. package/dist/tests/relativePositions.tests.d.ts +9 -9
  52. package/dist/tests/relativePositions.tests.d.ts.map +1 -1
  53. package/dist/tests/snapshot.tests.d.ts.map +1 -1
  54. package/dist/tests/testHelper.d.ts +28 -27
  55. package/dist/tests/testHelper.d.ts.map +1 -1
  56. package/dist/tests/undo-redo.tests.d.ts.map +1 -1
  57. package/dist/tests/updates.tests.d.ts +2 -1
  58. package/dist/tests/updates.tests.d.ts.map +1 -1
  59. package/dist/tests/y-array.tests.d.ts +0 -2
  60. package/dist/tests/y-array.tests.d.ts.map +1 -1
  61. package/dist/tests/y-map.tests.d.ts +0 -3
  62. package/dist/tests/y-map.tests.d.ts.map +1 -1
  63. package/dist/tests/y-text.tests.d.ts +1 -1
  64. package/dist/tests/y-text.tests.d.ts.map +1 -1
  65. package/dist/tests/y-xml.tests.d.ts +0 -1
  66. package/dist/tests/y-xml.tests.d.ts.map +1 -1
  67. package/package.json +16 -16
  68. package/src/index.js +156 -0
  69. package/src/internals.js +35 -0
  70. package/src/structs/AbstractStruct.js +59 -0
  71. package/src/structs/ContentAny.js +115 -0
  72. package/src/structs/ContentBinary.js +93 -0
  73. package/src/structs/ContentDeleted.js +101 -0
  74. package/src/structs/ContentDoc.js +141 -0
  75. package/src/structs/ContentEmbed.js +98 -0
  76. package/src/structs/ContentFormat.js +105 -0
  77. package/src/structs/ContentJSON.js +119 -0
  78. package/src/structs/ContentString.js +113 -0
  79. package/src/structs/ContentType.js +152 -0
  80. package/src/structs/GC.js +80 -0
  81. package/src/structs/Item.js +841 -0
  82. package/src/structs/Skip.js +75 -0
  83. package/src/utils/AttributionManager.js +653 -0
  84. package/src/utils/Doc.js +266 -0
  85. package/src/utils/EventHandler.js +87 -0
  86. package/src/utils/ID.js +89 -0
  87. package/src/utils/IdMap.js +673 -0
  88. package/src/utils/IdSet.js +825 -0
  89. package/src/utils/RelativePosition.js +352 -0
  90. package/src/utils/Snapshot.js +220 -0
  91. package/src/utils/StructSet.js +137 -0
  92. package/src/utils/StructStore.js +289 -0
  93. package/src/utils/Transaction.js +671 -0
  94. package/src/utils/UndoManager.js +406 -0
  95. package/src/utils/UpdateDecoder.js +285 -0
  96. package/src/utils/UpdateEncoder.js +327 -0
  97. package/src/utils/YEvent.js +189 -0
  98. package/src/utils/delta-helpers.js +54 -0
  99. package/src/utils/encoding.js +623 -0
  100. package/src/utils/isParentOf.js +21 -0
  101. package/src/utils/logging.js +21 -0
  102. package/src/utils/meta.js +190 -0
  103. package/src/utils/ts.js +3 -0
  104. package/src/utils/updates.js +802 -0
  105. package/src/ytype.js +1962 -0
  106. package/dist/Skip-CE05BUF8.js +0 -11875
  107. package/dist/Skip-CE05BUF8.js.map +0 -1
  108. package/dist/index-C21sDQ5u.js +0 -163
  109. package/dist/index-C21sDQ5u.js.map +0 -1
  110. package/dist/internals.js +0 -25
  111. package/dist/internals.js.map +0 -1
  112. package/dist/src/types/AbstractType.d.ts +0 -239
  113. package/dist/src/types/AbstractType.d.ts.map +0 -1
  114. package/dist/src/types/YArray.d.ts +0 -128
  115. package/dist/src/types/YArray.d.ts.map +0 -1
  116. package/dist/src/types/YMap.d.ts +0 -112
  117. package/dist/src/types/YMap.d.ts.map +0 -1
  118. package/dist/src/types/YText.d.ts +0 -216
  119. package/dist/src/types/YText.d.ts.map +0 -1
  120. package/dist/src/types/YXmlElement.d.ts +0 -106
  121. package/dist/src/types/YXmlElement.d.ts.map +0 -1
  122. package/dist/src/types/YXmlFragment.d.ts +0 -143
  123. package/dist/src/types/YXmlFragment.d.ts.map +0 -1
  124. package/dist/src/types/YXmlHook.d.ts +0 -32
  125. package/dist/src/types/YXmlHook.d.ts.map +0 -1
  126. package/dist/src/types/YXmlText.d.ts +0 -34
  127. package/dist/src/types/YXmlText.d.ts.map +0 -1
  128. package/dist/src/utils/AbstractConnector.d.ts +0 -20
  129. package/dist/src/utils/AbstractConnector.d.ts.map +0 -1
  130. package/dist/src/utils/types.d.ts +0 -7
  131. package/dist/src/utils/types.d.ts.map +0 -1
  132. package/dist/testHelper.js +0 -617
  133. package/dist/testHelper.js.map +0 -1
  134. package/dist/yjs.js +0 -26
  135. package/dist/yjs.js.map +0 -1
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Meta API for describing Yjs documents
3
+ */
4
+
5
+ import * as idmap from './IdMap.js'
6
+ import * as idset from './IdSet.js'
7
+ import { IdSetEncoderV2 } from './UpdateEncoder.js'
8
+ import { IdSetDecoderV2 } from './UpdateDecoder.js'
9
+ import * as decoding from 'lib0/decoding'
10
+
11
+ /**
12
+ * @typedef {{ inserts: import('./IdSet.js').IdSet, deletes: import('./IdSet.js').IdSet }} ContentIds
13
+ */
14
+
15
+ /**
16
+ * @typedef {{ inserts: import('./IdMap.js').IdMap<any>, deletes: import('./IdMap.js').IdMap<any> }} ContentMap
17
+ */
18
+
19
+ /**
20
+ * @param {import('./IdSet.js').IdSet} inserts
21
+ * @param {import('./IdSet.js').IdSet} deletes
22
+ */
23
+ export const createContentIds = (inserts = idset.createIdSet(), deletes = idset.createIdSet()) => ({ inserts, deletes })
24
+
25
+ /**
26
+ * @param {ContentMap} contentMap
27
+ */
28
+ export const createContentIdsFromContentMap = contentMap => createContentIds(
29
+ idmap.createIdSetFromIdMap(contentMap.inserts),
30
+ idmap.createIdSetFromIdMap(contentMap.deletes)
31
+ )
32
+
33
+ /**
34
+ * @param {import('./Doc.js').Doc} ydoc
35
+ */
36
+ export const createContentIdsFromDoc = ydoc => createContentIds(
37
+ idset.createInsertSetFromStructStore(ydoc.store, false),
38
+ idset.createDeleteSetFromStructStore(ydoc.store)
39
+ )
40
+
41
+ /**
42
+ * @param {import('./Doc.js').Doc} ydocPrev
43
+ * @param {import('./Doc.js').Doc} ydocNext
44
+ */
45
+ export const createContentIdsFromDocDiff = (ydocPrev, ydocNext) =>
46
+ excludeContentIds(createContentIdsFromDoc(ydocPrev), createContentIdsFromDoc(ydocNext))
47
+
48
+ /**
49
+ * @param {ContentIds} content
50
+ * @param {ContentIds} excludeContent
51
+ */
52
+ export const excludeContentIds = (content, excludeContent) =>
53
+ createContentIds(idset.diffIdSet(content.inserts, excludeContent.inserts), idset.diffIdSet(content.deletes, excludeContent.deletes))
54
+
55
+ /**
56
+ * @param {ContentMap} content
57
+ * @param {ContentIds | ContentMap} excludeContent
58
+ */
59
+ export const excludeContentMaps = (content, excludeContent) => createContentMap(
60
+ idmap.diffIdMap(content.inserts, excludeContent.inserts),
61
+ idmap.diffIdMap(content.deletes, excludeContent.deletes)
62
+ )
63
+
64
+ /**
65
+ * @param {Array<ContentMap>} contents
66
+ */
67
+ export const mergeContentMaps = contents => createContentMap(
68
+ idmap.mergeIdMaps(contents.map(c => c.inserts)),
69
+ idmap.mergeIdMaps(contents.map(c => c.deletes))
70
+ )
71
+
72
+ /**
73
+ * @param {Array<ContentIds>} contents
74
+ */
75
+ export const mergeContentIds = contents => createContentIds(
76
+ idset.mergeIdSets(contents.map(c => c.inserts)),
77
+ idset.mergeIdSets(contents.map(c => c.deletes))
78
+ )
79
+
80
+ /**
81
+ * @param {import('./IdMap.js').IdMap<any>} inserts
82
+ * @param {import('./IdMap.js').IdMap<any>} deletes
83
+ */
84
+ export const createContentMap = (inserts, deletes) => ({ inserts, deletes })
85
+
86
+ /**
87
+ * @param {ContentIds} contentIds
88
+ * @param {Array<idmap.ContentAttribute<any>>} insertAttrs
89
+ * @param {Array<idmap.ContentAttribute<any>>} [deleteAttrs]
90
+ */
91
+ export const createContentMapFromContentIds = (contentIds, insertAttrs, deleteAttrs = insertAttrs) => createContentMap(
92
+ idmap.createIdMapFromIdSet(contentIds.inserts, insertAttrs),
93
+ idmap.createIdMapFromIdSet(contentIds.deletes, deleteAttrs)
94
+ )
95
+
96
+ /**
97
+ * @param {import('./UpdateEncoder.js').IdSetEncoder} encoder
98
+ * @param {ContentIds} contentIds
99
+ */
100
+ export const writeContentIds = (encoder, contentIds) => {
101
+ idset.writeIdSet(encoder, contentIds.inserts)
102
+ idset.writeIdSet(encoder, contentIds.deletes)
103
+ }
104
+
105
+ /**
106
+ * @param {ContentIds} contentIds
107
+ */
108
+ export const encodeContentIds = contentIds => {
109
+ const encoder = new IdSetEncoderV2()
110
+ writeContentIds(encoder, contentIds)
111
+ return encoder.toUint8Array()
112
+ }
113
+
114
+ /**
115
+ * @todo this encoding needs to be heavily optimized for production
116
+ *
117
+ * @param {import('./UpdateDecoder.js').IdSetDecoder} decoder
118
+ * @return {ContentIds}
119
+ */
120
+ export const readContentIds = decoder => createContentIds(
121
+ idset.readIdSet(decoder),
122
+ idset.readIdSet(decoder)
123
+ )
124
+
125
+ /**
126
+ * @param {Uint8Array<any>} buf
127
+ */
128
+ export const decodeContentIds = buf => readContentIds(new IdSetDecoderV2(decoding.createDecoder(buf)))
129
+
130
+ /**
131
+ * @todo this encoding needs to be heavily optimized for production
132
+ *
133
+ * @param {import('./UpdateEncoder.js').IdSetEncoder} encoder
134
+ * @param {ContentMap} contentMap
135
+ */
136
+ export const writeContentMap = (encoder, contentMap) => {
137
+ idmap.writeIdMap(encoder, contentMap.inserts)
138
+ idmap.writeIdMap(encoder, contentMap.deletes)
139
+ }
140
+
141
+ /**
142
+ * @todo this encoding needs to be heavily optimized for production
143
+ *
144
+ * @param {import('./UpdateDecoder.js').IdSetDecoder} decoder
145
+ * @return {ContentMap} contentMap
146
+ */
147
+ export const readContentMap = (decoder) => createContentMap(
148
+ idmap.readIdMap(decoder),
149
+ idmap.readIdMap(decoder)
150
+ )
151
+
152
+ /**
153
+ * @param {ContentMap} contentMap
154
+ */
155
+ export const encodeContentMap = contentMap => {
156
+ const encoder = new IdSetEncoderV2()
157
+ writeContentMap(encoder, contentMap)
158
+ return encoder.toUint8Array()
159
+ }
160
+
161
+ /**
162
+ * @param {ContentMap} mapA
163
+ * @param {ContentMap|ContentIds} mapB
164
+ */
165
+ export const intersectContentMap = (mapA, mapB) => createContentMap(
166
+ idmap.intersectMaps(mapA.inserts, mapB.inserts),
167
+ idmap.intersectMaps(mapA.deletes, mapB.deletes)
168
+ )
169
+
170
+ /**
171
+ * @param {ContentIds} setA
172
+ * @param {ContentIds|ContentMap} setB
173
+ */
174
+ export const intersectContentIds = (setA, setB) => createContentIds(
175
+ idset.intersectSets(setA.inserts, setB.inserts),
176
+ idset.intersectSets(setA.deletes, setB.deletes)
177
+ )
178
+
179
+ /**
180
+ * @param {Uint8Array<any>} buf
181
+ */
182
+ export const decodeContentMap = buf => readContentMap(new IdSetDecoderV2(decoding.createDecoder(buf)))
183
+
184
+ /**
185
+ * @todo filter by array of content instead
186
+ * @param {ContentMap} contentMap
187
+ * @param {(c:Array<idmap.ContentAttribute<any>>)=>boolean} insertPredicate
188
+ * @param {(c:Array<idmap.ContentAttribute<any>>)=>boolean} deletePredicate
189
+ */
190
+ export const filterContentMap = (contentMap, insertPredicate, deletePredicate) => createContentMap(idmap.filterIdMap(contentMap.inserts, insertPredicate), idmap.filterIdMap(contentMap.deletes, deletePredicate))
@@ -0,0 +1,3 @@
1
+ /**
2
+ * @typedef {Object<string,any>|Array<any>|number|null|string|Uint8Array|BigInt|import('../ytype.js').YType} YValue
3
+ */