neo4j-driver 5.15.0 → 5.17.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.
@@ -1933,12 +1933,23 @@ function assertValidNanosecond(nanosecond) {
1933
1933
  return assertValidTemporalValue(nanosecond, exports.NANOSECOND_OF_SECOND_RANGE, 'Nanosecond');
1934
1934
  }
1935
1935
  exports.assertValidNanosecond = assertValidNanosecond;
1936
+ var timeZoneValidityCache = new Map();
1937
+ var newInvalidZoneIdError = function (zoneId, fieldName) { return (0, error_1.newError)("".concat(fieldName, " is expected to be a valid ZoneId but was: \"").concat(zoneId, "\"")); };
1936
1938
  function assertValidZoneId(fieldName, zoneId) {
1939
+ var cachedResult = timeZoneValidityCache.get(zoneId);
1940
+ if (cachedResult === true) {
1941
+ return;
1942
+ }
1943
+ if (cachedResult === false) {
1944
+ throw newInvalidZoneIdError(zoneId, fieldName);
1945
+ }
1937
1946
  try {
1938
1947
  Intl.DateTimeFormat(undefined, { timeZone: zoneId });
1948
+ timeZoneValidityCache.set(zoneId, true);
1939
1949
  }
1940
1950
  catch (e) {
1941
- throw (0, error_1.newError)("".concat(fieldName, " is expected to be a valid ZoneId but was: \"").concat(zoneId, "\""));
1951
+ timeZoneValidityCache.set(zoneId, false);
1952
+ throw newInvalidZoneIdError(zoneId, fieldName);
1942
1953
  }
1943
1954
  }
1944
1955
  exports.assertValidZoneId = assertValidZoneId;
@@ -3103,7 +3114,7 @@ var record = {};
3103
3114
  * See the License for the specific language governing permissions and
3104
3115
  * limitations under the License.
3105
3116
  */
