couchbase 4.2.10 → 4.2.11

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.
Files changed (79) hide show
  1. package/deps/couchbase-cxx-client/CMakeLists.txt +1 -0
  2. package/deps/couchbase-cxx-client/cmake/ThirdPartyDependencies.cmake +2 -0
  3. package/deps/couchbase-cxx-client/core/bucket.cxx +25 -10
  4. package/deps/couchbase-cxx-client/core/bucket.hxx +1 -0
  5. package/deps/couchbase-cxx-client/core/cluster.cxx +29 -3
  6. package/deps/couchbase-cxx-client/core/impl/collection.cxx +2 -2
  7. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +6 -6
  8. package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +7 -1
  9. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +10 -0
  10. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +35 -1
  11. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +2 -0
  12. package/deps/couchbase-cxx-client/core/management/design_document.hxx +1 -1
  13. package/deps/couchbase-cxx-client/core/meta/features.hxx +16 -1
  14. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +1 -1
  15. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +1 -1
  16. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +2 -2
  17. package/deps/couchbase-cxx-client/core/operations/document_search.cxx +10 -10
  18. package/deps/couchbase-cxx-client/core/operations/document_view.cxx +3 -0
  19. package/deps/couchbase-cxx-client/core/operations/document_view.hxx +1 -0
  20. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +24 -13
  21. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +1 -1
  22. package/deps/couchbase-cxx-client/core/origin.cxx +14 -0
  23. package/deps/couchbase-cxx-client/core/origin.hxx +6 -0
  24. package/deps/couchbase-cxx-client/core/protocol/status.cxx +2 -0
  25. package/deps/couchbase-cxx-client/core/protocol/status.hxx +1 -0
  26. package/deps/couchbase-cxx-client/core/range_scan_load_balancer.cxx +141 -0
  27. package/deps/couchbase-cxx-client/core/range_scan_load_balancer.hxx +64 -0
  28. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +224 -336
  29. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.hxx +5 -6
  30. package/deps/couchbase-cxx-client/core/range_scan_orchestrator_options.hxx +6 -4
  31. package/deps/couchbase-cxx-client/core/scan_result.hxx +1 -11
  32. package/deps/couchbase-cxx-client/core/topology/capabilities.hxx +70 -1
  33. package/deps/couchbase-cxx-client/core/topology/capabilities_fmt.hxx +30 -2
  34. package/deps/couchbase-cxx-client/core/topology/configuration.hxx +1 -34
  35. package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +2 -2
  36. package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +43 -20
  37. package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal.hxx +5 -0
  38. package/deps/couchbase-cxx-client/couchbase/bucket.hxx +2 -2
  39. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +1 -1
  40. package/deps/couchbase-cxx-client/couchbase/collection.hxx +1 -0
  41. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +80 -11
  42. package/deps/couchbase-cxx-client/couchbase/error_context.hxx +1 -0
  43. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +3 -1
  44. package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +2 -2
  45. package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +1 -0
  46. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +6 -8
  47. package/deps/couchbase-cxx-client/couchbase/scope.hxx +1 -1
  48. package/deps/couchbase-cxx-client/couchbase/search_options.hxx +2 -2
  49. package/deps/couchbase-cxx-client/couchbase/search_result.hxx +1 -1
  50. package/deps/couchbase-cxx-client/couchbase/subdocument_error_context.hxx +1 -0
  51. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +1 -1
  52. package/deps/couchbase-cxx-client/couchbase-sdk-cxx-black-duck-manifest.yaml +1 -0
  53. package/dist/binding.d.ts +24 -2
  54. package/dist/bindingutilities.d.ts +11 -3
  55. package/dist/bindingutilities.js +33 -7
  56. package/dist/couchbase.d.ts +1 -0
  57. package/dist/couchbase.js +1 -0
  58. package/dist/queryindexmanager.d.ts +4 -4
  59. package/dist/queryindexmanager.js +7 -7
  60. package/dist/scope.d.ts +21 -0
  61. package/dist/scope.js +34 -0
  62. package/dist/scopesearchindexmanager.d.ts +116 -0
  63. package/dist/scopesearchindexmanager.js +406 -0
  64. package/dist/sdspecs.js +10 -9
  65. package/dist/sdutils.d.ts +1 -0
  66. package/dist/sdutils.js +4 -0
  67. package/dist/searchexecutor.d.ts +3 -1
  68. package/dist/searchexecutor.js +9 -2
  69. package/dist/searchindexmanager.d.ts +58 -3
  70. package/dist/searchindexmanager.js +188 -104
  71. package/dist/viewexecutor.js +13 -9
  72. package/dist/viewindexmanager.d.ts +70 -7
  73. package/dist/viewindexmanager.js +236 -103
  74. package/dist/viewtypes.d.ts +26 -0
  75. package/dist/viewtypes.js +17 -1
  76. package/package.json +7 -7
  77. package/src/constants.cpp +1 -0
  78. package/src/jstocbpp_autogen.hpp +89 -7
  79. package/deps/couchbase-cxx-client/core/scan_options.hxx +0 -44
