@nxtedition/rocksdb 10.2.3 → 10.3.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.
package/binding.cc CHANGED
@@ -1327,7 +1327,6 @@ NAPI_METHOD(iterator_nextv) {
1327
1327
  }
1328
1328
  };
1329
1329
 
1330
- auto status = rocksdb::Status::OK();
1331
1330
  while (true) {
1332
1331
  if (!iterator->first_) {
1333
1332
  iterator->Next();
@@ -1336,9 +1335,8 @@ NAPI_METHOD(iterator_nextv) {
1336
1335
  }
1337
1336
 
1338
1337
  if (!iterator->Valid() || !iterator->Increment()) {
1339
- status = iterator->Status();
1340
1338
  state.finished = true;
1341
- break;
1339
+ return iterator->Status();
1342
1340
  }
1343
1341
 
1344
1342
  if (iterator->keys_ && iterator->values_) {
@@ -1353,13 +1351,10 @@ NAPI_METHOD(iterator_nextv) {
1353
1351
  }
1354
1352
 
1355
1353
  if (bytesRead > iterator->highWaterMarkBytes_ || state.sizes.size() / 2 >= count) {
1356
- status = rocksdb::Status::OK();
1357
1354
  state.finished = false;
1358
- break;
1355
+ return rocksdb::Status::OK();
1359
1356
  }
1360
1357
  }
1361
-
1362
- return status;
1363
1358
  },
1364
1359
  [=](auto& state, auto env, auto& argv) {
1365
1360
  argv.resize(4);
package/index.js CHANGED
@@ -41,6 +41,12 @@ class RocksLevel extends AbstractLevel {
41
41
  this[kPendingClose] = null
42
42
  }
43
43
 
44
+ static async create(...args) {
45
+ const db = new this(...args)
46
+ await db.open()
47
+ return db
48
+ }
49
+
44
50
  get sequence () {
45
51
  return binding.db_get_latest_sequence(this[kContext])
46
52
  }
@@ -158,19 +164,22 @@ class RocksLevel extends AbstractLevel {
158
164
  } else {
159
165
  data ??= Buffer.alloc(0)
160
166
  sizes ??= Buffer.alloc(0)
161
- const val = []
167
+
168
+ const rows = []
162
169
  let offset = 0
163
170
  const sizes32 = new Int32Array(sizes.buffer, sizes.byteOffset, sizes.byteLength / 4)
164
- for (const size of sizes32) {
171
+ for (let n = 0; n < sizes32.length; n++) {
172
+ const size = sizes32[n]
173
+ const encoding = valueEncoding
165
174
  if (size < 0) {
166
- val.push(undefined)
175
+ rows.push(undefined)
167
176
  } else {
168
- if (!valueEncoding || valueEncoding === 'buffer') {
169
- val.push(data.subarray(offset, offset + size))
170
- } else if (valueEncoding === 'slice') {
171
- val.push({ buffer: data, byteOffset: offset, byteLength: size })
177
+ if (!encoding || encoding === 'buffer') {
178
+ rows.push(data.subarray(offset, offset + size))
179
+ } else if (encoding === 'slice') {
180
+ rows.push({ buffer: data, byteOffset: offset, byteLength: size })
172
181
  } else {
173
- val.push(data.toString(valueEncoding, offset, offset + size))
182
+ rows.push(data.toString(encoding, offset, offset + size))
174
183
  }
175
184
  offset += size
176
185
  if (offset & 0x7) {
@@ -178,7 +187,7 @@ class RocksLevel extends AbstractLevel {
178
187
  }
179
188
  }
180
189
  }
181
- callback(null, val)
190
+ callback(null, rows)
182
191
  }
183
192
  this[kUnref]()
184
193
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxtedition/rocksdb",
3
- "version": "10.2.3",
3
+ "version": "10.3.0",
4
4
  "description": "A low-level Node.js RocksDB binding",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
package/util.js CHANGED
@@ -1,14 +1,14 @@
1
1
  'use strict'
2
2
 
3
3
  function handleNextv (err, sizes, buffer, finished, options, callback) {
4
+ const { keyEncoding, valueEncoding } = options ?? {}
5
+
4
6
  if (err) {
5
7
  callback(err)
6
8
  } else {
7
9
  buffer ??= Buffer.alloc(0)
8
10
  sizes ??= Buffer.alloc(0)
9
11
 
10
- const { keyEncoding, valueEncoding } = options ?? {}
11
-
12
12
  const rows = []
13
13
  let offset = 0
14
14
  const sizes32 = new Int32Array(sizes.buffer, sizes.byteOffset, sizes.byteLength / 4)