couchbase 4.2.1 → 4.2.2
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 +1 -0
- package/deps/couchbase-cxx-client/.gitmodules +3 -0
- package/deps/couchbase-cxx-client/.idea/misc.xml +1 -0
- package/deps/couchbase-cxx-client/.idea/vcs.xml +1 -0
- package/deps/couchbase-cxx-client/CMakeLists.txt +11 -1
- package/deps/couchbase-cxx-client/README.md +3 -3
- package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +4 -1
- package/deps/couchbase-cxx-client/cmake/VersionInfo.cmake +13 -1
- package/deps/couchbase-cxx-client/cmake/build_version.hxx.in +1 -0
- package/deps/couchbase-cxx-client/core/cluster.hxx +15 -5
- package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +17 -6
- package/deps/couchbase-cxx-client/core/impl/cluster.cxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/collection_query_index_manager.cxx +93 -0
- package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +11 -0
- package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +119 -0
- package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +108 -0
- package/deps/couchbase-cxx-client/core/impl/get.cxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +76 -0
- package/deps/couchbase-cxx-client/core/impl/query.cxx +5 -7
- package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +168 -0
- package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +15 -1
- package/deps/couchbase-cxx-client/core/logger/configuration.hxx +3 -0
- package/deps/couchbase-cxx-client/core/logger/level.hxx +21 -0
- package/deps/couchbase-cxx-client/core/logger/logger.hxx +4 -6
- package/deps/couchbase-cxx-client/core/meta/CMakeLists.txt +4 -2
- package/deps/couchbase-cxx-client/core/meta/features.hxx +31 -0
- package/deps/couchbase-cxx-client/core/meta/version.cxx +67 -5
- package/deps/couchbase-cxx-client/core/meta/version.hxx +12 -1
- package/deps/couchbase-cxx-client/core/metrics/CMakeLists.txt +4 -1
- package/deps/couchbase-cxx-client/core/metrics/logging_meter.cxx +46 -5
- package/deps/couchbase-cxx-client/core/metrics/logging_meter.hxx +10 -26
- package/deps/couchbase-cxx-client/core/operations/document_get_projected.cxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/document_query.cxx +10 -12
- package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -3
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build.cxx +8 -14
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +2 -1
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +15 -8
- package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +7 -14
- package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +11 -16
- package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +8 -12
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +4 -3
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.cxx +21 -12
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.hxx +3 -2
- package/deps/couchbase-cxx-client/core/origin.hxx +1 -1
- package/deps/couchbase-cxx-client/core/platform/uuid.cc +1 -2
- package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +5 -1
- package/deps/couchbase-cxx-client/core/query_context.hxx +79 -0
- package/deps/couchbase-cxx-client/core/tracing/CMakeLists.txt +3 -1
- package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.cxx +19 -4
- package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.hxx +2 -2
- package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.hxx +10 -4
- package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +52 -63
- package/deps/couchbase-cxx-client/core/transactions/attempt_context.hxx +8 -3
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +163 -126
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +24 -37
- package/deps/couchbase-cxx-client/core/transactions/forward_compat.hxx +4 -4
- package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +51 -13
- package/deps/couchbase-cxx-client/core/transactions/internal/client_record.hxx +26 -1
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +21 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +40 -18
- package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +5 -0
- package/deps/couchbase-cxx-client/core/transactions/result.hxx +26 -0
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +48 -47
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +6 -6
- package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +33 -19
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.hxx +18 -2
- package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +25 -2
- package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +4 -4
- package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +49 -56
- package/deps/couchbase-cxx-client/core/transactions/waitable_op_list.hxx +7 -7
- package/deps/couchbase-cxx-client/core/transactions.hxx +0 -12
- package/deps/couchbase-cxx-client/core/utils/binary.hxx +1 -1
- package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +55 -0
- package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +12 -45
- package/deps/couchbase-cxx-client/couchbase/cluster.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +6 -7
- package/deps/couchbase-cxx-client/couchbase/collection.hxx +8 -0
- package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +218 -0
- package/deps/couchbase-cxx-client/couchbase/configuration_profiles_registry.hxx +3 -0
- package/deps/couchbase-cxx-client/couchbase/create_primary_query_index_options.hxx +166 -0
- package/deps/couchbase-cxx-client/couchbase/create_query_index_options.hxx +172 -0
- package/deps/couchbase-cxx-client/couchbase/drop_primary_query_index_options.hxx +129 -0
- package/deps/couchbase-cxx-client/couchbase/drop_query_index_options.hxx +116 -0
- package/deps/couchbase-cxx-client/couchbase/fmt/cas.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/fmt/query_scan_consistency.hxx +46 -0
- package/deps/couchbase-cxx-client/couchbase/fmt/query_status.hxx +70 -0
- package/deps/couchbase-cxx-client/couchbase/fmt/tls_verify_mode.hxx +46 -0
- package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +100 -0
- package/deps/couchbase-cxx-client/{core → couchbase}/management/query_index.hxx +2 -2
- package/deps/couchbase-cxx-client/couchbase/metrics/meter.hxx +16 -0
- package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +178 -6
- package/deps/couchbase-cxx-client/couchbase/query_options.hxx +1 -18
- package/deps/couchbase-cxx-client/couchbase/scope.hxx +5 -2
- package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +16 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +11 -4
- package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +5 -3
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +16 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +0 -6
- package/deps/couchbase-cxx-client/couchbase/watch_query_indexes_options.hxx +115 -0
- package/deps/couchbase-cxx-client/examples/minimal.cxx +3 -1
- package/deps/couchbase-cxx-client/test/test_integration_crud.cxx +72 -0
- package/deps/couchbase-cxx-client/test/test_integration_management.cxx +727 -310
- package/deps/couchbase-cxx-client/test/test_integration_query.cxx +4 -8
- package/deps/couchbase-cxx-client/test/test_integration_transcoders.cxx +14 -0
- package/deps/couchbase-cxx-client/test/test_transaction_transaction_public_blocking_api.cxx +34 -19
- package/deps/couchbase-cxx-client/test/test_unit_transaction_logging.cxx +66 -22
- package/deps/couchbase-cxx-client/test/test_unit_utils.cxx +51 -0
- package/deps/couchbase-cxx-client/test/tools/tool_kv_loader.cxx +2 -2
- package/deps/couchbase-cxx-client/test/utils/integration_test_guard.cxx +2 -0
- package/deps/couchbase-cxx-client/test/utils/wait_until.cxx +4 -4
- package/deps/couchbase-cxx-client/third_party/docopt/.travis.yml +103 -0
- package/deps/couchbase-cxx-client/third_party/docopt/CMakeLists.txt +129 -0
- package/deps/couchbase-cxx-client/third_party/docopt/LICENSE-Boost-1.0 +23 -0
- package/deps/couchbase-cxx-client/third_party/docopt/LICENSE-MIT +23 -0
- package/deps/couchbase-cxx-client/third_party/docopt/README.rst +479 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt-config.cmake +1 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt.cpp +687 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt.h +98 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt.pc.in +9 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt_private.h +676 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt_util.h +122 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt_value.h +341 -0
- package/deps/couchbase-cxx-client/third_party/docopt/examples/naval_fate.cpp +36 -0
- package/deps/couchbase-cxx-client/third_party/docopt/main.cpp +16 -0
- package/deps/couchbase-cxx-client/third_party/docopt/run_testcase.cpp +40 -0
- package/deps/couchbase-cxx-client/third_party/docopt/run_tests.py +72 -0
- package/deps/couchbase-cxx-client/third_party/docopt/testcases.docopt +957 -0
- package/deps/couchbase-cxx-client/tools/CMakeLists.txt +14 -0
- package/deps/couchbase-cxx-client/tools/cbc.cxx +65 -0
- package/deps/couchbase-cxx-client/tools/command.hxx +31 -0
- package/deps/couchbase-cxx-client/tools/command_registry.cxx +43 -0
- package/deps/couchbase-cxx-client/tools/command_registry.hxx +39 -0
- package/deps/couchbase-cxx-client/tools/get.cxx +267 -0
- package/deps/couchbase-cxx-client/tools/get.hxx +26 -0
- package/deps/couchbase-cxx-client/tools/query.cxx +441 -0
- package/deps/couchbase-cxx-client/tools/query.hxx +26 -0
- package/deps/couchbase-cxx-client/tools/utils.cxx +418 -0
- package/deps/couchbase-cxx-client/tools/utils.hxx +150 -0
- package/deps/couchbase-cxx-client/tools/version.cxx +82 -0
- package/deps/couchbase-cxx-client/tools/version.hxx +26 -0
- package/dist/authenticators.d.ts +2 -2
- package/dist/authenticators.js +1 -2
- package/dist/binding.d.ts +32 -16
- package/dist/cluster.js +14 -7
- package/dist/collection.d.ts +6 -0
- package/dist/collection.js +8 -0
- package/dist/queryexecutor.js +1 -1
- package/dist/queryindexmanager.d.ts +100 -4
- package/dist/queryindexmanager.js +344 -118
- package/dist/transactions.js +0 -2
- package/package.json +1 -1
- package/src/connection.cpp +2 -0
- package/src/connection.hpp +1 -0
- package/src/connection_autogen.cpp +16 -0
- package/src/jstocbpp_autogen.hpp +93 -23
- package/src/jstocbpp_basic.hpp +24 -0
- package/src/jstocbpp_transactions.hpp +0 -8
- package/tools/gen-bindings-js.js +1 -0
- package/tools/gen-bindings-json.py +4 -2
- package/deps/couchbase-cxx-client/core/transactions/logging.cxx +0 -107
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QueryIndexManager = exports.QueryIndex = void 0;
|
|
3
|
+
exports.QueryIndexManager = exports.CollectionQueryIndexManager = exports.QueryIndex = void 0;
|
|
4
4
|
const bindingutilities_1 = require("./bindingutilities");
|
|
5
5
|
const errors_1 = require("./errors");
|
|
6
|
-
const httpexecutor_1 = require("./httpexecutor");
|
|
7
6
|
const utilities_1 = require("./utilities");
|
|
8
7
|
/**
|
|
9
8
|
* Contains a specific index configuration for the query service.
|
|
@@ -29,22 +28,23 @@ class QueryIndex {
|
|
|
29
28
|
}
|
|
30
29
|
exports.QueryIndex = QueryIndex;
|
|
31
30
|
/**
|
|
32
|
-
*
|
|
33
|
-
* query indexes on the cluster.
|
|
34
|
-
*
|
|
35
|
-
* @category Management
|
|
31
|
+
* @internal
|
|
36
32
|
*/
|
|
37
|
-
class
|
|
33
|
+
class InternalQueryIndexManager {
|
|
38
34
|
/**
|
|
39
35
|
* @internal
|
|
40
36
|
*/
|
|
41
37
|
constructor(cluster) {
|
|
42
38
|
this._cluster = cluster;
|
|
39
|
+
this._queryContext = {
|
|
40
|
+
bucket_name: '',
|
|
41
|
+
scope_name: '',
|
|
42
|
+
};
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
async
|
|
44
|
+
/**
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
async createIndex(bucketName, isPrimary, options, callback) {
|
|
48
48
|
const timeout = options.timeout || this._cluster.managementTimeout;
|
|
49
49
|
return utilities_1.PromiseHelper.wrap((wrapCallback) => {
|
|
50
50
|
this._cluster.conn.managementQueryIndexCreate({
|
|
@@ -53,6 +53,7 @@ class QueryIndexManager {
|
|
|
53
53
|
collection_name: options.collectionName || '',
|
|
54
54
|
index_name: options.name || '',
|
|
55
55
|
fields: options.fields || [],
|
|
56
|
+
query_ctx: options.queryContext || this._queryContext,
|
|
56
57
|
is_primary: isPrimary,
|
|
57
58
|
ignore_if_exists: options.ignoreIfExists || false,
|
|
58
59
|
deferred: options.deferred,
|
|
@@ -68,6 +69,322 @@ class QueryIndexManager {
|
|
|
68
69
|
});
|
|
69
70
|
}, callback);
|
|
70
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
async dropIndex(bucketName, isPrimary, options, callback) {
|
|
76
|
+
const timeout = options.timeout || this._cluster.managementTimeout;
|
|
77
|
+
// BUG(JSCBC-1066): We need to use a normal drop index for named primary indexes.
|
|
78
|
+
if (options.name) {
|
|
79
|
+
isPrimary = false;
|
|
80
|
+
}
|
|
81
|
+
return utilities_1.PromiseHelper.wrap((wrapCallback) => {
|
|
82
|
+
this._cluster.conn.managementQueryIndexDrop({
|
|
83
|
+
bucket_name: bucketName,
|
|
84
|
+
scope_name: options.scopeName || '',
|
|
85
|
+
collection_name: options.collectionName || '',
|
|
86
|
+
index_name: options.name || '',
|
|
87
|
+
query_ctx: options.queryContext || this._queryContext,
|
|
88
|
+
is_primary: isPrimary,
|
|
89
|
+
ignore_if_does_not_exist: options.ignoreIfNotExists || false,
|
|
90
|
+
timeout: timeout,
|
|
91
|
+
}, (cppErr) => {
|
|
92
|
+
const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
|
|
93
|
+
if (err) {
|
|
94
|
+
return wrapCallback(err, null);
|
|
95
|
+
}
|
|
96
|
+
wrapCallback(err);
|
|
97
|
+
});
|
|
98
|
+
}, callback);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* @internal
|
|
102
|
+
*/
|
|
103
|
+
async getAllIndexes(bucketName, options, callback) {
|
|
104
|
+
const timeout = options.timeout || this._cluster.managementTimeout;
|
|
105
|
+
return utilities_1.PromiseHelper.wrap((wrapCallback) => {
|
|
106
|
+
this._cluster.conn.managementQueryIndexGetAll({
|
|
107
|
+
bucket_name: bucketName,
|
|
108
|
+
scope_name: options.scopeName || '',
|
|
109
|
+
collection_name: options.collectionName || '',
|
|
110
|
+
query_ctx: options.queryContext || this._queryContext,
|
|
111
|
+
timeout: timeout,
|
|
112
|
+
}, (cppErr, resp) => {
|
|
113
|
+
const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
|
|
114
|
+
if (err) {
|
|
115
|
+
return wrapCallback(err, null);
|
|
116
|
+
}
|
|
117
|
+
const indexes = resp.indexes.map((row) => new QueryIndex({
|
|
118
|
+
isPrimary: row.is_primary,
|
|
119
|
+
name: row.name,
|
|
120
|
+
state: row.state,
|
|
121
|
+
type: row.type,
|
|
122
|
+
indexKey: row.index_key,
|
|
123
|
+
partition: row.partition,
|
|
124
|
+
condition: row.condition,
|
|
125
|
+
bucketName: row.bucket_name,
|
|
126
|
+
scopeName: row.scope_name,
|
|
127
|
+
collectionName: row.collection_name,
|
|
128
|
+
}));
|
|
129
|
+
wrapCallback(null, indexes);
|
|
130
|
+
});
|
|
131
|
+
}, callback);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
async buildDeferredIndexes(bucketName, options, callback) {
|
|
137
|
+
const timeout = options.timeout || this._cluster.managementTimeout;
|
|
138
|
+
return utilities_1.PromiseHelper.wrap((wrapCallback) => {
|
|
139
|
+
this._cluster.conn.managementQueryIndexBuildDeferred({
|
|
140
|
+
bucket_name: bucketName,
|
|
141
|
+
scope_name: options.scopeName || '',
|
|
142
|
+
collection_name: options.collectionName || '',
|
|
143
|
+
query_ctx: options.queryContext || this._queryContext,
|
|
144
|
+
timeout: timeout,
|
|
145
|
+
}, (cppErr) => {
|
|
146
|
+
const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
|
|
147
|
+
if (err) {
|
|
148
|
+
return wrapCallback(err, null);
|
|
149
|
+
}
|
|
150
|
+
wrapCallback(null, null);
|
|
151
|
+
});
|
|
152
|
+
}, callback);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* @internal
|
|
156
|
+
*/
|
|
157
|
+
async watchIndexes(bucketName, indexNames, timeout, options, callback) {
|
|
158
|
+
if (options.watchPrimary) {
|
|
159
|
+
indexNames = [...indexNames, '#primary'];
|
|
160
|
+
}
|
|
161
|
+
const timer = new utilities_1.CompoundTimeout(timeout);
|
|
162
|
+
return utilities_1.PromiseHelper.wrapAsync(async () => {
|
|
163
|
+
let curInterval = 50;
|
|
164
|
+
for (;;) {
|
|
165
|
+
// Get all the indexes that are currently registered
|
|
166
|
+
const foundIdxs = await this.getAllIndexes(bucketName, {
|
|
167
|
+
timeout: timer.left(),
|
|
168
|
+
});
|
|
169
|
+
const foundIndexNames = foundIdxs.map((idx) => idx.name);
|
|
170
|
+
const onlineIdxs = foundIdxs.filter((idx) => idx.state === 'online');
|
|
171
|
+
const onlineIdxNames = onlineIdxs.map((idx) => idx.name);
|
|
172
|
+
// Check if all the indexes we want are online
|
|
173
|
+
let allOnline = true;
|
|
174
|
+
indexNames.forEach((indexName) => {
|
|
175
|
+
if (!foundIndexNames.includes(indexName)) {
|
|
176
|
+
throw new errors_1.IndexNotFoundError(new Error(`Cannot find index with name ${indexName}`));
|
|
177
|
+
}
|
|
178
|
+
allOnline = allOnline && onlineIdxNames.indexOf(indexName) !== -1;
|
|
179
|
+
});
|
|
180
|
+
// If all the indexes are online, we've succeeded
|
|
181
|
+
if (allOnline) {
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
// Add 500 to our interval to a max of 1000
|
|
185
|
+
curInterval = Math.min(1000, curInterval + 500);
|
|
186
|
+
// Make sure we don't go past our user-specified duration
|
|
187
|
+
const userTimeLeft = timer.left();
|
|
188
|
+
if (userTimeLeft !== undefined) {
|
|
189
|
+
curInterval = Math.min(curInterval, userTimeLeft);
|
|
190
|
+
}
|
|
191
|
+
if (curInterval <= 0) {
|
|
192
|
+
throw new errors_1.CouchbaseError('Failed to find all indexes online within the alloted time.');
|
|
193
|
+
}
|
|
194
|
+
// Wait until curInterval expires
|
|
195
|
+
await new Promise((resolve) => setTimeout(() => resolve(true), curInterval));
|
|
196
|
+
}
|
|
197
|
+
}, callback);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* CollectionQueryIndexManager provides an interface for managing the
|
|
202
|
+
* query indexes on the collection.
|
|
203
|
+
*
|
|
204
|
+
* @category Management
|
|
205
|
+
*/
|
|
206
|
+
class CollectionQueryIndexManager {
|
|
207
|
+
/**
|
|
208
|
+
* @internal
|
|
209
|
+
*/
|
|
210
|
+
constructor(collection) {
|
|
211
|
+
this._bucketName = collection.scope.bucket.name;
|
|
212
|
+
this._collectionName = collection.name;
|
|
213
|
+
this._scopeName = collection.scope.name;
|
|
214
|
+
this._manager = new InternalQueryIndexManager(collection.cluster);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Creates a new query index.
|
|
218
|
+
*
|
|
219
|
+
* @param indexName The name of the new index.
|
|
220
|
+
* @param fields The fields which this index should cover.
|
|
221
|
+
* @param options Optional parameters for this operation.
|
|
222
|
+
* @param callback A node-style callback to be invoked after execution.
|
|
223
|
+
*/
|
|
224
|
+
async createIndex(indexName, fields, options, callback) {
|
|
225
|
+
if (options instanceof Function) {
|
|
226
|
+
callback = arguments[2];
|
|
227
|
+
options = undefined;
|
|
228
|
+
}
|
|
229
|
+
if (!options) {
|
|
230
|
+
options = {};
|
|
231
|
+
}
|
|
232
|
+
return this._manager.createIndex(this._bucketName, false, {
|
|
233
|
+
collectionName: this._collectionName,
|
|
234
|
+
scopeName: this._scopeName,
|
|
235
|
+
name: indexName,
|
|
236
|
+
fields: fields,
|
|
237
|
+
ignoreIfExists: options.ignoreIfExists,
|
|
238
|
+
numReplicas: options.numReplicas,
|
|
239
|
+
deferred: options.deferred,
|
|
240
|
+
timeout: options.timeout,
|
|
241
|
+
}, callback);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Creates a new primary query index.
|
|
245
|
+
*
|
|
246
|
+
* @param options Optional parameters for this operation.
|
|
247
|
+
* @param callback A node-style callback to be invoked after execution.
|
|
248
|
+
*/
|
|
249
|
+
async createPrimaryIndex(options, callback) {
|
|
250
|
+
if (options instanceof Function) {
|
|
251
|
+
callback = arguments[0];
|
|
252
|
+
options = undefined;
|
|
253
|
+
}
|
|
254
|
+
if (!options) {
|
|
255
|
+
options = {};
|
|
256
|
+
}
|
|
257
|
+
return this._manager.createIndex(this._bucketName, true, {
|
|
258
|
+
collectionName: this._collectionName,
|
|
259
|
+
scopeName: this._scopeName,
|
|
260
|
+
name: options.name,
|
|
261
|
+
ignoreIfExists: options.ignoreIfExists,
|
|
262
|
+
deferred: options.deferred,
|
|
263
|
+
timeout: options.timeout,
|
|
264
|
+
}, callback);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Drops an existing query index.
|
|
268
|
+
*
|
|
269
|
+
* @param indexName The name of the index to drop.
|
|
270
|
+
* @param options Optional parameters for this operation.
|
|
271
|
+
* @param callback A node-style callback to be invoked after execution.
|
|
272
|
+
*/
|
|
273
|
+
async dropIndex(indexName, options, callback) {
|
|
274
|
+
if (options instanceof Function) {
|
|
275
|
+
callback = arguments[1];
|
|
276
|
+
options = undefined;
|
|
277
|
+
}
|
|
278
|
+
if (!options) {
|
|
279
|
+
options = {};
|
|
280
|
+
}
|
|
281
|
+
return this._manager.dropIndex(this._bucketName, false, {
|
|
282
|
+
collectionName: this._collectionName,
|
|
283
|
+
scopeName: this._scopeName,
|
|
284
|
+
name: indexName,
|
|
285
|
+
ignoreIfNotExists: options.ignoreIfNotExists,
|
|
286
|
+
timeout: options.timeout,
|
|
287
|
+
}, callback);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Drops an existing primary index.
|
|
291
|
+
*
|
|
292
|
+
* @param options Optional parameters for this operation.
|
|
293
|
+
* @param callback A node-style callback to be invoked after execution.
|
|
294
|
+
*/
|
|
295
|
+
async dropPrimaryIndex(options, callback) {
|
|
296
|
+
if (options instanceof Function) {
|
|
297
|
+
callback = arguments[0];
|
|
298
|
+
options = undefined;
|
|
299
|
+
}
|
|
300
|
+
if (!options) {
|
|
301
|
+
options = {};
|
|
302
|
+
}
|
|
303
|
+
return this._manager.dropIndex(this._bucketName, true, {
|
|
304
|
+
collectionName: this._collectionName,
|
|
305
|
+
scopeName: this._scopeName,
|
|
306
|
+
name: options.name,
|
|
307
|
+
ignoreIfNotExists: options.ignoreIfNotExists,
|
|
308
|
+
timeout: options.timeout,
|
|
309
|
+
}, callback);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Returns a list of indexes for a specific bucket.
|
|
313
|
+
*
|
|
314
|
+
* @param options Optional parameters for this operation.
|
|
315
|
+
* @param callback A node-style callback to be invoked after execution.
|
|
316
|
+
*/
|
|
317
|
+
async getAllIndexes(options, callback) {
|
|
318
|
+
if (options instanceof Function) {
|
|
319
|
+
callback = arguments[0];
|
|
320
|
+
options = undefined;
|
|
321
|
+
}
|
|
322
|
+
if (!options) {
|
|
323
|
+
options = {};
|
|
324
|
+
}
|
|
325
|
+
return this._manager.getAllIndexes(this._bucketName, {
|
|
326
|
+
collectionName: this._collectionName,
|
|
327
|
+
scopeName: this._scopeName,
|
|
328
|
+
timeout: options.timeout,
|
|
329
|
+
}, callback);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Starts building any indexes which were previously created with deferred=true.
|
|
333
|
+
*
|
|
334
|
+
* @param options Optional parameters for this operation.
|
|
335
|
+
* @param callback A node-style callback to be invoked after execution.
|
|
336
|
+
*/
|
|
337
|
+
async buildDeferredIndexes(options, callback) {
|
|
338
|
+
if (options instanceof Function) {
|
|
339
|
+
callback = arguments[0];
|
|
340
|
+
options = undefined;
|
|
341
|
+
}
|
|
342
|
+
if (!options) {
|
|
343
|
+
options = {};
|
|
344
|
+
}
|
|
345
|
+
return this._manager.buildDeferredIndexes(this._bucketName, {
|
|
346
|
+
collectionName: this._collectionName,
|
|
347
|
+
scopeName: this._scopeName,
|
|
348
|
+
timeout: options.timeout,
|
|
349
|
+
}, callback);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Waits for a number of indexes to finish creation and be ready to use.
|
|
353
|
+
*
|
|
354
|
+
* @param indexNames The names of the indexes to watch.
|
|
355
|
+
* @param timeout The maximum time to wait for the index, expressed in milliseconds.
|
|
356
|
+
* @param options Optional parameters for this operation.
|
|
357
|
+
* @param callback A node-style callback to be invoked after execution.
|
|
358
|
+
*/
|
|
359
|
+
async watchIndexes(indexNames, timeout, options, callback) {
|
|
360
|
+
if (options instanceof Function) {
|
|
361
|
+
callback = arguments[2];
|
|
362
|
+
options = undefined;
|
|
363
|
+
}
|
|
364
|
+
if (!options) {
|
|
365
|
+
options = {};
|
|
366
|
+
}
|
|
367
|
+
return this._manager.watchIndexes(this._bucketName, indexNames, timeout, {
|
|
368
|
+
collectionName: this._collectionName,
|
|
369
|
+
scopeName: this._scopeName,
|
|
370
|
+
watchPrimary: options.watchPrimary,
|
|
371
|
+
}, callback);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
exports.CollectionQueryIndexManager = CollectionQueryIndexManager;
|
|
375
|
+
/**
|
|
376
|
+
* QueryIndexManager provides an interface for managing the
|
|
377
|
+
* query indexes on the cluster.
|
|
378
|
+
*
|
|
379
|
+
* @category Management
|
|
380
|
+
*/
|
|
381
|
+
class QueryIndexManager {
|
|
382
|
+
/**
|
|
383
|
+
* @internal
|
|
384
|
+
*/
|
|
385
|
+
constructor(cluster) {
|
|
386
|
+
this._manager = new InternalQueryIndexManager(cluster);
|
|
387
|
+
}
|
|
71
388
|
/**
|
|
72
389
|
* Creates a new query index.
|
|
73
390
|
*
|
|
@@ -85,7 +402,7 @@ class QueryIndexManager {
|
|
|
85
402
|
if (!options) {
|
|
86
403
|
options = {};
|
|
87
404
|
}
|
|
88
|
-
return this.
|
|
405
|
+
return this._manager.createIndex(bucketName, false, {
|
|
89
406
|
collectionName: options.collectionName,
|
|
90
407
|
scopeName: options.scopeName,
|
|
91
408
|
name: indexName,
|
|
@@ -111,7 +428,7 @@ class QueryIndexManager {
|
|
|
111
428
|
if (!options) {
|
|
112
429
|
options = {};
|
|
113
430
|
}
|
|
114
|
-
return this.
|
|
431
|
+
return this._manager.createIndex(bucketName, true, {
|
|
115
432
|
collectionName: options.collectionName,
|
|
116
433
|
scopeName: options.scopeName,
|
|
117
434
|
name: options.name,
|
|
@@ -120,30 +437,6 @@ class QueryIndexManager {
|
|
|
120
437
|
timeout: options.timeout,
|
|
121
438
|
}, callback);
|
|
122
439
|
}
|
|
123
|
-
async _dropIndex(bucketName, isPrimary, options, callback) {
|
|
124
|
-
const timeout = options.timeout || this._cluster.managementTimeout;
|
|
125
|
-
// BUG(JSCBC-1066): We need to use a normal drop index for named primary indexes.
|
|
126
|
-
if (options.name) {
|
|
127
|
-
isPrimary = false;
|
|
128
|
-
}
|
|
129
|
-
return utilities_1.PromiseHelper.wrap((wrapCallback) => {
|
|
130
|
-
this._cluster.conn.managementQueryIndexDrop({
|
|
131
|
-
bucket_name: bucketName,
|
|
132
|
-
scope_name: options.scopeName || '',
|
|
133
|
-
collection_name: options.collectionName || '',
|
|
134
|
-
index_name: options.name || '',
|
|
135
|
-
is_primary: isPrimary,
|
|
136
|
-
ignore_if_does_not_exist: options.ignoreIfNotExists || false,
|
|
137
|
-
timeout: timeout,
|
|
138
|
-
}, (cppErr) => {
|
|
139
|
-
const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
|
|
140
|
-
if (err) {
|
|
141
|
-
return wrapCallback(err, null);
|
|
142
|
-
}
|
|
143
|
-
wrapCallback(err);
|
|
144
|
-
});
|
|
145
|
-
}, callback);
|
|
146
|
-
}
|
|
147
440
|
/**
|
|
148
441
|
* Drops an existing query index.
|
|
149
442
|
*
|
|
@@ -160,7 +453,7 @@ class QueryIndexManager {
|
|
|
160
453
|
if (!options) {
|
|
161
454
|
options = {};
|
|
162
455
|
}
|
|
163
|
-
return this.
|
|
456
|
+
return this._manager.dropIndex(bucketName, false, {
|
|
164
457
|
collectionName: options.collectionName,
|
|
165
458
|
scopeName: options.scopeName,
|
|
166
459
|
name: indexName,
|
|
@@ -183,7 +476,7 @@ class QueryIndexManager {
|
|
|
183
476
|
if (!options) {
|
|
184
477
|
options = {};
|
|
185
478
|
}
|
|
186
|
-
return this.
|
|
479
|
+
return this._manager.dropIndex(bucketName, true, {
|
|
187
480
|
collectionName: options.collectionName,
|
|
188
481
|
scopeName: options.scopeName,
|
|
189
482
|
name: options.name,
|
|
@@ -206,34 +499,10 @@ class QueryIndexManager {
|
|
|
206
499
|
if (!options) {
|
|
207
500
|
options = {};
|
|
208
501
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
this._cluster.conn.managementQueryIndexGetAll({
|
|
214
|
-
bucket_name: bucketName,
|
|
215
|
-
scope_name: scopeName,
|
|
216
|
-
collection_name: collectionName,
|
|
217
|
-
timeout,
|
|
218
|
-
}, (cppErr, resp) => {
|
|
219
|
-
const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
|
|
220
|
-
if (err) {
|
|
221
|
-
return wrapCallback(err, null);
|
|
222
|
-
}
|
|
223
|
-
const indexes = resp.indexes.map((row) => new QueryIndex({
|
|
224
|
-
isPrimary: row.is_primary,
|
|
225
|
-
name: row.name,
|
|
226
|
-
state: row.state,
|
|
227
|
-
type: row.type,
|
|
228
|
-
indexKey: row.index_key,
|
|
229
|
-
partition: row.partition,
|
|
230
|
-
condition: row.condition,
|
|
231
|
-
bucketName: row.bucket_name,
|
|
232
|
-
scopeName: row.scope_name,
|
|
233
|
-
collectionName: row.collection_name,
|
|
234
|
-
}));
|
|
235
|
-
wrapCallback(null, indexes);
|
|
236
|
-
});
|
|
502
|
+
return this._manager.getAllIndexes(bucketName, {
|
|
503
|
+
collectionName: options.collectionName,
|
|
504
|
+
scopeName: options.scopeName,
|
|
505
|
+
timeout: options.timeout,
|
|
237
506
|
}, callback);
|
|
238
507
|
}
|
|
239
508
|
/**
|
|
@@ -251,22 +520,10 @@ class QueryIndexManager {
|
|
|
251
520
|
if (!options) {
|
|
252
521
|
options = {};
|
|
253
522
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
this._cluster.conn.managementQueryIndexBuildDeferred({
|
|
259
|
-
bucket_name: bucketName,
|
|
260
|
-
scope_name: scopeName,
|
|
261
|
-
collection_name: collectionName,
|
|
262
|
-
timeout: timeout,
|
|
263
|
-
}, (cppErr) => {
|
|
264
|
-
const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
|
|
265
|
-
if (err) {
|
|
266
|
-
return wrapCallback(err, null);
|
|
267
|
-
}
|
|
268
|
-
wrapCallback(null, null);
|
|
269
|
-
});
|
|
523
|
+
return this._manager.buildDeferredIndexes(bucketName, {
|
|
524
|
+
collectionName: options.collectionName,
|
|
525
|
+
scopeName: options.scopeName,
|
|
526
|
+
timeout: options.timeout,
|
|
270
527
|
}, callback);
|
|
271
528
|
}
|
|
272
529
|
/**
|
|
@@ -286,41 +543,10 @@ class QueryIndexManager {
|
|
|
286
543
|
if (!options) {
|
|
287
544
|
options = {};
|
|
288
545
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
return utilities_1.PromiseHelper.wrapAsync(async () => {
|
|
294
|
-
let curInterval = 50;
|
|
295
|
-
for (;;) {
|
|
296
|
-
// Get all the indexes that are currently registered
|
|
297
|
-
const foundIdxs = await this.getAllIndexes(bucketName, {
|
|
298
|
-
timeout: timer.left(),
|
|
299
|
-
});
|
|
300
|
-
const onlineIdxs = foundIdxs.filter((idx) => idx.state === 'online');
|
|
301
|
-
const onlineIdxNames = onlineIdxs.map((idx) => idx.name);
|
|
302
|
-
// Check if all the indexes we want are online
|
|
303
|
-
let allOnline = true;
|
|
304
|
-
indexNames.forEach((indexName) => {
|
|
305
|
-
allOnline = allOnline && onlineIdxNames.indexOf(indexName) !== -1;
|
|
306
|
-
});
|
|
307
|
-
// If all the indexes are online, we've succeeded
|
|
308
|
-
if (allOnline) {
|
|
309
|
-
break;
|
|
310
|
-
}
|
|
311
|
-
// Add 500 to our interval to a max of 1000
|
|
312
|
-
curInterval = Math.min(1000, curInterval + 500);
|
|
313
|
-
// Make sure we don't go past our user-specified duration
|
|
314
|
-
const userTimeLeft = timer.left();
|
|
315
|
-
if (userTimeLeft !== undefined) {
|
|
316
|
-
curInterval = Math.min(curInterval, userTimeLeft);
|
|
317
|
-
}
|
|
318
|
-
if (curInterval <= 0) {
|
|
319
|
-
throw new errors_1.CouchbaseError('Failed to find all indexes online within the alloted time.');
|
|
320
|
-
}
|
|
321
|
-
// Wait until curInterval expires
|
|
322
|
-
await new Promise((resolve) => setTimeout(() => resolve(true), curInterval));
|
|
323
|
-
}
|
|
546
|
+
return this._manager.watchIndexes(bucketName, indexNames, timeout, {
|
|
547
|
+
collectionName: options.collectionName,
|
|
548
|
+
scopeName: options.scopeName,
|
|
549
|
+
watchPrimary: options.watchPrimary,
|
|
324
550
|
}, callback);
|
|
325
551
|
}
|
|
326
552
|
}
|
package/dist/transactions.js
CHANGED
|
@@ -237,8 +237,6 @@ class TransactionAttemptContext {
|
|
|
237
237
|
readonly: options.readOnly || false,
|
|
238
238
|
profile: (0, bindingutilities_1.queryProfileToCpp)(options.profile),
|
|
239
239
|
metrics: options.metrics || false,
|
|
240
|
-
bucket_name: options.scope ? options.scope.bucket.name : undefined,
|
|
241
|
-
scope_name: options.scope ? options.scope.name : undefined,
|
|
242
240
|
raw: options.raw
|
|
243
241
|
? Object.fromEntries(Object.entries(options.raw)
|
|
244
242
|
.filter(([, v]) => v !== undefined)
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bugs":{"url":"http://www.couchbase.com/issues/browse/JSCBC"},"description":"The official Couchbase Node.js Client Library.","engines":{"node":">=12.0.0"},"homepage":"http://www.couchbase.com/communities/nodejs","keywords":["couchbase","libcouchbase","memcached","nosql","json","document"],"main":"dist/couchbase.js","types":"dist/couchbase.d.ts","license":"Apache-2.0","name":"couchbase","dependencies":{"bindings":"^1.5.0","cmake-js":"^6.3.2","node-addon-api":"^5.0.0","prebuild-install":"^7.1.1"},"devDependencies":{"@trivago/prettier-plugin-sort-imports":"^3.3.0","@tsconfig/node12":"^1.0.11","@types/bindings":"^1.5.1","@types/debug":"^4.1.7","@types/node":"^18.6.3","@typescript-eslint/eslint-plugin":"^5.32.0","@typescript-eslint/parser":"^5.32.0","chai":"^4.3.6","eslint":"^8.21.0","eslint-config-prettier":"^8.5.0","eslint-plugin-jsdoc":"^39.3.4","eslint-plugin-mocha":"^10.1.0","eslint-plugin-node":"^11.1.0","expose-gc":"^1.0.0","mocha":"^10.0.0","npm-check-updates":"^16.0.5","nyc":"^15.1.0","prebuild":"^11.0.4","prettier":"^2.7.1","segfault-handler":"^1.3.0","semver":"^7.3.7","ts-mocha":"^10.0.0","ts-node":"^10.9.1","typedoc":"^0.23.10","typescript":"^4.7.4","uuid":"^8.3.2"},"repository":{"type":"git","url":"http://github.com/couchbase/couchnode.git"},"version":"4.2.
|
|
1
|
+
{"bugs":{"url":"http://www.couchbase.com/issues/browse/JSCBC"},"description":"The official Couchbase Node.js Client Library.","engines":{"node":">=12.0.0"},"homepage":"http://www.couchbase.com/communities/nodejs","keywords":["couchbase","libcouchbase","memcached","nosql","json","document"],"main":"dist/couchbase.js","types":"dist/couchbase.d.ts","license":"Apache-2.0","name":"couchbase","dependencies":{"bindings":"^1.5.0","cmake-js":"^6.3.2","node-addon-api":"^5.0.0","prebuild-install":"^7.1.1"},"devDependencies":{"@trivago/prettier-plugin-sort-imports":"^3.3.0","@tsconfig/node12":"^1.0.11","@types/bindings":"^1.5.1","@types/debug":"^4.1.7","@types/node":"^18.6.3","@typescript-eslint/eslint-plugin":"^5.32.0","@typescript-eslint/parser":"^5.32.0","chai":"^4.3.6","eslint":"^8.21.0","eslint-config-prettier":"^8.5.0","eslint-plugin-jsdoc":"^39.3.4","eslint-plugin-mocha":"^10.1.0","eslint-plugin-node":"^11.1.0","expose-gc":"^1.0.0","mocha":"^10.0.0","npm-check-updates":"^16.0.5","nyc":"^15.1.0","prebuild":"^11.0.4","prettier":"^2.7.1","segfault-handler":"^1.3.0","semver":"^7.3.7","ts-mocha":"^10.0.0","ts-node":"^10.9.1","typedoc":"^0.23.10","typescript":"^4.7.4","uuid":"^8.3.2"},"repository":{"type":"git","url":"http://github.com/couchbase/couchnode.git"},"version":"4.2.2","config":{"native":false},"scripts":{"install":"prebuild-install -r napi || cmake-js compile","build":"cmake-js build && tsc","rebuild":"cmake-js rebuild && tsc","prebuild":"prebuild --backend cmake-js --verbose --strip","prepare":"tsc","build-docs":"typedoc","test":"ts-mocha test/*.test.*","test-fast":"ts-mocha test/*.test.* -ig '(slow)'","cover":"nyc ts-mocha test/*.test.*","cover-fast":"nyc ts-mocha test/*.test.* -ig '(slow)'","lint":"eslint ./lib/ ./test/","check-deps":"ncu"},"binary":{"napi_versions":[6]}}
|
package/src/connection.cpp
CHANGED
|
@@ -127,6 +127,8 @@ void Connection::Init(Napi::Env env, Napi::Object exports)
|
|
|
127
127
|
"managementAnalyticsLinkConnect"),
|
|
128
128
|
InstanceMethod<&Connection::jsManagementCollectionsManifestGet>(
|
|
129
129
|
"managementCollectionsManifestGet"),
|
|
130
|
+
InstanceMethod<&Connection::jsManagementChangePassword>(
|
|
131
|
+
"managementChangePassword"),
|
|
130
132
|
InstanceMethod<
|
|
131
133
|
&Connection::jsManagementClusterDeveloperPreviewEnable>(
|
|
132
134
|
"managementClusterDeveloperPreviewEnable"),
|
package/src/connection.hpp
CHANGED
|
@@ -139,6 +139,7 @@ public:
|
|
|
139
139
|
jsManagementAnalyticsLinkConnect(const Napi::CallbackInfo &info);
|
|
140
140
|
Napi::Value
|
|
141
141
|
jsManagementCollectionsManifestGet(const Napi::CallbackInfo &info);
|
|
142
|
+
Napi::Value jsManagementChangePassword(const Napi::CallbackInfo &info);
|
|
142
143
|
Napi::Value
|
|
143
144
|
jsManagementClusterDeveloperPreviewEnable(const Napi::CallbackInfo &info);
|
|
144
145
|
Napi::Value jsManagementAnalyticsLinkDrop(const Napi::CallbackInfo &info);
|
|
@@ -769,6 +769,22 @@ Connection::jsManagementCollectionsManifestGet(const Napi::CallbackInfo &info)
|
|
|
769
769
|
return info.Env().Null();
|
|
770
770
|
}
|
|
771
771
|
|
|
772
|
+
Napi::Value
|
|
773
|
+
Connection::jsManagementChangePassword(const Napi::CallbackInfo &info)
|
|
774
|
+
{
|
|
775
|
+
auto optsJsObj = info[0].As<Napi::Object>();
|
|
776
|
+
auto callbackJsFn = info[1].As<Napi::Function>();
|
|
777
|
+
|
|
778
|
+
executeOp(
|
|
779
|
+
"managementChangePassword",
|
|
780
|
+
jsToCbpp<
|
|
781
|
+
couchbase::core::operations::management::change_password_request>(
|
|
782
|
+
optsJsObj),
|
|
783
|
+
callbackJsFn);
|
|
784
|
+
|
|
785
|
+
return info.Env().Null();
|
|
786
|
+
}
|
|
787
|
+
|
|
772
788
|
Napi::Value Connection::jsManagementClusterDeveloperPreviewEnable(
|
|
773
789
|
const Napi::CallbackInfo &info)
|
|
774
790
|
{
|