rocksdb-native 3.5.9 → 3.6.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/CMakeLists.txt CHANGED
@@ -9,14 +9,11 @@ project(rocksdb_native C CXX)
9
9
 
10
10
  bare_target(target)
11
11
 
12
- if(target MATCHES "win32")
13
- add_compile_options(/MT$<$<CONFIG:Debug>:d>)
14
- endif()
15
-
16
- fetch_package("github:holepunchto/librocksdb#4a8e385")
12
+ fetch_package("github:holepunchto/librocksdb#2abcccb")
17
13
 
18
14
  if(TARGET c++)
19
15
  target_link_libraries(rocksdb PUBLIC c++)
16
+ target_link_libraries(rocksdb_facebook PUBLIC c++)
20
17
  endif()
21
18
 
22
19
  add_bare_module(rocksdb_native_bare)
package/binding.c CHANGED
@@ -1007,13 +1007,13 @@ static js_value_t *
1007
1007
  rocksdb_native_iterator_open(js_env_t *env, js_callback_info_t *info) {
1008
1008
  int err;
1009
1009
 
1010
- size_t argc = 13;
1011
- js_value_t *argv[13];
1010
+ size_t argc = 14;
1011
+ js_value_t *argv[14];
1012
1012
 
1013
1013
  err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
1014
1014
  assert(err == 0);
1015
1015
 
1016
- assert(argc == 13);
1016
+ assert(argc == 14);
1017
1017
 
1018
1018
  rocksdb_native_t *db;
1019
1019
  err = js_get_arraybuffer_info(env, argv[0], (void **) &db, NULL);
@@ -1041,36 +1041,38 @@ rocksdb_native_iterator_open(js_env_t *env, js_callback_info_t *info) {
1041
1041
  err = js_get_typedarray_info(env, argv[6], NULL, (void **) &range.lte.data, &range.lte.len, NULL, NULL);
1042
1042
  assert(err == 0);
1043
1043
 
1044
- bool reverse;
1045
- err = js_get_value_bool(env, argv[7], &reverse);
1046
- assert(err == 0);
1047
-
1048
- rocksdb_read_options_t options = {
1044
+ rocksdb_iterator_options_t options = {
1049
1045
  .version = 0,
1050
1046
  };
1051
1047
 
1048
+ err = js_get_value_bool(env, argv[7], &options.reverse);
1049
+ assert(err == 0);
1050
+
1051
+ err = js_get_value_bool(env, argv[8], &options.keys_only);
1052
+ assert(err == 0);
1053
+
1052
1054
  bool has_snapshot;
1053
- err = js_is_arraybuffer(env, argv[8], &has_snapshot);
1055
+ err = js_is_arraybuffer(env, argv[9], &has_snapshot);
1054
1056
  assert(err == 0);
1055
1057
 
1056
1058
  if (has_snapshot) {
1057
- err = js_get_arraybuffer_info(env, argv[8], (void **) &options.snapshot, NULL);
1059
+ err = js_get_arraybuffer_info(env, argv[9], (void **) &options.snapshot, NULL);
1058
1060
  assert(err == 0);
1059
1061
  }
1060
1062
 
1061
- err = js_create_reference(env, argv[9], 1, &req->ctx);
1063
+ err = js_create_reference(env, argv[10], 1, &req->ctx);
1062
1064
  assert(err == 0);
1063
1065
 
1064
- err = js_create_reference(env, argv[10], 1, &req->on_open);
1066
+ err = js_create_reference(env, argv[11], 1, &req->on_open);
1065
1067
  assert(err == 0);
1066
1068
 
1067
- err = js_create_reference(env, argv[11], 1, &req->on_close);
1069
+ err = js_create_reference(env, argv[12], 1, &req->on_close);
1068
1070
  assert(err == 0);
1069
1071
 
1070
- err = js_create_reference(env, argv[12], 1, &req->on_read);
1072
+ err = js_create_reference(env, argv[13], 1, &req->on_read);
1071
1073
  assert(err == 0);
1072
1074
 
1073
- err = rocksdb_iterator_open(&db->handle, &req->handle, column_family->handle, range, reverse, &options, rocksdb_native__on_iterator_open);
1075
+ err = rocksdb_iterator_open(&db->handle, &req->handle, column_family->handle, range, &options, rocksdb_native__on_iterator_open);
1074
1076
  assert(err == 0);
1075
1077
 
1076
1078
  err = js_add_deferred_teardown_callback(env, rocksdb_native__on_iterator_teardown, (void *) req, &req->teardown);
package/index.js CHANGED
@@ -115,6 +115,15 @@ class RocksDB {
115
115
  return new Iterator(this, { ...range, ...opts })
116
116
  }
117
117
 
118
+ async *keys(range, opts) {
119
+ for await (const { key } of this.iterator(range, {
120
+ ...opts,
121
+ values: false
122
+ })) {
123
+ yield key
124
+ }
125
+ }
126
+
118
127
  async peek(range, opts) {
119
128
  for await (const value of this.iterator({ ...range, ...opts, limit: 1 })) {
120
129
  return value
package/lib/iterator.js CHANGED
@@ -12,6 +12,7 @@ module.exports = class RocksDBIterator extends Readable {
12
12
  lt = null,
13
13
  lte = null,
14
14
  reverse = false,
15
+ values = true,
15
16
  limit = Infinity,
16
17
  capacity = 8
17
18
  } = opts
@@ -28,6 +29,7 @@ module.exports = class RocksDBIterator extends Readable {
28
29
  this._lte = lte ? this._encodeKey(lte) : empty
29
30
 
30
31
  this._reverse = reverse
32
+ this._values = values
31
33
  this._limit = limit < 0 ? Infinity : limit
32
34
  this._capacity = capacity
33
35
  this._opened = false
@@ -63,7 +65,7 @@ module.exports = class RocksDBIterator extends Readable {
63
65
  for (let i = 0; i < n; i++) {
64
66
  this.push({
65
67
  key: this._decodeKey(Buffer.from(keys[i])),
66
- value: this._decodeValue(Buffer.from(values[i]))
68
+ value: this._values ? this._decodeValue(Buffer.from(values[i])) : null
67
69
  })
68
70
  }
69
71
 
@@ -126,6 +128,7 @@ module.exports = class RocksDBIterator extends Readable {
126
128
  this._lt,
127
129
  this._lte,
128
130
  this._reverse,
131
+ !this._values, // Keys only
129
132
  this._db._snapshot ? this._db._snapshot._handle : null,
130
133
  this,
131
134
  this._onopen,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rocksdb-native",
3
- "version": "3.5.9",
3
+ "version": "3.6.0",
4
4
  "description": "librocksdb bindings for JavaScript",
5
5
  "exports": {
6
6
  ".": "./index.js",