@@ -1,5 +1,6 @@
1
1
  import { Cluster } from './cluster';
2
2
  import { NodeCallback } from './utilities';
3
+ import { CppManagementSearchIndex } from './binding';
3
4
  /**
4
5
  * Provides information about a search index. This class is currently
5
6
  * incomplete and must be casted from `any` in TypeScript.
@@ -57,15 +58,62 @@ export interface ISearchIndex {
57
58
  *
58
59
  * @category Management
59
60
  */
60
- export declare class SearchIndex {
61
+ export declare class SearchIndex implements ISearchIndex {
62
+ /**
63
+ * The UUID of the search index. Used for updates to ensure consistency.
64
+ */
65
+ uuid?: string;
61
66
  /**
62
67
  * The name of the search index.
63
68
  */
64
69
  name: string;
70
+ /**
71
+ * Name of the source of the data (ie: the bucket name).
72
+ */
73
+ sourceName: string;
74
+ /**
75
+ * The type of index to use (fulltext-index or fulltext-alias).
76
+ */
77
+ type: string;
78
+ /**
79
+ * Parameters to specify such as the store type and mappins.
80
+ */
81
+ params: {
82
+ [key: string]: any;
83
+ };
84
+ /**
85
+ * The UUID of the data source.
86
+ */
87
+ sourceUuid: string;
88
+ /**
89
+ * Extra parameters for the source. These are usually things like advanced
90
+ * connection options and tuning parameters.
91
+ */
92
+ sourceParams: {
93
+ [key: string]: any;
94
+ };
95
+ /**
96
+ * The type of the source (couchbase or nil).
97
+ */
98
+ sourceType: string;
99
+ /**
100
+ * Plan properties such as the number of replicas and number of partitions.
101
+ */
102
+ planParams: {
103
+ [key: string]: any;
104
+ };
65
105
  /**
66
106
  * @internal
67
107
  */
68
108
  constructor(data: SearchIndex);
109
+ /**
110
+ * @internal
111
+ */
112
+ static _toCppData(data: ISearchIndex): any;
113
+ /**
114
+ * @internal
115
+ */
116
+ static _fromCppData(data: CppManagementSearchIndex): SearchIndex;
69
117
  }
70
118
  /**
71
119
  * @category Management
@@ -187,7 +235,6 @@ export declare class SearchIndexManager {
187
235
  * @internal
188
236
  */
189
237
  constructor(cluster: Cluster);
190
- private get _http();
191
238
  /**
192
239
  * Returns an index by it's name.
193
240
  *
@@ -267,6 +314,14 @@ export declare class SearchIndexManager {
267
314
  * @param callback A node-style callback to be invoked after execution.
268
315
  */
269
316
  freezePlan(indexName: string, options?: FreezeSearchPlanOptions, callback?: NodeCallback<void>): Promise<void>;
317
+ /**
318
+ * Unfreezes the indexing plan for execution of queries.
319
+ *
320
+ * @param indexName The name of the index to freeze the plan of.
321
+ * @param options Optional parameters for this operation.
322
+ * @param callback A node-style callback to be invoked after execution.
323
+ */
324
+ unfreezePlan(indexName: string, options?: UnfreezeSearchPlanOptions, callback?: NodeCallback<void>): Promise<void>;
270
325
  /**
271
326
  * Performs analysis of a specific document by an index.
272
327
  *
@@ -275,5 +330,5 @@ export declare class SearchIndexManager {
275
330
  * @param options Optional parameters for this operation.
276
331
  * @param callback A node-style callback to be invoked after execution.
277
332
  */
278
- analyzeDocument(indexName: string, document: any, options?: AnalyzeSearchDocumentOptions, callback?: NodeCallback<void>): Promise<void>;
333
+ analyzeDocument(indexName: string, document: any, options?: AnalyzeSearchDocumentOptions, callback?: NodeCallback<any>): Promise<any>;
279
334
  }
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SearchIndexManager = exports.SearchIndex = void 0;
4
- const errors_1 = require("./errors");
5
- const httpexecutor_1 = require("./httpexecutor");
6
4
  const utilities_1 = require("./utilities");
