hyperbee2 1.1.2 → 2.0.0

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.
@@ -2,7 +2,7 @@
2
2
  "version": 1,
3
3
  "schema": [
4
4
  {
5
- "name": "tree-pointer",
5
+ "name": "tree-pointer-0",
6
6
  "namespace": "bee",
7
7
  "compact": true,
8
8
  "flagsPosition": -1,
@@ -27,6 +27,87 @@
27
27
  }
28
28
  ]
29
29
  },
30
+ {
31
+ "name": "tree-pointer",
32
+ "namespace": "bee",
33
+ "compact": true,
34
+ "flagsPosition": 0,
35
+ "fields": [
36
+ {
37
+ "name": "core",
38
+ "type": "uint",
39
+ "version": 1
40
+ },
41
+ {
42
+ "name": "seq",
43
+ "type": "uint",
44
+ "version": 1
45
+ },
46
+ {
47
+ "name": "offset",
48
+ "type": "uint",
49
+ "version": 1
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ "name": "tree-delta",
55
+ "namespace": "bee",
56
+ "compact": true,
57
+ "flagsPosition": 0,
58
+ "fields": [
59
+ {
60
+ "name": "type",
61
+ "type": "uint3",
62
+ "version": 1
63
+ },
64
+ {
65
+ "name": "index",
66
+ "type": "uint8",
67
+ "version": 1
68
+ },
69
+ {
70
+ "name": "pointer",
71
+ "inline": true,
72
+ "type": "@bee/tree-pointer",
73
+ "version": 1
74
+ }
75
+ ]
76
+ },
77
+ {
78
+ "name": "cohort",
79
+ "namespace": "bee",
80
+ "array": true,
81
+ "type": "@bee/tree-delta"
82
+ },
83
+ {
84
+ "name": "value-pointer",
85
+ "namespace": "bee",
86
+ "compact": true,
87
+ "flagsPosition": 0,
88
+ "fields": [
89
+ {
90
+ "name": "core",
91
+ "type": "uint",
92
+ "version": 1
93
+ },
94
+ {
95
+ "name": "seq",
96
+ "type": "uint",
97
+ "version": 1
98
+ },
99
+ {
100
+ "name": "offset",
101
+ "type": "uint",
102
+ "version": 1
103
+ },
104
+ {
105
+ "name": "split",
106
+ "type": "uint",
107
+ "version": 1
108
+ }
109
+ ]
110
+ },
30
111
  {
31
112
  "name": "block-pointer",
32
113
  "namespace": "bee",
@@ -67,6 +148,28 @@
67
148
  }
68
149
  ]
69
150
  },
151
+ {
152
+ "name": "tree-0",
153
+ "namespace": "bee",
154
+ "compact": true,
155
+ "flagsPosition": -1,
156
+ "fields": [
157
+ {
158
+ "name": "keys",
159
+ "required": true,
160
+ "array": true,
161
+ "type": "@bee/tree-pointer-0",
162
+ "version": 1
163
+ },
164
+ {
165
+ "name": "children",
166
+ "required": true,
167
+ "array": true,
168
+ "type": "@bee/tree-pointer-0",
169
+ "version": 1
170
+ }
171
+ ]
172
+ },
70
173
  {
71
174
  "name": "tree",
72
175
  "namespace": "bee",
@@ -77,14 +180,14 @@
77
180
  "name": "keys",
78
181
  "required": true,
79
182
  "array": true,
80
- "type": "@bee/tree-pointer",
183
+ "type": "@bee/tree-delta",
81
184
  "version": 1
82
185
  },
83
186
  {
84
187
  "name": "children",
85
188
  "required": true,
86
189
  "array": true,
87
- "type": "@bee/tree-pointer",
190
+ "type": "@bee/tree-delta",
88
191
  "version": 1
89
192
  }
90
193
  ]
@@ -109,6 +212,31 @@
109
212
  }
110
213
  ]
111
214
  },
215
+ {
216
+ "name": "key",
217
+ "namespace": "bee",
218
+ "compact": true,
219
+ "flagsPosition": 1,
220
+ "fields": [
221
+ {
222
+ "name": "key",
223
+ "required": true,
224
+ "type": "buffer",
225
+ "version": 1
226
+ },
227
+ {
228
+ "name": "value",
229
+ "type": "buffer",
230
+ "version": 1
231
+ },
232
+ {
233
+ "name": "valuePointer",
234
+ "inline": true,
235
+ "type": "@bee/value-pointer",
236
+ "version": 1
237
+ }
238
+ ]
239
+ },
112
240
  {
113
241
  "name": "core",
114
242
  "namespace": "bee",
@@ -139,7 +267,7 @@
139
267
  ]
140
268
  },
141
269
  {
142
- "name": "block",
270
+ "name": "block-0",
143
271
  "namespace": "bee",
144
272
  "compact": false,
145
273
  "flagsPosition": 3,
@@ -170,7 +298,7 @@
170
298
  {
171
299
  "name": "tree",
172
300
  "array": true,
173
- "type": "@bee/tree",
301
+ "type": "@bee/tree-0",
174
302
  "version": 1
175
303
  },
176
304
  {
@@ -186,6 +314,81 @@
186
314
  "version": 1
187
315
  }
188
316
  ]
