mongodb 4.5.0 → 4.6.0-alpha.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.
Files changed (73) hide show
  1. package/lib/change_stream.js +232 -235
  2. package/lib/change_stream.js.map +1 -1
  3. package/lib/cmap/auth/mongodb_aws.js +3 -0
  4. package/lib/cmap/auth/mongodb_aws.js.map +1 -1
  5. package/lib/cmap/commands.js +12 -11
  6. package/lib/cmap/commands.js.map +1 -1
  7. package/lib/cmap/connect.js +8 -1
  8. package/lib/cmap/connect.js.map +1 -1
  9. package/lib/cmap/connection.js +0 -59
  10. package/lib/cmap/connection.js.map +1 -1
  11. package/lib/collection.js +32 -1
  12. package/lib/collection.js.map +1 -1
  13. package/lib/connection_string.js +29 -11
  14. package/lib/connection_string.js.map +1 -1
  15. package/lib/constants.js +8 -1
  16. package/lib/constants.js.map +1 -1
  17. package/lib/db.js +7 -0
  18. package/lib/db.js.map +1 -1
  19. package/lib/encrypter.js +4 -1
  20. package/lib/encrypter.js.map +1 -1
  21. package/lib/error.js +37 -24
  22. package/lib/error.js.map +1 -1
  23. package/lib/gridfs/upload.js +1 -1
  24. package/lib/gridfs/upload.js.map +1 -1
  25. package/lib/index.js +4 -3
  26. package/lib/index.js.map +1 -1
  27. package/lib/mongo_client.js +7 -0
  28. package/lib/mongo_client.js.map +1 -1
  29. package/lib/operations/command.js +0 -3
  30. package/lib/operations/command.js.map +1 -1
  31. package/lib/operations/create_collection.js +51 -17
  32. package/lib/operations/create_collection.js.map +1 -1
  33. package/lib/operations/drop.js +67 -7
  34. package/lib/operations/drop.js.map +1 -1
  35. package/lib/operations/execute_operation.js +2 -1
  36. package/lib/operations/execute_operation.js.map +1 -1
  37. package/lib/operations/find.js +0 -51
  38. package/lib/operations/find.js.map +1 -1
  39. package/lib/sdam/server.js +29 -21
  40. package/lib/sdam/server.js.map +1 -1
  41. package/lib/sdam/topology.js +22 -22
  42. package/lib/sdam/topology.js.map +1 -1
  43. package/lib/sdam/topology_description.js +2 -1
  44. package/lib/sdam/topology_description.js.map +1 -1
  45. package/lib/utils.js.map +1 -1
  46. package/mongodb.d.ts +299 -71
  47. package/package.json +3 -3
  48. package/src/change_stream.ts +532 -414
  49. package/src/cmap/auth/mongodb_aws.ts +5 -0
  50. package/src/cmap/commands.ts +23 -22
  51. package/src/cmap/connect.ts +13 -2
  52. package/src/cmap/connection.ts +1 -74
  53. package/src/collection.ts +36 -5
  54. package/src/connection_string.ts +39 -14
  55. package/src/constants.ts +6 -0
  56. package/src/cursor/abstract_cursor.ts +1 -1
  57. package/src/db.ts +13 -6
  58. package/src/deps.ts +32 -3
  59. package/src/encrypter.ts +4 -1
  60. package/src/error.ts +41 -27
  61. package/src/gridfs/upload.ts +1 -1
  62. package/src/index.ts +13 -0
  63. package/src/mongo_client.ts +18 -10
  64. package/src/mongo_types.ts +1 -1
  65. package/src/operations/command.ts +0 -4
  66. package/src/operations/create_collection.ts +71 -20
  67. package/src/operations/drop.ts +88 -6
  68. package/src/operations/execute_operation.ts +3 -2
  69. package/src/operations/find.ts +0 -80
  70. package/src/sdam/server.ts +39 -36
  71. package/src/sdam/topology.ts +30 -25
  72. package/src/sdam/topology_description.ts +2 -1
  73. package/src/utils.ts +1 -1
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ChangeStreamCursor = exports.ChangeStream = void 0;
4
4
  const Denque = require("denque");