5
+ const bindingutilities_1 = require("./bindingutilities");
7
6
  /**
8
7
  * This class is currently incomplete and must be casted to `any` in
9
8
  * TypeScript to be used.
@@ -15,7 +14,57 @@ class SearchIndex {
15
14
  * @internal
16
15
  */
17
16
  constructor(data) {
17
+ this.uuid = data.uuid;
18
18
  this.name = data.name;
19
+ this.sourceName = data.sourceName;
20
+ this.type = data.type;
21
+ this.params = data.params;
22
+ this.sourceUuid = data.sourceUuid;
23
+ this.sourceParams = data.sourceParams;
24
+ this.sourceType = data.sourceType;
25
+ this.planParams = data.planParams;
26
+ }
27
+ /**
28
+ * @internal
29
+ */
30
+ static _toCppData(data) {
31
+ return {
32
+ uuid: data.uuid,
33
+ name: data.name,
34
+ type: data.type,
35
+ params_json: JSON.stringify(data.params),
36
+ source_uuid: data.sourceUuid,
37
+ source_name: data.sourceName,
38
+ source_type: data.sourceType,
39
+ source_params_json: JSON.stringify(data.sourceParams),
40
+ plan_params_json: JSON.stringify(data.planParams),
41
+ };
42
+ }
43
+ /**
44
+ * @internal
45
+ */
46
+ static _fromCppData(data) {
47
+ const idx = new SearchIndex({
48
+ uuid: data.uuid,
49
+ name: data.name,
50
+ type: data.type,
51
+ params: {},
52
+ sourceUuid: data.source_uuid,
53
+ sourceName: data.source_name,
54
+ sourceType: data.source_type,
55
+ sourceParams: {},
56
+ planParams: {},
57
+ });
58
+ if (data.params_json) {
59
+ idx.params = JSON.parse(data.params_json);
60
+ }
61
+ if (data.source_params_json) {
62
+ idx.sourceParams = JSON.parse(data.source_params_json);
63
+ }
64
+ if (data.plan_params_json) {
65
+ idx.planParams = JSON.parse(data.plan_params_json);
66
+ }
67
+ return idx;
19
68
  }
20
69
  }
21
70
  exports.SearchIndex = SearchIndex;