317
+ },
318
+ {
319
+ "name": "metadata",
320
+ "namespace": "bee",
321
+ "compact": false,
322
+ "flagsPosition": -1,
323
+ "fields": [
324
+ {
325
+ "name": "cores",
326
+ "required": true,
327
+ "array": true,
328
+ "type": "@bee/core",
329
+ "version": 1
330
+ }
331
+ ]
332
+ },
333
+ {
334
+ "name": "block-1",
335
+ "namespace": "bee",
336
+ "compact": false,
337
+ "flagsPosition": 3,
338
+ "fields": [
339
+ {
340
+ "name": "type",
341
+ "required": true,
342
+ "type": "uint",
343
+ "version": 1
344
+ },
345
+ {
346
+ "name": "checkpoint",
347
+ "required": true,
348
+ "type": "uint",
349
+ "version": 1
350
+ },
351
+ {
352
+ "name": "batch",
353
+ "required": true,
354
+ "type": "@bee/batch-pointer",
355
+ "version": 1
356
+ },
357
+ {
358
+ "name": "previous",
359
+ "type": "@bee/block-pointer",
360
+ "version": 1
361
+ },
362
+ {
363
+ "name": "metadata",
364
+ "type": "@bee/metadata",
365
+ "version": 1
366
+ },
367
+ {
368
+ "name": "tree",
369
+ "array": true,
370
+ "type": "@bee/tree",
371
+ "version": 1
372
+ },
373
+ {
374
+ "name": "keys",
375
+ "array": true,
376
+ "type": "@bee/key",
377
+ "version": 1
378
+ },
379
+ {
380
+ "name": "values",
381
+ "array": true,
382
+ "type": "buffer",
383
+ "version": 1
384
+ },
385
+ {
386
+ "name": "cohorts",
387
+ "array": true,
388
+ "type": "@bee/cohort",
389
+ "version": 1
390
+ }
391
+ ]
189
392
  }
190
393
  ]
191
394
  }
@@ -1,134 +0,0 @@
1
- const { Readable } = require('streamx')
2
- const b4a = require('b4a')
3
-
4
- module.exports = class KeyValueStream extends Readable {
5
- constructor(tree, options = {}) {
6
- super({ eagerOpen: true })
7
-
8
- this.tree = tree
9
- this.root = null
10
-
11
- this._stack = []
12
- this._activeRequests = options.activeRequests || this.tree.activeRequests
13
- this._limit = options.limit === undefined ? -1 : options.limit
14
- this._reverse = !!options.reverse
15
- this._start = options.gte || options.gt || null
16
- this._end = options.lte || options.lt || null
17
- this._inclusive = !!(this._reverse ? options.lte : options.gte)
18
- this._compare = (this._reverse ? options.gte : options.lte) ? 0 : -1
19
- }
20
-
21
- async _openp() {
22
- if (!this.root) this.root = await this.tree.bootstrap(this._activeRequests)
23
- if (!this.root) return
24
-
25
- if (this._limit === 0) return
26
-
27
- this._stack.push({ node: this.root, offset: 0 })
28
-
29
- if (this._reverse ? !this._end : !this._start) return
30
-
31
- const offset = this._inclusive ? 0 : 1
32
-
33
- while (true) {
34
- const top = this._stack[this._stack.length - 1]
35
- const v = top.node.value
36
- ? this.tree.bump(top.node)
37
- : await this.tree.inflate(top.node, this._activeRequests)
38
-
39
- for (let i = 0; i < v.keys.length; i++) {
40
- const j = this._reverse ? v.keys.length - 1 - i : i
41
-
42
- const c = this._reverse
43
- ? b4a.compare(v.keys[j].key, this._end)
44
- : b4a.compare(this._start, v.keys[j].key)
45
-
46
- if (c < 0) break
47
- top.offset = 2 * i + 1 + (c === 0 ? offset : 1)
48
- }
49
-
50
- const child = (top.offset & 1) === 0
51
- const k = top.offset >> 1
52
-
53
- if (!child || k >= v.children.length) break
54
-
55
- const j = this._reverse ? v.children.length - 1 - k : k
56
-
57
- this._stack.push({
58
- node: v.children[j],
59
- offset: 0
60
- })
61
-
62
- top.offset++
63
- }
64
- }
65
-
66
- async _readp() {
67
- while (this._stack.length && (this._limit === -1 || this._limit > 0)) {
68
- const top = this._stack.pop()
69
- const v = top.node.value
70
- ? this.tree.bump(top.node)
71
- : await this.tree.inflate(top.node, this._activeRequests)
72
-
73
- const offset = top.offset++
74
- const child = (offset & 1) === 0
75
- const k = offset >> 1
76
-
77
- if (child) {
78
- this._stack.push(top)
79
- if (k < v.children.length) {
80
- const j = this._reverse ? v.children.length - 1 - k : k
81
- this._stack.push({ node: v.children[j], offset: 0 })
82
- }
83
- continue
84
- }
85
-
86
- if (k < v.keys.length) {
87
- const j = this._reverse ? v.keys.length - 1 - k : k
88
-
89
- const data = top.node.value.keys[j]
90
-
91
- const c = this._reverse
92
- ? this._start
93
- ? b4a.compare(this._start, data.key)
94
- : -1
95
- : this._end
96
- ? b4a.compare(data.key, this._end)
97
- : -1
98
-
99
- if (c > this._compare) break
100
-
101
- this._stack.push(top)
102
- this.push(this._finalize(data))
103
- if (this._limit !== -1) this._limit--
104
- return
105
- }
106
- }
107
-
108
- this.push(null)
109
- }
110
-
111
- _finalize(kv) {
112
- return kv
113
- }
114
-
115
- async _open(cb) {
116
- try {
117
- await this._openp()
118
- } catch (err) {
119
- cb(err)
120
- return
121
- }
122
- cb(null)
123
- }
124
-
125
- async _read(cb) {
126
- try {
127
- await this._readp()
128
- } catch (err) {
129
- cb(err)
130
- return
131
- }
132
- cb(null)
133
- }
134
- }