@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.
- package/README.md +7 -5
- package/dist/src/index.d.ts +2 -1
- package/dist/src/internals.d.ts +2 -9
- package/dist/src/structs/ContentType.d.ts +6 -12
- package/dist/src/structs/ContentType.d.ts.map +1 -1
- package/dist/src/structs/Item.d.ts +5 -6
- package/dist/src/structs/Item.d.ts.map +1 -1
- package/dist/src/utils/AttributionManager.d.ts +16 -14
- package/dist/src/utils/AttributionManager.d.ts.map +1 -1
- package/dist/src/utils/Doc.d.ts +7 -70
- package/dist/src/utils/Doc.d.ts.map +1 -1
- package/dist/src/utils/ID.d.ts +2 -2
- package/dist/src/utils/ID.d.ts.map +1 -1
- package/dist/src/utils/IdMap.d.ts +22 -19
- package/dist/src/utils/IdMap.d.ts.map +1 -1
- package/dist/src/utils/IdSet.d.ts +6 -6
- package/dist/src/utils/IdSet.d.ts.map +1 -1
- package/dist/src/utils/RelativePosition.d.ts +8 -8
- package/dist/src/utils/RelativePosition.d.ts.map +1 -1
- package/dist/src/utils/Snapshot.d.ts +3 -3
- package/dist/src/utils/Snapshot.d.ts.map +1 -1
- package/dist/src/utils/Transaction.d.ts +9 -5
- package/dist/src/utils/Transaction.d.ts.map +1 -1
- package/dist/src/utils/UndoManager.d.ts +14 -12
- package/dist/src/utils/UndoManager.d.ts.map +1 -1
- package/dist/src/utils/UpdateDecoder.d.ts +8 -4
- package/dist/src/utils/UpdateDecoder.d.ts.map +1 -1
- package/dist/src/utils/UpdateEncoder.d.ts +2 -0
- package/dist/src/utils/UpdateEncoder.d.ts.map +1 -1
- package/dist/src/utils/YEvent.d.ts +21 -42
- package/dist/src/utils/YEvent.d.ts.map +1 -1
- package/dist/src/utils/encoding.d.ts +3 -3
- package/dist/src/utils/encoding.d.ts.map +1 -1
- package/dist/src/utils/isParentOf.d.ts +1 -1
- package/dist/src/utils/isParentOf.d.ts.map +1 -1
- package/dist/src/utils/logging.d.ts +2 -2
- package/dist/src/utils/logging.d.ts.map +1 -1
- package/dist/src/utils/meta.d.ts +71 -0
- package/dist/src/utils/meta.d.ts.map +1 -0
- package/dist/src/utils/ts.d.ts +4 -0
- package/dist/src/utils/ts.d.ts.map +1 -0
- package/dist/src/utils/updates.d.ts +11 -11
- package/dist/src/utils/updates.d.ts.map +1 -1
- package/dist/src/ytype.d.ts +498 -0
- package/dist/src/ytype.d.ts.map +1 -0
- package/dist/tests/IdMap.tests.d.ts.map +1 -1
- package/dist/tests/attribution.tests.d.ts +1 -0
- package/dist/tests/attribution.tests.d.ts.map +1 -1
- package/dist/tests/compatibility.tests.d.ts.map +1 -1
- package/dist/tests/doc.tests.d.ts.map +1 -1
- package/dist/tests/relativePositions.tests.d.ts +9 -9
- package/dist/tests/relativePositions.tests.d.ts.map +1 -1
- package/dist/tests/snapshot.tests.d.ts.map +1 -1
- package/dist/tests/testHelper.d.ts +28 -27
- package/dist/tests/testHelper.d.ts.map +1 -1
- package/dist/tests/undo-redo.tests.d.ts.map +1 -1
- package/dist/tests/updates.tests.d.ts +2 -1
- package/dist/tests/updates.tests.d.ts.map +1 -1
- package/dist/tests/y-array.tests.d.ts +0 -2
- package/dist/tests/y-array.tests.d.ts.map +1 -1
- package/dist/tests/y-map.tests.d.ts +0 -3
- package/dist/tests/y-map.tests.d.ts.map +1 -1
- package/dist/tests/y-text.tests.d.ts +1 -1
- package/dist/tests/y-text.tests.d.ts.map +1 -1
- package/dist/tests/y-xml.tests.d.ts +0 -1
- package/dist/tests/y-xml.tests.d.ts.map +1 -1
- package/package.json +16 -16
- package/src/index.js +156 -0
- package/src/internals.js +35 -0
- package/src/structs/AbstractStruct.js +59 -0
- package/src/structs/ContentAny.js +115 -0
- package/src/structs/ContentBinary.js +93 -0
- package/src/structs/ContentDeleted.js +101 -0
- package/src/structs/ContentDoc.js +141 -0
- package/src/structs/ContentEmbed.js +98 -0
- package/src/structs/ContentFormat.js +105 -0
- package/src/structs/ContentJSON.js +119 -0
- package/src/structs/ContentString.js +113 -0
- package/src/structs/ContentType.js +152 -0
- package/src/structs/GC.js +80 -0
- package/src/structs/Item.js +841 -0
- package/src/structs/Skip.js +75 -0
- package/src/utils/AttributionManager.js +653 -0
- package/src/utils/Doc.js +266 -0
- package/src/utils/EventHandler.js +87 -0
- package/src/utils/ID.js +89 -0
- package/src/utils/IdMap.js +673 -0
- package/src/utils/IdSet.js +825 -0
- package/src/utils/RelativePosition.js +352 -0
- package/src/utils/Snapshot.js +220 -0
- package/src/utils/StructSet.js +137 -0
- package/src/utils/StructStore.js +289 -0
- package/src/utils/Transaction.js +671 -0
- package/src/utils/UndoManager.js +406 -0
- package/src/utils/UpdateDecoder.js +285 -0
- package/src/utils/UpdateEncoder.js +327 -0
- package/src/utils/YEvent.js +189 -0
- package/src/utils/delta-helpers.js +54 -0
- package/src/utils/encoding.js +623 -0
- package/src/utils/isParentOf.js +21 -0
- package/src/utils/logging.js +21 -0
- package/src/utils/meta.js +190 -0
- package/src/utils/ts.js +3 -0
- package/src/utils/updates.js +802 -0
- package/src/ytype.js +1962 -0
- package/dist/Skip-CE05BUF8.js +0 -11875
- package/dist/Skip-CE05BUF8.js.map +0 -1
- package/dist/index-C21sDQ5u.js +0 -163
- package/dist/index-C21sDQ5u.js.map +0 -1
- package/dist/internals.js +0 -25
- package/dist/internals.js.map +0 -1
- package/dist/src/types/AbstractType.d.ts +0 -239
- package/dist/src/types/AbstractType.d.ts.map +0 -1
- package/dist/src/types/YArray.d.ts +0 -128
- package/dist/src/types/YArray.d.ts.map +0 -1
- package/dist/src/types/YMap.d.ts +0 -112
- package/dist/src/types/YMap.d.ts.map +0 -1
- package/dist/src/types/YText.d.ts +0 -216
- package/dist/src/types/YText.d.ts.map +0 -1
- package/dist/src/types/YXmlElement.d.ts +0 -106
- package/dist/src/types/YXmlElement.d.ts.map +0 -1
- package/dist/src/types/YXmlFragment.d.ts +0 -143
- package/dist/src/types/YXmlFragment.d.ts.map +0 -1
- package/dist/src/types/YXmlHook.d.ts +0 -32
- package/dist/src/types/YXmlHook.d.ts.map +0 -1
- package/dist/src/types/YXmlText.d.ts +0 -34
- package/dist/src/types/YXmlText.d.ts.map +0 -1
- package/dist/src/utils/AbstractConnector.d.ts +0 -20
- package/dist/src/utils/AbstractConnector.d.ts.map +0 -1
- package/dist/src/utils/types.d.ts +0 -7
- package/dist/src/utils/types.d.ts.map +0 -1
- package/dist/testHelper.js +0 -617
- package/dist/testHelper.js.map +0 -1
- package/dist/yjs.js +0 -26
- 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))
|
package/src/utils/ts.js
ADDED