@@ -32,9 +81,6 @@ class SearchIndexManager {
32
81
  constructor(cluster) {
33
82
  this._cluster = cluster;
34
83
  }
35
- get _http() {
36
- return new httpexecutor_1.HttpExecutor(this._cluster.conn);
37
- }
38
84
  /**
39
85
  * Returns an index by it's name.
40
86
  *
@@ -51,18 +97,18 @@ class SearchIndexManager {
51
97
  options = {};
52
98
  }
53
99
  const timeout = options.timeout || this._cluster.managementTimeout;
54
- return utilities_1.PromiseHelper.wrapAsync(async () => {
55
- const res = await this._http.request({
56
- type: httpexecutor_1.HttpServiceType.Search,
57
- method: httpexecutor_1.HttpMethod.Get,
58
- path: `/api/index/${indexName}`,
100
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
101
+ this._cluster.conn.managementSearchIndexGet({
102
+ index_name: indexName,
59
103
  timeout: timeout,
104
+ }, (cppErr, resp) => {
105
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
106
+ if (err) {
107
+ return wrapCallback(err, null);
108
+ }
109
+ const index = SearchIndex._fromCppData(resp.index);
110
+ wrapCallback(null, index);
60
111
  });
61
- if (res.statusCode !== 200) {
62
- throw new errors_1.IndexNotFoundError();
63
- }
64
- const idxData = JSON.parse(res.body.toString());
65
- return idxData.indexDef;
66
112
  }, callback);
67
113
  }
68
114
  /**
@@ -80,18 +126,17 @@ class SearchIndexManager {
80
126
  options = {};
81
127
  }
82
128
  const timeout = options.timeout || this._cluster.managementTimeout;
83
- return utilities_1.PromiseHelper.wrapAsync(async () => {
84
- const res = await this._http.request({
85
- type: httpexecutor_1.HttpServiceType.Search,
86
- method: httpexecutor_1.HttpMethod.Get,
87
- path: `/api/index`,
129
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
130
+ this._cluster.conn.managementSearchIndexGetAll({
88
131
  timeout: timeout,
132
+ }, (cppErr, resp) => {
133
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
134
+ if (err) {
135
+ return wrapCallback(err, null);
136
+ }
137
+ const indexes = resp.indexes.map((indexData) => SearchIndex._fromCppData(indexData));
138
+ wrapCallback(null, indexes);
89
139
  });
90
- if (res.statusCode !== 200) {
91
- throw new Error('failed to fetch search indices');
92
- }
93
- const idxsData = JSON.parse(res.body.toString());
94
- return Object.values(idxsData.indexDefs.indexDefs);
95
140
  }, callback);
96
141
  }
97
142
  /**
@@ -109,20 +154,18 @@ class SearchIndexManager {
109
154
  if (!options) {
110
155
  options = {};
111
156
  }
112
- const indexName = indexDefinition.name;
113
157
  const timeout = options.timeout || this._cluster.managementTimeout;
114
- return utilities_1.PromiseHelper.wrapAsync(async () => {
115
- const res = await this._http.request({
116
- type: httpexecutor_1.HttpServiceType.Search,
117
- method: httpexecutor_1.HttpMethod.Put,
118
- path: `/api/index/${indexName}`,
119
- contentType: 'application/json',
120
- body: JSON.stringify(indexDefinition),
158
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
159
+ this._cluster.conn.managementSearchIndexUpsert({
160
+ index: SearchIndex._toCppData(indexDefinition),
121
161
  timeout: timeout,
162
+ }, (cppErr) => {
163
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
164
+ if (err) {
165
+ return wrapCallback(err, null);
166
+ }
167
+ wrapCallback(err);
122
168
  });
123
- if (res.statusCode !== 200) {
124
- throw new Error('failed to create index');
125
- }
126
169
  }, callback);
127
170
  }
128
171
  /**
@@ -141,17 +184,17 @@ class SearchIndexManager {
141
184
  options = {};
142
185
  }
143
186
  const timeout = options.timeout || this._cluster.managementTimeout;
144
- return utilities_1.PromiseHelper.wrapAsync(async () => {
145
- const res = await this._http.request({
146
- type: httpexecutor_1.HttpServiceType.Search,
147
- method: httpexecutor_1.HttpMethod.Delete,
148
- path: `/api/index/${indexName}`,
187
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
188
+ this._cluster.conn.managementSearchIndexDrop({
189
+ index_name: indexName,
149
190
  timeout: timeout,
191
+ }, (cppErr) => {
192
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
193
+ if (err) {
194
+ return wrapCallback(err, null);
195
+ }
196
+ wrapCallback(err);
150
197
  });
151
- if (res.statusCode !== 200) {
152
- throw new Error('failed to delete search index');
153
- }
154
- return JSON.parse(res.body.toString());
155
198
  }, callback);
156
199
  }
157
200
  /**
@@ -170,17 +213,17 @@ class SearchIndexManager {
170
213
  options = {};
171
214
  }
172
215
  const timeout = options.timeout || this._cluster.managementTimeout;
173
- return utilities_1.PromiseHelper.wrapAsync(async () => {
174
- const res = await this._http.request({
175
- type: httpexecutor_1.HttpServiceType.Search,
176
- method: httpexecutor_1.HttpMethod.Get,
177
- path: `/api/index/${indexName}/count`,
216
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
217
+ this._cluster.conn.managementSearchIndexGetDocumentsCount({
218
+ index_name: indexName,
178
219
  timeout: timeout,
220
+ }, (cppErr, resp) => {
221
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
222
+ if (err) {
223
+ return wrapCallback(err, null);
224
+ }
225
+ wrapCallback(null, resp.count);
179
226
  });
180
- if (res.statusCode !== 200) {
181
- throw new Error('failed to get search indexed documents count');
182
- }
183
- return JSON.parse(res.body.toString()).count;
184
227
  }, callback);
185
228
  }
186
229
  /**
@@ -199,16 +242,18 @@ class SearchIndexManager {
199
242
  options = {};
200
243
  }
201
244
  const timeout = options.timeout || this._cluster.managementTimeout;
202
- return utilities_1.PromiseHelper.wrapAsync(async () => {
203
- const res = await this._http.request({
204
- type: httpexecutor_1.HttpServiceType.Search,
205
- method: httpexecutor_1.HttpMethod.Post,
206
- path: `/api/index/${indexName}/ingestControl/pause`,
245
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
246
+ this._cluster.conn.managementSearchIndexControlIngest({
247
+ index_name: indexName,
248
+ pause: true,
207
249
  timeout: timeout,
250
+ }, (cppErr) => {
251
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
252
+ if (err) {
253
+ return wrapCallback(err, null);
254
+ }
255
+ wrapCallback(err);
208
256
  });
209
- if (res.statusCode !== 200) {
210
- throw new Error('failed to pause search index ingestion');
211
- }
212
257
  }, callback);
213
258
  }
214
259
  /**
@@ -227,16 +272,18 @@ class SearchIndexManager {
227
272
  options = {};
228
273
  }
229
274
  const timeout = options.timeout || this._cluster.managementTimeout;
230
- return utilities_1.PromiseHelper.wrapAsync(async () => {
231
- const res = await this._http.request({
232
- type: httpexecutor_1.HttpServiceType.Search,
233
- method: httpexecutor_1.HttpMethod.Post,
234
- path: `/api/index/${indexName}/ingestControl/resume`,
275
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
276
+ this._cluster.conn.managementSearchIndexControlIngest({
277
+ index_name: indexName,
278
+ pause: false,
235
279
  timeout: timeout,
280
+ }, (cppErr) => {
281
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
282
+ if (err) {
283
+ return wrapCallback(err, null);
284
+ }
285
+ wrapCallback(err);
236
286
  });
237
- if (res.statusCode !== 200) {
238
- throw new Error('failed to resume search index ingestion');
239
- }
240
287
  }, callback);
241
288
  }
242
289
  /**
@@ -255,16 +302,18 @@ class SearchIndexManager {
255
302
  options = {};
256
303
  }
257
304
  const timeout = options.timeout || this._cluster.managementTimeout;
258
- return utilities_1.PromiseHelper.wrapAsync(async () => {
259
- const res = await this._http.request({
260
- type: httpexecutor_1.HttpServiceType.Search,
261
- method: httpexecutor_1.HttpMethod.Post,
262
- path: `/api/index/${indexName}/queryControl/allow`,
305
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
306
+ this._cluster.conn.managementSearchIndexControlQuery({
307
+ index_name: indexName,
308
+ allow: true,
263
309
  timeout: timeout,
310
+ }, (cppErr) => {
311
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
312
+ if (err) {
313
+ return wrapCallback(err, null);
314
+ }
315
+ wrapCallback(err);
264
316
  });
265
- if (res.statusCode !== 200) {
266
- throw new Error('failed to allow search index quering');
267
- }
268
317
  }, callback);
269
318
  }
270
319
  /**
@@ -283,16 +332,18 @@ class SearchIndexManager {
283
332
  options = {};
284
333
  }
285
334
  const timeout = options.timeout || this._cluster.managementTimeout;
286
- return utilities_1.PromiseHelper.wrapAsync(async () => {
287
- const res = await this._http.request({
288
- type: httpexecutor_1.HttpServiceType.Search,
289
- method: httpexecutor_1.HttpMethod.Post,
290
- path: `/api/index/${indexName}/queryControl/disallow`,
335
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
336
+ this._cluster.conn.managementSearchIndexControlQuery({
337
+ index_name: indexName,
338
+ allow: false,
291
339
  timeout: timeout,
340
+ }, (cppErr) => {
341
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
342
+ if (err) {
343
+ return wrapCallback(err, null);
344
+ }
345
+ wrapCallback(err);
292
346
  });
293
- if (res.statusCode !== 200) {
294
- throw new Error('failed to disallow search index quering');
295
- }
296
347
  }, callback);
297
348
  }
298
349
  /**
@@ -311,16 +362,48 @@ class SearchIndexManager {
311
362
  options = {};
312
363
  }
313
364
  const timeout = options.timeout || this._cluster.managementTimeout;
314
- return utilities_1.PromiseHelper.wrapAsync(async () => {
315
- const res = await this._http.request({
316
- type: httpexecutor_1.HttpServiceType.Search,
317
- method: httpexecutor_1.HttpMethod.Post,
318
- path: `/api/index/${indexName}/planFreezeControl/freeze`,
365
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
366
+ this._cluster.conn.managementSearchIndexControlPlanFreeze({
367
+ index_name: indexName,
368
+ freeze: true,
369
+ timeout: timeout,
370
+ }, (cppErr) => {
371
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
372
+ if (err) {
373
+ return wrapCallback(err, null);
374
+ }
375
+ wrapCallback(err);
376
+ });
377
+ }, callback);
378
+ }
379
+ /**
380
+ * Unfreezes the indexing plan for execution of queries.
381
+ *
382
+ * @param indexName The name of the index to freeze the plan of.
383
+ * @param options Optional parameters for this operation.
384
+ * @param callback A node-style callback to be invoked after execution.
385
+ */
386
+ async unfreezePlan(indexName, options, callback) {
387
+ if (options instanceof Function) {
388
+ callback = arguments[1];
389
+ options = undefined;
390
+ }
391
+ if (!options) {
392
+ options = {};
393
+ }
394
+ const timeout = options.timeout || this._cluster.managementTimeout;
395
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
396
+ this._cluster.conn.managementSearchIndexControlPlanFreeze({
397
+ index_name: indexName,
398
+ freeze: false,
319
399
  timeout: timeout,
400
+ }, (cppErr) => {
401
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
402
+ if (err) {
403
+ return wrapCallback(err, null);
404
+ }
405
+ wrapCallback(err);
320
406
  });
321
- if (res.statusCode !== 200) {
322
- throw new Error('failed to freeze search index plan');
323
- }
324
407
  }, callback);
