hypercore-storage 1.8.2 → 1.8.4
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/index.js +38 -1
- package/lib/keys.js +16 -0
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -6,6 +6,8 @@ const View = require('./lib/view.js')
|
|
|
6
6
|
const VERSION = 1
|
|
7
7
|
const COLUMN_FAMILY = 'corestore'
|
|
8
8
|
|
|
9
|
+
const { store, core } = require('./lib/keys.js')
|
|
10
|
+
|
|
9
11
|
const {
|
|
10
12
|
CorestoreRX,
|
|
11
13
|
CorestoreTX,
|
|
@@ -369,6 +371,38 @@ class CorestoreStorage {
|
|
|
369
371
|
return this.db.ready()
|
|
370
372
|
}
|
|
371
373
|
|
|
374
|
+
async deleteCore (ptr) {
|
|
375
|
+
const rx = new CoreRX(ptr, this.db, EMPTY)
|
|
376
|
+
|
|
377
|
+
const authPromise = rx.getAuth()
|
|
378
|
+
const sessionsPromise = rx.getSessions()
|
|
379
|
+
|
|
380
|
+
rx.tryFlush()
|
|
381
|
+
|
|
382
|
+
const auth = await authPromise
|
|
383
|
+
const sessions = await sessionsPromise
|
|
384
|
+
|
|
385
|
+
// no core stored here
|
|
386
|
+
if (!auth) return
|
|
387
|
+
|
|
388
|
+
const tx = this.db.write({ autoDestroy: true })
|
|
389
|
+
|
|
390
|
+
tx.tryDelete(store.core(auth.discoveryKey))
|
|
391
|
+
|
|
392
|
+
// clear core
|
|
393
|
+
const start = core.core(ptr.corePointer)
|
|
394
|
+
const end = core.core(ptr.corePointer + 1)
|
|
395
|
+
tx.tryDeleteRange(start, end)
|
|
396
|
+
|
|
397
|
+
for (const { dataPointer } of sessions) {
|
|
398
|
+
const start = core.data(dataPointer)
|
|
399
|
+
const end = core.data(dataPointer + 1)
|
|
400
|
+
tx.tryDeleteRange(start, end)
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
return tx.flush()
|
|
404
|
+
}
|
|
405
|
+
|
|
372
406
|
static isCoreStorage (db) {
|
|
373
407
|
return isCorestoreStorage(db)
|
|
374
408
|
}
|
|
@@ -399,7 +433,10 @@ class CorestoreStorage {
|
|
|
399
433
|
const head = await headPromise
|
|
400
434
|
|
|
401
435
|
const version = head === null ? 0 : head.version
|
|
402
|
-
if (version === VERSION)
|
|
436
|
+
if (version === VERSION) {
|
|
437
|
+
this.version = VERSION
|
|
438
|
+
return
|
|
439
|
+
}
|
|
403
440
|
|
|
404
441
|
const target = { version: VERSION, dryRun: false }
|
|
405
442
|
|
package/lib/keys.js
CHANGED
|
@@ -113,6 +113,22 @@ store.discoveryKey = function (buffer) {
|
|
|
113
113
|
return c.fixed32.decode(state)
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
+
core.core = function (ptr) {
|
|
117
|
+
const state = alloc()
|
|
118
|
+
const start = state.start
|
|
119
|
+
UINT.encode(state, TL_CORE)
|
|
120
|
+
UINT.encode(state, ptr)
|
|
121
|
+
return state.buffer.subarray(start, state.start)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
core.data = function (ptr) {
|
|
125
|
+
const state = alloc()
|
|
126
|
+
const start = state.start
|
|
127
|
+
UINT.encode(state, TL_DATA)
|
|
128
|
+
UINT.encode(state, ptr)
|
|
129
|
+
return state.buffer.subarray(start, state.start)
|
|
130
|
+
}
|
|
131
|
+
|
|
116
132
|
core.auth = function (ptr) {
|
|
117
133
|
const state = alloc()
|
|
118
134
|
const start = state.start
|