mongodb 4.0.0 → 4.1.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/README.md +62 -30
- package/lib/bson.js +1 -0
- package/lib/bson.js.map +1 -1
- package/lib/bulk/common.js +53 -30
- package/lib/bulk/common.js.map +1 -1
- package/lib/bulk/ordered.js +3 -2
- package/lib/bulk/ordered.js.map +1 -1
- package/lib/bulk/unordered.js +3 -2
- package/lib/bulk/unordered.js.map +1 -1
- package/lib/change_stream.js +23 -13
- package/lib/change_stream.js.map +1 -1
- package/lib/cmap/auth/auth_provider.js +2 -1
- package/lib/cmap/auth/auth_provider.js.map +1 -1
- package/lib/cmap/auth/gssapi.js +5 -4
- package/lib/cmap/auth/gssapi.js.map +1 -1
- package/lib/cmap/auth/mongo_credentials.js +9 -5
- package/lib/cmap/auth/mongo_credentials.js.map +1 -1
- package/lib/cmap/auth/mongocr.js +2 -2
- package/lib/cmap/auth/mongocr.js.map +1 -1
- package/lib/cmap/auth/mongodb_aws.js +32 -32
- package/lib/cmap/auth/mongodb_aws.js.map +1 -1
- package/lib/cmap/auth/plain.js +1 -1
- package/lib/cmap/auth/plain.js.map +1 -1
- package/lib/cmap/auth/scram.js +15 -12
- package/lib/cmap/auth/scram.js.map +1 -1
- package/lib/cmap/auth/x509.js +2 -2
- package/lib/cmap/auth/x509.js.map +1 -1
- package/lib/cmap/command_monitoring_events.js +26 -10
- package/lib/cmap/command_monitoring_events.js.map +1 -1
- package/lib/cmap/commands.js +9 -5
- package/lib/cmap/commands.js.map +1 -1
- package/lib/cmap/connect.js +23 -9
- package/lib/cmap/connect.js.map +1 -1
- package/lib/cmap/connection.js +43 -46
- package/lib/cmap/connection.js.map +1 -1
- package/lib/cmap/connection_pool.js +113 -15
- package/lib/cmap/connection_pool.js.map +1 -1
- package/lib/cmap/connection_pool_events.js +3 -1
- package/lib/cmap/connection_pool_events.js.map +1 -1
- package/lib/cmap/errors.js +3 -3
- package/lib/cmap/errors.js.map +1 -1
- package/lib/cmap/message_stream.js +1 -1
- package/lib/cmap/message_stream.js.map +1 -1
- package/lib/cmap/metrics.js +62 -0
- package/lib/cmap/metrics.js.map +1 -0
- package/lib/cmap/stream_description.js +3 -1
- package/lib/cmap/stream_description.js.map +1 -1
- package/lib/cmap/wire_protocol/compression.js +22 -9
- package/lib/cmap/wire_protocol/compression.js.map +1 -1
- package/lib/cmap/wire_protocol/shared.js +1 -1
- package/lib/cmap/wire_protocol/shared.js.map +1 -1
- package/lib/collection.js +23 -18
- package/lib/collection.js.map +1 -1
- package/lib/connection_string.js +76 -30
- package/lib/connection_string.js.map +1 -1
- package/lib/cursor/abstract_cursor.js +75 -68
- package/lib/cursor/abstract_cursor.js.map +1 -1
- package/lib/cursor/aggregation_cursor.js +47 -9
- package/lib/cursor/aggregation_cursor.js.map +1 -1
- package/lib/cursor/find_cursor.js +53 -13
- package/lib/cursor/find_cursor.js.map +1 -1
- package/lib/db.js +21 -14
- package/lib/db.js.map +1 -1
- package/lib/deps.js +16 -5
- package/lib/deps.js.map +1 -1
- package/lib/encrypter.js +5 -8
- package/lib/encrypter.js.map +1 -1
- package/lib/error.js +230 -34
- package/lib/error.js.map +1 -1
- package/lib/explain.js +2 -2
- package/lib/explain.js.map +1 -1
- package/lib/gridfs/download.js +22 -47
- package/lib/gridfs/download.js.map +1 -1
- package/lib/gridfs/index.js +4 -3
- package/lib/gridfs/index.js.map +1 -1
- package/lib/gridfs/upload.js +13 -21
- package/lib/gridfs/upload.js.map +1 -1
- package/lib/index.js +27 -2
- package/lib/index.js.map +1 -1
- package/lib/logger.js +3 -2
- package/lib/logger.js.map +1 -1
- package/lib/mongo_client.js +5 -8
- package/lib/mongo_client.js.map +1 -1
- package/lib/mongo_types.js.map +1 -1
- package/lib/operations/add_user.js +2 -3
- package/lib/operations/add_user.js.map +1 -1
- package/lib/operations/aggregate.js +12 -9
- package/lib/operations/aggregate.js.map +1 -1
- package/lib/operations/command.js +5 -7
- package/lib/operations/command.js.map +1 -1
- package/lib/operations/common_functions.js +1 -1
- package/lib/operations/common_functions.js.map +1 -1
- package/lib/operations/connect.js +3 -2
- package/lib/operations/connect.js.map +1 -1
- package/lib/operations/count.js +1 -1
- package/lib/operations/count.js.map +1 -1
- package/lib/operations/count_documents.js +1 -1
- package/lib/operations/count_documents.js.map +1 -1
- package/lib/operations/delete.js +5 -5
- package/lib/operations/delete.js.map +1 -1
- package/lib/operations/distinct.js +2 -2
- package/lib/operations/distinct.js.map +1 -1
- package/lib/operations/estimated_document_count.js +5 -1
- package/lib/operations/estimated_document_count.js.map +1 -1
- package/lib/operations/eval.js.map +1 -1
- package/lib/operations/execute_operation.js +31 -17
- package/lib/operations/execute_operation.js.map +1 -1
- package/lib/operations/find.js +13 -9
- package/lib/operations/find.js.map +1 -1
- package/lib/operations/find_and_modify.js +9 -9
- package/lib/operations/find_and_modify.js.map +1 -1
- package/lib/operations/indexes.js +8 -3
- package/lib/operations/indexes.js.map +1 -1
- package/lib/operations/insert.js +5 -3
- package/lib/operations/insert.js.map +1 -1
- package/lib/operations/is_capped.js +2 -1
- package/lib/operations/is_capped.js.map +1 -1
- package/lib/operations/list_collections.js +6 -3
- package/lib/operations/list_collections.js.map +1 -1
- package/lib/operations/map_reduce.js +1 -1
- package/lib/operations/map_reduce.js.map +1 -1
- package/lib/operations/operation.js +3 -1
- package/lib/operations/operation.js.map +1 -1
- package/lib/operations/options_operation.js +2 -1
- package/lib/operations/options_operation.js.map +1 -1
- package/lib/operations/profiling_level.js +4 -2
- package/lib/operations/profiling_level.js.map +1 -1
- package/lib/operations/set_profiling_level.js +4 -2
- package/lib/operations/set_profiling_level.js.map +1 -1
- package/lib/operations/update.js +12 -12
- package/lib/operations/update.js.map +1 -1
- package/lib/operations/validate_collection.js +6 -5
- package/lib/operations/validate_collection.js.map +1 -1
- package/lib/promise_provider.js +1 -1
- package/lib/promise_provider.js.map +1 -1
- package/lib/read_preference.js +8 -8
- package/lib/read_preference.js.map +1 -1
- package/lib/sdam/common.js +12 -10
- package/lib/sdam/common.js.map +1 -1
- package/lib/sdam/server.js +90 -25
- package/lib/sdam/server.js.map +1 -1
- package/lib/sdam/server_description.js +9 -4
- package/lib/sdam/server_description.js.map +1 -1
- package/lib/sdam/server_selection.js +10 -4
- package/lib/sdam/server_selection.js.map +1 -1
- package/lib/sdam/srv_polling.js +1 -1
- package/lib/sdam/srv_polling.js.map +1 -1
- package/lib/sdam/topology.js +42 -21
- package/lib/sdam/topology.js.map +1 -1
- package/lib/sdam/topology_description.js +7 -3
- package/lib/sdam/topology_description.js.map +1 -1
- package/lib/sessions.js +132 -31
- package/lib/sessions.js.map +1 -1
- package/lib/sort.js +3 -3
- package/lib/sort.js.map +1 -1
- package/lib/transactions.js +15 -7
- package/lib/transactions.js.map +1 -1
- package/lib/utils.js +60 -20
- package/lib/utils.js.map +1 -1
- package/mongodb.d.ts +523 -138
- package/mongodb.ts34.d.ts +480 -141
- package/package.json +44 -48
- package/src/bson.ts +1 -0
- package/src/bulk/common.ts +83 -43
- package/src/bulk/ordered.ts +4 -3
- package/src/bulk/unordered.ts +4 -3
- package/src/change_stream.ts +46 -29
- package/src/cmap/auth/auth_provider.ts +3 -2
- package/src/cmap/auth/gssapi.ts +15 -5
- package/src/cmap/auth/mongo_credentials.ts +22 -8
- package/src/cmap/auth/mongocr.ts +3 -3
- package/src/cmap/auth/mongodb_aws.ts +52 -39
- package/src/cmap/auth/plain.ts +2 -2
- package/src/cmap/auth/scram.ts +23 -13
- package/src/cmap/auth/x509.ts +3 -3
- package/src/cmap/command_monitoring_events.ts +36 -14
- package/src/cmap/commands.ts +12 -6
- package/src/cmap/connect.ts +42 -12
- package/src/cmap/connection.ts +54 -62
- package/src/cmap/connection_pool.ts +141 -20
- package/src/cmap/connection_pool_events.ts +8 -1
- package/src/cmap/errors.ts +3 -4
- package/src/cmap/message_stream.ts +2 -4
- package/src/cmap/metrics.ts +58 -0
- package/src/cmap/stream_description.ts +6 -1
- package/src/cmap/wire_protocol/compression.ts +26 -13
- package/src/cmap/wire_protocol/shared.ts +4 -2
- package/src/collection.ts +75 -70
- package/src/connection_string.ts +97 -34
- package/src/cursor/abstract_cursor.ts +141 -104
- package/src/cursor/aggregation_cursor.ts +34 -20
- package/src/cursor/find_cursor.ts +41 -21
- package/src/db.ts +19 -18
- package/src/deps.ts +110 -22
- package/src/encrypter.ts +6 -12
- package/src/error.ts +264 -48
- package/src/explain.ts +3 -3
- package/src/gridfs/download.ts +48 -53
- package/src/gridfs/index.ts +5 -4
- package/src/gridfs/upload.ts +32 -33
- package/src/index.ts +42 -4
- package/src/logger.ts +6 -3
- package/src/mongo_client.ts +20 -23
- package/src/mongo_types.ts +19 -20
- package/src/operations/add_user.ts +4 -5
- package/src/operations/aggregate.ts +18 -17
- package/src/operations/command.ts +7 -10
- package/src/operations/common_functions.ts +2 -3
- package/src/operations/connect.ts +4 -3
- package/src/operations/count.ts +2 -2
- package/src/operations/count_documents.ts +2 -2
- package/src/operations/delete.ts +8 -6
- package/src/operations/distinct.ts +5 -3
- package/src/operations/estimated_document_count.ts +5 -1
- package/src/operations/eval.ts +1 -1
- package/src/operations/execute_operation.ts +41 -20
- package/src/operations/find.ts +25 -16
- package/src/operations/find_and_modify.ts +12 -10
- package/src/operations/indexes.ts +39 -8
- package/src/operations/insert.ts +7 -4
- package/src/operations/is_capped.ts +3 -2
- package/src/operations/list_collections.ts +9 -6
- package/src/operations/map_reduce.ts +4 -2
- package/src/operations/operation.ts +7 -2
- package/src/operations/options_operation.ts +3 -2
- package/src/operations/profiling_level.ts +5 -3
- package/src/operations/set_profiling_level.ts +9 -3
- package/src/operations/update.ts +17 -13
- package/src/operations/validate_collection.ts +7 -6
- package/src/promise_provider.ts +2 -2
- package/src/read_preference.ts +11 -9
- package/src/sdam/common.ts +11 -9
- package/src/sdam/server.ts +168 -69
- package/src/sdam/server_description.ts +16 -4
- package/src/sdam/server_selection.ts +15 -7
- package/src/sdam/srv_polling.ts +2 -2
- package/src/sdam/topology.ts +67 -36
- package/src/sdam/topology_description.ts +11 -4
- package/src/sessions.ts +194 -37
- package/src/sort.ts +6 -4
- package/src/transactions.ts +18 -9
- package/src/utils.ts +73 -20
- package/HISTORY.md +0 -2993
- package/lib/operations/find_one.js +0 -34
- package/lib/operations/find_one.js.map +0 -1
- package/src/operations/find_one.ts +0 -43
|
@@ -64,7 +64,7 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
64
64
|
if (typeof options.batchSize === 'number') {
|
|
65
65
|
this[kOptions].batchSize = options.batchSize;
|
|
66
66
|
}
|
|
67
|
-
if (
|
|
67
|
+
if (options.comment != null) {
|
|
68
68
|
this[kOptions].comment = options.comment;
|
|
69
69
|
}
|
|
70
70
|
if (typeof options.maxTimeMS === 'number') {
|
|
@@ -111,6 +111,9 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
111
111
|
get killed() {
|
|
112
112
|
return this[kKilled];
|
|
113
113
|
}
|
|
114
|
+
get loadBalanced() {
|
|
115
|
+
return this[kTopology].loadBalanced;
|
|
116
|
+
}
|
|
114
117
|
/** Returns current buffered documents length */
|
|
115
118
|
bufferedCount() {
|
|
116
119
|
return this[kDocuments].length;
|
|
@@ -121,7 +124,7 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
121
124
|
}
|
|
122
125
|
[Symbol.asyncIterator]() {
|
|
123
126
|
return {
|
|
124
|
-
next: () => this.next().then(value =>
|
|
127
|
+
next: () => this.next().then(value => value != null ? { value, done: false } : { value: undefined, done: true })
|
|
125
128
|
};
|
|
126
129
|
}
|
|
127
130
|
stream(options) {
|
|
@@ -153,7 +156,6 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
153
156
|
return done(undefined, true);
|
|
154
157
|
}
|
|
155
158
|
next(this, true, (err, doc) => {
|
|
156
|
-
// FIXME(NODE):
|
|
157
159
|
if (err)
|
|
158
160
|
return done(err);
|
|
159
161
|
if (doc) {
|
|
@@ -168,7 +170,7 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
168
170
|
next(callback) {
|
|
169
171
|
return utils_1.maybePromise(callback, done => {
|
|
170
172
|
if (this[kId] === bson_1.Long.ZERO) {
|
|
171
|
-
return done(new error_1.
|
|
173
|
+
return done(new error_1.MongoCursorExhaustedError());
|
|
172
174
|
}
|
|
173
175
|
next(this, true, done);
|
|
174
176
|
});
|
|
@@ -176,14 +178,14 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
176
178
|
tryNext(callback) {
|
|
177
179
|
return utils_1.maybePromise(callback, done => {
|
|
178
180
|
if (this[kId] === bson_1.Long.ZERO) {
|
|
179
|
-
return done(new error_1.
|
|
181
|
+
return done(new error_1.MongoCursorExhaustedError());
|
|
180
182
|
}
|
|
181
183
|
next(this, false, done);
|
|
182
184
|
});
|
|
183
185
|
}
|
|
184
186
|
forEach(iterator, callback) {
|
|
185
187
|
if (typeof iterator !== 'function') {
|
|
186
|
-
throw new error_1.
|
|
188
|
+
throw new error_1.MongoInvalidArgumentError('Argument "iterator" must be a function');
|
|
187
189
|
}
|
|
188
190
|
return utils_1.maybePromise(callback, done => {
|
|
189
191
|
const transform = this[kTransform];
|
|
@@ -226,39 +228,7 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
226
228
|
options = options !== null && options !== void 0 ? options : {};
|
|
227
229
|
const needsToEmitClosed = !this[kClosed];
|
|
228
230
|
this[kClosed] = true;
|
|
229
|
-
return utils_1.maybePromise(callback, done => {
|
|
230
|
-
const cursorId = this[kId];
|
|
231
|
-
const cursorNs = this[kNamespace];
|
|
232
|
-
const server = this[kServer];
|
|
233
|
-
const session = this[kSession];
|
|
234
|
-
if (cursorId == null || server == null || cursorId.isZero() || cursorNs == null) {
|
|
235
|
-
if (needsToEmitClosed) {
|
|
236
|
-
this[kId] = bson_1.Long.ZERO;
|
|
237
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
238
|
-
// @ts-expect-error
|
|
239
|
-
this.emit(AbstractCursor.CLOSE);
|
|
240
|
-
}
|
|
241
|
-
if (session && session.owner === this) {
|
|
242
|
-
return session.endSession(done);
|
|
243
|
-
}
|
|
244
|
-
return done();
|
|
245
|
-
}
|
|
246
|
-
this[kKilled] = true;
|
|
247
|
-
server.killCursors(cursorNs, [cursorId], { ...bson_1.pluckBSONSerializeOptions(this[kOptions]), session }, () => {
|
|
248
|
-
if (session && session.owner === this) {
|
|
249
|
-
return session.endSession(() => {
|
|
250
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
251
|
-
// @ts-expect-error
|
|
252
|
-
this.emit(AbstractCursor.CLOSE);
|
|
253
|
-
done();
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
257
|
-
// @ts-expect-error
|
|
258
|
-
this.emit(AbstractCursor.CLOSE);
|
|
259
|
-
done();
|
|
260
|
-
});
|
|
261
|
-
});
|
|
231
|
+
return utils_1.maybePromise(callback, done => cleanupCursor(this, { needsToEmitClosed }, done));
|
|
262
232
|
}
|
|
263
233
|
toArray(callback) {
|
|
264
234
|
return utils_1.maybePromise(callback, done => {
|
|
@@ -295,10 +265,10 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
295
265
|
addCursorFlag(flag, value) {
|
|
296
266
|
assertUninitialized(this);
|
|
297
267
|
if (!exports.CURSOR_FLAGS.includes(flag)) {
|
|
298
|
-
throw new error_1.
|
|
268
|
+
throw new error_1.MongoInvalidArgumentError(`Flag ${flag} is not one of ${exports.CURSOR_FLAGS}`);
|
|
299
269
|
}
|
|
300
270
|
if (typeof value !== 'boolean') {
|
|
301
|
-
throw new error_1.
|
|
271
|
+
throw new error_1.MongoInvalidArgumentError(`Flag ${flag} must be a boolean value`);
|
|
302
272
|
}
|
|
303
273
|
this[kOptions][flag] = value;
|
|
304
274
|
return this;
|
|
@@ -307,11 +277,12 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
307
277
|
* Map all documents using the provided function
|
|
308
278
|
* If there is a transform set on the cursor, that will be called first and the result passed to
|
|
309
279
|
* this function's transform.
|
|
310
|
-
* @remarks
|
|
311
280
|
*
|
|
312
|
-
*
|
|
313
|
-
*
|
|
314
|
-
*
|
|
281
|
+
* @remarks
|
|
282
|
+
* **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
|
|
283
|
+
* it **does not** return a new instance of a cursor. This means when calling map,
|
|
284
|
+
* you should always assign the result to a new variable in order to get a correctly typed cursor variable.
|
|
285
|
+
* Take note of the following example:
|
|
315
286
|
*
|
|
316
287
|
* @example
|
|
317
288
|
* ```typescript
|
|
@@ -348,7 +319,7 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
348
319
|
this[kOptions].readPreference = read_preference_1.ReadPreference.fromString(readPreference);
|
|
349
320
|
}
|
|
350
321
|
else {
|
|
351
|
-
throw new error_1.
|
|
322
|
+
throw new error_1.MongoInvalidArgumentError(`Invalid read preference: ${readPreference}`);
|
|
352
323
|
}
|
|
353
324
|
return this;
|
|
354
325
|
}
|
|
@@ -373,7 +344,7 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
373
344
|
maxTimeMS(value) {
|
|
374
345
|
assertUninitialized(this);
|
|
375
346
|
if (typeof value !== 'number') {
|
|
376
|
-
throw new error_1.
|
|
347
|
+
throw new error_1.MongoInvalidArgumentError('Argument for maxTimeMS must be a number');
|
|
377
348
|
}
|
|
378
349
|
this[kOptions].maxTimeMS = value;
|
|
379
350
|
return this;
|
|
@@ -386,10 +357,10 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
386
357
|
batchSize(value) {
|
|
387
358
|
assertUninitialized(this);
|
|
388
359
|
if (this[kOptions].tailable) {
|
|
389
|
-
throw new error_1.
|
|
360
|
+
throw new error_1.MongoTailableCursorError('Tailable cursor does not support batchSize');
|
|
390
361
|
}
|
|
391
362
|
if (typeof value !== 'number') {
|
|
392
|
-
throw new error_1.
|
|
363
|
+
throw new error_1.MongoInvalidArgumentError('Operation "batchSize" requires an integer');
|
|
393
364
|
}
|
|
394
365
|
this[kOptions].batchSize = value;
|
|
395
366
|
return this;
|
|
@@ -423,11 +394,11 @@ class AbstractCursor extends mongo_types_1.TypedEventEmitter {
|
|
|
423
394
|
const cursorNs = this[kNamespace];
|
|
424
395
|
const server = this[kServer];
|
|
425
396
|
if (cursorId == null) {
|
|
426
|
-
callback(new error_1.
|
|
397
|
+
callback(new error_1.MongoRuntimeError('Unable to iterate cursor with no id'));
|
|
427
398
|
return;
|
|
428
399
|
}
|
|
429
400
|
if (server == null) {
|
|
430
|
-
callback(new error_1.
|
|
401
|
+
callback(new error_1.MongoRuntimeError('Unable to iterate cursor without selected server'));
|
|
431
402
|
return;
|
|
432
403
|
}
|
|
433
404
|
server.getMore(cursorNs, cursorId, {
|
|
@@ -503,14 +474,14 @@ function next(cursor, blocking, callback) {
|
|
|
503
474
|
// the cursor is now initialized, even if an error occurred or it is dead
|
|
504
475
|
cursor[kInitialized] = true;
|
|
505
476
|
if (err || cursorIsDead(cursor)) {
|
|
506
|
-
return cleanupCursor(cursor, () => callback(err, nextDocument(cursor)));
|
|
477
|
+
return cleanupCursor(cursor, { error: err }, () => callback(err, nextDocument(cursor)));
|
|
507
478
|
}
|
|
508
479
|
next(cursor, blocking, callback);
|
|
509
480
|
});
|
|
510
481
|
return;
|
|
511
482
|
}
|
|
512
483
|
if (cursorIsDead(cursor)) {
|
|
513
|
-
return cleanupCursor(cursor, () => callback(undefined, null));
|
|
484
|
+
return cleanupCursor(cursor, undefined, () => callback(undefined, null));
|
|
514
485
|
}
|
|
515
486
|
// otherwise need to call getMore
|
|
516
487
|
const batchSize = cursor[kOptions].batchSize || 1000;
|
|
@@ -523,7 +494,7 @@ function next(cursor, blocking, callback) {
|
|
|
523
494
|
cursor[kId] = cursorId;
|
|
524
495
|
}
|
|
525
496
|
if (err || cursorIsDead(cursor)) {
|
|
526
|
-
return cleanupCursor(cursor, () => callback(err, nextDocument(cursor)));
|
|
497
|
+
return cleanupCursor(cursor, { error: err }, () => callback(err, nextDocument(cursor)));
|
|
527
498
|
}
|
|
528
499
|
if (cursor[kDocuments].length === 0 && blocking === false) {
|
|
529
500
|
return callback(undefined, null);
|
|
@@ -535,23 +506,57 @@ function cursorIsDead(cursor) {
|
|
|
535
506
|
const cursorId = cursor[kId];
|
|
536
507
|
return !!cursorId && cursorId.isZero();
|
|
537
508
|
}
|
|
538
|
-
function cleanupCursor(cursor, callback) {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
509
|
+
function cleanupCursor(cursor, options, callback) {
|
|
510
|
+
var _a;
|
|
511
|
+
const cursorId = cursor[kId];
|
|
512
|
+
const cursorNs = cursor[kNamespace];
|
|
513
|
+
const server = cursor[kServer];
|
|
543
514
|
const session = cursor[kSession];
|
|
544
|
-
|
|
545
|
-
|
|
515
|
+
const error = options === null || options === void 0 ? void 0 : options.error;
|
|
516
|
+
const needsToEmitClosed = (_a = options === null || options === void 0 ? void 0 : options.needsToEmitClosed) !== null && _a !== void 0 ? _a : cursor[kDocuments].length === 0;
|
|
517
|
+
if (error) {
|
|
518
|
+
if (cursor.loadBalanced && error instanceof error_1.MongoNetworkError) {
|
|
519
|
+
return completeCleanup();
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
if (cursorId == null || server == null || cursorId.isZero() || cursorNs == null) {
|
|
523
|
+
if (needsToEmitClosed) {
|
|
524
|
+
cursor[kClosed] = true;
|
|
525
|
+
cursor[kId] = bson_1.Long.ZERO;
|
|
526
|
+
cursor.emit(AbstractCursor.CLOSE);
|
|
527
|
+
}
|
|
528
|
+
if (session) {
|
|
529
|
+
if (session.owner === cursor) {
|
|
530
|
+
return session.endSession({ error }, callback);
|
|
531
|
+
}
|
|
532
|
+
if (!session.inTransaction()) {
|
|
533
|
+
sessions_1.maybeClearPinnedConnection(session, { error });
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
return callback();
|
|
546
537
|
}
|
|
547
|
-
|
|
548
|
-
|
|
538
|
+
function completeCleanup() {
|
|
539
|
+
if (session) {
|
|
540
|
+
if (session.owner === cursor) {
|
|
541
|
+
return session.endSession({ error }, () => {
|
|
542
|
+
cursor.emit(AbstractCursor.CLOSE);
|
|
543
|
+
callback();
|
|
544
|
+
});
|
|
545
|
+
}
|
|
546
|
+
if (!session.inTransaction()) {
|
|
547
|
+
sessions_1.maybeClearPinnedConnection(session, { error });
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
cursor.emit(AbstractCursor.CLOSE);
|
|
551
|
+
return callback();
|
|
549
552
|
}
|
|
553
|
+
cursor[kKilled] = true;
|
|
554
|
+
server.killCursors(cursorNs, [cursorId], { ...bson_1.pluckBSONSerializeOptions(cursor[kOptions]), session }, () => completeCleanup());
|
|
550
555
|
}
|
|
551
556
|
/** @internal */
|
|
552
557
|
function assertUninitialized(cursor) {
|
|
553
558
|
if (cursor[kInitialized]) {
|
|
554
|
-
throw new error_1.
|
|
559
|
+
throw new error_1.MongoCursorInUseError();
|
|
555
560
|
}
|
|
556
561
|
}
|
|
557
562
|
exports.assertUninitialized = assertUninitialized;
|
|
@@ -585,7 +590,7 @@ function makeCursorStream(cursor) {
|
|
|
585
590
|
function readNext() {
|
|
586
591
|
needToClose = false;
|
|
587
592
|
next(cursor, true, (err, result) => {
|
|
588
|
-
needToClose = err ? !cursor.closed : result
|
|
593
|
+
needToClose = err ? !cursor.closed : result != null;
|
|
589
594
|
if (err) {
|
|
590
595
|
// NOTE: This is questionable, but we have a test backing the behavior. It seems the
|
|
591
596
|
// desired behavior is that a stream ends cleanly when a user explicitly closes
|
|
@@ -597,13 +602,15 @@ function makeCursorStream(cursor) {
|
|
|
597
602
|
}
|
|
598
603
|
// NOTE: This is also perhaps questionable. The rationale here is that these errors tend
|
|
599
604
|
// to be "operation interrupted", where a cursor has been closed but there is an
|
|
600
|
-
// active getMore in-flight.
|
|
601
|
-
|
|
605
|
+
// active getMore in-flight. This used to check if the cursor was killed but once
|
|
606
|
+
// that changed to happen in cleanup legitimate errors would not destroy the
|
|
607
|
+
// stream. There are change streams test specifically test these cases.
|
|
608
|
+
if (err.message.match(/interrupted/)) {
|
|
602
609
|
return readable.push(null);
|
|
603
610
|
}
|
|
604
611
|
return readable.destroy(err);
|
|
605
612
|
}
|
|
606
|
-
if (result
|
|
613
|
+
if (result == null) {
|
|
607
614
|
readable.push(null);
|
|
608
615
|
}
|
|
609
616
|
else if (readable.destroyed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract_cursor.js","sourceRoot":"","sources":["../../src/cursor/abstract_cursor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abstract_cursor.js","sourceRoot":"","sources":["../../src/cursor/abstract_cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,6 @@ const abstract_cursor_1 = require("./abstract_cursor");
|
|
|
6
6
|
const execute_operation_1 = require("../operations/execute_operation");
|
|
7
7
|
const utils_1 = require("../utils");
|
|
8
8
|
/** @internal */
|
|
9
|
-
const kParent = Symbol('parent');
|
|
10
|
-
/** @internal */
|
|
11
9
|
const kPipeline = Symbol('pipeline');
|
|
12
10
|
/** @internal */
|
|
13
11
|
const kOptions = Symbol('options');
|
|
@@ -20,9 +18,8 @@ const kOptions = Symbol('options');
|
|
|
20
18
|
*/
|
|
21
19
|
class AggregationCursor extends abstract_cursor_1.AbstractCursor {
|
|
22
20
|
/** @internal */
|
|
23
|
-
constructor(
|
|
21
|
+
constructor(topology, namespace, pipeline = [], options = {}) {
|
|
24
22
|
super(topology, namespace, options);
|
|
25
|
-
this[kParent] = parent;
|
|
26
23
|
this[kPipeline] = pipeline;
|
|
27
24
|
this[kOptions] = options;
|
|
28
25
|
}
|
|
@@ -32,7 +29,7 @@ class AggregationCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
32
29
|
clone() {
|
|
33
30
|
const clonedOptions = utils_1.mergeOptions({}, this[kOptions]);
|
|
34
31
|
delete clonedOptions.session;
|
|
35
|
-
return new AggregationCursor(this
|
|
32
|
+
return new AggregationCursor(this.topology, this.namespace, this[kPipeline], {
|
|
36
33
|
...clonedOptions
|
|
37
34
|
});
|
|
38
35
|
}
|
|
@@ -41,7 +38,7 @@ class AggregationCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
41
38
|
}
|
|
42
39
|
/** @internal */
|
|
43
40
|
_initialize(session, callback) {
|
|
44
|
-
const aggregateOperation = new aggregate_1.AggregateOperation(this
|
|
41
|
+
const aggregateOperation = new aggregate_1.AggregateOperation(this.namespace, this[kPipeline], {
|
|
45
42
|
...this[kOptions],
|
|
46
43
|
...this.cursorOptions,
|
|
47
44
|
session
|
|
@@ -56,9 +53,9 @@ class AggregationCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
56
53
|
explain(verbosity, callback) {
|
|
57
54
|
if (typeof verbosity === 'function')
|
|
58
55
|
(callback = verbosity), (verbosity = true);
|
|
59
|
-
if (verbosity
|
|
56
|
+
if (verbosity == null)
|
|
60
57
|
verbosity = true;
|
|
61
|
-
return execute_operation_1.executeOperation(this.topology, new aggregate_1.AggregateOperation(this
|
|
58
|
+
return execute_operation_1.executeOperation(this.topology, new aggregate_1.AggregateOperation(this.namespace, this[kPipeline], {
|
|
62
59
|
...this[kOptions],
|
|
63
60
|
...this.cursorOptions,
|
|
64
61
|
explain: verbosity
|
|
@@ -81,12 +78,53 @@ class AggregationCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
81
78
|
this[kPipeline].push({ $match });
|
|
82
79
|
return this;
|
|
83
80
|
}
|
|
84
|
-
/** Add
|
|
81
|
+
/** Add an out stage to the aggregation pipeline */
|
|
85
82
|
out($out) {
|
|
86
83
|
abstract_cursor_1.assertUninitialized(this);
|
|
87
84
|
this[kPipeline].push({ $out });
|
|
88
85
|
return this;
|
|
89
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Add a project stage to the aggregation pipeline
|
|
89
|
+
*
|
|
90
|
+
* @remarks
|
|
91
|
+
* In order to strictly type this function you must provide an interface
|
|
92
|
+
* that represents the effect of your projection on the result documents.
|
|
93
|
+
*
|
|
94
|
+
* By default chaining a projection to your cursor changes the returned type to the generic {@link Document} type.
|
|
95
|
+
* You should specify a parameterized type to have assertions on your final results.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* // Best way
|
|
100
|
+
* const docs: AggregationCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
|
|
101
|
+
* // Flexible way
|
|
102
|
+
* const docs: AggregationCursor<Document> = cursor.project({ _id: 0, a: true });
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* @remarks
|
|
106
|
+
* In order to strictly type this function you must provide an interface
|
|
107
|
+
* that represents the effect of your projection on the result documents.
|
|
108
|
+
*
|
|
109
|
+
* **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
|
|
110
|
+
* it **does not** return a new instance of a cursor. This means when calling project,
|
|
111
|
+
* you should always assign the result to a new variable in order to get a correctly typed cursor variable.
|
|
112
|
+
* Take note of the following example:
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* const cursor: AggregationCursor<{ a: number; b: string }> = coll.aggregate([]);
|
|
117
|
+
* const projectCursor = cursor.project<{ a: number }>({ _id: 0, a: true });
|
|
118
|
+
* const aPropOnlyArray: {a: number}[] = await projectCursor.toArray();
|
|
119
|
+
*
|
|
120
|
+
* // or always use chaining and save the final cursor
|
|
121
|
+
*
|
|
122
|
+
* const cursor = coll.aggregate().project<{ a: string }>({
|
|
123
|
+
* _id: 0,
|
|
124
|
+
* a: { $convert: { input: '$a', to: 'string' }
|
|
125
|
+
* }});
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
90
128
|
project($project) {
|
|
91
129
|
abstract_cursor_1.assertUninitialized(this);
|
|
92
130
|
this[kPipeline].push({ $project });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregation_cursor.js","sourceRoot":"","sources":["../../src/cursor/aggregation_cursor.ts"],"names":[],"mappings":";;;AAAA,uDAA+E;AAC/E,uDAAwE;AACxE,uEAAoF;AACpF,oCAAwC;
|
|
1
|
+
{"version":3,"file":"aggregation_cursor.js","sourceRoot":"","sources":["../../src/cursor/aggregation_cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
30
30
|
super(topology, namespace, options);
|
|
31
31
|
this[kFilter] = filter || {};
|
|
32
32
|
this[kBuiltOptions] = options;
|
|
33
|
-
if (
|
|
33
|
+
if (options.sort != null) {
|
|
34
34
|
this[kBuiltOptions].sort = sort_1.formatSort(options.sort);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -90,7 +90,7 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
90
90
|
}
|
|
91
91
|
count(options, callback) {
|
|
92
92
|
if (typeof options === 'boolean') {
|
|
93
|
-
throw new error_1.
|
|
93
|
+
throw new error_1.MongoInvalidArgumentError('Invalid first parameter to count');
|
|
94
94
|
}
|
|
95
95
|
if (typeof options === 'function')
|
|
96
96
|
(callback = options), (options = {});
|
|
@@ -104,7 +104,7 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
104
104
|
explain(verbosity, callback) {
|
|
105
105
|
if (typeof verbosity === 'function')
|
|
106
106
|
(callback = verbosity), (verbosity = true);
|
|
107
|
-
if (verbosity
|
|
107
|
+
if (verbosity == null)
|
|
108
108
|
verbosity = true;
|
|
109
109
|
return execute_operation_1.executeOperation(this.topology, new find_1.FindOperation(undefined, this.namespace, this[kFilter], {
|
|
110
110
|
...this[kBuiltOptions],
|
|
@@ -179,7 +179,7 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
179
179
|
addQueryModifier(name, value) {
|
|
180
180
|
abstract_cursor_1.assertUninitialized(this);
|
|
181
181
|
if (name[0] !== '$') {
|
|
182
|
-
throw new error_1.
|
|
182
|
+
throw new error_1.MongoInvalidArgumentError(`${name} is not a valid query modifier`);
|
|
183
183
|
}
|
|
184
184
|
// Strip of the $
|
|
185
185
|
const field = name.substr(1);
|
|
@@ -216,7 +216,7 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
216
216
|
this[kBuiltOptions].showRecordId = value;
|
|
217
217
|
break;
|
|
218
218
|
default:
|
|
219
|
-
throw new error_1.
|
|
219
|
+
throw new error_1.MongoInvalidArgumentError(`Invalid query modifier: ${name}`);
|
|
220
220
|
}
|
|
221
221
|
return this;
|
|
222
222
|
}
|
|
@@ -238,7 +238,7 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
238
238
|
maxAwaitTimeMS(value) {
|
|
239
239
|
abstract_cursor_1.assertUninitialized(this);
|
|
240
240
|
if (typeof value !== 'number') {
|
|
241
|
-
throw new error_1.
|
|
241
|
+
throw new error_1.MongoInvalidArgumentError('Argument for maxAwaitTimeMS must be a number');
|
|
242
242
|
}
|
|
243
243
|
this[kBuiltOptions].maxAwaitTimeMS = value;
|
|
244
244
|
return this;
|
|
@@ -251,11 +251,51 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
251
251
|
maxTimeMS(value) {
|
|
252
252
|
abstract_cursor_1.assertUninitialized(this);
|
|
253
253
|
if (typeof value !== 'number') {
|
|
254
|
-
throw new error_1.
|
|
254
|
+
throw new error_1.MongoInvalidArgumentError('Argument for maxTimeMS must be a number');
|
|
255
255
|
}
|
|
256
256
|
this[kBuiltOptions].maxTimeMS = value;
|
|
257
257
|
return this;
|
|
258
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Add a project stage to the aggregation pipeline
|
|
261
|
+
*
|
|
262
|
+
* @remarks
|
|
263
|
+
* In order to strictly type this function you must provide an interface
|
|
264
|
+
* that represents the effect of your projection on the result documents.
|
|
265
|
+
*
|
|
266
|
+
* By default chaining a projection to your cursor changes the returned type to the generic
|
|
267
|
+
* {@link Document} type.
|
|
268
|
+
* You should specify a parameterized type to have assertions on your final results.
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```typescript
|
|
272
|
+
* // Best way
|
|
273
|
+
* const docs: FindCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
|
|
274
|
+
* // Flexible way
|
|
275
|
+
* const docs: FindCursor<Document> = cursor.project({ _id: 0, a: true });
|
|
276
|
+
* ```
|
|
277
|
+
*
|
|
278
|
+
* @remarks
|
|
279
|
+
*
|
|
280
|
+
* **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
|
|
281
|
+
* it **does not** return a new instance of a cursor. This means when calling project,
|
|
282
|
+
* you should always assign the result to a new variable in order to get a correctly typed cursor variable.
|
|
283
|
+
* Take note of the following example:
|
|
284
|
+
*
|
|
285
|
+
* @example
|
|
286
|
+
* ```typescript
|
|
287
|
+
* const cursor: FindCursor<{ a: number; b: string }> = coll.find();
|
|
288
|
+
* const projectCursor = cursor.project<{ a: number }>({ _id: 0, a: true });
|
|
289
|
+
* const aPropOnlyArray: {a: number}[] = await projectCursor.toArray();
|
|
290
|
+
*
|
|
291
|
+
* // or always use chaining and save the final cursor
|
|
292
|
+
*
|
|
293
|
+
* const cursor = coll.find().project<{ a: string }>({
|
|
294
|
+
* _id: 0,
|
|
295
|
+
* a: { $convert: { input: '$a', to: 'string' }
|
|
296
|
+
* }});
|
|
297
|
+
* ```
|
|
298
|
+
*/
|
|
259
299
|
project(value) {
|
|
260
300
|
abstract_cursor_1.assertUninitialized(this);
|
|
261
301
|
this[kBuiltOptions].projection = value;
|
|
@@ -270,7 +310,7 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
270
310
|
sort(sort, direction) {
|
|
271
311
|
abstract_cursor_1.assertUninitialized(this);
|
|
272
312
|
if (this[kBuiltOptions].tailable) {
|
|
273
|
-
throw new error_1.
|
|
313
|
+
throw new error_1.MongoTailableCursorError('Tailable cursor does not support sorting');
|
|
274
314
|
}
|
|
275
315
|
this[kBuiltOptions].sort = sort_1.formatSort(sort, direction);
|
|
276
316
|
return this;
|
|
@@ -284,7 +324,7 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
284
324
|
allowDiskUse() {
|
|
285
325
|
abstract_cursor_1.assertUninitialized(this);
|
|
286
326
|
if (!this[kBuiltOptions].sort) {
|
|
287
|
-
throw new error_1.
|
|
327
|
+
throw new error_1.MongoInvalidArgumentError('Option "allowDiskUse" requires a sort specification');
|
|
288
328
|
}
|
|
289
329
|
this[kBuiltOptions].allowDiskUse = true;
|
|
290
330
|
return this;
|
|
@@ -307,10 +347,10 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
307
347
|
limit(value) {
|
|
308
348
|
abstract_cursor_1.assertUninitialized(this);
|
|
309
349
|
if (this[kBuiltOptions].tailable) {
|
|
310
|
-
throw new error_1.
|
|
350
|
+
throw new error_1.MongoTailableCursorError('Tailable cursor does not support limit');
|
|
311
351
|
}
|
|
312
352
|
if (typeof value !== 'number') {
|
|
313
|
-
throw new error_1.
|
|
353
|
+
throw new error_1.MongoInvalidArgumentError('Operation "limit" requires an integer');
|
|
314
354
|
}
|
|
315
355
|
this[kBuiltOptions].limit = value;
|
|
316
356
|
return this;
|
|
@@ -323,10 +363,10 @@ class FindCursor extends abstract_cursor_1.AbstractCursor {
|
|
|
323
363
|
skip(value) {
|
|
324
364
|
abstract_cursor_1.assertUninitialized(this);
|
|
325
365
|
if (this[kBuiltOptions].tailable) {
|
|
326
|
-
throw new error_1.
|
|
366
|
+
throw new error_1.MongoTailableCursorError('Tailable cursor does not support skip');
|
|
327
367
|
}
|
|
328
368
|
if (typeof value !== 'number') {
|
|
329
|
-
throw new error_1.
|
|
369
|
+
throw new error_1.MongoInvalidArgumentError('Operation "skip" requires an integer');
|
|
330
370
|
}
|
|
331
371
|
this[kBuiltOptions].skip = value;
|
|
332
372
|
return this;
|