3106
- var __generator$k = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
3117
+ var __generator$l = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
3107
3118
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
3108
3119
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
3109
3120
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -3271,7 +3282,7 @@ var Record = /** @class */ (function () {
3271
3282
  */
3272
3283
  Record.prototype.entries = function () {
3273
3284
  var i;
3274
- return __generator$k(this, function (_a) {
3285
+ return __generator$l(this, function (_a) {
3275
3286
  switch (_a.label) {
3276
3287
  case 0:
3277
3288
  i = 0;
@@ -3297,7 +3308,7 @@ var Record = /** @class */ (function () {
3297
3308
  */
3298
3309
  Record.prototype.values = function () {
3299
3310
  var i;
3300
- return __generator$k(this, function (_a) {
3311
+ return __generator$l(this, function (_a) {
3301
3312
  switch (_a.label) {
3302
3313
  case 0:
3303
3314
  i = 0;
@@ -3323,7 +3334,7 @@ var Record = /** @class */ (function () {
3323
3334
  */
3324
3335
  Record.prototype[Symbol.iterator] = function () {
3325
3336
  var i;
3326
- return __generator$k(this, function (_a) {
3337
+ return __generator$l(this, function (_a) {
3327
3338
  switch (_a.label) {
3328
3339
  case 0:
3329
3340
  i = 0;
@@ -4750,7 +4761,7 @@ var __extends$L = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
4750
4761
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4751
4762
  };
4752
4763
  })();
4753
- var __awaiter$h = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
4764
+ var __awaiter$i = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
4754
4765
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4755
4766
  return new (P || (P = Promise))(function (resolve, reject) {
4756
4767
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4759,7 +4770,7 @@ var __awaiter$h = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
4759
4770
  step((generator = generator.apply(thisArg, _arguments || [])).next());
4760
4771
  });
4761
4772
  };
4762
- var __generator$j = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
4773
+ var __generator$k = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
4763
4774
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4764
4775
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
4765
4776
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -4856,10 +4867,10 @@ var ConnectionHolder = /** @class */ (function () {
4856
4867
  return true;
4857
4868
  };
4858
4869
  ConnectionHolder.prototype._createConnectionPromise = function (connectionProvider) {
4859
- return __awaiter$h(this, void 0, void 0, function () {
4870
+ return __awaiter$i(this, void 0, void 0, function () {
4860
4871
  var _a, _b;
4861
4872
  var _c;
4862
- return __generator$j(this, function (_d) {
4873
+ return __generator$k(this, function (_d) {
4863
4874
  switch (_d.label) {
4864
4875
  case 0:
4865
4876
  _b = (_a = connectionProvider).acquireConnection;
@@ -4879,8 +4890,8 @@ var ConnectionHolder = /** @class */ (function () {
4879
4890
  });
4880
4891
  };
4881
4892
  ConnectionHolder.prototype._getBookmarks = function () {
4882
- return __awaiter$h(this, void 0, void 0, function () {
4883
- return __generator$j(this, function (_a) {
4893
+ return __awaiter$i(this, void 0, void 0, function () {
4894
+ return __generator$k(this, function (_a) {
4884
4895
  switch (_a.label) {
4885
4896
  case 0: return [4 /*yield*/, this._getConnectionAcquistionBookmarks()];
4886
4897
  case 1: return [2 /*return*/, _a.sent()];
@@ -5026,8 +5037,8 @@ var EmptyConnectionHolder = /** @class */ (function (_super) {
5026
5037
  return true;
5027
5038
  };
5028
5039
  EmptyConnectionHolder.prototype.getConnection = function () {
5029
- return __awaiter$h(this, void 0, void 0, function () {
5030
- return __generator$j(this, function (_a) {
5040
+ return __awaiter$i(this, void 0, void 0, function () {
5041
+ return __generator$k(this, function (_a) {
5031
5042
  switch (_a.label) {
5032
5043
  case 0: return [4 /*yield*/, Promise.reject((0, error_1$7.newError)('This connection holder does not serve connections'))];
5033
5044
  case 1: return [2 /*return*/, _a.sent()];
@@ -5036,8 +5047,8 @@ var EmptyConnectionHolder = /** @class */ (function (_super) {
5036
5047
  });
5037
5048
  };
5038
5049
  EmptyConnectionHolder.prototype.releaseConnection = function () {
5039
- return __awaiter$h(this, void 0, void 0, function () {
5040
- return __generator$j(this, function (_a) {
5050
+ return __awaiter$i(this, void 0, void 0, function () {
5051
+ return __generator$k(this, function (_a) {
5041
5052
  switch (_a.label) {
5042
5053
  case 0: return [4 /*yield*/, Promise.resolve(null)];
5043
5054
  case 1: return [2 /*return*/, _a.sent()];
@@ -5046,8 +5057,8 @@ var EmptyConnectionHolder = /** @class */ (function (_super) {
5046
5057
  });
5047
5058
  };
5048
5059
  EmptyConnectionHolder.prototype.close = function () {
5049
- return __awaiter$h(this, void 0, void 0, function () {
5050
- return __generator$j(this, function (_a) {
5060
+ return __awaiter$i(this, void 0, void 0, function () {
5061
+ return __generator$k(this, function (_a) {
5051
5062
  switch (_a.label) {
5052
5063
  case 0: return [4 /*yield*/, Promise.resolve(null)];
5053
5064
  case 1: return [2 /*return*/, _a.sent()];
@@ -5203,7 +5214,7 @@ var __assign$m = (commonjsGlobal && commonjsGlobal.__assign) || function () {
5203
5214
  };
5204
5215
  return __assign$m.apply(this, arguments);
5205
5216
  };
5206
- var __awaiter$g = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
5217
+ var __awaiter$h = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
5207
5218
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5208
5219
  return new (P || (P = Promise))(function (resolve, reject) {
5209
5220
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -5212,7 +5223,7 @@ var __awaiter$g = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
5212
5223
  step((generator = generator.apply(thisArg, _arguments || [])).next());
5213
5224
  });
5214
5225
  };
5215
- var __generator$i = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
5226
+ var __generator$j = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
5216
5227
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
5217
5228
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
5218
5229
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -5361,10 +5372,10 @@ var TransactionExecutor = /** @class */ (function () {
5361
5372
  });
5362
5373
  };
5363
5374
  TransactionExecutor.prototype._executeTransactionInsidePromise = function (transactionCreator, transactionWork, resolve, reject, transactionWrapper, executionContext) {
5364
- return __awaiter$g(this, void 0, void 0, function () {
5375
+ return __awaiter$h(this, void 0, void 0, function () {
5365
5376
  var tx, txPromise, _a, error_2, wrap, wrappedTx, resultPromise;
5366
5377
  var _this = this;
5367
- return __generator$i(this, function (_b) {
5378
+ return __generator$j(this, function (_b) {
5368
5379
  switch (_b.label) {
5369
5380
  case 0:
5370
5381
  _b.trys.push([0, 4, , 5]);
@@ -6139,7 +6150,7 @@ internal.boltAgent = boltAgent;
6139
6150
  * See the License for the specific language governing permissions and
6140
6151
  * limitations under the License.
6141
6152
  */
6142
- var __awaiter$f = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
6153
+ var __awaiter$g = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
6143
6154
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6144
6155
  return new (P || (P = Promise))(function (resolve, reject) {
6145
6156
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -6148,7 +6159,7 @@ var __awaiter$f = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
6148
6159
  step((generator = generator.apply(thisArg, _arguments || [])).next());
6149
6160
  });
6150
6161
  };
6151
- var __generator$h = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
6162
+ var __generator$i = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
6152
6163
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
6153
6164
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
6154
6165
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -6364,9 +6375,9 @@ var Result = /** @class */ (function () {
6364
6375
  state.streaming.resume();
6365
6376
  }
6366
6377
  };
6367
- var initializeObserver = function () { return __awaiter$f(_this, void 0, void 0, function () {
6378
+ var initializeObserver = function () { return __awaiter$g(_this, void 0, void 0, function () {
6368
6379
  var _b;
6369
- return __generator$h(this, function (_c) {
6380
+ return __generator$i(this, function (_c) {
6370
6381
  switch (_c.label) {
6371
6382
  case 0:
6372
6383
  if (!(state.queuedObserver === undefined)) return [3 /*break*/, 2];
@@ -6388,9 +6399,9 @@ var Result = /** @class */ (function () {
6388
6399
  return true;
6389
6400
  };
6390
6401
  return {
6391
- next: function () { return __awaiter$f(_this, void 0, void 0, function () {
6402
+ next: function () { return __awaiter$g(_this, void 0, void 0, function () {
6392
6403
  var queuedObserver, next;
6393
- return __generator$h(this, function (_b) {
6404
+ return __generator$i(this, function (_b) {
6394
6405
  switch (_b.label) {
6395
6406
  case 0:
6396
6407
  if (state.finished) {
@@ -6412,10 +6423,10 @@ var Result = /** @class */ (function () {
6412
6423
  }
6413
6424
  });
6414
6425
  }); },
6415
- return: function (value) { return __awaiter$f(_this, void 0, void 0, function () {
6426
+ return: function (value) { return __awaiter$g(_this, void 0, void 0, function () {
6416
6427
  var queuedObserver, last;
6417
6428
  var _b;
6418
- return __generator$h(this, function (_c) {
6429
+ return __generator$i(this, function (_c) {
6419
6430
  switch (_c.label) {
6420
6431
  case 0:
6421
6432
  if (state.finished) {
@@ -6437,9 +6448,9 @@ var Result = /** @class */ (function () {
6437
6448
  }
6438
6449
  });
6439
6450
  }); },
6440
- peek: function () { return __awaiter$f(_this, void 0, void 0, function () {
6451
+ peek: function () { return __awaiter$g(_this, void 0, void 0, function () {
6441
6452
  var queuedObserver;
6442
- return __generator$h(this, function (_b) {
6453
+ return __generator$i(this, function (_b) {
6443
6454
  switch (_b.label) {
6444
6455
  case 0:
6445
6456
  if (state.finished) {
@@ -6633,9 +6644,9 @@ var Result = /** @class */ (function () {
6633
6644
  }
6634
6645
  function dequeue() {
6635
6646
  var _b;
6636
- return __awaiter$f(this, void 0, void 0, function () {
6647
+ return __awaiter$g(this, void 0, void 0, function () {
6637
6648
  var element;
6638
- return __generator$h(this, function (_c) {
6649
+ return __generator$i(this, function (_c) {
6639
6650
  switch (_c.label) {
6640
6651
  case 0:
6641
6652
  if (buffer.length > 0) {
@@ -6682,9 +6693,9 @@ var Result = /** @class */ (function () {
6682
6693
  }
6683
6694
  },
6684
6695
  dequeue: dequeue,
6685
- dequeueUntilDone: function () { return __awaiter$f(_this, void 0, void 0, function () {
6696
+ dequeueUntilDone: function () { return __awaiter$g(_this, void 0, void 0, function () {
6686
6697
  var element;
6687
- return __generator$h(this, function (_b) {
6698
+ return __generator$i(this, function (_b) {
6688
6699
  switch (_b.label) {
6689
6700
  case 0:
6690
6701
  return [4 /*yield*/, dequeue()];
@@ -6698,9 +6709,9 @@ var Result = /** @class */ (function () {
6698
6709
  }
6699
6710
  });
6700
6711
  }); },
6701
- head: function () { return __awaiter$f(_this, void 0, void 0, function () {
6712
+ head: function () { return __awaiter$g(_this, void 0, void 0, function () {
6702
6713
  var element, element, error_3;
6703
- return __generator$h(this, function (_b) {
6714
+ return __generator$i(this, function (_b) {
6704
6715
  switch (_b.label) {
6705
6716
  case 0:
6706
6717
  if (buffer.length > 0) {
@@ -7044,7 +7055,7 @@ var transaction = {};
7044
7055
  * See the License for the specific language governing permissions and
7045
7056
  * limitations under the License.
7046
7057
  */
7047
- var __awaiter$e = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
7058
+ var __awaiter$f = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
7048
7059
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7049
7060
  return new (P || (P = Promise))(function (resolve, reject) {
7050
7061
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -7053,7 +7064,7 @@ var __awaiter$e = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
7053
7064
  step((generator = generator.apply(thisArg, _arguments || [])).next());
7054
7065
  });
7055
7066
  };
7056
- var __generator$g = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
7067
+ var __generator$h = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
7057
7068
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
7058
7069
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
7059
7070
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -7149,10 +7160,10 @@ var Transaction = /** @class */ (function () {
7149
7160
  var _this = this;
7150
7161
  this._connectionHolder
7151
7162
  .getConnection()
7152
- .then(function (connection) { return __awaiter$e(_this, void 0, void 0, function () {
7163
+ .then(function (connection) { return __awaiter$f(_this, void 0, void 0, function () {
7153
7164
  var _a;
7154
7165
  var _this = this;
7155
- return __generator$g(this, function (_b) {
7166
+ return __generator$h(this, function (_b) {
7156
7167
  switch (_b.label) {
7157
7168
  case 0:
7158
7169
  this._onConnection();
@@ -7290,8 +7301,8 @@ var Transaction = /** @class */ (function () {
7290
7301
  * @returns {Promise<void>} An empty promise if closed successfully or error if any error happened during
7291
7302
  */
7292
7303
  Transaction.prototype.close = function () {
7293
- return __awaiter$e(this, void 0, void 0, function () {
7294
- return __generator$g(this, function (_a) {
7304
+ return __awaiter$f(this, void 0, void 0, function () {
7305
+ return __generator$h(this, function (_a) {
7295
7306
  switch (_a.label) {
7296
7307
  case 0:
7297
7308
  if (!this.isOpen()) return [3 /*break*/, 2];
@@ -7813,7 +7824,7 @@ var session = {};
7813
7824
  * See the License for the specific language governing permissions and
7814
7825
  * limitations under the License.
7815
7826
  */
7816
- var __awaiter$d = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
7827
+ var __awaiter$e = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
7817
7828
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7818
7829
  return new (P || (P = Promise))(function (resolve, reject) {
7819
7830
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -7822,7 +7833,7 @@ var __awaiter$d = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
7822
7833
  step((generator = generator.apply(thisArg, _arguments || [])).next());
7823
7834
  });
7824
7835
  };
7825
- var __generator$f = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
7836
+ var __generator$g = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
7826
7837
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
7827
7838
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
7828
7839
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -7975,10 +7986,10 @@ var Session = /** @class */ (function () {
7975
7986
  var autoCommitTxConfig = (transactionConfig != null)
7976
7987
  ? new tx_config_1.TxConfig(transactionConfig, this._log)
7977
7988
  : tx_config_1.TxConfig.empty();
7978
- var result = this._run(validatedQuery, params, function (connection) { return __awaiter$d(_this, void 0, void 0, function () {
7989
+ var result = this._run(validatedQuery, params, function (connection) { return __awaiter$e(_this, void 0, void 0, function () {
7979
7990
  var bookmarks;
7980
7991
  var _this = this;
7981
- return __generator$f(this, function (_a) {
7992
+ return __generator$g(this, function (_a) {
7982
7993
  switch (_a.label) {
7983
7994
  case 0: return [4 /*yield*/, this._bookmarks()];
7984
7995
  case 1:
@@ -8022,8 +8033,8 @@ var Session = /** @class */ (function () {
8022
8033
  Session.prototype._acquireConnection = function (connectionConsumer) {
8023
8034
  var _this = this;
8024
8035
  var _a = this._acquireAndConsumeConnection(connectionConsumer), connectionHolder = _a.connectionHolder, resultPromise = _a.resultPromise;
8025
- return resultPromise.then(function (result) { return __awaiter$d(_this, void 0, void 0, function () {
8026
- return __generator$f(this, function (_a) {
8036
+ return resultPromise.then(function (result) { return __awaiter$e(_this, void 0, void 0, function () {
8037
+ return __generator$g(this, function (_a) {
8027
8038
  switch (_a.label) {
8028
8039
  case 0: return [4 /*yield*/, connectionHolder.releaseConnection()];
8029
8040
  case 1:
@@ -8148,9 +8159,9 @@ var Session = /** @class */ (function () {
8148
8159
  };
8149
8160
  Session.prototype._bookmarks = function () {
8150
8161
  var _a;
8151
- return __awaiter$d(this, void 0, void 0, function () {
8162
+ return __awaiter$e(this, void 0, void 0, function () {
8152
8163
  var bookmarks;
8153
- return __generator$f(this, function (_b) {
8164
+ return __generator$g(this, function (_b) {
8154
8165
  switch (_b.label) {
8155
8166
  case 0: return [4 /*yield*/, ((_a = this._bookmarkManager) === null || _a === void 0 ? void 0 : _a.getBookmarks())];
8156
8167
  case 1:
@@ -8273,9 +8284,9 @@ var Session = /** @class */ (function () {
8273
8284
  };
8274
8285
  Session.prototype._getConnectionAcquistionBookmarks = function () {
8275
8286
  var _a;
8276
- return __awaiter$d(this, void 0, void 0, function () {
8287
+ return __awaiter$e(this, void 0, void 0, function () {
8277
8288
  var bookmarks;
8278
- return __generator$f(this, function (_b) {
8289
+ return __generator$g(this, function (_b) {
8279
8290
  switch (_b.label) {
8280
8291
  case 0: return [4 /*yield*/, ((_a = this._bookmarkManager) === null || _a === void 0 ? void 0 : _a.getBookmarks())];
8281
8292
  case 1:
@@ -8307,8 +8318,8 @@ var Session = /** @class */ (function () {
8307
8318
  * @return {Promise}
8308
8319
  */
8309
8320
  Session.prototype.close = function () {
8310
- return __awaiter$d(this, void 0, void 0, function () {
8311
- return __generator$f(this, function (_a) {
8321
+ return __awaiter$e(this, void 0, void 0, function () {
8322
+ return __generator$g(this, function (_a) {
8312
8323
  switch (_a.label) {
8313
8324
  case 0:
8314
8325
  if (!this._open) return [3 /*break*/, 3];
@@ -8422,7 +8433,7 @@ var bookmarkManager$1 = {};
8422
8433
  * See the License for the specific language governing permissions and
8423
8434
  * limitations under the License.
8424
8435
  */
8425
- var __awaiter$c = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
8436
+ var __awaiter$d = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
8426
8437
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8427
8438
  return new (P || (P = Promise))(function (resolve, reject) {
8428
8439
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8431,7 +8442,7 @@ var __awaiter$c = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
8431
8442
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8432
8443
  });
8433
8444
  };
8434
- var __generator$e = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
8445
+ var __generator$f = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
8435
8446
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
8436
8447
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
8437
8448
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -8520,8 +8531,8 @@ var BookmarkManager = /** @class */ (function () {
8520
8531
  * @returns {void}
8521
8532
  */
8522
8533
  BookmarkManager.prototype.updateBookmarks = function (previousBookmarks, newBookmarks) {
8523
- return __awaiter$c(this, void 0, void 0, function () {
8524
- return __generator$e(this, function (_a) {
8534
+ return __awaiter$d(this, void 0, void 0, function () {
8535
+ return __generator$f(this, function (_a) {
8525
8536
  throw new Error('Not implemented');
8526
8537
  });
8527
8538
  });
@@ -8532,8 +8543,8 @@ var BookmarkManager = /** @class */ (function () {
8532
8543
  * @returns {Iterable<string>} The set of bookmarks
8533
8544
  */
8534
8545
  BookmarkManager.prototype.getBookmarks = function () {
8535
- return __awaiter$c(this, void 0, void 0, function () {
8536
- return __generator$e(this, function (_a) {
8546
+ return __awaiter$d(this, void 0, void 0, function () {
8547
+ return __generator$f(this, function (_a) {
8537
8548
  throw new Error('Not implemented');
8538
8549
  });
8539
8550
  });
@@ -8569,10 +8580,10 @@ var Neo4jBookmarkManager = /** @class */ (function () {
8569
8580
  this._bookmarksConsumer = _bookmarksConsumer;
8570
8581
  }
8571
8582
  Neo4jBookmarkManager.prototype.updateBookmarks = function (previousBookmarks, newBookmarks) {
8572
- return __awaiter$c(this, void 0, void 0, function () {
8583
+ return __awaiter$d(this, void 0, void 0, function () {
8573
8584
  var bookmarks, previousBookmarks_1, previousBookmarks_1_1, bm, newBookmarks_1, newBookmarks_1_1, bm;
8574
8585
  var e_1, _a, e_2, _b;
8575
- return __generator$e(this, function (_c) {
8586
+ return __generator$f(this, function (_c) {
8576
8587
  switch (_c.label) {
8577
8588
  case 0:
8578
8589
  bookmarks = this._bookmarks;
@@ -8614,10 +8625,10 @@ var Neo4jBookmarkManager = /** @class */ (function () {
8614
8625
  };
8615
8626
  Neo4jBookmarkManager.prototype.getBookmarks = function () {
8616
8627
  var _a;
8617
- return __awaiter$c(this, void 0, void 0, function () {
8628
+ return __awaiter$d(this, void 0, void 0, function () {
8618
8629
  var bookmarks, suppliedBookmarks, suppliedBookmarks_1, suppliedBookmarks_1_1, bm;
8619
8630
  var e_3, _b;
8620
- return __generator$e(this, function (_c) {
8631
+ return __generator$f(this, function (_c) {
8621
8632
  switch (_c.label) {
8622
8633
  case 0:
8623
8634
  bookmarks = new Set(this._bookmarks);
@@ -8665,7 +8676,7 @@ var resultTransformers$1 = {};
8665
8676
  * See the License for the specific language governing permissions and
8666
8677
  * limitations under the License.
8667
8678
  */
8668
- var __awaiter$b = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
8679
+ var __awaiter$c = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
8669
8680
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8670
8681
  return new (P || (P = Promise))(function (resolve, reject) {
8671
8682
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8674,7 +8685,7 @@ var __awaiter$b = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
8674
8685
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8675
8686
  });
8676
8687
  };
8677
- var __generator$d = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
8688
+ var __generator$e = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
8678
8689
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
8679
8690
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
8680
8691
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -8708,9 +8719,9 @@ Object.defineProperty(resultTransformers$1, "__esModule", { value: true });
8708
8719
  var result_eager_1 = __importDefault$P(resultEager);
8709
8720
  var error_1$1 = error;
8710
8721
  function createEagerResultFromResult(result) {
8711
- return __awaiter$b(this, void 0, void 0, function () {
8722
+ return __awaiter$c(this, void 0, void 0, function () {
8712
8723
  var _a, summary, records, keys;
8713
- return __generator$d(this, function (_b) {
8724
+ return __generator$e(this, function (_b) {
8714
8725
  switch (_b.label) {
8715
8726
  case 0: return [4 /*yield*/, result];
8716
8727
  case 1:
@@ -8824,8 +8835,8 @@ var ResultTransformers = /** @class */ (function () {
8824
8835
  if (config == null || (config.collect == null && config.map == null)) {
8825
8836
  throw (0, error_1$1.newError)('Requires a map or/and a collect functions.');
8826
8837
  }
8827
- return function (result) { return __awaiter$b(_this, void 0, void 0, function () {
8828
- return __generator$d(this, function (_a) {
8838
+ return function (result) { return __awaiter$c(_this, void 0, void 0, function () {
8839
+ return __generator$e(this, function (_a) {
8829
8840
  switch (_a.label) {
8830
8841
  case 0: return [4 /*yield*/, new Promise(function (resolve, reject) {
8831
8842
  var state = { records: [], keys: [] };
@@ -8890,7 +8901,7 @@ var queryExecutor = {};
8890
8901
  * See the License for the specific language governing permissions and
8891
8902
  * limitations under the License.
8892
8903
  */
8893
- var __awaiter$a = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
8904
+ var __awaiter$b = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
8894
8905
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8895
8906
  return new (P || (P = Promise))(function (resolve, reject) {
8896
8907
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8899,7 +8910,7 @@ var __awaiter$a = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
8899
8910
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8900
8911
  });
8901
8912
  };
8902
- var __generator$c = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
8913
+ var __generator$d = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
8903
8914
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
8904
8915
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
8905
8916
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -8933,10 +8944,10 @@ var QueryExecutor = /** @class */ (function () {
8933
8944
  this._createSession = _createSession;
8934
8945
  }
8935
8946
  QueryExecutor.prototype.execute = function (config, query, parameters) {
8936
- return __awaiter$a(this, void 0, void 0, function () {
8947
+ return __awaiter$b(this, void 0, void 0, function () {
8937
8948
  var session, executeInTransaction;
8938
8949
  var _this = this;
8939
- return __generator$c(this, function (_a) {
8950
+ return __generator$d(this, function (_a) {
8940
8951
  switch (_a.label) {
8941
8952
  case 0:
8942
8953
  session = this._createSession({
@@ -8952,9 +8963,9 @@ var QueryExecutor = /** @class */ (function () {
8952
8963
  executeInTransaction = config.routing === 'READ'
8953
8964
  ? session.executeRead.bind(session)
8954
8965
  : session.executeWrite.bind(session);
8955
- return [4 /*yield*/, executeInTransaction(function (tx) { return __awaiter$a(_this, void 0, void 0, function () {
8966
+ return [4 /*yield*/, executeInTransaction(function (tx) { return __awaiter$b(_this, void 0, void 0, function () {
8956
8967
  var result;
8957
- return __generator$c(this, function (_a) {
8968
+ return __generator$d(this, function (_a) {
8958
8969
  switch (_a.label) {
8959
8970
  case 0:
8960
8971
  result = tx.run(query, parameters);
@@ -8977,7 +8988,7 @@ var QueryExecutor = /** @class */ (function () {
8977
8988
  }());
8978
8989
  queryExecutor.default = QueryExecutor;
8979
8990
 
8980
- var __awaiter$9 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
8991
+ var __awaiter$a = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
8981
8992
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8982
8993
  return new (P || (P = Promise))(function (resolve, reject) {
8983
8994
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8986,7 +8997,7 @@ var __awaiter$9 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
8986
8997
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8987
8998
  });
8988
8999
  };
8989
- var __generator$b = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
9000
+ var __generator$c = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
8990
9001
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
8991
9002
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
8992
9003
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -9463,9 +9474,9 @@ var Driver$1 = /** @class */ (function () {
9463
9474
  Driver.prototype.executeQuery = function (query, parameters, config) {
9464
9475
  var _a, _b, _c;
9465
9476
  if (config === void 0) { config = {}; }
9466
- return __awaiter$9(this, void 0, void 0, function () {
9477
+ return __awaiter$a(this, void 0, void 0, function () {
9467
9478
  var bookmarkManager, resultTransformer, routingConfig;
9468
- return __generator$b(this, function (_d) {
9479
+ return __generator$c(this, function (_d) {
9469
9480
  switch (_d.label) {
9470
9481
  case 0:
9471
9482
  bookmarkManager = config.bookmarkManager === null ? undefined : ((_a = config.bookmarkManager) !== null && _a !== void 0 ? _a : this.executeQueryBookmarkManager);
@@ -9516,9 +9527,9 @@ var Driver$1 = /** @class */ (function () {
9516
9527
  */
9517
9528
  Driver.prototype.verifyAuthentication = function (_a) {
9518
9529
  var _b = _a === void 0 ? {} : _a, database = _b.database, auth = _b.auth;
9519
- return __awaiter$9(this, void 0, void 0, function () {
9530
+ return __awaiter$a(this, void 0, void 0, function () {
9520
9531
  var connectionProvider;
9521
- return __generator$b(this, function (_c) {
9532
+ return __generator$c(this, function (_c) {
9522
9533
  switch (_c.label) {
9523
9534
  case 0:
9524
9535
  connectionProvider = this._getOrCreateConnectionProvider();
@@ -9755,6 +9766,8 @@ function sanitizeConfig(config) {
9755
9766
  config.connectionAcquisitionTimeout = sanitizeIntValue(config.connectionAcquisitionTimeout, constants_1.DEFAULT_POOL_ACQUISITION_TIMEOUT);
9756
9767
  config.fetchSize = validateFetchSizeValue$1(config.fetchSize, DEFAULT_FETCH_SIZE);
9757
9768
  config.connectionTimeout = extractConnectionTimeout(config);
9769
+ config.connectionLivenessCheckTimeout =
9770
+ validateConnectionLivenessCheckTimeoutSizeValue(config.connectionLivenessCheckTimeout);
9758
9771
  }
9759
9772
  /**
9760
9773
  * @private
@@ -9808,6 +9821,19 @@ function extractConnectionTimeout(config) {
9808
9821
  return configuredTimeout;
9809
9822
  }
9810
9823
  }
9824
+ /**
9825
+ * @private
9826
+ */
9827
+ function validateConnectionLivenessCheckTimeoutSizeValue(rawValue) {
9828
+ if (rawValue == null) {
9829
+ return undefined;
9830
+ }
9831
+ var connectionLivenessCheckTimeout = parseInt(rawValue, 10);
9832
+ if (connectionLivenessCheckTimeout < 0 || Number.isNaN(connectionLivenessCheckTimeout)) {
9833
+ throw new Error("The connectionLivenessCheckTimeout can only be a positive value or 0 for always. However connectionLivenessCheckTimeout = ".concat(connectionLivenessCheckTimeout));
9834
+ }
9835
+ return connectionLivenessCheckTimeout;
9836
+ }
9811
9837
  /**
9812
9838
  * @private
9813
9839
  * @returns {ConfiguredCustomResolver} new custom resolver that wraps the passed-in resolver function.
@@ -9922,7 +9948,7 @@ var authTokenManager = {};
9922
9948
  * See the License for the specific language governing permissions and
9923
9949
  * limitations under the License.
9924
9950
  */
9925
- var __awaiter$8 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
9951
+ var __awaiter$9 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
9926
9952
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9927
9953
  return new (P || (P = Promise))(function (resolve, reject) {
9928
9954
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -9931,7 +9957,7 @@ var __awaiter$8 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
9931
9957
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9932
9958
  });
9933
9959
  };
9934
- var __generator$a = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
9960
+ var __generator$b = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
9935
9961
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
9936
9962
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
9937
9963
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -10071,9 +10097,9 @@ var AuthTokenManagers = /** @class */ (function () {
10071
10097
  if (typeof tokenProvider !== 'function') {
10072
10098
  throw new TypeError("tokenProvider should be function, but got: ".concat(typeof tokenProvider));
10073
10099
  }
10074
- return new ExpirationBasedAuthTokenManager(function () { return __awaiter$8(_this, void 0, void 0, function () {
10100
+ return new ExpirationBasedAuthTokenManager(function () { return __awaiter$9(_this, void 0, void 0, function () {
10075
10101
  var _a;
10076
- return __generator$a(this, function (_b) {
10102
+ return __generator$b(this, function (_b) {
10077
10103
  switch (_b.label) {
10078
10104
  case 0:
10079
10105
  _a = {};
@@ -10129,8 +10155,8 @@ var ExpirationBasedAuthTokenManager = /** @class */ (function () {
10129
10155
  }
10130
10156
  ExpirationBasedAuthTokenManager.prototype.getToken = function () {
10131
10157
  var _a;
10132
- return __awaiter$8(this, void 0, void 0, function () {
10133
- return __generator$a(this, function (_b) {
10158
+ return __awaiter$9(this, void 0, void 0, function () {
10159
+ return __generator$b(this, function (_b) {
10134
10160
  switch (_b.label) {
10135
10161
  case 0:
10136
10162
  if (!(this._currentAuthData === undefined ||
@@ -10179,9 +10205,9 @@ var ExpirationBasedAuthTokenManager = /** @class */ (function () {
10179
10205
  }
10180
10206
  };
10181
10207
  ExpirationBasedAuthTokenManager.prototype._refreshAuthToken = function () {
10182
- return __awaiter$8(this, void 0, void 0, function () {
10208
+ return __awaiter$9(this, void 0, void 0, function () {
10183
10209
  var _this = this;
10184
- return __generator$a(this, function (_a) {
10210
+ return __generator$b(this, function (_a) {
10185
10211
  switch (_a.label) {
10186
10212
  case 0: return [4 /*yield*/, new Promise(function (resolve, reject) {
10187
10213
  _this._scheduleRefreshAuthToken({
@@ -10347,6 +10373,32 @@ var Config = /** @class */ (function () {
10347
10373
  * @type {number|undefined}
10348
10374
  */
10349
10375
  this.maxTransactionRetryTime = 30000; // 30 seconds
10376
+ /**
10377
+ * Specify the maximum time in milliseconds the connection can be idle without needing
10378
+ * to perform a liveness check on acquire from the pool.
10379
+ *
10380
+ * Pooled connections that have been idle in the pool for longer than this
10381
+ * timeout will be tested before they are used again, to ensure they are still live.
10382
+ * If this option is set too low, an additional network call will be incurred
10383
+ * when acquiring a connection, which causes a performance hit.
10384
+ *
10385
+ * If this is set high, you may receive sessions that are backed by no longer
10386
+ * live connections, which will lead to exceptions in your application.
10387
+ * Assuming the database is running, these exceptions will go away if you retry
10388
+ * acquiring sessions.
10389
+ *
10390
+ * Hence, this parameter tunes a balance between the likelihood of your application
10391
+ * seeing connection problems, and performance.
10392
+ *
10393
+ * You normally should not need to tune this parameter. No connection liveliness
10394
+ * check is done by default. Value 0 means connections will always be tested for
10395
+ * validity and negative values mean connections will never be tested.
10396
+ *
10397
+ * **Default**: ```undefined``` (Disabled)
10398
+ *
10399
+ * @type {number|undefined}
10400
+ */
10401
+ this.connectionLivenessCheckTimeout = undefined; // Disabled
10350
10402
  /**
10351
10403
  * Specify socket connection timeout in milliseconds.
10352
10404
  *
@@ -13099,7 +13151,7 @@ isIterable$2.isIterable = isIterable$1;
13099
13151
 
13100
13152
  var isReadableStreamLike$1 = {};
13101
13153
 
13102
- var __generator$9 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
13154
+ var __generator$a = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
13103
13155
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13104
13156
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13105
13157
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -13144,7 +13196,7 @@ var isFunction_1$g = isFunction$1;
13144
13196
  function readableStreamLikeToAsyncGenerator(readableStream) {
13145
13197
  return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {
13146
13198
  var reader, _a, value, done;
13147
- return __generator$9(this, function (_b) {
13199
+ return __generator$a(this, function (_b) {
13148
13200
  switch (_b.label) {
13149
13201
  case 0:
13150
13202
  reader = readableStream.getReader();
@@ -13179,7 +13231,7 @@ function isReadableStreamLike(obj) {
13179
13231
  }
13180
13232
  isReadableStreamLike$1.isReadableStreamLike = isReadableStreamLike;
13181
13233
 
13182
- var __awaiter$7 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
13234
+ var __awaiter$8 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
13183
13235
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13184
13236
  return new (P || (P = Promise))(function (resolve, reject) {
13185
13237
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -13188,7 +13240,7 @@ var __awaiter$7 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
13188
13240
  step((generator = generator.apply(thisArg, _arguments || [])).next());
13189
13241
  });
13190
13242
  };
13191
- var __generator$8 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
13243
+ var __generator$9 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
13192
13244
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13193
13245
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13194
13246
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -13341,9 +13393,9 @@ innerFrom$1.fromReadableStreamLike = fromReadableStreamLike;
13341
13393
  function process(asyncIterable, subscriber) {
13342
13394
  var asyncIterable_1, asyncIterable_1_1;
13343
13395
  var e_2, _a;
13344
- return __awaiter$7(this, void 0, void 0, function () {
13396
+ return __awaiter$8(this, void 0, void 0, function () {
13345
13397
  var value, e_2_1;
13346
- return __generator$8(this, function (_b) {
13398
+ return __generator$9(this, function (_b) {
13347
13399
  switch (_b.label) {
13348
13400
  case 0:
13349
13401
  _b.trys.push([0, 5, 6, 11]);
@@ -14522,7 +14574,7 @@ fromEventPattern$1.fromEventPattern = fromEventPattern;
14522
14574
 
14523
14575
  var generate$1 = {};
14524
14576
 
14525
- var __generator$7 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
14577
+ var __generator$8 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
14526
14578
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
14527
14579
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14528
14580
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -14574,7 +14626,7 @@ function generate(initialStateOrOptions, condition, iterate, resultSelectorOrSch
14574
14626
  }
14575
14627
  function gen() {
14576
14628
  var state;
14577
- return __generator$7(this, function (_a) {
14629
+ return __generator$8(this, function (_a) {
14578
14630
  switch (_a.label) {
14579
14631
  case 0:
14580
14632
  state = initialState;
@@ -18669,7 +18721,7 @@ Object.defineProperty(exports, "zipWith", { enumerable: true, get: function () {
18669
18721
 
18670
18722
  var resultRx = {};
18671
18723
 
18672
- var __awaiter$6 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
18724
+ var __awaiter$7 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
18673
18725
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18674
18726
  return new (P || (P = Promise))(function (resolve, reject) {
18675
18727
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -18678,7 +18730,7 @@ var __awaiter$6 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
18678
18730
  step((generator = generator.apply(thisArg, _arguments || [])).next());
18679
18731
  });
18680
18732
  };
18681
- var __generator$6 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
18733
+ var __generator$7 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
18682
18734
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
18683
18735
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
18684
18736
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -18894,9 +18946,9 @@ var RxResult = /** @class */ (function () {
18894
18946
  return this._records;
18895
18947
  }
18896
18948
  this._records = createFullyControlledSubject(result[Symbol.asyncIterator](), {
18897
- complete: function () { return __awaiter$6(_this, void 0, void 0, function () {
18949
+ complete: function () { return __awaiter$7(_this, void 0, void 0, function () {
18898
18950
  var _a, _b;
18899
- return __generator$6(this, function (_c) {
18951
+ return __generator$7(this, function (_c) {
18900
18952
  switch (_c.label) {
18901
18953
  case 0:
18902
18954
  this._state = States.COMPLETED;
@@ -18923,9 +18975,9 @@ function createFullyControlledSubject(iterator, completeObserver, streamControl)
18923
18975
  var _this = this;
18924
18976
  if (streamControl === void 0) { streamControl = new StreamControl(); }
18925
18977
  var subject = new rxjs_1$3.Subject();
18926
- var pushNextValue = function (result) { return __awaiter$6(_this, void 0, void 0, function () {
18978
+ var pushNextValue = function (result) { return __awaiter$7(_this, void 0, void 0, function () {
18927
18979
  var _a, done, value, error_1;
18928
- return __generator$6(this, function (_b) {
18980
+ return __generator$7(this, function (_b) {
18929
18981
  switch (_b.label) {
18930
18982
  case 0:
18931
18983
  _b.trys.push([0, 2, 3, 4]);
@@ -18958,8 +19010,8 @@ function createFullyControlledSubject(iterator, completeObserver, streamControl)
18958
19010
  });
18959
19011
  }); };
18960
19012
  function push(value) {
18961
- return __awaiter$6(this, void 0, void 0, function () {
18962
- return __generator$6(this, function (_a) {
19013
+ return __awaiter$7(this, void 0, void 0, function () {
19014
+ return __generator$7(this, function (_a) {
18963
19015
  switch (_a.label) {
18964
19016
  case 0: return [4 /*yield*/, pushNextValue(iterator.next(value))];
18965
19017
  case 1:
@@ -18975,7 +19027,7 @@ function createFullyControlledSubject(iterator, completeObserver, streamControl)
18975
19027
  }
18976
19028
  var StreamControl = /** @class */ (function () {
18977
19029
  function StreamControl(push) {
18978
- if (push === void 0) { push = function () { return __awaiter$6(_this, void 0, void 0, function () { return __generator$6(this, function (_a) {
19030
+ if (push === void 0) { push = function () { return __awaiter$7(_this, void 0, void 0, function () { return __generator$7(this, function (_a) {
18979
19031
  return [2 /*return*/];
18980
19032
  }); }); }; }
18981
19033
  var _this = this;
@@ -19004,9 +19056,9 @@ var StreamControl = /** @class */ (function () {
19004
19056
  configurable: true
19005
19057
  });
19006
19058
  StreamControl.prototype.resume = function () {
19007
- return __awaiter$6(this, void 0, void 0, function () {
19059
+ return __awaiter$7(this, void 0, void 0, function () {
19008
19060
  var wasPaused;
19009
- return __generator$6(this, function (_a) {
19061
+ return __generator$7(this, function (_a) {
19010
19062
  switch (_a.label) {
19011
19063
  case 0:
19012
19064
  wasPaused = this._paused;
@@ -19022,8 +19074,8 @@ var StreamControl = /** @class */ (function () {
19022
19074
  });
19023
19075
  };
19024
19076
  StreamControl.prototype.push = function () {
19025
- return __awaiter$6(this, void 0, void 0, function () {
19026
- return __generator$6(this, function (_a) {
19077
+ return __awaiter$7(this, void 0, void 0, function () {
19078
+ return __generator$7(this, function (_a) {
19027
19079
  switch (_a.label) {
19028
19080
  case 0:
19029
19081
  this.pause();
@@ -19710,7 +19762,7 @@ Object.defineProperty(version$1, "__esModule", { value: true });
19710
19762
  // This is set up this way to keep the version in the code in
19711
19763
  // sync with the npm package version, and to allow the build
19712
19764
  // system to control version names at packaging time.
19713
- version$1.default = '5.15.0';
19765
+ version$1.default = '5.17.0';
19714
19766
 
19715
19767
  var lib = {};
19716
19768
 
@@ -22856,6 +22908,7 @@ var WebSocketChannel = /** @class */ (function () {
22856
22908
  this._receiveTimeout = null;
22857
22909
  this._receiveTimeoutStarted = false;
22858
22910
  this._receiveTimeoutId = null;
22911
+ this._closingPromise = null;
22859
22912
  var _a = determineWebSocketScheme(config, protocolSupplier), scheme = _a.scheme, error = _a.error;
22860
22913
  if (error) {
22861
22914
  this._error = error;
@@ -22953,18 +23006,23 @@ var WebSocketChannel = /** @class */ (function () {
22953
23006
  */
22954
23007
  WebSocketChannel.prototype.close = function () {
22955
23008
  var _this = this;
22956
- return new Promise(function (resolve, reject) {
22957
- _this._clearConnectionTimeout();
22958
- if (_this._ws && _this._ws.readyState !== WS_CLOSED) {
22959
- _this._open = false;
22960
- _this.stopReceiveTimeout();
22961
- _this._ws.onclose = function () { return resolve(); };
22962
- _this._ws.close();
22963
- }
22964
- else {
22965
- resolve();
22966
- }
22967
- });
23009
+ if (this._closingPromise === null) {
23010
+ this._closingPromise = new Promise(function (resolve, reject) {
23011
+ _this._clearConnectionTimeout();
23012
+ if (_this._ws && _this._ws.readyState !== WS_CLOSED) {
23013
+ _this._open = false;
23014
+ _this.stopReceiveTimeout();
23015
+ _this._ws.onclose = function () {
23016
+ resolve();
23017
+ };
23018
+ _this._ws.close();
23019
+ }
23020
+ else {
23021
+ resolve();
23022
+ }
23023
+ });
23024
+ }
23025
+ return this._closingPromise;
22968
23026
  };
22969
23027
  /**
22970
23028
  * Setup the receive timeout for the channel.
@@ -28768,18 +28826,26 @@ function getOffsetFromZoneId(timeZoneId, epochSecond, nanosecond) {
28768
28826
  var offset = zonedEpochFromGuessedUtc.subtract(guessedUtc);
28769
28827
  return offset;
28770
28828
  }
28829
+ var dateTimeFormatCache = new Map();
28830
+ function getDateTimeFormatForZoneId(timeZoneId) {
28831
+ if (!dateTimeFormatCache.has(timeZoneId)) {
28832
+ var formatter = new Intl.DateTimeFormat('en-US', {
28833
+ timeZone: timeZoneId,
28834
+ year: 'numeric',
28835
+ month: 'numeric',
28836
+ day: 'numeric',
28837
+ hour: 'numeric',
28838
+ minute: 'numeric',
28839
+ second: 'numeric',
28840
+ hour12: false,
28841
+ era: 'narrow'
28842
+ });
28843
+ dateTimeFormatCache.set(timeZoneId, formatter);
28844
+ }
28845
+ return dateTimeFormatCache.get(timeZoneId);
28846
+ }
28771
28847
  function getTimeInZoneId(timeZoneId, epochSecond, nano) {
28772
- var formatter = new Intl.DateTimeFormat('en-US', {
28773
- timeZone: timeZoneId,
28774
- year: 'numeric',
28775
- month: 'numeric',
28776
- day: 'numeric',
28777
- hour: 'numeric',
28778
- minute: 'numeric',
28779
- second: 'numeric',
28780
- hour12: false,
28781
- era: 'narrow'
28782
- });
28848
+ var formatter = getDateTimeFormatForZoneId(timeZoneId);
28783
28849
  var utc = (0, neo4j_driver_core_1$k.int)(epochSecond)
28784
28850
  .multiply(1000)
28785
28851
  .add((0, neo4j_driver_core_1$k.int)(nano).div(1000000))
@@ -30100,7 +30166,7 @@ var ResponseHandler = /** @class */ (function () {
30100
30166
  this._log = log;
30101
30167
  this._transformMetadata = transformMetadata || NO_OP_IDENTITY;
30102
30168
  this._observer = Object.assign({
30103
- onPendingObserversChange: NO_OP,
30169
+ onObserversCountChange: NO_OP,
30104
30170
  onError: NO_OP,
30105
30171
  onFailure: NO_OP,
30106
30172
  onErrorApplyTransformation: NO_OP_IDENTITY
@@ -30176,8 +30242,15 @@ var ResponseHandler = /** @class */ (function () {
30176
30242
  */
30177
30243
  ResponseHandler.prototype._updateCurrentObserver = function () {
30178
30244
  this._currentObserver = this._pendingObservers.shift();
30179
- this._observer.onPendingObserversChange(this._pendingObservers.length);
30245
+ this._observer.onObserversCountChange(this._observersCount);
30180
30246
  };
30247
+ Object.defineProperty(ResponseHandler.prototype, "_observersCount", {
30248
+ get: function () {
30249
+ return this._currentObserver == null ? this._pendingObservers.length : this._pendingObservers.length + 1;
30250
+ },
30251
+ enumerable: false,
30252
+ configurable: true
30253
+ });
30181
30254
  ResponseHandler.prototype._queueObserver = function (observer) {
30182
30255
  observer = observer || NO_OP_OBSERVER;
30183
30256
  observer.onCompleted = observer.onCompleted || NO_OP;
@@ -30189,7 +30262,7 @@ var ResponseHandler = /** @class */ (function () {
30189
30262
  else {
30190
30263
  this._pendingObservers.push(observer);
30191
30264
  }
30192
- this._observer.onPendingObserversChange(this._pendingObservers.length);
30265
+ this._observer.onObserversCountChange(this._observersCount);
30193
30266
  return true;
30194
30267
  };
30195
30268
  ResponseHandler.prototype._notifyErrorToObservers = function (error) {
@@ -30462,7 +30535,7 @@ var pool = {};
30462
30535
  * See the License for the specific language governing permissions and
30463
30536
  * limitations under the License.
30464
30537
  */
30465
- var __awaiter$5 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
30538
+ var __awaiter$6 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
30466
30539
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30467
30540
  return new (P || (P = Promise))(function (resolve, reject) {
30468
30541
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -30471,7 +30544,7 @@ var __awaiter$5 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
30471
30544
  step((generator = generator.apply(thisArg, _arguments || [])).next());
30472
30545
  });
30473
30546
  };
30474
- var __generator$5 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
30547
+ var __generator$6 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
30475
30548
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
30476
30549
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
30477
30550
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -30603,9 +30676,9 @@ var Pool = /** @class */ (function () {
30603
30676
  * @returns {Promise<void>} A promise that is resolved when the resources are purged
30604
30677
  */
30605
30678
  Pool.prototype.close = function () {
30606
- return __awaiter$5(this, void 0, void 0, function () {
30679
+ return __awaiter$6(this, void 0, void 0, function () {
30607
30680
  var _this = this;
30608
- return __generator$5(this, function (_a) {
30681
+ return __generator$6(this, function (_a) {
30609
30682
  switch (_a.label) {
30610
30683
  case 0:
30611
30684
  this._closed = true;
@@ -30664,10 +30737,10 @@ var Pool = /** @class */ (function () {
30664
30737
  return pool;
30665
30738
  };
30666
30739
  Pool.prototype._acquire = function (acquisitionContext, address, requireNew) {
30667
- return __awaiter$5(this, void 0, void 0, function () {
30740
+ return __awaiter$6(this, void 0, void 0, function () {
30668
30741
  var key, pool, resource_1, numConnections, resource, numConnections, resource_2;
30669
30742
  var _this = this;
30670
- return __generator$5(this, function (_a) {
30743
+ return __generator$6(this, function (_a) {
30671
30744
  switch (_a.label) {
30672
30745
  case 0:
30673
30746
  if (this._closed) {
@@ -30744,10 +30817,10 @@ var Pool = /** @class */ (function () {
30744
30817
  });
30745
30818
  };
30746
30819
  Pool.prototype._release = function (address, resource, pool) {
30747
- return __awaiter$5(this, void 0, void 0, function () {
30820
+ return __awaiter$6(this, void 0, void 0, function () {
30748
30821
  var key;
30749
30822
  var _this = this;
30750
- return __generator$5(this, function (_a) {
30823
+ return __generator$6(this, function (_a) {
30751
30824
  switch (_a.label) {
30752
30825
  case 0:
30753
30826
  key = address.asKey();
@@ -30810,9 +30883,9 @@ var Pool = /** @class */ (function () {
30810
30883
  });
30811
30884
  };
30812
30885
  Pool.prototype._purgeKey = function (key) {
30813
- return __awaiter$5(this, void 0, void 0, function () {
30886
+ return __awaiter$6(this, void 0, void 0, function () {
30814
30887
  var pool, destructionList, resource;
30815
- return __generator$5(this, function (_a) {
30888
+ return __generator$6(this, function (_a) {
30816
30889
  switch (_a.label) {
30817
30890
  case 0:
30818
30891
  pool = this._pools[key];
@@ -31183,6 +31256,23 @@ var Connection = /** @class */ (function (_super) {
31183
31256
  enumerable: false,
31184
31257
  configurable: true
31185
31258
  });
31259
+ Object.defineProperty(Connection.prototype, "creationTimestamp", {
31260
+ get: function () {
31261
+ throw new Error('not implemented');
31262
+ },
31263
+ enumerable: false,
31264
+ configurable: true
31265
+ });
31266
+ Object.defineProperty(Connection.prototype, "idleTimestamp", {
31267
+ get: function () {
31268
+ throw new Error('not implemented');
31269
+ },
31270
+ set: function (value) {
31271
+ throw new Error('not implemented');
31272
+ },
31273
+ enumerable: false,
31274
+ configurable: true
31275
+ });
31186
31276
  /**
31187
31277
  * @returns {BoltProtocol} the underlying bolt protocol assigned to this connection
31188
31278
  */
@@ -31296,7 +31386,7 @@ var __extends$4 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
31296
31386
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
31297
31387
  };
31298
31388
  })();
31299
- var __awaiter$4 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
31389
+ var __awaiter$5 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
31300
31390
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
31301
31391
  return new (P || (P = Promise))(function (resolve, reject) {
31302
31392
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -31305,7 +31395,7 @@ var __awaiter$4 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
31305
31395
  step((generator = generator.apply(thisArg, _arguments || [])).next());
31306
31396
  });
31307
31397
  };
31308
- var __generator$4 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
31398
+ var __generator$5 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
31309
31399
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
31310
31400
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
31311
31401
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -31374,7 +31464,7 @@ function createChannelConnection(address, config, errorHandler, log, serversideR
31374
31464
  server: conn.server,
31375
31465
  log: conn.logger,
31376
31466
  observer: {
31377
- onPendingObserversChange: conn._handleOngoingRequestsNumberChange.bind(conn),
31467
+ onObserversCountChange: conn._handleOngoingRequestsNumberChange.bind(conn),
31378
31468
  onError: conn._handleFatalError.bind(conn),
31379
31469
  onFailure: conn._resetOnFailure.bind(conn),
31380
31470
  onProtocolError: conn._handleProtocolError.bind(conn),
@@ -31414,12 +31504,13 @@ var ChannelConnection = /** @class */ (function (_super) {
31414
31504
  if (serversideRouting === void 0) { serversideRouting = null; }
31415
31505
  var _this = _super.call(this, errorHandler) || this;
31416
31506
  _this._authToken = null;
31507
+ _this._idle = false;
31417
31508
  _this._reseting = false;
31418
31509
  _this._resetObservers = [];
31419
31510
  _this._id = idGenerator++;
31420
31511
  _this._address = address;
31421
31512
  _this._server = { address: address.asHostPort() };
31422
- _this.creationTimestamp = Date.now();
31513
+ _this._creationTimestamp = Date.now();
31423
31514
  _this._disableLosslessIntegers = disableLosslessIntegers;
31424
31515
  _this._ch = channel;
31425
31516
  _this._chunker = chunker;
@@ -31508,6 +31599,23 @@ var ChannelConnection = /** @class */ (function (_super) {
31508
31599
  enumerable: false,
31509
31600
  configurable: true
31510
31601
  });
31602
+ Object.defineProperty(ChannelConnection.prototype, "idleTimestamp", {
31603
+ get: function () {
31604
+ return this._idleTimestamp;
31605
+ },
31606
+ set: function (value) {
31607
+ this._idleTimestamp = value;
31608
+ },
31609
+ enumerable: false,
31610
+ configurable: true
31611
+ });
31612
+ Object.defineProperty(ChannelConnection.prototype, "creationTimestamp", {
31613
+ get: function () {
31614
+ return this._creationTimestamp;
31615
+ },
31616
+ enumerable: false,
31617
+ configurable: true
31618
+ });
31511
31619
  /**
31512
31620
  * Send initialization message.
31513
31621
  * @param {string} userAgent the user agent for this driver.
@@ -31517,9 +31625,9 @@ var ChannelConnection = /** @class */ (function (_super) {
31517
31625
  * @return {Promise<Connection>} promise resolved with the current connection if connection is successful. Rejected promise otherwise.
31518
31626
  */
31519
31627
  ChannelConnection.prototype.connect = function (userAgent, boltAgent, authToken, waitReAuth) {
31520
- return __awaiter$4(this, void 0, void 0, function () {
31628
+ return __awaiter$5(this, void 0, void 0, function () {
31521
31629
  var _this = this;
31522
- return __generator$4(this, function (_a) {
31630
+ return __generator$5(this, function (_a) {
31523
31631
  switch (_a.label) {
31524
31632
  case 0:
31525
31633
  if (this._protocol.initialized && !this._protocol.supportsReAuth) {
@@ -31665,7 +31773,24 @@ var ChannelConnection = /** @class */ (function (_super) {
31665
31773
  this._protocol.notifyFatalError(this._error);
31666
31774
  };
31667
31775
  /**
31668
- * This method still here because it's used by the {@link PooledConnectionProvider}
31776
+ * This method is used by the {@link PooledConnectionProvider}
31777
+ *
31778
+ * @param {any} observer
31779
+ */
31780
+ ChannelConnection.prototype._setIdle = function (observer) {
31781
+ this._idle = true;
31782
+ this._ch.stopReceiveTimeout();
31783
+ this._protocol.queueObserverIfProtocolIsNotBroken(observer);
31784
+ };
31785
+ /**
31786
+ * This method is used by the {@link PooledConnectionProvider}
31787
+ */
31788
+ ChannelConnection.prototype._unsetIdle = function () {
31789
+ this._idle = false;
31790
+ this._updateCurrentObserver();
31791
+ };
31792
+ /**
31793
+ * This method still here because of the connection-channel.tests.js
31669
31794
  *
31670
31795
  * @param {any} observer
31671
31796
  */
@@ -31673,7 +31798,7 @@ var ChannelConnection = /** @class */ (function (_super) {
31673
31798
  return this._protocol.queueObserverIfProtocolIsNotBroken(observer);
31674
31799
  };
31675
31800
  ChannelConnection.prototype.hasOngoingObservableRequests = function () {
31676
- return this._protocol.hasOngoingObservableRequests();
31801
+ return !this._idle && this._protocol.hasOngoingObservableRequests();
31677
31802
  };
31678
31803
  /**
31679
31804
  * Send a RESET-message to the database. Message is immediately flushed to the network.
@@ -31764,6 +31889,9 @@ var ChannelConnection = /** @class */ (function (_super) {
31764
31889
  * @param {number} requestsNumber Ongoing requests number
31765
31890
  */
31766
31891
  ChannelConnection.prototype._handleOngoingRequestsNumberChange = function (requestsNumber) {
31892
+ if (this._idle) {
31893
+ return;
31894
+ }
31767
31895
  if (requestsNumber === 0) {
31768
31896
  this._ch.stopReceiveTimeout();
31769
31897
  }
@@ -31776,8 +31904,8 @@ var ChannelConnection = /** @class */ (function (_super) {
31776
31904
  * @returns {Promise<void>} - A promise that will be resolved when the underlying channel is closed.
31777
31905
  */
31778
31906
  ChannelConnection.prototype.close = function () {
31779
- return __awaiter$4(this, void 0, void 0, function () {
31780
- return __generator$4(this, function (_a) {
31907
+ return __awaiter$5(this, void 0, void 0, function () {
31908
+ return __generator$5(this, function (_a) {
31781
31909
  switch (_a.label) {
31782
31910
  case 0:
31783
31911
  if (this._log.isDebugEnabled()) {
@@ -31950,6 +32078,23 @@ var DelegateConnection = /** @class */ (function (_super) {
31950
32078
  enumerable: false,
31951
32079
  configurable: true
31952
32080
  });
32081
+ Object.defineProperty(DelegateConnection.prototype, "creationTimestamp", {
32082
+ get: function () {
32083
+ return this._delegate.creationTimestamp;
32084
+ },
32085
+ enumerable: false,
32086
+ configurable: true
32087
+ });
32088
+ Object.defineProperty(DelegateConnection.prototype, "idleTimestamp", {
32089
+ get: function () {
32090
+ return this._delegate.idleTimestamp;
32091
+ },
32092
+ set: function (value) {
32093
+ this._delegate.idleTimestamp = value;
32094
+ },
32095
+ enumerable: false,
32096
+ configurable: true
32097
+ });
31953
32098
  DelegateConnection.prototype.isOpen = function () {
31954
32099
  return this._delegate.isOpen();
31955
32100
  };
@@ -32140,7 +32285,7 @@ var authenticationProvider = {};
32140
32285
  * See the License for the specific language governing permissions and
32141
32286
  * limitations under the License.
32142
32287
  */
32143
- var __awaiter$3 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
32288
+ var __awaiter$4 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
32144
32289
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
32145
32290
  return new (P || (P = Promise))(function (resolve, reject) {
32146
32291
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -32149,7 +32294,7 @@ var __awaiter$3 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (this
32149
32294
  step((generator = generator.apply(thisArg, _arguments || [])).next());
32150
32295
  });
32151
32296
  };
32152
- var __generator$3 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
32297
+ var __generator$4 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
32153
32298
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
32154
32299
  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
32155
32300
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -32191,9 +32336,9 @@ var AuthenticationProvider = /** @class */ (function () {
32191
32336
  }
32192
32337
  AuthenticationProvider.prototype.authenticate = function (_a) {
32193
32338
  var connection = _a.connection, auth = _a.auth, skipReAuth = _a.skipReAuth, waitReAuth = _a.waitReAuth, forceReAuth = _a.forceReAuth;
32194
- return __awaiter$3(this, void 0, void 0, function () {
32339
+ return __awaiter$4(this, void 0, void 0, function () {
32195
32340
  var shouldReAuth, authToken;
32196
- return __generator$3(this, function (_b) {
32341
+ return __generator$4(this, function (_b) {
32197
32342
  switch (_b.label) {
32198
32343
  case 0:
32199
32344
  if (!(auth != null)) return [3 /*break*/, 3];
@@ -32226,6 +32371,106 @@ var AuthenticationProvider = /** @class */ (function () {
32226
32371
  }());
32227
32372
  authenticationProvider.default = AuthenticationProvider;
32228
32373
 
32374
+ var livenessCheckProvider = {};
32375
+
32376
+ var __awaiter$3 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
32377
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
32378
+ return new (P || (P = Promise))(function (resolve, reject) {
32379
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32380
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
32381
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
32382
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32383
+ });
32384
+ };
32385
+ var __generator$3 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
32386
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
32387
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
32388
+ function verb(n) { return function (v) { return step([n, v]); }; }
32389
+ function step(op) {
32390
+ if (f) throw new TypeError("Generator is already executing.");
32391
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
32392
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
32393
+ if (y = 0, t) op = [op[0] & 2, t.value];
32394
+ switch (op[0]) {
32395
+ case 0: case 1: t = op; break;
32396
+ case 4: _.label++; return { value: op[1], done: false };
32397
+ case 5: _.label++; y = op[1]; op = [0]; continue;
32398
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
32399
+ default:
32400
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
32401
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
32402
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
32403
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
32404
+ if (t[2]) _.ops.pop();
32405
+ _.trys.pop(); continue;
32406
+ }
32407
+ op = body.call(thisArg, _);
32408
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
32409
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
32410
+ }
32411
+ };
32412
+ Object.defineProperty(livenessCheckProvider, "__esModule", { value: true });
32413
+ /**
32414
+ * Copyright (c) "Neo4j"
32415
+ * Neo4j Sweden AB [https://neo4j.com]
32416
+ *
32417
+ * Licensed under the Apache License, Version 2.0 (the "License");
32418
+ * you may not use this file except in compliance with the License.
32419
+ * You may obtain a copy of the License at
32420
+ *
32421
+ * http://www.apache.org/licenses/LICENSE-2.0
32422
+ *
32423
+ * Unless required by applicable law or agreed to in writing, software
32424
+ * distributed under the License is distributed on an "AS IS" BASIS,
32425
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
32426
+ * See the License for the specific language governing permissions and
32427
+ * limitations under the License.
32428
+ */
32429
+ var LivenessCheckProvider = /** @class */ (function () {
32430
+ function LivenessCheckProvider(_a) {
32431
+ var connectionLivenessCheckTimeout = _a.connectionLivenessCheckTimeout;
32432
+ this._connectionLivenessCheckTimeout = connectionLivenessCheckTimeout;
32433
+ }
32434
+ /**
32435
+ * Checks connection liveness with configured params.
32436
+ *
32437
+ * @param {Connection} connection
32438
+ * @returns {Promise<true>} If liveness checks succeed, throws otherwise
32439
+ */
32440
+ LivenessCheckProvider.prototype.check = function (connection) {
32441
+ return __awaiter$3(this, void 0, void 0, function () {
32442
+ var idleFor;
32443
+ return __generator$3(this, function (_a) {
32444
+ switch (_a.label) {
32445
+ case 0:
32446
+ if (this._isCheckDisabled || this._isNewlyCreatedConnection(connection)) {
32447
+ return [2 /*return*/, true];
32448
+ }
32449
+ idleFor = Date.now() - connection.idleTimestamp;
32450
+ if (!(this._connectionLivenessCheckTimeout === 0 ||
32451
+ idleFor > this._connectionLivenessCheckTimeout)) return [3 /*break*/, 2];
32452
+ return [4 /*yield*/, connection.resetAndFlush()
32453
+ .then(function () { return true; })];
32454
+ case 1: return [2 /*return*/, _a.sent()];
32455
+ case 2: return [2 /*return*/, true];
32456
+ }
32457
+ });
32458
+ });
32459
+ };
32460
+ Object.defineProperty(LivenessCheckProvider.prototype, "_isCheckDisabled", {
32461
+ get: function () {
32462
+ return this._connectionLivenessCheckTimeout == null || this._connectionLivenessCheckTimeout < 0;
32463
+ },
32464
+ enumerable: false,
32465
+ configurable: true
32466
+ });
32467
+ LivenessCheckProvider.prototype._isNewlyCreatedConnection = function (connection) {
32468
+ return connection.authToken == null;
32469
+ };
32470
+ return LivenessCheckProvider;
32471
+ }());
32472
+ livenessCheckProvider.default = LivenessCheckProvider;
32473
+
32229
32474
  /**
32230
32475
  * Copyright (c) "Neo4j"
32231
32476
  * Neo4j Sweden AB [https://neo4j.com]
@@ -32350,6 +32595,7 @@ var pool_1 = __importStar$1(pool$1);
32350
32595
  var neo4j_driver_core_1$3 = lib$1;
32351
32596
  var authentication_provider_1 = __importDefault$4(authenticationProvider);
32352
32597
  var lang_1$1 = lang;
32598
+ var liveness_check_provider_1 = __importDefault$4(livenessCheckProvider);
32353
32599
  var SERVICE_UNAVAILABLE$2 = neo4j_driver_core_1$3.error.SERVICE_UNAVAILABLE;
32354
32600
  var AUTHENTICATION_ERRORS = [
32355
32601
  'Neo.ClientError.Security.CredentialsExpired',
@@ -32373,6 +32619,7 @@ var PooledConnectionProvider = /** @class */ (function (_super) {
32373
32619
  _this._config = config;
32374
32620
  _this._log = log;
32375
32621
  _this._authenticationProvider = new authentication_provider_1.default({ authTokenManager: authTokenManager, userAgent: userAgent, boltAgent: boltAgent });
32622
+ _this._livenessCheckProvider = new liveness_check_provider_1.default({ connectionLivenessCheckTimeout: config.connectionLivenessCheckTimeout });
32376
32623
  _this._userAgent = userAgent;
32377
32624
  _this._boltAgent = boltAgent;
32378
32625
  _this._createChannelConnection =
@@ -32406,6 +32653,7 @@ var PooledConnectionProvider = /** @class */ (function (_super) {
32406
32653
  var auth = _a.auth;
32407
32654
  return this._createChannelConnection(address).then(function (connection) {
32408
32655
  connection.release = function () {
32656
+ connection.idleTimestamp = Date.now();
32409
32657
  return release(address, connection);
32410
32658
  };
32411
32659
  _this._openConnections[connection.id] = connection;
@@ -32421,7 +32669,7 @@ var PooledConnectionProvider = /** @class */ (function (_super) {
32421
32669
  PooledConnectionProvider.prototype._validateConnectionOnAcquire = function (_a, conn) {
32422
32670
  var auth = _a.auth, skipReAuth = _a.skipReAuth;
32423
32671
  return __awaiter$2(this, void 0, void 0, function () {
32424
- var error_1;
32672
+ var error_1, error_2;
32425
32673
  return __generator$2(this, function (_b) {
32426
32674
  switch (_b.label) {
32427
32675
  case 0:
@@ -32431,15 +32679,25 @@ var PooledConnectionProvider = /** @class */ (function (_super) {
32431
32679
  _b.label = 1;
32432
32680
  case 1:
32433
32681
  _b.trys.push([1, 3, , 4]);
32434
- return [4 /*yield*/, this._authenticationProvider.authenticate({ connection: conn, auth: auth, skipReAuth: skipReAuth })];
32682
+ return [4 /*yield*/, this._livenessCheckProvider.check(conn)];
32435
32683
  case 2:
32436
32684
  _b.sent();
32437
- return [2 /*return*/, true];
32685
+ return [3 /*break*/, 4];
32438
32686
  case 3:
32439
32687
  error_1 = _b.sent();
32440
- this._log.debug("The connection ".concat(conn.id, " is not valid because of an error ").concat(error_1.code, " '").concat(error_1.message, "'"));
32688
+ this._log.debug("The connection ".concat(conn.id, " is not alive because of an error ").concat(error_1.code, " '").concat(error_1.message, "'"));
32441
32689
  return [2 /*return*/, false];
32442
- case 4: return [2 /*return*/];
32690
+ case 4:
32691
+ _b.trys.push([4, 6, , 7]);
32692
+ return [4 /*yield*/, this._authenticationProvider.authenticate({ connection: conn, auth: auth, skipReAuth: skipReAuth })];
32693
+ case 5:
32694
+ _b.sent();
32695
+ return [2 /*return*/, true];
32696
+ case 6:
32697
+ error_2 = _b.sent();
32698
+ this._log.debug("The connection ".concat(conn.id, " is not valid because of an error ").concat(error_2.code, " '").concat(error_2.message, "'"));
32699
+ return [2 /*return*/, false];
32700
+ case 7: return [2 /*return*/];
32443
32701
  }
32444
32702
  });
32445
32703
  });
@@ -32509,7 +32767,7 @@ var PooledConnectionProvider = /** @class */ (function (_super) {
32509
32767
  PooledConnectionProvider.prototype._verifyAuthentication = function (_a) {
32510
32768
  var getAddress = _a.getAddress, auth = _a.auth;
32511
32769
  return __awaiter$2(this, void 0, void 0, function () {
32512
- var connectionsToRelease, address, connection, lastMessageIsNotLogin, stickyConnection, error_2;
32770
+ var connectionsToRelease, address, connection, lastMessageIsNotLogin, stickyConnection, error_3;
32513
32771
  return __generator$2(this, function (_b) {
32514
32772
  switch (_b.label) {
32515
32773
  case 0:
@@ -32543,11 +32801,11 @@ var PooledConnectionProvider = /** @class */ (function (_super) {
32543
32801
  _b.label = 7;
32544
32802
  case 7: return [2 /*return*/, true];
32545
32803
  case 8:
32546
- error_2 = _b.sent();
32547
- if (AUTHENTICATION_ERRORS.includes(error_2.code)) {
32804
+ error_3 = _b.sent();
32805
+ if (AUTHENTICATION_ERRORS.includes(error_3.code)) {
32548
32806
  return [2 /*return*/, false];
32549
32807
  }
32550
- throw error_2;
32808
+ throw error_3;
32551
32809
  case 9: return [4 /*yield*/, Promise.all(connectionsToRelease.map(function (conn) { return conn.release(); }))];
32552
32810
  case 10:
32553
32811
  _b.sent();
@@ -32603,10 +32861,10 @@ var PooledConnectionProvider = /** @class */ (function (_super) {
32603
32861
  });
32604
32862
  };
32605
32863
  PooledConnectionProvider._installIdleObserverOnConnection = function (conn, observer) {
32606
- conn._queueObserver(observer);
32864
+ conn._setIdle(observer);
32607
32865
  };
32608
32866
  PooledConnectionProvider._removeIdleObserverOnConnection = function (conn) {
32609
- conn._updateCurrentObserver();
32867
+ conn._unsetIdle();
32610
32868
  };
32611
32869
  PooledConnectionProvider.prototype._handleSecurityError = function (error, address, connection) {
32612
32870
  var handled = this._authenticationProvider.handleError({ connection: connection, code: error.code });
@@ -34344,7 +34602,7 @@ function driver(url, authToken, config) {
34344
34602
  var authTokenManager = createAuthManager(authToken);
34345
34603
  // Use default user agent or user agent specified by user.
34346
34604
  config.userAgent = config.userAgent || USER_AGENT;
34347
- config.boltAgent = neo4j_driver_core_1.internal.boltAgent.fromVersion('neo4j-javascript/' + version_1.default);
34605
+ config.boltAgent = neo4j_driver_core_1.internal.boltAgent.fromVersion(version_1.default);
34348
34606
  var address = ServerAddress.fromUrl(parsedUrl.hostAndPort);
34349
34607
  var meta = {
34350
34608
  address: address,