couchbase 4.4.6-dev.1 → 4.5.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/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +3 -165
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
- package/deps/couchbase-cxx-client/CMakeLists.txt +12 -1
- package/deps/couchbase-cxx-client/README.md +2 -2
- package/deps/couchbase-cxx-client/cmake/Profiler.cmake +15 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_address.cxx +55 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_address.hxx +39 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_meter.cxx +753 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_meter.hxx +198 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_reporter.cxx +895 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_reporter.hxx +59 -0
- package/deps/couchbase-cxx-client/core/bucket.cxx +77 -35
- package/deps/couchbase-cxx-client/core/bucket.hxx +17 -10
- package/deps/couchbase-cxx-client/core/cluster.cxx +54 -16
- package/deps/couchbase-cxx-client/core/cluster_credentials.cxx +27 -0
- package/deps/couchbase-cxx-client/core/cluster_credentials.hxx +36 -0
- package/deps/couchbase-cxx-client/core/cluster_options.hxx +12 -0
- package/deps/couchbase-cxx-client/core/collections_component.cxx +7 -5
- package/deps/couchbase-cxx-client/core/http_component.cxx +6 -0
- package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/cluster.cxx +9 -0
- package/deps/couchbase-cxx-client/core/impl/collection.cxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/error.cxx +1 -0
- package/deps/couchbase-cxx-client/core/impl/logger.cxx +51 -0
- package/deps/couchbase-cxx-client/core/impl/replica_utils.cxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/transaction_get_multi_replicas_from_preferred_server_group_spec.cxx +32 -0
- package/deps/couchbase-cxx-client/core/impl/transaction_get_multi_spec.cxx +30 -0
- package/deps/couchbase-cxx-client/core/impl/transaction_op_error_category.cxx +2 -0
- package/deps/couchbase-cxx-client/core/io/config_tracker.cxx +6 -6
- package/deps/couchbase-cxx-client/core/io/http_command.hxx +35 -11
- package/deps/couchbase-cxx-client/core/io/http_session.cxx +10 -0
- package/deps/couchbase-cxx-client/core/io/http_session.hxx +4 -0
- package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +83 -34
- package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +41 -2
- package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +52 -19
- package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +3 -0
- package/deps/couchbase-cxx-client/core/logger/logger.cxx +46 -0
- package/deps/couchbase-cxx-client/core/logger/logger.hxx +41 -1
- package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +1 -0
- package/deps/couchbase-cxx-client/core/management/bucket_settings_json.hxx +4 -0
- package/deps/couchbase-cxx-client/core/meta/features.hxx +32 -0
- package/deps/couchbase-cxx-client/core/operations/document_analytics.cxx +9 -9
- package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +10 -2
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in.cxx +4 -0
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +14 -2
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +4 -0
- package/deps/couchbase-cxx-client/core/operations/document_mutate_in.cxx +4 -0
- package/deps/couchbase-cxx-client/core/operations/document_mutate_in.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/document_query.cxx +12 -10
- package/deps/couchbase-cxx-client/core/operations/http_noop.cxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_update.cxx +3 -0
- package/deps/couchbase-cxx-client/core/origin.cxx +0 -5
- package/deps/couchbase-cxx-client/core/origin.hxx +2 -11
- package/deps/couchbase-cxx-client/core/platform/random.cc +6 -3
- package/deps/couchbase-cxx-client/core/platform/random.h +2 -2
- package/deps/couchbase-cxx-client/core/protocol/cmd_mutate_in.hxx +9 -0
- package/deps/couchbase-cxx-client/core/timeout_defaults.hxx +4 -0
- package/deps/couchbase-cxx-client/core/topology/configuration.cxx +10 -13
- package/deps/couchbase-cxx-client/core/topology/configuration.hxx +14 -15
- package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +6 -0
- package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.hxx +22 -2
- package/deps/couchbase-cxx-client/core/transactions/attempt_context.hxx +25 -7
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +688 -238
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +91 -12
- package/deps/couchbase-cxx-client/core/transactions/exceptions.cxx +5 -0
- package/deps/couchbase-cxx-client/core/transactions/exceptions.hxx +20 -0
- package/deps/couchbase-cxx-client/core/transactions/exceptions_fmt.hxx +3 -0
- package/deps/couchbase-cxx-client/core/transactions/forward_compat.cxx +71 -6
- package/deps/couchbase-cxx-client/core/transactions/forward_compat.hxx +45 -59
- package/deps/couchbase-cxx-client/core/transactions/get_multi_orchestrator.cxx +616 -0
- package/deps/couchbase-cxx-client/core/transactions/get_multi_orchestrator.hxx +61 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +8 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +16 -5
- package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal.hxx +12 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +13 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/transaction_fields.hxx +1 -0
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +277 -96
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +28 -76
- package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +33 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_multi_mode.hxx +28 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_multi_replicas_from_preferred_server_group_mode.hxx +27 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_multi_replicas_from_preferred_server_group_result.hxx +71 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_multi_result.hxx +66 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +10 -0
- package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +8 -3
- package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +4 -0
- package/deps/couchbase-cxx-client/core/utils/url_codec.cxx +26 -0
- package/deps/couchbase-cxx-client/core/utils/url_codec.hxx +11 -0
- package/deps/couchbase-cxx-client/core/websocket_codec.cxx +647 -0
- package/deps/couchbase-cxx-client/core/websocket_codec.hxx +77 -0
- package/deps/couchbase-cxx-client/couchbase/analytics_options.hxx +70 -6
- package/deps/couchbase-cxx-client/couchbase/application_telemetry_options.hxx +124 -0
- package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +17 -0
- package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +1 -0
- package/deps/couchbase-cxx-client/couchbase/logger.hxx +16 -0
- package/deps/couchbase-cxx-client/couchbase/management/bucket_settings.hxx +1 -0
- package/deps/couchbase-cxx-client/couchbase/query_options.hxx +70 -6
- package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +29 -5
- package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +24 -7
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_mode.hxx +47 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_options.hxx +44 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_mode.hxx +46 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_options.hxx +48 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_result.hxx +109 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_spec.hxx +47 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_result.hxx +102 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_spec.hxx +45 -0
- package/dist/analyticsindexmanager.d.ts +1 -0
- package/dist/binarycollection.d.ts +1 -0
- package/dist/binding.d.ts +85 -38
- package/dist/binding.js +14 -7
- package/dist/bindingutilities.d.ts +16 -4
- package/dist/bindingutilities.js +248 -43
- package/dist/cluster.d.ts +39 -0
- package/dist/cluster.js +21 -3
- package/dist/collection.d.ts +20 -1
- package/dist/collection.js +13 -0
- package/dist/errorcontexts.d.ts +24 -0
- package/dist/errorcontexts.js +12 -6
- package/dist/generaltypes.d.ts +16 -0
- package/dist/generaltypes.js +18 -1
- package/dist/httpexecutor.d.ts +1 -2
- package/dist/httpexecutor.js +0 -9
- package/dist/streamablepromises.d.ts +25 -7
- package/dist/streamablepromises.js +32 -7
- package/dist/transactions.d.ts +239 -1
- package/dist/transactions.js +318 -1
- package/dist/transcoders.d.ts +1 -0
- package/dist/utilities.d.ts +1 -0
- package/package.json +24 -24
- package/src/connection.cpp +34 -4
- package/src/constants.cpp +124 -0
- package/src/jstocbpp_autogen.hpp +22 -8
- package/src/jstocbpp_transactions.hpp +83 -7
- package/src/transaction.cpp +101 -0
- package/src/transaction.hpp +5 -0
- package/tools/gen-bindings-js.js +2 -1
- package/tools/gen-bindings-json.py +28 -3
package/dist/transactions.js
CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.Transactions = exports.TransactionAttemptContext = exports.TransactionQueryResult = exports.TransactionGetResult = exports.TransactionResult = exports.DocumentId = void 0;
|
6
|
+
exports.Transactions = exports.TransactionAttemptContext = exports.TransactionQueryResult = exports.TransactionGetMultiReplicasFromPreferredServerGroupResult = exports.TransactionGetMultiReplicasFromPreferredServerGroupResultEntry = exports.TransactionGetMultiResult = exports.TransactionGetMultiResultEntry = exports.TransactionGetResult = exports.TransactionResult = exports.TransactionGetMultiReplicasFromPreferredServerGroupSpec = exports.TransactionGetMultiSpec = exports.TransactionGetMultiReplicasFromPreferredServerGroupMode = exports.TransactionGetMultiMode = exports.DocumentId = void 0;
|
7
7
|
const binding_1 = __importDefault(require("./binding"));
|
8
8
|
const bindingutilities_1 = require("./bindingutilities");
|
9
9
|
const errors_1 = require("./errors");
|
@@ -24,6 +24,94 @@ class DocumentId {
|
|
24
24
|
}
|
25
25
|
}
|
26
26
|
exports.DocumentId = DocumentId;
|
27
|
+
/**
|
28
|
+
* Represents the mode of the Transactional GetMulti operation.
|
29
|
+
*
|
30
|
+
* @category Transactions
|
31
|
+
*/
|
32
|
+
var TransactionGetMultiMode;
|
33
|
+
(function (TransactionGetMultiMode) {
|
34
|
+
/**
|
35
|
+
* Indicates that the Transactional GetMulti op should prioritise latency.
|
36
|
+
*/
|
37
|
+
TransactionGetMultiMode["PrioritiseLatency"] = "prioritise_latency";
|
38
|
+
/**
|
39
|
+
* Indicates that the Transactional GetMulti op should disable read skew detection.
|
40
|
+
*/
|
41
|
+
TransactionGetMultiMode["DisableReadSkewDetection"] = "disable_read_skew_detection";
|
42
|
+
/**
|
43
|
+
* Indicates that the Transactional GetMulti op should prioritise read skew detection.
|
44
|
+
*/
|
45
|
+
TransactionGetMultiMode["PrioritiseReadSkewDetection"] = "prioritise_read_skew_detection";
|
46
|
+
})(TransactionGetMultiMode || (exports.TransactionGetMultiMode = TransactionGetMultiMode = {}));
|
47
|
+
/**
|
48
|
+
* Represents the mode of the Transactional GetMultiReplicasFromPreferredServerGroup operation.
|
49
|
+
*
|
50
|
+
* @category Transactions
|
51
|
+
*/
|
52
|
+
var TransactionGetMultiReplicasFromPreferredServerGroupMode;
|
53
|
+
(function (TransactionGetMultiReplicasFromPreferredServerGroupMode) {
|
54
|
+
/**
|
55
|
+
* Indicates that the Transactional GetMultiReplicasFromPreferredServerGroup op should prioritise latency.
|
56
|
+
*/
|
57
|
+
TransactionGetMultiReplicasFromPreferredServerGroupMode["PrioritiseLatency"] = "prioritise_latency";
|
58
|
+
/**
|
59
|
+
* Indicates that the Transactional GetMultiReplicasFromPreferredServerGroup op should disable read skew detection.
|
60
|
+
*/
|
61
|
+
TransactionGetMultiReplicasFromPreferredServerGroupMode["DisableReadSkewDetection"] = "disable_read_skew_detection";
|
62
|
+
/**
|
63
|
+
* Indicates that the Transactional GetMultiReplicasFromPreferredServerGroup op should prioritise read skew detection.
|
64
|
+
*/
|
65
|
+
TransactionGetMultiReplicasFromPreferredServerGroupMode["PrioritiseReadSkewDetection"] = "prioritise_read_skew_detection";
|
66
|
+
})(TransactionGetMultiReplicasFromPreferredServerGroupMode || (exports.TransactionGetMultiReplicasFromPreferredServerGroupMode = TransactionGetMultiReplicasFromPreferredServerGroupMode = {}));
|
67
|
+
/**
|
68
|
+
* Represents the path to a document.
|
69
|
+
*
|
70
|
+
* @category Transactions
|
71
|
+
*/
|
72
|
+
class TransactionGetMultiSpec {
|
73
|
+
constructor(collection, id, transcoder) {
|
74
|
+
this.collection = collection;
|
75
|
+
this.id = id;
|
76
|
+
this.transcoder = transcoder;
|
77
|
+
}
|
78
|
+
/**
|
79
|
+
* @internal
|
80
|
+
*/
|
81
|
+
_toCppDocumentId() {
|
82
|
+
return {
|
83
|
+
bucket: this.collection.scope.bucket.name,
|
84
|
+
scope: this.collection.scope.name || '_default',
|
85
|
+
collection: this.collection.name || '_default',
|
86
|
+
key: this.id,
|
87
|
+
};
|
88
|
+
}
|
89
|
+
}
|
90
|
+
exports.TransactionGetMultiSpec = TransactionGetMultiSpec;
|
91
|
+
/**
|
92
|
+
* Represents the path to a document.
|
93
|
+
*
|
94
|
+
* @category Transactions
|
95
|
+
*/
|
96
|
+
class TransactionGetMultiReplicasFromPreferredServerGroupSpec {
|
97
|
+
constructor(collection, id, transcoder) {
|
98
|
+
this.collection = collection;
|
99
|
+
this.id = id;
|
100
|
+
this.transcoder = transcoder;
|
101
|
+
}
|
102
|
+
/**
|
103
|
+
* @internal
|
104
|
+
*/
|
105
|
+
_toCppDocumentId() {
|
106
|
+
return {
|
107
|
+
bucket: this.collection.scope.bucket.name,
|
108
|
+
scope: this.collection.scope.name || '_default',
|
109
|
+
collection: this.collection.name || '_default',
|
110
|
+
key: this.id,
|
111
|
+
};
|
112
|
+
}
|
113
|
+
}
|
114
|
+
exports.TransactionGetMultiReplicasFromPreferredServerGroupSpec = TransactionGetMultiReplicasFromPreferredServerGroupSpec;
|
27
115
|
/**
|
28
116
|
* Contains the results of a Transaction.
|
29
117
|
*
|
@@ -57,6 +145,113 @@ class TransactionGetResult {
|
|
57
145
|
}
|
58
146
|
}
|
59
147
|
exports.TransactionGetResult = TransactionGetResult;
|
148
|
+
/**
|
149
|
+
* Contains the results of a specific sub-operation within a transactional GetMulti operation.
|
150
|
+
*
|
151
|
+
* @category Transactions
|
152
|
+
*/
|
153
|
+
class TransactionGetMultiResultEntry {
|
154
|
+
/**
|
155
|
+
* @internal
|
156
|
+
*/
|
157
|
+
constructor(data) {
|
158
|
+
this.error = data.error || null;
|
159
|
+
this.value = data.value;
|
160
|
+
}
|
161
|
+
}
|
162
|
+
exports.TransactionGetMultiResultEntry = TransactionGetMultiResultEntry;
|
163
|
+
/**
|
164
|
+
* Contains the results of a transactional GetMulti operation.
|
165
|
+
*
|
166
|
+
* @category Transactions
|
167
|
+
*/
|
168
|
+
class TransactionGetMultiResult {
|
169
|
+
/**
|
170
|
+
* @internal
|
171
|
+
*/
|
172
|
+
constructor(data) {
|
173
|
+
this.content = data.content;
|
174
|
+
}
|
175
|
+
/**
|
176
|
+
* Indicates whether the document at the specified index exists.
|
177
|
+
*
|
178
|
+
* @param index The result index to check.
|
179
|
+
*/
|
180
|
+
exists(index) {
|
181
|
+
if (index < 0 || index >= this.content.length) {
|
182
|
+
throw new Error(`Index (${index}) out of bounds.`);
|
183
|
+
}
|
184
|
+
return (this.content[index].error === undefined ||
|
185
|
+
this.content[index].error === null);
|
186
|
+
}
|
187
|
+
/**
|
188
|
+
* Provides the content at the specified index, if it exists.
|
189
|
+
*
|
190
|
+
* @param index The result index to check.
|
191
|
+
*/
|
192
|
+
contentAt(index) {
|
193
|
+
if (!this.exists(index)) {
|
194
|
+
throw (this.content[index].error ||
|
195
|
+
new errors_1.DocumentNotFoundError(new Error(`Document does not exist at index=${index}.`)));
|
196
|
+
}
|
197
|
+
return this.content[index].value;
|
198
|
+
}
|
199
|
+
}
|
200
|
+
exports.TransactionGetMultiResult = TransactionGetMultiResult;
|
201
|
+
/**
|
202
|
+
* Contains the results of a specific sub-operation within
|
203
|
+
* a transactional GetMultiReplicasFromPreferredServerGroup operation.
|
204
|
+
*
|
205
|
+
* @category Transactions
|
206
|
+
*/
|
207
|
+
class TransactionGetMultiReplicasFromPreferredServerGroupResultEntry {
|
208
|
+
/**
|
209
|
+
* @internal
|
210
|
+
*/
|
211
|
+
constructor(data) {
|
212
|
+
this.error = data.error || null;
|
213
|
+
this.value = data.value;
|
214
|
+
}
|
215
|
+
}
|
216
|
+
exports.TransactionGetMultiReplicasFromPreferredServerGroupResultEntry = TransactionGetMultiReplicasFromPreferredServerGroupResultEntry;
|
217
|
+
/**
|
218
|
+
* Contains the results of a transactional GetMultiReplicasFromPreferredServerGroup operation.
|
219
|
+
*
|
220
|
+
* @category Transactions
|
221
|
+
*/
|
222
|
+
class TransactionGetMultiReplicasFromPreferredServerGroupResult {
|
223
|
+
/**
|
224
|
+
* @internal
|
225
|
+
*/
|
226
|
+
constructor(data) {
|
227
|
+
this.content = data.content;
|
228
|
+
}
|
229
|
+
/**
|
230
|
+
* Indicates whether the document at the specified index exists.
|
231
|
+
*
|
232
|
+
* @param index The result index to check.
|
233
|
+
*/
|
234
|
+
exists(index) {
|
235
|
+
if (index < 0 || index >= this.content.length) {
|
236
|
+
throw new Error(`Index (${index}) out of bounds.`);
|
237
|
+
}
|
238
|
+
return (this.content[index].error === undefined ||
|
239
|
+
this.content[index].error === null);
|
240
|
+
}
|
241
|
+
/**
|
242
|
+
* Provides the content at the specified index, if it exists.
|
243
|
+
*
|
244
|
+
* @param index The result index to check.
|
245
|
+
*/
|
246
|
+
contentAt(index) {
|
247
|
+
if (!this.exists(index)) {
|
248
|
+
throw (this.content[index].error ||
|
249
|
+
new errors_1.DocumentNotFoundError(new Error(`Document does not exist at index=${index}.`)));
|
250
|
+
}
|
251
|
+
return this.content[index].value;
|
252
|
+
}
|
253
|
+
}
|
254
|
+
exports.TransactionGetMultiReplicasFromPreferredServerGroupResult = TransactionGetMultiReplicasFromPreferredServerGroupResult;
|
60
255
|
/**
|
61
256
|
* Contains the results of a transactional Query operation.
|
62
257
|
*
|
@@ -91,6 +286,58 @@ function translateGetResult(cppRes, transcoder) {
|
|
91
286
|
_metadata: cppRes.metadata,
|
92
287
|
});
|
93
288
|
}
|
289
|
+
/**
|
290
|
+
* @internal
|
291
|
+
*/
|
292
|
+
function translateGetMultiResult(cppRes, transcoders) {
|
293
|
+
if (!cppRes) {
|
294
|
+
return null;
|
295
|
+
}
|
296
|
+
const content = [];
|
297
|
+
for (let i = 0; i < cppRes.content.length; ++i) {
|
298
|
+
const cppEntry = cppRes.content[i];
|
299
|
+
let resultEntry, resultError;
|
300
|
+
if (cppEntry && cppEntry.data && cppEntry.data.length > 0) {
|
301
|
+
resultEntry = transcoders[i].decode(cppEntry.data, cppEntry.flags);
|
302
|
+
}
|
303
|
+
else {
|
304
|
+
resultError = new errors_1.DocumentNotFoundError(new Error(`Document not found at index=${i}.`));
|
305
|
+
}
|
306
|
+
content.push(new TransactionGetMultiResultEntry({
|
307
|
+
value: resultEntry,
|
308
|
+
error: resultError,
|
309
|
+
}));
|
310
|
+
}
|
311
|
+
return new TransactionGetMultiResult({
|
312
|
+
content,
|
313
|
+
});
|
314
|
+
}
|
315
|
+
/**
|
316
|
+
* @internal
|
317
|
+
*/
|
318
|
+
function translateGetMultiReplicasFromPreferredServerGroupResult(cppRes, transcoders) {
|
319
|
+
if (!cppRes) {
|
320
|
+
return null;
|
321
|
+
}
|
322
|
+
const content = [];
|
323
|
+
for (let i = 0; i < cppRes.content.length; ++i) {
|
324
|
+
const cppEntry = cppRes.content[i];
|
325
|
+
let resultEntry, resultError;
|
326
|
+
if (cppEntry && cppEntry.data && cppEntry.data.length > 0) {
|
327
|
+
resultEntry = transcoders[i].decode(cppEntry.data, cppEntry.flags);
|
328
|
+
}
|
329
|
+
else {
|
330
|
+
resultError = new errors_1.DocumentNotFoundError(new Error(`Document not found at index=${i}.`));
|
331
|
+
}
|
332
|
+
content.push(new TransactionGetMultiReplicasFromPreferredServerGroupResultEntry({
|
333
|
+
value: resultEntry,
|
334
|
+
error: resultError,
|
335
|
+
}));
|
336
|
+
}
|
337
|
+
return new TransactionGetMultiReplicasFromPreferredServerGroupResult({
|
338
|
+
content,
|
339
|
+
});
|
340
|
+
}
|
94
341
|
/**
|
95
342
|
* Provides an interface to preform transactional operations in a transaction.
|
96
343
|
*
|
@@ -150,6 +397,72 @@ class TransactionAttemptContext {
|
|
150
397
|
});
|
151
398
|
});
|
152
399
|
}
|
400
|
+
/**
|
401
|
+
* Retrieves the value of a document from the collection.
|
402
|
+
*
|
403
|
+
* @param collection The collection the document lives in.
|
404
|
+
* @param key The document key to retrieve.
|
405
|
+
* @param options Optional parameters for this operation.
|
406
|
+
*/
|
407
|
+
async getReplicaFromPreferredServerGroup(collection, key, options) {
|
408
|
+
const transcoder = (options === null || options === void 0 ? void 0 : options.transcoder) || this._transcoder;
|
409
|
+
return utilities_1.PromiseHelper.wrap((wrapCallback) => {
|
410
|
+
const id = collection._cppDocId(key);
|
411
|
+
this._impl.getReplicaFromPreferredServerGroup({
|
412
|
+
id,
|
413
|
+
}, (cppErr, cppRes) => {
|
414
|
+
const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
|
415
|
+
if (err) {
|
416
|
+
return wrapCallback(err, null);
|
417
|
+
}
|
418
|
+
wrapCallback(err, translateGetResult(cppRes, transcoder));
|
419
|
+
});
|
420
|
+
});
|
421
|
+
}
|
422
|
+
/**
|
423
|
+
* Retrieves the documents specified in the list of specs.
|
424
|
+
*
|
425
|
+
* @param specs The documents to retrieve.
|
426
|
+
* @param options Optional parameters for this operation.
|
427
|
+
*/
|
428
|
+
async getMultiReplicasFromPreferredServerGroup(specs, options) {
|
429
|
+
const ids = specs.map((spec) => spec._toCppDocumentId());
|
430
|
+
const transcoders = specs.map((spec) => spec.transcoder || this._transcoder);
|
431
|
+
return utilities_1.PromiseHelper.wrap((wrapCallback) => {
|
432
|
+
this._impl.getMultiReplicasFromPreferredServerGroup({
|
433
|
+
ids,
|
434
|
+
mode: (0, bindingutilities_1.transactionGetMultiReplicasFromPreferredServerGroupModeToCpp)(options === null || options === void 0 ? void 0 : options.mode),
|
435
|
+
}, (cppErr, cppRes) => {
|
436
|
+
const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
|
437
|
+
if (err) {
|
438
|
+
return wrapCallback(err, null);
|
439
|
+
}
|
440
|
+
wrapCallback(err, translateGetMultiReplicasFromPreferredServerGroupResult(cppRes, transcoders));
|
441
|
+
});
|
442
|
+
});
|
443
|
+
}
|
444
|
+
/**
|
445
|
+
* Retrieves the documents specified in the list of specs.
|
446
|
+
*
|
447
|
+
* @param specs The documents to retrieve.
|
448
|
+
* @param options Optional parameters for this operation.
|
449
|
+
*/
|
450
|
+
async getMulti(specs, options) {
|
451
|
+
const ids = specs.map((spec) => spec._toCppDocumentId());
|
452
|
+
const transcoders = specs.map((spec) => spec.transcoder || this._transcoder);
|
453
|
+
return utilities_1.PromiseHelper.wrap((wrapCallback) => {
|
454
|
+
this._impl.getMulti({
|
455
|
+
ids,
|
456
|
+
mode: (0, bindingutilities_1.transactionGetMultiModeToCpp)(options === null || options === void 0 ? void 0 : options.mode),
|
457
|
+
}, (cppErr, cppRes) => {
|
458
|
+
const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
|
459
|
+
if (err) {
|
460
|
+
return wrapCallback(err, null);
|
461
|
+
}
|
462
|
+
wrapCallback(err, translateGetMultiResult(cppRes, transcoders));
|
463
|
+
});
|
464
|
+
});
|
465
|
+
}
|
153
466
|
/**
|
154
467
|
* Inserts a new document to the collection, failing if the document already exists.
|
155
468
|
*
|
@@ -387,6 +700,10 @@ class Transactions {
|
|
387
700
|
if (e instanceof errors_1.TransactionOperationFailedError) {
|
388
701
|
throw new errors_1.TransactionFailedError(e.cause, e.context);
|
389
702
|
}
|
703
|
+
else if (e instanceof errors_1.TransactionExpiredError ||
|
704
|
+
e instanceof errors_1.TransactionCommitAmbiguousError) {
|
705
|
+
throw e;
|
706
|
+
}
|
390
707
|
throw new errors_1.TransactionFailedError(e);
|
391
708
|
}
|
392
709
|
try {
|
package/dist/transcoders.d.ts
CHANGED
package/dist/utilities.d.ts
CHANGED
package/package.json
CHANGED
@@ -20,41 +20,41 @@
|
|
20
20
|
"license": "Apache-2.0",
|
21
21
|
"name": "couchbase",
|
22
22
|
"dependencies": {
|
23
|
-
"cmake-js": "^7.3.
|
24
|
-
"node-addon-api": "^8.
|
23
|
+
"cmake-js": "^7.3.1",
|
24
|
+
"node-addon-api": "^8.3.1"
|
25
25
|
},
|
26
26
|
"devDependencies": {
|
27
|
-
"@trivago/prettier-plugin-sort-imports": "^
|
28
|
-
"@tsconfig/node12": "^12.1.
|
27
|
+
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
|
28
|
+
"@tsconfig/node12": "^12.1.4",
|
29
29
|
"@types/bindings": "^1.5.5",
|
30
30
|
"@types/debug": "^4.1.12",
|
31
|
-
"@types/node": "^
|
31
|
+
"@types/node": "^22.14.1",
|
32
32
|
"@typescript-eslint/eslint-plugin": "^7.13.1",
|
33
33
|
"@typescript-eslint/parser": "^7.13.1",
|
34
|
-
"chai": "^4.
|
34
|
+
"chai": "^4.5.0",
|
35
35
|
"eslint": "^8.57.0",
|
36
36
|
"eslint-config-prettier": "^9.1.0",
|
37
37
|
"eslint-plugin-jsdoc": "^48.2.12",
|
38
|
-
"eslint-plugin-mocha": "^10.
|
38
|
+
"eslint-plugin-mocha": "^10.5.0",
|
39
39
|
"eslint-plugin-node": "^11.1.0",
|
40
40
|
"expose-gc": "^1.0.0",
|
41
|
-
"mocha": "^
|
42
|
-
"npm-check-updates": "^
|
43
|
-
"nyc": "^17.
|
44
|
-
"prettier": "^3.3
|
41
|
+
"mocha": "^11.1.0",
|
42
|
+
"npm-check-updates": "^18.0.0",
|
43
|
+
"nyc": "^17.1.0",
|
44
|
+
"prettier": "^3.5.3",
|
45
45
|
"segfault-handler": "^1.3.0",
|
46
|
-
"semver": "^7.
|
47
|
-
"ts-mocha": "^
|
46
|
+
"semver": "^7.7.1",
|
47
|
+
"ts-mocha": "^11.1.0",
|
48
48
|
"ts-node": "^10.9.2",
|
49
|
-
"typedoc": "^0.
|
50
|
-
"typescript": "
|
51
|
-
"uuid": "^
|
49
|
+
"typedoc": "^0.28.3",
|
50
|
+
"typescript": "~5.4.5",
|
51
|
+
"uuid": "^11.1.0"
|
52
52
|
},
|
53
53
|
"repository": {
|
54
54
|
"type": "git",
|
55
55
|
"url": "http://github.com/couchbase/couchnode.git"
|
56
56
|
},
|
57
|
-
"version": "4.
|
57
|
+
"version": "4.5.0",
|
58
58
|
"config": {
|
59
59
|
"native": false
|
60
60
|
},
|
@@ -79,13 +79,13 @@
|
|
79
79
|
]
|
80
80
|
},
|
81
81
|
"optionalDependencies": {
|
82
|
-
"@couchbase/couchbase-darwin-arm64-napi": "4.
|
83
|
-
"@couchbase/couchbase-darwin-x64-napi": "4.
|
84
|
-
"@couchbase/couchbase-linux-arm64-napi": "4.
|
85
|
-
"@couchbase/couchbase-linuxmusl-arm64-napi": "4.
|
86
|
-
"@couchbase/couchbase-linuxmusl-x64-napi": "4.
|
87
|
-
"@couchbase/couchbase-linux-x64-napi": "4.
|
88
|
-
"@couchbase/couchbase-win32-x64-napi": "4.
|
82
|
+
"@couchbase/couchbase-darwin-arm64-napi": "4.5.0",
|
83
|
+
"@couchbase/couchbase-darwin-x64-napi": "4.5.0",
|
84
|
+
"@couchbase/couchbase-linux-arm64-napi": "4.5.0",
|
85
|
+
"@couchbase/couchbase-linuxmusl-arm64-napi": "4.5.0",
|
86
|
+
"@couchbase/couchbase-linuxmusl-x64-napi": "4.5.0",
|
87
|
+
"@couchbase/couchbase-linux-x64-napi": "4.5.0",
|
88
|
+
"@couchbase/couchbase-win32-x64-napi": "4.5.0"
|
89
89
|
},
|
90
90
|
"files": [
|
91
91
|
"LICENSE",
|
package/src/connection.cpp
CHANGED
@@ -279,7 +279,7 @@ Napi::Value Connection::jsConnect(const Napi::CallbackInfo &info)
|
|
279
279
|
{
|
280
280
|
auto connstr = info[0].ToString().Utf8Value();
|
281
281
|
auto credentialsJsObj = info[1].As<Napi::Object>();
|
282
|
-
auto callbackJsFn = info[
|
282
|
+
auto callbackJsFn = info[4].As<Napi::Function>();
|
283
283
|
|
284
284
|
auto connstrInfo = couchbase::core::utils::parse_connection_string(connstr);
|
285
285
|
auto creds =
|
@@ -313,6 +313,36 @@ Napi::Value Connection::jsConnect(const Napi::CallbackInfo &info)
|
|
313
313
|
connstrInfo.options.dns_config = cppDnsConfig;
|
314
314
|
}
|
315
315
|
|
316
|
+
if (!info[3].IsNull()) {
|
317
|
+
auto jsAppTelemetryConfigObj = info[3].As<Napi::Object>();
|
318
|
+
auto jsEnabled = jsAppTelemetryConfigObj.Get("enabled");
|
319
|
+
if (!(jsEnabled.IsNull() || jsEnabled.IsUndefined())) {
|
320
|
+
connstrInfo.options.enable_app_telemetry =
|
321
|
+
js_to_cbpp<bool>(jsEnabled);
|
322
|
+
}
|
323
|
+
auto jsEndpoint = jsAppTelemetryConfigObj.Get("endpoint");
|
324
|
+
if (!(jsEndpoint.IsNull() || jsEndpoint.IsUndefined() ||
|
325
|
+
jsEndpoint.IsEmpty())) {
|
326
|
+
connstrInfo.options.app_telemetry_endpoint =
|
327
|
+
js_to_cbpp<std::string>(jsEndpoint);
|
328
|
+
}
|
329
|
+
auto jsBackoff = jsAppTelemetryConfigObj.Get("backoff");
|
330
|
+
if (!(jsBackoff.IsNull() || jsBackoff.IsUndefined())) {
|
331
|
+
connstrInfo.options.app_telemetry_backoff_interval =
|
332
|
+
js_to_cbpp<std::chrono::milliseconds>(jsBackoff);
|
333
|
+
}
|
334
|
+
auto jsPingInterval = jsAppTelemetryConfigObj.Get("pingInterval");
|
335
|
+
if (!(jsPingInterval.IsNull() || jsPingInterval.IsUndefined())) {
|
336
|
+
connstrInfo.options.app_telemetry_ping_interval =
|
337
|
+
js_to_cbpp<std::chrono::milliseconds>(jsPingInterval);
|
338
|
+
}
|
339
|
+
auto jsPingTimeout = jsAppTelemetryConfigObj.Get("pingTimeout");
|
340
|
+
if (!(jsPingTimeout.IsNull() || jsPingTimeout.IsUndefined())) {
|
341
|
+
connstrInfo.options.app_telemetry_ping_timeout =
|
342
|
+
js_to_cbpp<std::chrono::milliseconds>(jsPingTimeout);
|
343
|
+
}
|
344
|
+
}
|
345
|
+
|
316
346
|
auto cookie = CallCookie(info.Env(), callbackJsFn, "cbConnectCallback");
|
317
347
|
this->_instance->_cluster.open(
|
318
348
|
couchbase::core::origin(creds, connstrInfo),
|
@@ -440,9 +470,9 @@ Napi::Value Connection::jsScan(const Napi::CallbackInfo &info)
|
|
440
470
|
auto f = barrier->get_future();
|
441
471
|
this->_instance->_cluster.with_bucket_configuration(
|
442
472
|
bucketName,
|
443
|
-
[barrier](
|
444
|
-
|
445
|
-
|
473
|
+
[barrier](std::error_code ec,
|
474
|
+
std::shared_ptr<couchbase::core::topology::configuration>
|
475
|
+
config) mutable {
|
446
476
|
if (ec) {
|
447
477
|
return barrier->set_value(tl::unexpected(ec));
|
448
478
|
}
|
package/src/constants.cpp
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
#include <core/impl/subdoc/path_flags.hxx>
|
5
5
|
#include <core/transactions.hxx>
|
6
6
|
#include <core/transactions/internal/exceptions_internal.hxx>
|
7
|
+
#include <core/transactions/transaction_get_multi_mode.hxx>
|
8
|
+
#include <core/transactions/transaction_get_multi_replicas_from_preferred_server_group_result.hxx>
|
7
9
|
#include <couchbase/error_context.hxx>
|
8
10
|
#include <set>
|
9
11
|
#include <vector>
|
@@ -1102,6 +1104,128 @@ void Constants::InitAutogen(Napi::Env env, Napi::Object exports)
|
|
1102
1104
|
couchbase::core::vector_query_combination::combination_or},
|
1103
1105
|
}));
|
1104
1106
|
|
1107
|
+
exports.Set(
|
1108
|
+
"transactions_failure_type",
|
1109
|
+
cbppEnumToJs<couchbase::core::transactions::failure_type>(
|
1110
|
+
env,
|
1111
|
+
{
|
1112
|
+
{"FAIL", couchbase::core::transactions::failure_type::FAIL},
|
1113
|
+
{"EXPIRY", couchbase::core::transactions::failure_type::EXPIRY},
|
1114
|
+
{"COMMIT_AMBIGUOUS",
|
1115
|
+
couchbase::core::transactions::failure_type::COMMIT_AMBIGUOUS},
|
1116
|
+
}));
|
1117
|
+
|
1118
|
+
exports.Set(
|
1119
|
+
"transactions_external_exception",
|
1120
|
+
cbppEnumToJs<couchbase::core::transactions::external_exception>(
|
1121
|
+
env,
|
1122
|
+
{
|
1123
|
+
{"UNKNOWN",
|
1124
|
+
couchbase::core::transactions::external_exception::UNKNOWN},
|
1125
|
+
{"ACTIVE_TRANSACTION_RECORD_ENTRY_NOT_FOUND",
|
1126
|
+
couchbase::core::transactions::external_exception::
|
1127
|
+
ACTIVE_TRANSACTION_RECORD_ENTRY_NOT_FOUND},
|
1128
|
+
{"ACTIVE_TRANSACTION_RECORD_FULL",
|
1129
|
+
couchbase::core::transactions::external_exception::
|
1130
|
+
ACTIVE_TRANSACTION_RECORD_FULL},
|
1131
|
+
{"ACTIVE_TRANSACTION_RECORD_NOT_FOUND",
|
1132
|
+
couchbase::core::transactions::external_exception::
|
1133
|
+
ACTIVE_TRANSACTION_RECORD_NOT_FOUND},
|
1134
|
+
{"DOCUMENT_ALREADY_IN_TRANSACTION",
|
1135
|
+
couchbase::core::transactions::external_exception::
|
1136
|
+
DOCUMENT_ALREADY_IN_TRANSACTION},
|
1137
|
+
{"DOCUMENT_EXISTS_EXCEPTION",
|
1138
|
+
couchbase::core::transactions::external_exception::
|
1139
|
+
DOCUMENT_EXISTS_EXCEPTION},
|
1140
|
+
{"DOCUMENT_NOT_FOUND_EXCEPTION",
|
1141
|
+
couchbase::core::transactions::external_exception::
|
1142
|
+
DOCUMENT_NOT_FOUND_EXCEPTION},
|
1143
|
+
{"NOT_SET",
|
1144
|
+
couchbase::core::transactions::external_exception::NOT_SET},
|
1145
|
+
{"FEATURE_NOT_AVAILABLE_EXCEPTION",
|
1146
|
+
couchbase::core::transactions::external_exception::
|
1147
|
+
FEATURE_NOT_AVAILABLE_EXCEPTION},
|
1148
|
+
{"TRANSACTION_ABORTED_EXTERNALLY",
|
1149
|
+
couchbase::core::transactions::external_exception::
|
1150
|
+
TRANSACTION_ABORTED_EXTERNALLY},
|
1151
|
+
{"PREVIOUS_OPERATION_FAILED",
|
1152
|
+
couchbase::core::transactions::external_exception::
|
1153
|
+
PREVIOUS_OPERATION_FAILED},
|
1154
|
+
{"FORWARD_COMPATIBILITY_FAILURE",
|
1155
|
+
couchbase::core::transactions::external_exception::
|
1156
|
+
FORWARD_COMPATIBILITY_FAILURE},
|
1157
|
+
{"PARSING_FAILURE", couchbase::core::transactions::
|
1158
|
+
external_exception::PARSING_FAILURE},
|
1159
|
+
{"ILLEGAL_STATE_EXCEPTION",
|
1160
|
+
couchbase::core::transactions::external_exception::
|
1161
|
+
ILLEGAL_STATE_EXCEPTION},
|
1162
|
+
{"COUCHBASE_EXCEPTION",
|
1163
|
+
couchbase::core::transactions::external_exception::
|
1164
|
+
COUCHBASE_EXCEPTION},
|
1165
|
+
{"SERVICE_NOT_AVAILABLE_EXCEPTION",
|
1166
|
+
couchbase::core::transactions::external_exception::
|
1167
|
+
SERVICE_NOT_AVAILABLE_EXCEPTION},
|
1168
|
+
{"REQUEST_CANCELED_EXCEPTION",
|
1169
|
+
couchbase::core::transactions::external_exception::
|
1170
|
+
REQUEST_CANCELED_EXCEPTION},
|
1171
|
+
{"CONCURRENT_OPERATIONS_DETECTED_ON_SAME_DOCUMENT",
|
1172
|
+
couchbase::core::transactions::external_exception::
|
1173
|
+
CONCURRENT_OPERATIONS_DETECTED_ON_SAME_DOCUMENT},
|
1174
|
+
{"COMMIT_NOT_PERMITTED",
|
1175
|
+
couchbase::core::transactions::external_exception::
|
1176
|
+
COMMIT_NOT_PERMITTED},
|
1177
|
+
{"ROLLBACK_NOT_PERMITTED",
|
1178
|
+
couchbase::core::transactions::external_exception::
|
1179
|
+
ROLLBACK_NOT_PERMITTED},
|
1180
|
+
{"TRANSACTION_ALREADY_ABORTED",
|
1181
|
+
couchbase::core::transactions::external_exception::
|
1182
|
+
TRANSACTION_ALREADY_ABORTED},
|
1183
|
+
{"TRANSACTION_ALREADY_COMMITTED",
|
1184
|
+
couchbase::core::transactions::external_exception::
|
1185
|
+
TRANSACTION_ALREADY_COMMITTED},
|
1186
|
+
{"DOCUMENT_UNRETRIEVABLE_EXCEPTION",
|
1187
|
+
couchbase::core::transactions::external_exception::
|
1188
|
+
DOCUMENT_UNRETRIEVABLE_EXCEPTION},
|
1189
|
+
}));
|
1190
|
+
|
1191
|
+
exports.Set(
|
1192
|
+
"transactions_transaction_get_multi_mode",
|
1193
|
+
cbppEnumToJs<couchbase::core::transactions::transaction_get_multi_mode>(
|
1194
|
+
env,
|
1195
|
+
{
|
1196
|
+
{"prioritise_latency",
|
1197
|
+
couchbase::core::transactions::transaction_get_multi_mode::
|
1198
|
+
prioritise_latency},
|
1199
|
+
{"disable_read_skew_detection",
|
1200
|
+
couchbase::core::transactions::transaction_get_multi_mode::
|
1201
|
+
disable_read_skew_detection},
|
1202
|
+
{"prioritise_read_skew_detection",
|
1203
|
+
couchbase::core::transactions::transaction_get_multi_mode::
|
1204
|
+
prioritise_read_skew_detection},
|
1205
|
+
}));
|
1206
|
+
|
1207
|
+
exports.Set(
|
1208
|
+
"transactions_transaction_get_multi_replicas_from_preferred_server_"
|
1209
|
+
"group_mode",
|
1210
|
+
cbppEnumToJs<
|
1211
|
+
couchbase::core::transactions::
|
1212
|
+
transaction_get_multi_replicas_from_preferred_server_group_mode>(
|
1213
|
+
env,
|
1214
|
+
{
|
1215
|
+
{"prioritise_latency",
|
1216
|
+
couchbase::core::transactions::
|
1217
|
+
transaction_get_multi_replicas_from_preferred_server_group_mode::
|
1218
|
+
prioritise_latency},
|
1219
|
+
{"disable_read_skew_detection",
|
1220
|
+
couchbase::core::transactions::
|
1221
|
+
transaction_get_multi_replicas_from_preferred_server_group_mode::
|
1222
|
+
disable_read_skew_detection},
|
1223
|
+
{"prioritise_read_skew_detection",
|
1224
|
+
couchbase::core::transactions::
|
1225
|
+
transaction_get_multi_replicas_from_preferred_server_group_mode::
|
1226
|
+
prioritise_read_skew_detection},
|
1227
|
+
}));
|
1228
|
+
|
1105
1229
|
//#endregion Autogenerated Constants
|
1106
1230
|
}
|
1107
1231
|
|