5
5
  const collection_1 = require("./collection");
6
+ const constants_1 = require("./constants");
6
7
  const abstract_cursor_1 = require("./cursor/abstract_cursor");
7
8
  const db_1 = require("./db");
8
9
  const error_1 = require("./error");
@@ -38,6 +39,8 @@ const CHANGE_DOMAIN_TYPES = {
38
39
  DATABASE: Symbol('Database'),
39
40
  CLUSTER: Symbol('Cluster')
40
41
  };
42
+ const SELECTION_TIMEOUT = 30000;
43
+ const CHANGE_STREAM_EVENTS = [constants_1.RESUME_TOKEN_CHANGED, constants_1.END, constants_1.CLOSE];
41
44
  const NO_RESUME_TOKEN_ERROR = 'A change stream document has been received that lacks a resume token (_id).';
42
45
  const NO_CURSOR_ERROR = 'ChangeStream has no cursor';
43
46
  const CHANGESTREAM_CLOSED_ERROR = 'ChangeStream is closed';
@@ -75,13 +78,13 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter {
75
78
  }
76
79
  this[kResumeQueue] = new Denque();
77
80
  // Create contained Change Stream cursor
78
- this.cursor = createChangeStreamCursor(this, options);
81
+ this.cursor = this._createChangeStreamCursor(options);
79
82
  this[kClosed] = false;
80
83
  this[kMode] = false;
81
84
  // Listen for any `change` listeners being added to ChangeStream
82
85
  this.on('newListener', eventName => {
83
86
  if (eventName === 'change' && this.cursor && this.listenerCount('change') === 0) {
84
- streamEvents(this, this.cursor);
87
+ this._streamEvents(this.cursor);
85
88
  }
86
89
  });