325
408
  }
326
409
  /**
@@ -340,18 +423,19 @@ class SearchIndexManager {
340
423
  options = {};
341
424
  }
342
425
  const timeout = options.timeout || this._cluster.managementTimeout;
343
- return utilities_1.PromiseHelper.wrapAsync(async () => {
344
- const res = await this._http.request({
345
- type: httpexecutor_1.HttpServiceType.Search,
346
- method: httpexecutor_1.HttpMethod.Post,
347
- path: `/api/index/${indexName}/analyzeDoc`,
348
- body: JSON.stringify(document),
426
+ return utilities_1.PromiseHelper.wrap((wrapCallback) => {
427
+ this._cluster.conn.managementSearchIndexAnalyzeDocument({
428
+ index_name: indexName,
429
+ encoded_document: JSON.stringify(document),
349
430
  timeout: timeout,
431
+ }, (cppErr, resp) => {
432
+ const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
433
+ if (err) {
434
+ return wrapCallback(err, null);
435
+ }
436
+ const result = JSON.parse(resp.analysis);
437
+ wrapCallback(result, null);
350
438
  });
351
- if (res.statusCode !== 200) {
352
- throw new Error('failed to perform search index document analysis');
353
- }
354
- return JSON.parse(res.body.toString()).analyze;
355
439
  }, callback);
356
440
  }
357
441
  }
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.ViewExecutor = void 0;
7
4
  /* eslint jsdoc/require-jsdoc: off */
