couchbase 4.2.11 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +49 -2
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
- package/deps/couchbase-cxx-client/core/impl/cluster.cxx +51 -5
- package/deps/couchbase-cxx-client/core/impl/collection.cxx +224 -209
- package/deps/couchbase-cxx-client/core/impl/query_error_context.cxx +2 -2
- package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +1 -0
- package/deps/couchbase-cxx-client/core/io/dns_client.cxx +4 -0
- package/deps/couchbase-cxx-client/core/io/dns_config.cxx +15 -4
- package/deps/couchbase-cxx-client/core/io/dns_config.hxx +1 -1
- package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +84 -53
- package/deps/couchbase-cxx-client/core/mcbp/operation_queue.cxx +1 -0
- package/deps/couchbase-cxx-client/core/meta/features.hxx +5 -0
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +116 -105
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +116 -108
- package/deps/couchbase-cxx-client/core/operations/document_search.cxx +97 -81
- package/deps/couchbase-cxx-client/core/operations/document_search.hxx +5 -0
- package/deps/couchbase-cxx-client/core/range_scan_orchestrator_options.hxx +2 -1
- package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +16 -7
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +578 -483
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.cxx +51 -50
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.hxx +4 -2
- package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.cxx +6 -6
- package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.hxx +3 -2
- package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +2 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +5 -1
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +222 -179
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +23 -12
- package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +61 -24
- package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +36 -16
- package/deps/couchbase-cxx-client/core/transactions/utils.cxx +9 -0
- package/deps/couchbase-cxx-client/core/transactions.hxx +40 -7
- package/deps/couchbase-cxx-client/couchbase/cluster.hxx +19 -0
- package/deps/couchbase-cxx-client/couchbase/fork_event.hxx +39 -0
- package/dist/binding.d.ts +8 -0
- package/dist/bindingutilities.d.ts +6 -1
- package/dist/bindingutilities.js +15 -1
- package/dist/bucketmanager.d.ts +0 -12
- package/dist/cluster.d.ts +0 -2
- package/dist/cluster.js +0 -2
- package/dist/collection.d.ts +3 -3
- package/dist/collection.js +3 -1
- package/dist/querytypes.d.ts +0 -2
- package/dist/rangeScan.d.ts +0 -8
- package/dist/rangeScan.js +0 -8
- package/dist/scope.d.ts +0 -5
- package/dist/scope.js +0 -5
- package/dist/scopesearchindexmanager.d.ts +0 -2
- package/dist/scopesearchindexmanager.js +0 -2
- package/dist/searchexecutor.js +3 -1
- package/dist/searchtypes.d.ts +16 -6
- package/dist/searchtypes.js +2 -6
- package/dist/transactions.d.ts +23 -0
- package/dist/transactions.js +16 -10
- package/dist/vectorsearch.d.ts +8 -8
- package/dist/vectorsearch.js +7 -7
- package/package.json +7 -7
- package/src/instance.cpp +11 -1
- package/src/instance.hpp +1 -0
- package/src/jstocbpp_autogen.hpp +8 -0
- package/src/jstocbpp_transactions.hpp +40 -3
- package/src/transactions.cpp +12 -1
- package/tools/gen-bindings-json.py +0 -1
package/dist/rangeScan.js
CHANGED
@@ -4,8 +4,6 @@ exports.PrefixScan = exports.SamplingScan = exports.RangeScan = exports.ScanTerm
|
|
4
4
|
/**
|
5
5
|
* Represents a search term for a RangeScan.
|
6
6
|
*
|
7
|
-
* Volatile: This API is subject to change at any time.
|
8
|
-
*
|
9
7
|
* @see {@link RangeScan}
|
10
8
|
* @category Key-Value
|
11
9
|
*/
|
@@ -23,8 +21,6 @@ exports.ScanTerm = ScanTerm;
|
|
23
21
|
* A RangeScan performs a scan on a range of keys with the range specified through
|
24
22
|
* a start and end ScanTerm.
|
25
23
|
*
|
26
|
-
* Volatile: This API is subject to change at any time.
|
27
|
-
*
|
28
24
|
* @category Key-Value
|
29
25
|
*/
|
30
26
|
class RangeScan {
|
@@ -47,8 +43,6 @@ exports.RangeScan = RangeScan;
|
|
47
43
|
* A SamplingScan performs a scan on a random sampling of keys with the sampling bounded by
|
48
44
|
* a limit.
|
49
45
|
*
|
50
|
-
* Volatile: This API is subject to change at any time.
|
51
|
-
*
|
52
46
|
* @category Key-Value
|
53
47
|
*/
|
54
48
|
class SamplingScan {
|
@@ -70,8 +64,6 @@ exports.SamplingScan = SamplingScan;
|
|
70
64
|
/**
|
71
65
|
* A PrefixScan scan type selects every document whose ID starts with a certain prefix.
|
72
66
|
*
|
73
|
-
* Volatile: This API is subject to change at any time.
|
74
|
-
*
|
75
67
|
* @category key-value
|
76
68
|
*/
|
77
69
|
class PrefixScan {
|
package/dist/scope.d.ts
CHANGED
@@ -56,9 +56,6 @@ export declare class Scope {
|
|
56
56
|
/**
|
57
57
|
* Returns a SearchIndexManager which can be used to manage the search
|
58
58
|
* indexes of this scope.
|
59
|
-
*
|
60
|
-
* Volatile: This API is subject to change at any time.
|
61
|
-
*
|
62
59
|
*/
|
63
60
|
searchIndexes(): ScopeSearchIndexManager;
|
64
61
|
/**
|
@@ -80,8 +77,6 @@ export declare class Scope {
|
|
80
77
|
/**
|
81
78
|
* Executes a search query against the scope.
|
82
79
|
*
|
83
|
-
* Volatile: This API is subject to change at any time.
|
84
|
-
*
|
85
80
|
* @param indexName The name of the index to query.
|
86
81
|
* @param request The SearchRequest describing the search to execute.
|
87
82
|
* @param options Optional parameters for this operation.
|
package/dist/scope.js
CHANGED
@@ -69,9 +69,6 @@ class Scope {
|
|
69
69
|
/**
|
70
70
|
* Returns a SearchIndexManager which can be used to manage the search
|
71
71
|
* indexes of this scope.
|
72
|
-
*
|
73
|
-
* Volatile: This API is subject to change at any time.
|
74
|
-
*
|
75
72
|
*/
|
76
73
|
searchIndexes() {
|
77
74
|
return new scopesearchindexmanager_1.ScopeSearchIndexManager(this.cluster, this.bucket.name, this._name);
|
@@ -125,8 +122,6 @@ class Scope {
|
|
125
122
|
/**
|
126
123
|
* Executes a search query against the scope.
|
127
124
|
*
|
128
|
-
* Volatile: This API is subject to change at any time.
|
129
|
-
*
|
130
125
|
* @param indexName The name of the index to query.
|
131
126
|
* @param request The SearchRequest describing the search to execute.
|
132
127
|
* @param options Optional parameters for this operation.
|
@@ -5,8 +5,6 @@ import { GetSearchIndexOptions, GetAllSearchIndexesOptions, UpsertSearchIndexOpt
|
|
5
5
|
* SearchIndexManager provides an interface for managing the
|
6
6
|
* search indexes on the cluster.
|
7
7
|
*
|
8
|
-
* Volatile: This API is subject to change at any time.
|
9
|
-
*
|
10
8
|
* @category Management
|
11
9
|
*/
|
12
10
|
export declare class ScopeSearchIndexManager {
|
@@ -8,8 +8,6 @@ const searchindexmanager_1 = require("./searchindexmanager");
|
|
8
8
|
* SearchIndexManager provides an interface for managing the
|
9
9
|
* search indexes on the cluster.
|
10
10
|
*
|
11
|
-
* Volatile: This API is subject to change at any time.
|
12
|
-
*
|
13
11
|
* @category Management
|
14
12
|
*/
|
15
13
|
class ScopeSearchIndexManager {
|
package/dist/searchexecutor.js
CHANGED
@@ -67,9 +67,11 @@ class SearchExecutor {
|
|
67
67
|
.map(([k, v]) => [k, JSON.stringify(v)]))
|
68
68
|
: {},
|
69
69
|
body_str: '',
|
70
|
+
show_request: options.showRequest || false,
|
71
|
+
log_request: options.logRequest || false,
|
72
|
+
log_response: options.logResponse || false,
|
70
73
|
};
|
71
74
|
if (query instanceof searchtypes_1.SearchRequest) {
|
72
|
-
request.show_request = false;
|
73
75
|
if (query.vectorSearch) {
|
74
76
|
request.vector_search = JSON.stringify(query.vectorSearch.queries);
|
75
77
|
if (query.vectorSearch.options &&
|
package/dist/searchtypes.d.ts
CHANGED
@@ -146,12 +146,24 @@ export interface SearchQueryOptions {
|
|
146
146
|
* The timeout for this operation, represented in milliseconds.
|
147
147
|
*/
|
148
148
|
timeout?: number;
|
149
|
+
/**
|
150
|
+
* Specifies that the search response should include the request JSON.
|
151
|
+
*/
|
152
|
+
showRequest?: boolean;
|
153
|
+
/**
|
154
|
+
* Uncommitted: This API is subject to change in the future.
|
155
|
+
* Specifies that the search request should appear in the log.
|
156
|
+
*/
|
157
|
+
logRequest?: boolean;
|
158
|
+
/**
|
159
|
+
* Uncommitted: This API is subject to change in the future.
|
160
|
+
* Specifies that the search response should appear in the log.
|
161
|
+
*/
|
162
|
+
logResponse?: boolean;
|
149
163
|
}
|
150
164
|
/**
|
151
165
|
* Represents a search query and/or vector search to execute via the Couchbase Full Text Search (FTS) service.
|
152
166
|
*
|
153
|
-
* Volatile: This API is subject to change at any time.
|
154
|
-
*
|
155
167
|
* @category Full Text Search
|
156
168
|
*/
|
157
169
|
export declare class SearchRequest {
|
@@ -169,7 +181,7 @@ export declare class SearchRequest {
|
|
169
181
|
/**
|
170
182
|
* Adds a search query to the request if the request does not already have a search query.
|
171
183
|
*
|
172
|
-
*
|
184
|
+
* Uncommitted: This API is subject to change in the future.
|
173
185
|
*
|
174
186
|
* @param query A SearchQuery to add to the request.
|
175
187
|
*/
|
@@ -177,7 +189,7 @@ export declare class SearchRequest {
|
|
177
189
|
/**
|
178
190
|
* Adds a vector search to the request if the request does not already have a vector search.
|
179
191
|
*
|
180
|
-
*
|
192
|
+
* Uncommitted: This API is subject to change in the future.
|
181
193
|
*
|
182
194
|
* @param search A VectorSearch to add to the request.
|
183
195
|
*/
|
@@ -185,8 +197,6 @@ export declare class SearchRequest {
|
|
185
197
|
/**
|
186
198
|
* Creates a search request.
|
187
199
|
*
|
188
|
-
* Volatile: This API is subject to change at any time.
|
189
|
-
*
|
190
200
|
* @param query Either a SearchQuery or VectorSearch to add to the search request.
|
191
201
|
*/
|
192
202
|
static create(query: SearchQuery | VectorSearch): SearchRequest;
|
package/dist/searchtypes.js
CHANGED
@@ -73,8 +73,6 @@ var SearchScanConsistency;
|
|
73
73
|
/**
|
74
74
|
* Represents a search query and/or vector search to execute via the Couchbase Full Text Search (FTS) service.
|
75
75
|
*
|
76
|
-
* Volatile: This API is subject to change at any time.
|
77
|
-
*
|
78
76
|
* @category Full Text Search
|
79
77
|
*/
|
80
78
|
class SearchRequest {
|
@@ -104,7 +102,7 @@ class SearchRequest {
|
|
104
102
|
/**
|
105
103
|
* Adds a search query to the request if the request does not already have a search query.
|
106
104
|
*
|
107
|
-
*
|
105
|
+
* Uncommitted: This API is subject to change in the future.
|
108
106
|
*
|
109
107
|
* @param query A SearchQuery to add to the request.
|
110
108
|
*/
|
@@ -121,7 +119,7 @@ class SearchRequest {
|
|
121
119
|
/**
|
122
120
|
* Adds a vector search to the request if the request does not already have a vector search.
|
123
121
|
*
|
124
|
-
*
|
122
|
+
* Uncommitted: This API is subject to change in the future.
|
125
123
|
*
|
126
124
|
* @param search A VectorSearch to add to the request.
|
127
125
|
*/
|
@@ -138,8 +136,6 @@ class SearchRequest {
|
|
138
136
|
/**
|
139
137
|
* Creates a search request.
|
140
138
|
*
|
141
|
-
* Volatile: This API is subject to change at any time.
|
142
|
-
*
|
143
139
|
* @param query Either a SearchQuery or VectorSearch to add to the search request.
|
144
140
|
*/
|
145
141
|
static create(query) {
|
package/dist/transactions.d.ts
CHANGED
@@ -29,6 +29,25 @@ export declare class DocumentId {
|
|
29
29
|
*/
|
30
30
|
key: string;
|
31
31
|
}
|
32
|
+
/**
|
33
|
+
* Specifies the configuration options for a Transaction Keyspace.
|
34
|
+
*
|
35
|
+
* @category Transactions
|
36
|
+
*/
|
37
|
+
export interface TransactionKeyspace {
|
38
|
+
/**
|
39
|
+
* The name of the bucket for the Keyspace.
|
40
|
+
*/
|
41
|
+
bucket: string;
|
42
|
+
/**
|
43
|
+
* The name of the scope for the Keyspace.
|
44
|
+
*/
|
45
|
+
scope?: string;
|
46
|
+
/**
|
47
|
+
* The name of the collection for the Keyspace.
|
48
|
+
*/
|
49
|
+
collection?: string;
|
50
|
+
}
|
32
51
|
/**
|
33
52
|
* Specifies the configuration options for Transactions cleanup.
|
34
53
|
*
|
@@ -87,6 +106,10 @@ export interface TransactionsConfig {
|
|
87
106
|
* Specifies the configuration for the cleanup system.
|
88
107
|
*/
|
89
108
|
cleanupConfig?: TransactionsCleanupConfig;
|
109
|
+
/**
|
110
|
+
* Specifies the Keyspace (bucket, scope & collection) for the transaction metadata.
|
111
|
+
*/
|
112
|
+
metadataCollection?: TransactionKeyspace;
|
90
113
|
}
|
91
114
|
/**
|
92
115
|
* Specifies the configuration options for a Transaction.
|
package/dist/transactions.js
CHANGED
@@ -311,16 +311,22 @@ class Transactions {
|
|
311
311
|
config.queryConfig = {};
|
312
312
|
}
|
313
313
|
const connImpl = cluster.conn;
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
314
|
+
try {
|
315
|
+
const txnsImpl = new binding_1.default.Transactions(connImpl, {
|
316
|
+
durability_level: (0, bindingutilities_1.durabilityToCpp)(config.durabilityLevel),
|
317
|
+
timeout: config.timeout,
|
318
|
+
query_scan_consistency: (0, bindingutilities_1.queryScanConsistencyToCpp)(config.queryConfig.scanConsistency),
|
319
|
+
cleanup_window: config.cleanupConfig.cleanupWindow,
|
320
|
+
cleanup_lost_attempts: !config.cleanupConfig.disableLostAttemptCleanup,
|
321
|
+
cleanup_client_attempts: !config.cleanupConfig.disableClientAttemptCleanup,
|
322
|
+
metadata_collection: (0, bindingutilities_1.transactionKeyspaceToCpp)(config.metadataCollection),
|
323
|
+
});
|
324
|
+
this._cluster = cluster;
|
325
|
+
this._impl = txnsImpl;
|
326
|
+
}
|
327
|
+
catch (err) {
|
328
|
+
throw (0, bindingutilities_1.errorFromCpp)(err);
|
329
|
+
}
|
324
330
|
}
|
325
331
|
/**
|
326
332
|
@internal
|
package/dist/vectorsearch.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* Specifies how multiple vector searches are combined.
|
3
3
|
*
|
4
|
-
*
|
4
|
+
* Uncommitted: This API is subject to change in the future.
|
5
5
|
*
|
6
6
|
* @category Full Text Search
|
7
7
|
*/
|
@@ -16,7 +16,7 @@ export declare enum VectorQueryCombination {
|
|
16
16
|
OR = "or"
|
17
17
|
}
|
18
18
|
/**
|
19
|
-
*
|
19
|
+
* Uncommitted: This API is subject to change in the future.
|
20
20
|
*
|
21
21
|
* @category Full Text Search
|
22
22
|
*/
|
@@ -29,7 +29,7 @@ export interface VectorSearchOptions {
|
|
29
29
|
/**
|
30
30
|
* Represents a vector query.
|
31
31
|
*
|
32
|
-
*
|
32
|
+
* Uncommitted: This API is subject to change in the future.
|
33
33
|
*
|
34
34
|
* @category Full Text Search
|
35
35
|
*/
|
@@ -46,7 +46,7 @@ export declare class VectorQuery {
|
|
46
46
|
/**
|
47
47
|
* Adds boost option to vector query.
|
48
48
|
*
|
49
|
-
*
|
49
|
+
* Uncommitted: This API is subject to change in the future.
|
50
50
|
*
|
51
51
|
* @param boost A floating point value.
|
52
52
|
*/
|
@@ -54,7 +54,7 @@ export declare class VectorQuery {
|
|
54
54
|
/**
|
55
55
|
* Adds numCandidates option to vector query. Value must be >= 1.
|
56
56
|
*
|
57
|
-
*
|
57
|
+
* Uncommitted: This API is subject to change in the future.
|
58
58
|
*
|
59
59
|
* @param numCandidates An integer value.
|
60
60
|
*/
|
@@ -62,7 +62,7 @@ export declare class VectorQuery {
|
|
62
62
|
/**
|
63
63
|
* Creates a vector query.
|
64
64
|
*
|
65
|
-
*
|
65
|
+
* Uncommitted: This API is subject to change in the future.
|
66
66
|
*
|
67
67
|
* @param fieldName The name of the field in the JSON document that holds the vector.
|
68
68
|
* @param vector List of floating point values that represent the vector.
|
@@ -72,7 +72,7 @@ export declare class VectorQuery {
|
|
72
72
|
/**
|
73
73
|
* Represents a vector search.
|
74
74
|
*
|
75
|
-
*
|
75
|
+
* Uncommitted: This API is subject to change in the future.
|
76
76
|
*
|
77
77
|
* @category Full Text Search
|
78
78
|
*/
|
@@ -91,7 +91,7 @@ export declare class VectorSearch {
|
|
91
91
|
/**
|
92
92
|
* Creates a vector search.
|
93
93
|
*
|
94
|
-
*
|
94
|
+
* Uncommitted: This API is subject to change in the future.
|
95
95
|
*
|
96
96
|
* @param query A vectory query that should be a part of the vector search.
|
97
97
|
*/
|
package/dist/vectorsearch.js
CHANGED
@@ -5,7 +5,7 @@ const errors_1 = require("./errors");
|
|
5
5
|
/**
|
6
6
|
* Specifies how multiple vector searches are combined.
|
7
7
|
*
|
8
|
-
*
|
8
|
+
* Uncommitted: This API is subject to change in the future.
|
9
9
|
*
|
10
10
|
* @category Full Text Search
|
11
11
|
*/
|
@@ -23,7 +23,7 @@ var VectorQueryCombination;
|
|
23
23
|
/**
|
24
24
|
* Represents a vector query.
|
25
25
|
*
|
26
|
-
*
|
26
|
+
* Uncommitted: This API is subject to change in the future.
|
27
27
|
*
|
28
28
|
* @category Full Text Search
|
29
29
|
*/
|
@@ -53,7 +53,7 @@ class VectorQuery {
|
|
53
53
|
/**
|
54
54
|
* Adds boost option to vector query.
|
55
55
|
*
|
56
|
-
*
|
56
|
+
* Uncommitted: This API is subject to change in the future.
|
57
57
|
*
|
58
58
|
* @param boost A floating point value.
|
59
59
|
*/
|
@@ -64,7 +64,7 @@ class VectorQuery {
|
|
64
64
|
/**
|
65
65
|
* Adds numCandidates option to vector query. Value must be >= 1.
|
66
66
|
*
|
67
|
-
*
|
67
|
+
* Uncommitted: This API is subject to change in the future.
|
68
68
|
*
|
69
69
|
* @param numCandidates An integer value.
|
70
70
|
*/
|
@@ -78,7 +78,7 @@ class VectorQuery {
|
|
78
78
|
/**
|
79
79
|
* Creates a vector query.
|
80
80
|
*
|
81
|
-
*
|
81
|
+
* Uncommitted: This API is subject to change in the future.
|
82
82
|
*
|
83
83
|
* @param fieldName The name of the field in the JSON document that holds the vector.
|
84
84
|
* @param vector List of floating point values that represent the vector.
|
@@ -91,7 +91,7 @@ exports.VectorQuery = VectorQuery;
|
|
91
91
|
/**
|
92
92
|
* Represents a vector search.
|
93
93
|
*
|
94
|
-
*
|
94
|
+
* Uncommitted: This API is subject to change in the future.
|
95
95
|
*
|
96
96
|
* @category Full Text Search
|
97
97
|
*/
|
@@ -121,7 +121,7 @@ class VectorSearch {
|
|
121
121
|
/**
|
122
122
|
* Creates a vector search.
|
123
123
|
*
|
124
|
-
*
|
124
|
+
* Uncommitted: This API is subject to change in the future.
|
125
125
|
*
|
126
126
|
* @param query A vectory query that should be a part of the vector search.
|
127
127
|
*/
|
package/package.json
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
"type": "git",
|
55
55
|
"url": "http://github.com/couchbase/couchnode.git"
|
56
56
|
},
|
57
|
-
"version": "4.
|
57
|
+
"version": "4.3.0",
|
58
58
|
"config": {
|
59
59
|
"native": false
|
60
60
|
},
|
@@ -79,12 +79,12 @@
|
|
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-x64-napi": "4.
|
86
|
-
"@couchbase/couchbase-linux-x64-napi": "4.
|
87
|
-
"@couchbase/couchbase-win32-x64-napi": "4.
|
82
|
+
"@couchbase/couchbase-darwin-arm64-napi": "4.3.0",
|
83
|
+
"@couchbase/couchbase-darwin-x64-napi": "4.3.0",
|
84
|
+
"@couchbase/couchbase-linux-arm64-napi": "4.3.0",
|
85
|
+
"@couchbase/couchbase-linuxmusl-x64-napi": "4.3.0",
|
86
|
+
"@couchbase/couchbase-linux-x64-napi": "4.3.0",
|
87
|
+
"@couchbase/couchbase-win32-x64-napi": "4.3.0"
|
88
88
|
},
|
89
89
|
"files": [
|
90
90
|
"LICENSE",
|
package/src/instance.cpp
CHANGED
@@ -6,7 +6,17 @@ namespace couchnode
|
|
6
6
|
Instance::Instance()
|
7
7
|
: _cluster(couchbase::core::cluster(_io))
|
8
8
|
{
|
9
|
-
_ioThread = std::thread([this]() {
|
9
|
+
_ioThread = std::thread([this]() {
|
10
|
+
try {
|
11
|
+
_io.run();
|
12
|
+
} catch (const std::exception &e) {
|
13
|
+
CB_LOG_ERROR(e.what());
|
14
|
+
throw;
|
15
|
+
} catch (...) {
|
16
|
+
CB_LOG_ERROR("Unknown exception");
|
17
|
+
throw;
|
18
|
+
}
|
19
|
+
});
|
10
20
|
}
|
11
21
|
|
12
22
|
Instance::~Instance()
|
package/src/instance.hpp
CHANGED
package/src/jstocbpp_autogen.hpp
CHANGED
@@ -3916,6 +3916,10 @@ struct js_to_cbpp_t<couchbase::core::operations::search_request> {
|
|
3916
3916
|
jsObj.Get("client_context_id"));
|
3917
3917
|
js_to_cbpp<std::optional<std::chrono::milliseconds>>(
|
3918
3918
|
cppObj.timeout, jsObj.Get("timeout"));
|
3919
|
+
js_to_cbpp<std::optional<bool>>(cppObj.log_request,
|
3920
|
+
jsObj.Get("log_request"));
|
3921
|
+
js_to_cbpp<std::optional<bool>>(cppObj.log_response,
|
3922
|
+
jsObj.Get("log_response"));
|
3919
3923
|
js_to_cbpp<std::string>(cppObj.body_str, jsObj.Get("body_str"));
|
3920
3924
|
// parent_span
|
3921
3925
|
return cppObj;
|
@@ -3984,6 +3988,10 @@ struct js_to_cbpp_t<couchbase::core::operations::search_request> {
|
|
3984
3988
|
resObj.Set("timeout",
|
3985
3989
|
cbpp_to_js<std::optional<std::chrono::milliseconds>>(
|
3986
3990
|
env, cppObj.timeout));
|
3991
|
+
resObj.Set("log_request",
|
3992
|
+
cbpp_to_js<std::optional<bool>>(env, cppObj.log_request));
|
3993
|
+
resObj.Set("log_response",
|
3994
|
+
cbpp_to_js<std::optional<bool>>(env, cppObj.log_response));
|
3987
3995
|
resObj.Set("body_str", cbpp_to_js<std::string>(env, cppObj.body_str));
|
3988
3996
|
// parent_span
|
3989
3997
|
return resObj;
|
@@ -47,7 +47,8 @@ struct js_to_cbpp_t<cbtxns::transactions_config> {
|
|
47
47
|
cppObj.durability_level(durability_level.value());
|
48
48
|
}
|
49
49
|
|
50
|
-
auto timeout = js_to_cbpp<std::optional<std::chrono::milliseconds>>(
|
50
|
+
auto timeout = js_to_cbpp<std::optional<std::chrono::milliseconds>>(
|
51
|
+
jsObj.Get("timeout"));
|
51
52
|
if (timeout.has_value()) {
|
52
53
|
cppObj.timeout(timeout.value());
|
53
54
|
}
|
@@ -81,6 +82,12 @@ struct js_to_cbpp_t<cbtxns::transactions_config> {
|
|
81
82
|
cleanup_client_attempts.value());
|
82
83
|
}
|
83
84
|
|
85
|
+
auto keyspace = js_to_cbpp<std::optional<cbtxns::transaction_keyspace>>(
|
86
|
+
jsObj.Get("metadata_collection"));
|
87
|
+
if (keyspace.has_value()) {
|
88
|
+
cppObj.metadata_collection(keyspace.value());
|
89
|
+
}
|
90
|
+
|
84
91
|
return cppObj;
|
85
92
|
}
|
86
93
|
};
|
@@ -99,7 +106,8 @@ struct js_to_cbpp_t<cbtxns::transaction_options> {
|
|
99
106
|
cppObj.durability_level(durability_level.value());
|
100
107
|
}
|
101
108
|
|
102
|
-
auto timeout = js_to_cbpp<std::optional<std::chrono::milliseconds>>(
|
109
|
+
auto timeout = js_to_cbpp<std::optional<std::chrono::milliseconds>>(
|
110
|
+
jsObj.Get("timeout"));
|
103
111
|
if (timeout.has_value()) {
|
104
112
|
cppObj.timeout(timeout.value());
|
105
113
|
}
|
@@ -197,6 +205,34 @@ struct js_to_cbpp_t<cbcoretxns::document_metadata> {
|
|
197
205
|
}
|
198
206
|
};
|
199
207
|
|
208
|
+
template <>
|
209
|
+
struct js_to_cbpp_t<cbtxns::transaction_keyspace> {
|
210
|
+
static inline cbtxns::transaction_keyspace from_js(Napi::Value jsVal)
|
211
|
+
{
|
212
|
+
auto jsObj = jsVal.ToObject();
|
213
|
+
auto bucket_name = js_to_cbpp<std::string>(jsObj.Get("bucket_name"));
|
214
|
+
auto scope_name =
|
215
|
+
js_to_cbpp<std::optional<std::string>>(jsObj.Get("scope_name"));
|
216
|
+
auto collection_name = js_to_cbpp<std::optional<std::string>>(
|
217
|
+
jsObj.Get("collection_name"));
|
218
|
+
if (scope_name.has_value() && collection_name.has_value()) {
|
219
|
+
return cbtxns::transaction_keyspace(bucket_name, scope_name.value(),
|
220
|
+
collection_name.value());
|
221
|
+
}
|
222
|
+
return cbtxns::transaction_keyspace(bucket_name);
|
223
|
+
}
|
224
|
+
|
225
|
+
static inline Napi::Value to_js(Napi::Env env,
|
226
|
+
const cbtxns::transaction_keyspace &res)
|
227
|
+
{
|
228
|
+
auto resObj = Napi::Object::New(env);
|
229
|
+
resObj.Set("bucket", cbpp_to_js(env, res.bucket));
|
230
|
+
resObj.Set("scope", cbpp_to_js(env, res.scope));
|
231
|
+
resObj.Set("collection", cbpp_to_js(env, res.collection));
|
232
|
+
return resObj;
|
233
|
+
}
|
234
|
+
};
|
235
|
+
|
200
236
|
template <>
|
201
237
|
struct js_to_cbpp_t<cbcoretxns::transaction_get_result> {
|
202
238
|
static inline cbcoretxns::transaction_get_result from_js(Napi::Value jsVal)
|
@@ -387,7 +423,8 @@ struct js_to_cbpp_t<cbcoretxns::op_exception> {
|
|
387
423
|
const cbcoretxns::op_exception &err)
|
388
424
|
{
|
389
425
|
Napi::Error jsErr = Napi::Error::New(env, "transaction_exception");
|
390
|
-
jsErr.Set("ctxtype",
|
426
|
+
jsErr.Set("ctxtype",
|
427
|
+
Napi::String::New(env, "transaction_op_exception"));
|
391
428
|
jsErr.Set("ctx", cbpp_to_js(env, err.ctx()));
|
392
429
|
jsErr.Set("cause", cbpp_to_js(env, err.cause()));
|
393
430
|
return jsErr.Value();
|
package/src/transactions.cpp
CHANGED
@@ -32,7 +32,18 @@ Transactions::Transactions(const Napi::CallbackInfo &info)
|
|
32
32
|
auto cluster = Connection::Unwrap(clusterJsObj)->cluster();
|
33
33
|
|
34
34
|
auto txnsConfig = jsToCbpp<cbtxns::transactions_config>(configJsObj);
|
35
|
-
|
35
|
+
std::future<
|
36
|
+
std::pair<std::error_code, std::shared_ptr<cbcoretxns::transactions>>>
|
37
|
+
future = cbcoretxns::transactions::create(cluster, txnsConfig);
|
38
|
+
std::pair<std::error_code, std::shared_ptr<cbcoretxns::transactions>>
|
39
|
+
result = future.get();
|
40
|
+
if (result.first.value()) {
|
41
|
+
Napi::Error err = Napi::Error::New(info.Env(), result.first.message());
|
42
|
+
err.Set("code", Napi::Number::New(info.Env(), result.first.value()));
|
43
|
+
throw err;
|
44
|
+
}
|
45
|
+
_impl.reset();
|
46
|
+
_impl = std::move(result.second);
|
36
47
|
}
|
37
48
|
|
38
49
|
Transactions::~Transactions()
|