87
90
  this.on('removeListener', eventName => {
@@ -101,9 +104,9 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter {
101
104
  return (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.resumeToken;
102
105
  }
103
106
  hasNext(callback) {
104
- setIsIterator(this);
107
+ this._setIsIterator();
105
108
  return (0, utils_1.maybePromise)(callback, cb => {
106
- getCursor(this, (err, cursor) => {
109
+ this._getCursor((err, cursor) => {
107
110
  if (err || !cursor)
108
111
  return cb(err); // failed to resume, raise an error
109
112
  cursor.hasNext(cb);
@@ -111,18 +114,18 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter {
111
114
  });
112
115
  }
113
116
  next(callback) {
114
- setIsIterator(this);
117
+ this._setIsIterator();
115
118
  return (0, utils_1.maybePromise)(callback, cb => {
116
- getCursor(this, (err, cursor) => {
119
+ this._getCursor((err, cursor) => {
117
120
  if (err || !cursor)
118
121
  return cb(err); // failed to resume, raise an error
119
122
  cursor.next((error, change) => {
120
123
  if (error) {
121
124
  this[kResumeQueue].push(() => this.next(cb));
122
- processError(this, error, cb);
125
+ this._processError(error, cb);
123
126
  return;
124
127
  }
125
- processNewChange(this, change, cb);
128
+ this._processNewChange(change !== null && change !== void 0 ? change : null, cb);
126
129
  });
127
130
  });
128
131
  });
@@ -141,7 +144,7 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter {
141
144
  }
142
145
  const cursor = this.cursor;
143
146
  return cursor.close(err => {
144
- endStream(this);
147
+ this._endStream();
145
148
  this.cursor = undefined;
146
149
  return cb(err);
147
150
  });
@@ -158,41 +161,243 @@ class ChangeStream extends mongo_types_1.TypedEventEmitter {
158
161
  return this.cursor.stream(options);
159
162
  }
160
163
  tryNext(callback) {
161
- setIsIterator(this);
164
+ this._setIsIterator();
162
165
  return (0, utils_1.maybePromise)(callback, cb => {
163
- getCursor(this, (err, cursor) => {
166
+ this._getCursor((err, cursor) => {
164
167
  if (err || !cursor)
165
168
  return cb(err); // failed to resume, raise an error
166
169
  return cursor.tryNext(cb);
167
170
  });
168
171
  });
169
172
  }
173
+ /** @internal */
174
+ _setIsEmitter() {
175
+ if (this[kMode] === 'iterator') {
176
+ // TODO(NODE-3485): Replace with MongoChangeStreamModeError
177
+ throw new error_1.MongoAPIError('ChangeStream cannot be used as an EventEmitter after being used as an iterator');
178
+ }
179
+ this[kMode] = 'emitter';
180
+ }
181
+ /** @internal */
182
+ _setIsIterator() {
183
+ if (this[kMode] === 'emitter') {
184
+ // TODO(NODE-3485): Replace with MongoChangeStreamModeError
185
+ throw new error_1.MongoAPIError('ChangeStream cannot be used as an iterator after being used as an EventEmitter');
186
+ }
187
+ this[kMode] = 'iterator';
188
+ }
189
+ /**
190
+ * Create a new change stream cursor based on self's configuration
191
+ * @internal
192
+ */
193
+ _createChangeStreamCursor(options) {
194
+ const changeStreamStageOptions = (0, utils_1.filterOptions)(options, CHANGE_STREAM_OPTIONS);
195
+ if (this.type === CHANGE_DOMAIN_TYPES.CLUSTER) {
196
+ changeStreamStageOptions.allChangesForCluster = true;
197
+ }
198
+ const pipeline = [{ $changeStream: changeStreamStageOptions }, ...this.pipeline];
199
+ const cursorOptions = (0, utils_1.filterOptions)(options, CURSOR_OPTIONS);
200
+ const changeStreamCursor = new ChangeStreamCursor((0, utils_1.getTopology)(this.parent), this.namespace, pipeline, cursorOptions);
201
+ for (const event of CHANGE_STREAM_EVENTS) {
202
+ changeStreamCursor.on(event, e => this.emit(event, e));
203
+ }
204
+ if (this.listenerCount(ChangeStream.CHANGE) > 0) {
205
+ this._streamEvents(changeStreamCursor);
206
+ }
207
+ return changeStreamCursor;
208
+ }
209
+ /**
210
+ * This method performs a basic server selection loop, satisfying the requirements of
211
+ * ChangeStream resumability until the new SDAM layer can be used.
212
+ * @internal
213
+ */
214
+ _waitForTopologyConnected(topology, options, callback) {
215
+ setTimeout(() => {
216
+ if (options && options.start == null) {
217
+ options.start = (0, utils_1.now)();
218
+ }
219
+ const start = options.start || (0, utils_1.now)();
220
+ const timeout = options.timeout || SELECTION_TIMEOUT;
221
+ if (topology.isConnected()) {
222
+ return callback();
223
+ }
224
+ if ((0, utils_1.calculateDurationInMs)(start) > timeout) {
225
+ // TODO(NODE-3497): Replace with MongoNetworkTimeoutError
226
+ return callback(new error_1.MongoRuntimeError('Timed out waiting for connection'));
227
+ }
228
+ this._waitForTopologyConnected(topology, options, callback);
229
+ }, 500); // this is an arbitrary wait time to allow SDAM to transition
230
+ }
231
+ /** @internal */
232
+ _closeWithError(error, callback) {
233
+ if (!callback) {
234
+ this.emit(ChangeStream.ERROR, error);
235
+ }
236
+ this.close(() => callback && callback(error));
237
+ }
238
+ /** @internal */
239
+ _streamEvents(cursor) {
240
+ var _a;
241
+ this._setIsEmitter();
242
+ const stream = (_a = this[kCursorStream]) !== null && _a !== void 0 ? _a : cursor.stream();
243
+ this[kCursorStream] = stream;
244
+ stream.on('data', change => this._processNewChange(change));
245
+ stream.on('error', error => this._processError(error));
246
+ }
247
+ /** @internal */
248
+ _endStream() {
249
+ const cursorStream = this[kCursorStream];
250
+ if (cursorStream) {
251
+ ['data', 'close', 'end', 'error'].forEach(event => cursorStream.removeAllListeners(event));
252
+ cursorStream.destroy();
253
+ }
254
+ this[kCursorStream] = undefined;
255
+ }
256
+ /** @internal */
257
+ _processNewChange(change, callback) {
258
+ var _a;
259
+ if (this[kClosed]) {
260
+ // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
261
+ if (callback)
262
+ callback(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR));
263
+ return;
264
+ }
265
+ // a null change means the cursor has been notified, implicitly closing the change stream
266
+ if (change == null) {
267
+ // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
268
+ return this._closeWithError(new error_1.MongoRuntimeError(CHANGESTREAM_CLOSED_ERROR), callback);
269
+ }
270
+ if (change && !change._id) {
271
+ return this._closeWithError(new error_1.MongoChangeStreamError(NO_RESUME_TOKEN_ERROR), callback);
272
+ }
273
+ // cache the resume token
274
+ (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.cacheResumeToken(change._id);
275
+ // wipe the startAtOperationTime if there was one so that there won't be a conflict
276
+ // between resumeToken and startAtOperationTime if we need to reconnect the cursor
277
+ this.options.startAtOperationTime = undefined;
278
+ // Return the change
279
+ if (!callback)
280
+ return this.emit(ChangeStream.CHANGE, change);
281
+ return callback(undefined, change);
282
+ }
283
+ /** @internal */
284
+ _processError(error, callback) {
285
+ const cursor = this.cursor;
286
+ // If the change stream has been closed explicitly, do not process error.
287
+ if (this[kClosed]) {
288
+ // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
289
+ if (callback)
290
+ callback(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR));
291
+ return;
292
+ }
293
+ // if the resume succeeds, continue with the new cursor
294
+ const resumeWithCursor = (newCursor) => {
295
+ this.cursor = newCursor;
296
+ this._processResumeQueue();
297
+ };
298
+ // otherwise, raise an error and close the change stream
299
+ const unresumableError = (err) => {
300
+ if (!callback) {
301
+ this.emit(ChangeStream.ERROR, err);
302
+ }
303
+ this.close(() => this._processResumeQueue(err));
304
+ };
305
+ if (cursor && (0, error_1.isResumableError)(error, (0, utils_1.maxWireVersion)(cursor.server))) {
306
+ this.cursor = undefined;
307
+ // stop listening to all events from old cursor
308
+ this._endStream();
309
+ // close internal cursor, ignore errors
310
+ cursor.close();
311
+ const topology = (0, utils_1.getTopology)(this.parent);
312
+ this._waitForTopologyConnected(topology, { readPreference: cursor.readPreference }, err => {
313
+ // if the topology can't reconnect, close the stream
314
+ if (err)
315
+ return unresumableError(err);
316
+ // create a new cursor, preserving the old cursor's options
317
+ const newCursor = this._createChangeStreamCursor(cursor.resumeOptions);
318
+ // attempt to continue in emitter mode
319
+ if (!callback)
320
+ return resumeWithCursor(newCursor);
321
+ // attempt to continue in iterator mode
322
+ newCursor.hasNext(err => {
323
+ // if there's an error immediately after resuming, close the stream
324
+ if (err)
325
+ return unresumableError(err);
326
+ resumeWithCursor(newCursor);
327
+ });
328
+ });
329
+ return;
330
+ }
331
+ // if initial error wasn't resumable, raise an error and close the change stream
332
+ return this._closeWithError(error, callback);
333
+ }
334
+ /** @internal */
335
+ _getCursor(callback) {
336
+ if (this[kClosed]) {
337
+ // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
338
+ callback(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR));
339
+ return;
340
+ }
341
+ // if a cursor exists and it is open, return it
342
+ if (this.cursor) {
343
+ callback(undefined, this.cursor);
344
+ return;
345
+ }
346
+ // no cursor, queue callback until topology reconnects
347
+ this[kResumeQueue].push(callback);
348
+ }
349
+ /**
350
+ * Drain the resume queue when a new has become available
351
+ * @internal
352
+ *
353
+ * @param err - error getting a new cursor
354
+ */
355
+ _processResumeQueue(error) {
356
+ var _a;
357
+ while (this[kResumeQueue].length) {
358
+ const request = this[kResumeQueue].pop();
359
+ if (!request)
360
+ break; // Should never occur but TS can't use the length check in the while condition
361
+ if (!error) {
362
+ if (this[kClosed]) {
363
+ // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
364
+ request(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR));
365
+ return;
366
+ }
367
+ if (!this.cursor) {
368
+ request(new error_1.MongoChangeStreamError(NO_CURSOR_ERROR));
369
+ return;
370
+ }
371
+ }
372
+ request(error, (_a = this.cursor) !== null && _a !== void 0 ? _a : undefined);
373
+ }
374
+ }
170
375
  }
171
376
  exports.ChangeStream = ChangeStream;
172
377
  /** @event */
173
- ChangeStream.RESPONSE = 'response';
378
+ ChangeStream.RESPONSE = constants_1.RESPONSE;
174
379
  /** @event */
175
- ChangeStream.MORE = 'more';
380
+ ChangeStream.MORE = constants_1.MORE;
176
381
  /** @event */
177
- ChangeStream.INIT = 'init';
382
+ ChangeStream.INIT = constants_1.INIT;
178
383
  /** @event */
179
- ChangeStream.CLOSE = 'close';
384
+ ChangeStream.CLOSE = constants_1.CLOSE;
180
385
  /**
181
386
  * Fired for each new matching change in the specified namespace. Attaching a `change`
182
387
  * event listener to a Change Stream will switch the stream into flowing mode. Data will
183
388
  * then be passed as soon as it is available.
184
389
  * @event
185
390
  */
186
- ChangeStream.CHANGE = 'change';
391
+ ChangeStream.CHANGE = constants_1.CHANGE;
187
392
  /** @event */
188
- ChangeStream.END = 'end';
393
+ ChangeStream.END = constants_1.END;
189
394
  /** @event */
190
- ChangeStream.ERROR = 'error';
395
+ ChangeStream.ERROR = constants_1.ERROR;
191
396
  /**
192
397
  * Emitted each time the change stream stores a new resume token.
193
398
  * @event
194
399
  */
195
- ChangeStream.RESUME_TOKEN_CHANGED = 'resumeTokenChanged';
400
+ ChangeStream.RESUME_TOKEN_CHANGED = constants_1.RESUME_TOKEN_CHANGED;
196
401
  /** @internal */
197
402
  class ChangeStreamCursor extends abstract_cursor_1.AbstractCursor {
198
403
  constructor(topology, namespace, pipeline = [], options = {}) {
@@ -216,7 +421,7 @@ class ChangeStreamCursor extends abstract_cursor_1.AbstractCursor {
216
421
  return this._resumeToken;
217
422
  }
218
423
  get resumeOptions() {
219
- const result = applyKnownOptions(this.options, CURSOR_OPTIONS);
424
+ const result = (0, utils_1.filterOptions)(this.options, CURSOR_OPTIONS);
220
425
  if (this.resumeToken || this.startAtOperationTime) {
221
426
  for (const key of ['resumeAfter', 'startAfter', 'startAtOperationTime']) {
222
427
  Reflect.deleteProperty(result, key);
@@ -240,11 +445,12 @@ class ChangeStreamCursor extends abstract_cursor_1.AbstractCursor {
240
445
  }
241
446
  this.hasReceived = true;
242
447
  }
243
- _processBatch(batchName, response) {
244
- const cursor = (response === null || response === void 0 ? void 0 : response.cursor) || {};
448
+ _processBatch(response) {
449
+ const cursor = response.cursor;
245
450
  if (cursor.postBatchResumeToken) {
246
- this.postBatchResumeToken = cursor.postBatchResumeToken;
247
- if (cursor[batchName].length === 0) {
451
+ this.postBatchResumeToken = response.cursor.postBatchResumeToken;
452
+ const batch = 'firstBatch' in response.cursor ? response.cursor.firstBatch : response.cursor.nextBatch;
453
+ if (batch.length === 0) {
248
454
  this.resumeToken = cursor.postBatchResumeToken;
249
455
  }
250
456
  }
@@ -271,7 +477,7 @@ class ChangeStreamCursor extends abstract_cursor_1.AbstractCursor {
271
477
  (0, utils_1.maxWireVersion)(server) >= 7) {
272
478
  this.startAtOperationTime = response.operationTime;
273
479
  }
274
- this._processBatch('firstBatch', response);
480
+ this._processBatch(response);
275
481
  this.emit(ChangeStream.INIT, response);
276
482
  this.emit(ChangeStream.RESPONSE);
277
483
  // TODO: NODE-2882
@@ -283,7 +489,7 @@ class ChangeStreamCursor extends abstract_cursor_1.AbstractCursor {
283
489
  if (err) {
284
490
  return callback(err);
285
491
  }
286
- this._processBatch('nextBatch', response);
492
+ this._processBatch(response);
287
493
  this.emit(ChangeStream.MORE, response);
288
494
  this.emit(ChangeStream.RESPONSE);
289
495
  callback(err, response);
@@ -291,213 +497,4 @@ class ChangeStreamCursor extends abstract_cursor_1.AbstractCursor {
291
497
  }
292
498
  }
293
499
  exports.ChangeStreamCursor = ChangeStreamCursor;
294
- const CHANGE_STREAM_EVENTS = [
295
- ChangeStream.RESUME_TOKEN_CHANGED,
296
- ChangeStream.END,
297
- ChangeStream.CLOSE
298
- ];
299
- function setIsEmitter(changeStream) {
300
- if (changeStream[kMode] === 'iterator') {
301
- // TODO(NODE-3485): Replace with MongoChangeStreamModeError
302
- throw new error_1.MongoAPIError('ChangeStream cannot be used as an EventEmitter after being used as an iterator');
303
- }
304
- changeStream[kMode] = 'emitter';
305
- }
306
- function setIsIterator(changeStream) {
307
- if (changeStream[kMode] === 'emitter') {
308
- // TODO(NODE-3485): Replace with MongoChangeStreamModeError
309
- throw new error_1.MongoAPIError('ChangeStream cannot be used as an iterator after being used as an EventEmitter');
310
- }
311
- changeStream[kMode] = 'iterator';
312
- }
313
- /**
314
- * Create a new change stream cursor based on self's configuration
315
- * @internal
316
- */
317
- function createChangeStreamCursor(changeStream, options) {
318
- const changeStreamStageOptions = applyKnownOptions(options, CHANGE_STREAM_OPTIONS);
319
- if (changeStream.type === CHANGE_DOMAIN_TYPES.CLUSTER) {
320
- changeStreamStageOptions.allChangesForCluster = true;
321
- }
322
- const pipeline = [{ $changeStream: changeStreamStageOptions }].concat(changeStream.pipeline);
323
- const cursorOptions = applyKnownOptions(options, CURSOR_OPTIONS);
324
- const changeStreamCursor = new ChangeStreamCursor((0, utils_1.getTopology)(changeStream.parent), changeStream.namespace, pipeline, cursorOptions);
325
- for (const event of CHANGE_STREAM_EVENTS) {
326
- changeStreamCursor.on(event, e => changeStream.emit(event, e));
327
- }
328
- if (changeStream.listenerCount(ChangeStream.CHANGE) > 0) {
329
- streamEvents(changeStream, changeStreamCursor);
330
- }
331
- return changeStreamCursor;
332
- }
333
- function applyKnownOptions(source, options) {
334
- const result = {};
335
- for (const option of options) {
336
- if (option in source) {
337
- result[option] = source[option];
338
- }
339
- }
340
- return result;
341
- }
342
- // This method performs a basic server selection loop, satisfying the requirements of
343
- // ChangeStream resumability until the new SDAM layer can be used.
344
- const SELECTION_TIMEOUT = 30000;
345
- function waitForTopologyConnected(topology, options, callback) {
346
- setTimeout(() => {
347
- if (options && options.start == null) {
348
- options.start = (0, utils_1.now)();
349
- }
350
- const start = options.start || (0, utils_1.now)();
351
- const timeout = options.timeout || SELECTION_TIMEOUT;
352
- if (topology.isConnected()) {
353
- return callback();
354
- }
355
- if ((0, utils_1.calculateDurationInMs)(start) > timeout) {
356
- // TODO(NODE-3497): Replace with MongoNetworkTimeoutError
357
- return callback(new error_1.MongoRuntimeError('Timed out waiting for connection'));
358
- }
359
- waitForTopologyConnected(topology, options, callback);
360
- }, 500); // this is an arbitrary wait time to allow SDAM to transition
361
- }
362
- function closeWithError(changeStream, error, callback) {
363
- if (!callback) {
364
- changeStream.emit(ChangeStream.ERROR, error);
365
- }
366
- changeStream.close(() => callback && callback(error));
367
- }
368
- function streamEvents(changeStream, cursor) {
369
- setIsEmitter(changeStream);
370
- const stream = changeStream[kCursorStream] || cursor.stream();
371
- changeStream[kCursorStream] = stream;
372
- stream.on('data', change => processNewChange(changeStream, change));
373
- stream.on('error', error => processError(changeStream, error));
374
- }
375
- function endStream(changeStream) {
376
- const cursorStream = changeStream[kCursorStream];
377
- if (cursorStream) {
378
- ['data', 'close', 'end', 'error'].forEach(event => cursorStream.removeAllListeners(event));
379
- cursorStream.destroy();
380
- }
381
- changeStream[kCursorStream] = undefined;
382
- }
383
- function processNewChange(changeStream, change, callback) {
384
- var _a;
385
- if (changeStream[kClosed]) {
386
- // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
387
- if (callback)
388
- callback(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR));
389
- return;
390
- }
391
- // a null change means the cursor has been notified, implicitly closing the change stream
392
- if (change == null) {
393
- // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
394
- return closeWithError(changeStream, new error_1.MongoRuntimeError(CHANGESTREAM_CLOSED_ERROR), callback);
395
- }
396
- if (change && !change._id) {
397
- return closeWithError(changeStream, new error_1.MongoChangeStreamError(NO_RESUME_TOKEN_ERROR), callback);
398
- }
399
- // cache the resume token
400
- (_a = changeStream.cursor) === null || _a === void 0 ? void 0 : _a.cacheResumeToken(change._id);
401
- // wipe the startAtOperationTime if there was one so that there won't be a conflict
402
- // between resumeToken and startAtOperationTime if we need to reconnect the cursor
403
- changeStream.options.startAtOperationTime = undefined;
404
- // Return the change
405
- if (!callback)
406
- return changeStream.emit(ChangeStream.CHANGE, change);
407
- return callback(undefined, change);
408
- }
409
- function processError(changeStream, error, callback) {
410
- const cursor = changeStream.cursor;
411
- // If the change stream has been closed explicitly, do not process error.
412
- if (changeStream[kClosed]) {
413
- // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
414
- if (callback)
415
- callback(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR));
416
- return;
417
- }
418
- // if the resume succeeds, continue with the new cursor
419
- function resumeWithCursor(newCursor) {
420
- changeStream.cursor = newCursor;
421
- processResumeQueue(changeStream);
422
- }
423
- // otherwise, raise an error and close the change stream
424
- function unresumableError(err) {
425
- if (!callback) {
426
- changeStream.emit(ChangeStream.ERROR, err);
427
- }
428
- changeStream.close(() => processResumeQueue(changeStream, err));
429
- }
430
- if (cursor && (0, error_1.isResumableError)(error, (0, utils_1.maxWireVersion)(cursor.server))) {
431
- changeStream.cursor = undefined;
432
- // stop listening to all events from old cursor
433
- endStream(changeStream);
434
- // close internal cursor, ignore errors
435
- cursor.close();
436
- const topology = (0, utils_1.getTopology)(changeStream.parent);
437
- waitForTopologyConnected(topology, { readPreference: cursor.readPreference }, err => {
438
- // if the topology can't reconnect, close the stream
439
- if (err)
440
- return unresumableError(err);
441
- // create a new cursor, preserving the old cursor's options
442
- const newCursor = createChangeStreamCursor(changeStream, cursor.resumeOptions);
443
- // attempt to continue in emitter mode
444
- if (!callback)
445
- return resumeWithCursor(newCursor);
446
- // attempt to continue in iterator mode
447
- newCursor.hasNext(err => {
448
- // if there's an error immediately after resuming, close the stream
449
- if (err)
450
- return unresumableError(err);
451
- resumeWithCursor(newCursor);
452
- });
453
- });
454
- return;
455
- }
456
- // if initial error wasn't resumable, raise an error and close the change stream
457
- return closeWithError(changeStream, error, callback);
458
- }
459
- /**
460
- * Safely provides a cursor across resume attempts
461
- *
462
- * @param changeStream - the parent ChangeStream
463
- */
464
- function getCursor(changeStream, callback) {
465
- if (changeStream[kClosed]) {
466
- // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
467
- callback(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR));
468
- return;
469
- }
470
- // if a cursor exists and it is open, return it
471
- if (changeStream.cursor) {
472
- callback(undefined, changeStream.cursor);
473
- return;
474
- }
475
- // no cursor, queue callback until topology reconnects
476
- changeStream[kResumeQueue].push(callback);
477
- }
478
- /**
479
- * Drain the resume queue when a new has become available
480
- *
481
- * @param changeStream - the parent ChangeStream
482
- * @param err - error getting a new cursor
483
- */
484
- function processResumeQueue(changeStream, err) {
485
- while (changeStream[kResumeQueue].length) {
486
- const request = changeStream[kResumeQueue].pop();
487
- if (!request)
488
- break; // Should never occur but TS can't use the length check in the while condition
489
- if (!err) {
490
- if (changeStream[kClosed]) {
491
- // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
492
- request(new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR));
493
- return;
494
- }
495
- if (!changeStream.cursor) {
496
- request(new error_1.MongoChangeStreamError(NO_CURSOR_ERROR));
497
- return;
498
- }
499
- }
500
- request(err, changeStream.cursor);
501
- }
502
- }
503
500
  //# sourceMappingURL=change_stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"change_stream.js","sourceRoot":"","sources":["../src/change_stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change_stream.js","sourceRoot":"","sources":["../src/change_stream.ts"],"names":[],"mappings":"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"}
@@ -195,6 +195,9 @@ function request(uri, _options, callback) {
195
195
  }
196
196
  });
197
197
  });
198
+ req.on('timeout', () => {
199
+ req.destroy(new error_1.MongoAWSError(`AWS request to ${uri} timed out after ${options.timeout} ms`));
200
+ });
198
201
  req.on('error', err => callback(err));
199
202
  req.end();
200
203
  }