8
- const binding_1 = __importDefault(require("./binding"));
9
5
  const bindingutilities_1 = require("./bindingutilities");
10
6
  const streamablepromises_1 = require("./streamablepromises");
11
7
  const viewtypes_1 = require("./viewtypes");
@@ -29,6 +25,7 @@ class ViewExecutor {
29
25
  * @internal
30
26
  */
31
27
  query(designDoc, viewName, options) {
28
+ var _a;
32
29
  const emitter = new streamablepromises_1.StreamableRowPromise((rows, meta) => {
33
30
  return new viewtypes_1.ViewResult({
34
31
  rows: rows,
@@ -36,12 +33,18 @@ class ViewExecutor {
36
33
  });
37
34
  });
38
35
  const timeout = options.timeout || this._cluster.viewTimeout;
36
+ const raw = options.raw || {};
37
+ const ns = (_a = options.namespace) !== null && _a !== void 0 ? _a : viewtypes_1.DesignDocumentNamespace.Production;
38
+ let fullSet = options.full_set;
39
+ if (typeof options.fullSet !== 'undefined') {
40
+ fullSet = options.fullSet;
41
+ }
39
42
  this._cluster.conn.documentView({
40
43
  timeout: timeout,
41
44
  bucket_name: this._bucket.name,
42
45
  document_name: designDoc,
43
46
  view_name: viewName,
44
- ns: binding_1.default.design_document_namespace.production,
47
+ ns: (0, bindingutilities_1.designDocumentNamespaceToCpp)(ns),
45
48
  limit: options.limit,
46
49
  skip: options.skip,
47
50
  consistency: (0, bindingutilities_1.viewScanConsistencyToCpp)(options.scanConsistency),
@@ -55,10 +58,10 @@ class ViewExecutor {
55
58
  : undefined,
56
59
  inclusive_end: options.range ? options.range.inclusiveEnd : undefined,
57
60
  start_key_doc_id: options.idRange && options.idRange.start
58
- ? JSON.stringify(options.idRange.start)
61
+ ? options.idRange.start
59
62
  : undefined,
60
63
  end_key_doc_id: options.idRange && options.idRange.end
61
- ? JSON.stringify(options.idRange.end)
64
+ ? options.idRange.end
62
65
  : undefined,
63
66
  reduce: options.reduce,
64
67
  group: options.group,
@@ -66,7 +69,8 @@ class ViewExecutor {
66
69
  order: (0, bindingutilities_1.viewOrderingToCpp)(options.order),
67
70
  debug: false,
68
71
  query_string: [],
69
- raw: {},
72
+ raw: raw,
73
+ full_set: fullSet,
70
74
  }, (cppErr, resp) => {
71
75
  const err = (0, bindingutilities_1.errorFromCpp)(cppErr);
72
76
  if (err) {
@@ -78,7 +82,7 @@ class ViewExecutor {
78
82
  emitter.emit('row', new viewtypes_1.ViewRow({
79
83
  value: JSON.parse(row.value),
80
84
  id: row.id,
81
- key: row.key,
85
+ key: JSON.parse(row.key),
82
86
  }));
83
87
  });
84
88
  {