hypercore 11.0.7 → 11.0.9
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/lib/bitfield.js +3 -2
- package/lib/remote-bitfield.js +3 -2
- package/lib/session-state.js +9 -0
- package/package.json +1 -1
package/lib/bitfield.js
CHANGED
|
@@ -330,14 +330,15 @@ module.exports = class Bitfield {
|
|
|
330
330
|
p = this._pages.set(i, new BitfieldPage(i, s))
|
|
331
331
|
}
|
|
332
332
|
|
|
333
|
-
const
|
|
333
|
+
const offset = p.index * BITS_PER_PAGE
|
|
334
|
+
const last = Math.min(end - offset, BITS_PER_PAGE)
|
|
334
335
|
const range = last - j
|
|
335
336
|
|
|
336
337
|
if (p) p.setRange(j, last, val)
|
|
337
338
|
|
|
338
339
|
j = 0
|
|
339
340
|
i++
|
|
340
|
-
|
|
341
|
+
start += range
|
|
341
342
|
}
|
|
342
343
|
}
|
|
343
344
|
|
package/lib/remote-bitfield.js
CHANGED
|
@@ -203,14 +203,15 @@ module.exports = class RemoteBitfield {
|
|
|
203
203
|
p = this._pages.set(i, new RemoteBitfieldPage(i, new Uint32Array(WORDS_PER_PAGE), s))
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
-
const
|
|
206
|
+
const offset = p.index * BITS_PER_PAGE
|
|
207
|
+
const last = Math.min(end - offset, BITS_PER_PAGE)
|
|
207
208
|
const range = last - j
|
|
208
209
|
|
|
209
210
|
if (p) p.setRange(j, last, val)
|
|
210
211
|
|
|
211
212
|
j = 0
|
|
212
213
|
i++
|
|
213
|
-
|
|
214
|
+
start += range
|
|
214
215
|
}
|
|
215
216
|
}
|
|
216
217
|
|
package/lib/session-state.js
CHANGED
|
@@ -639,12 +639,21 @@ module.exports = class SessionState {
|
|
|
639
639
|
const firstPage = getBitfieldPage(treeLength)
|
|
640
640
|
const lastPage = getBitfieldPage(totalLength)
|
|
641
641
|
|
|
642
|
+
const srx = this.storage.read()
|
|
643
|
+
const bitfieldPagePromise = srx.getBitfieldPage(firstPage)
|
|
644
|
+
srx.tryFlush()
|
|
645
|
+
|
|
646
|
+
const bitfieldPage = await bitfieldPagePromise
|
|
647
|
+
|
|
642
648
|
let index = treeLength
|
|
643
649
|
|
|
644
650
|
for (let i = firstPage; i <= lastPage; i++) {
|
|
645
651
|
const page = b4a.alloc(Bitfield.BYTES_PER_PAGE)
|
|
646
652
|
tx.putBitfieldPage(i, page)
|
|
647
653
|
|
|
654
|
+
// copy existing bits in
|
|
655
|
+
if (i === firstPage && bitfieldPage) page.set(bitfieldPage)
|
|
656
|
+
|
|
648
657
|
if (index < length) {
|
|
649
658
|
index = fillBitfieldPage(page, index, length, i, true)
|
|
650
659
|
if (index < length) continue
|