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.
Files changed (3) hide show
  1. package/index.js +38 -1
  2. package/lib/keys.js +16 -0
  3. 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) return
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hypercore-storage",
3
- "version": "1.8.2",
3
+ "version": "1.8.4",
4
4
  "main": "index.js",
5
5
  "files": [
6
6
  "index.js",