MCPcopy
hub / github.com/yjs/yjs / slice

Method slice

src/utils/IdSet.js:215–258  ·  view source on GitHub ↗

* Return slices of ids that exist in this idset. * * @param {number} client * @param {number} clock * @param {number} len * @return {Array }

(client, clock, len)

Source from the content-addressed store, hash-verified

213 * @return {Array<MaybeIdRange>}
214 */
215 slice (client, clock, len) {
216 const dr = this.clients.get(client)
217 /**
218 * @type {Array<MaybeIdRange>}
219 */
220 const res = []
221 if (dr) {
222 /**
223 * @type {Array<IdRange>}
224 */
225 const ranges = dr.getIds()
226 let index = findRangeStartInIdRanges(ranges, clock)
227 if (index !== null) {
228 let prev = null
229 while (index < ranges.length) {
230 let r = ranges[index]
231 if (r.clock < clock) {
232 r = new IdRange(clock, r.len - (clock - r.clock))
233 }
234 if (r.clock + r.len > clock + len) {
235 r = new IdRange(r.clock, clock + len - r.clock)
236 }
237 if (r.len <= 0) break
238 const prevEnd = prev != null ? prev.clock + prev.len : clock
239 if (prevEnd < r.clock) {
240 res.push(createMaybeIdRange(prevEnd, r.clock - prevEnd, false))
241 }
242 prev = r
243 res.push(createMaybeIdRange(r.clock, r.len, true))
244 index++
245 }
246 }
247 }
248 if (res.length > 0) {
249 const last = res[res.length - 1]
250 const end = last.clock + last.len
251 if (end < clock + len) {
252 res.push(createMaybeIdRange(end, clock + len - end, false))
253 }
254 } else {
255 res.push(createMaybeIdRange(clock, len, false))
256 }
257 return res
258 }
259
260 /**
261 * @param {number} client

Callers 13

copyMethod · 0.45
mergeIdSetsFunction · 0.45
_diffSetFunction · 0.45
addStackToRestSSFunction · 0.45
readContentMethod · 0.45
collectSuggestedChangesFunction · 0.45
readContentMethod · 0.45
readContentMethod · 0.45
spliceMethod · 0.45
spliceMethod · 0.45
writeMethod · 0.45

Calls 5

findRangeStartInIdRangesFunction · 0.85
createMaybeIdRangeFunction · 0.85
pushMethod · 0.80
getMethod · 0.45
getIdsMethod · 0.45

Tested by

no test coverage detected