@point-hub/papi 0.2.5 → 0.3.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.
package/lib/index.js CHANGED
@@ -10830,9 +10830,11 @@ var require_error = __commonJS((exports) => {
10830
10830
  if (message.errorLabels) {
10831
10831
  this[kErrorLabels] = new Set(message.errorLabels);
10832
10832
  }
10833
+ this.errorResponse = message;
10833
10834
  for (const name in message) {
10834
- if (name !== "errorLabels" && name !== "errmsg" && name !== "message")
10835
+ if (name !== "errorLabels" && name !== "errmsg" && name !== "message" && name !== "errorResponse") {
10835
10836
  this[name] = message[name];
10837
+ }
10836
10838
  }
10837
10839
  }
10838
10840
  get name() {
@@ -11944,29 +11946,6 @@ var require_utils2 = __commonJS((exports) => {
11944
11946
  }
11945
11947
  return 0;
11946
11948
  };
11947
- var eachAsync = function(arr, eachFn, callback) {
11948
- arr = arr || [];
11949
- let idx = 0;
11950
- let awaiting = 0;
11951
- for (idx = 0;idx < arr.length; ++idx) {
11952
- awaiting++;
11953
- eachFn(arr[idx], eachCallback);
11954
- }
11955
- if (awaiting === 0) {
11956
- callback();
11957
- return;
11958
- }
11959
- function eachCallback(err) {
11960
- awaiting--;
11961
- if (err) {
11962
- callback(err);
11963
- return;
11964
- }
11965
- if (idx === arr.length && awaiting <= 0) {
11966
- callback();
11967
- }
11968
- }
11969
- };
11970
11949
  var arrayStrictEqual = function(arr, arr2) {
11971
11950
  if (!Array.isArray(arr) || !Array.isArray(arr2)) {
11972
11951
  return false;
@@ -12232,9 +12211,23 @@ var require_utils2 = __commonJS((exports) => {
12232
12211
  });
12233
12212
  return { promise, resolve, reject };
12234
12213
  };
12214
+ async function once(ee, name) {
12215
+ const { promise, resolve, reject } = promiseWithResolvers();
12216
+ const onEvent = (data) => resolve(data);
12217
+ const onError = (error) => reject(error);
12218
+ ee.once(name, onEvent).once("error", onError);
12219
+ try {
12220
+ const res = await promise;
12221
+ ee.off("error", onError);
12222
+ return res;
12223
+ } catch (error) {
12224
+ ee.off(name, onEvent);
12225
+ throw error;
12226
+ }
12227
+ }
12235
12228
  Object.defineProperty(exports, "__esModule", { value: true });
12236
- exports.COSMOS_DB_CHECK = exports.DOCUMENT_DB_CHECK = exports.TimeoutController = exports.request = exports.matchesParentDomain = exports.parseUnsignedInteger = exports.parseInteger = exports.compareObjectId = exports.commandSupportsReadConcern = exports.shuffle = exports.supportsRetryableWrites = exports.enumToString = exports.emitWarningOnce = exports.emitWarning = exports.MONGODB_WARNING_CODE = exports.DEFAULT_PK_FACTORY = exports.HostAddress = exports.BufferPool = exports.List = exports.deepCopy = exports.isRecord = exports.setDifference = exports.isHello = exports.isSuperset = exports.resolveOptions = exports.hasAtomicOperators = exports.calculateDurationInMs = exports.now = exports.makeStateMachine = exports.errorStrictEqual = exports.arrayStrictEqual = exports.eachAsync = exports.maxWireVersion = exports.uuidV4 = exports.makeCounter = exports.MongoDBCollectionNamespace = exports.MongoDBNamespace = exports.ns = exports.getTopology = exports.decorateWithExplain = exports.decorateWithReadConcern = exports.decorateWithCollation = exports.isPromiseLike = exports.applyRetryableWrites = exports.filterOptions = exports.mergeOptions = exports.isObject = exports.normalizeHintField = exports.hostMatchesWildcards = exports.ByteUtils = undefined;
12237
- exports.randomBytes = exports.promiseWithResolvers = exports.isHostMatch = exports.COSMOS_DB_MSG = exports.DOCUMENT_DB_MSG = undefined;
12229
+ exports.DOCUMENT_DB_MSG = exports.COSMOS_DB_CHECK = exports.DOCUMENT_DB_CHECK = exports.TimeoutController = exports.request = exports.matchesParentDomain = exports.parseUnsignedInteger = exports.parseInteger = exports.compareObjectId = exports.commandSupportsReadConcern = exports.shuffle = exports.supportsRetryableWrites = exports.enumToString = exports.emitWarningOnce = exports.emitWarning = exports.MONGODB_WARNING_CODE = exports.DEFAULT_PK_FACTORY = exports.HostAddress = exports.BufferPool = exports.List = exports.deepCopy = exports.isRecord = exports.setDifference = exports.isHello = exports.isSuperset = exports.resolveOptions = exports.hasAtomicOperators = exports.calculateDurationInMs = exports.now = exports.makeStateMachine = exports.errorStrictEqual = exports.arrayStrictEqual = exports.maxWireVersion = exports.uuidV4 = exports.makeCounter = exports.MongoDBCollectionNamespace = exports.MongoDBNamespace = exports.ns = exports.getTopology = exports.decorateWithExplain = exports.decorateWithReadConcern = exports.decorateWithCollation = exports.isPromiseLike = exports.applyRetryableWrites = exports.filterOptions = exports.mergeOptions = exports.isObject = exports.normalizeHintField = exports.hostMatchesWildcards = exports.ByteUtils = undefined;
12230
+ exports.once = exports.randomBytes = exports.promiseWithResolvers = exports.isHostMatch = exports.COSMOS_DB_MSG = undefined;
12238
12231
  var crypto = import.meta.require("crypto");
12239
12232
  var http = import.meta.require("http");
12240
12233
  var timers_1 = import.meta.require("timers");
@@ -12313,7 +12306,6 @@ var require_utils2 = __commonJS((exports) => {
12313
12306
  exports.makeCounter = makeCounter;
12314
12307
  exports.uuidV4 = uuidV4;
12315
12308
  exports.maxWireVersion = maxWireVersion;
12316
- exports.eachAsync = eachAsync;
12317
12309
  exports.arrayStrictEqual = arrayStrictEqual;
12318
12310
  exports.errorStrictEqual = errorStrictEqual;
12319
12311
  exports.makeStateMachine = makeStateMachine;
@@ -12597,6 +12589,7 @@ var require_utils2 = __commonJS((exports) => {
12597
12589
  exports.isHostMatch = isHostMatch;
12598
12590
  exports.promiseWithResolvers = promiseWithResolvers;
12599
12591
  exports.randomBytes = (0, util_1.promisify)(crypto.randomBytes);
12592
+ exports.once = once;
12600
12593
  });
12601
12594
 
12602
12595
  // node_modules/mongodb/lib/operations/operation.js
@@ -13105,6 +13098,41 @@ var require_admin = __commonJS((exports) => {
13105
13098
  exports.Admin = Admin;
13106
13099
  });
13107
13100
 
13101
+ // node_modules/mongodb/lib/operations/common_functions.js
13102
+ var require_common_functions = __commonJS((exports) => {
13103
+ async function indexInformation(db, name, options) {
13104
+ if (options == null) {
13105
+ options = {};
13106
+ }
13107
+ const full = options.full == null ? false : options.full;
13108
+ const indexes = await db.collection(name).listIndexes(options).toArray();
13109
+ if (full)
13110
+ return indexes;
13111
+ const info = {};
13112
+ for (const index of indexes) {
13113
+ info[index.name] = Object.entries(index.key);
13114
+ }
13115
+ return info;
13116
+ }
13117
+ var maybeAddIdToDocuments = function(coll, docOrDocs, options) {
13118
+ const forceServerObjectId = typeof options.forceServerObjectId === "boolean" ? options.forceServerObjectId : coll.s.db.options?.forceServerObjectId;
13119
+ if (forceServerObjectId === true) {
13120
+ return docOrDocs;
13121
+ }
13122
+ const transform = (doc) => {
13123
+ if (doc._id == null) {
13124
+ doc._id = coll.s.pkFactory.createPk();
13125
+ }
13126
+ return doc;
13127
+ };
13128
+ return Array.isArray(docOrDocs) ? docOrDocs.map(transform) : transform(docOrDocs);
13129
+ };
13130
+ Object.defineProperty(exports, "__esModule", { value: true });
13131
+ exports.maybeAddIdToDocuments = exports.indexInformation = undefined;
13132
+ exports.indexInformation = indexInformation;
13133
+ exports.maybeAddIdToDocuments = maybeAddIdToDocuments;
13134
+ });
13135
+
13108
13136
  // node_modules/mongodb/lib/operations/delete.js
13109
13137
  var require_delete = __commonJS((exports) => {
13110
13138
  var makeDeleteStatement = function(filter, options) {
@@ -13253,40 +13281,6 @@ var require_bulk_write = __commonJS((exports) => {
13253
13281
  (0, operation_1.defineAspects)(BulkWriteOperation, [operation_1.Aspect.WRITE_OPERATION]);
13254
13282
  });
13255
13283
 
13256
- // node_modules/mongodb/lib/operations/common_functions.js
13257
- var require_common_functions = __commonJS((exports) => {
13258
- async function indexInformation(db, name, options) {
13259
- if (options == null) {
13260
- options = {};
13261
- }
13262
- const full = options.full == null ? false : options.full;
13263
- const indexes = await db.collection(name).listIndexes(options).toArray();
13264
- if (full)
13265
- return indexes;
13266
- const info = {};
13267
- for (const index of indexes) {
13268
- info[index.name] = Object.entries(index.key);
13269
- }
13270
- return info;
13271
- }
13272
- var prepareDocs = function(coll, docs, options) {
13273
- const forceServerObjectId = typeof options.forceServerObjectId === "boolean" ? options.forceServerObjectId : coll.s.db.options?.forceServerObjectId;
13274
- if (forceServerObjectId === true) {
13275
- return docs;
13276
- }
13277
- return docs.map((doc) => {
13278
- if (doc._id == null) {
13279
- doc._id = coll.s.pkFactory.createPk();
13280
- }
13281
- return doc;
13282
- });
13283
- };
13284
- Object.defineProperty(exports, "__esModule", { value: true });
13285
- exports.prepareDocs = exports.indexInformation = undefined;
13286
- exports.indexInformation = indexInformation;
13287
- exports.prepareDocs = prepareDocs;
13288
- });
13289
-
13290
13284
  // node_modules/mongodb/lib/operations/insert.js
13291
13285
  var require_insert = __commonJS((exports) => {
13292
13286
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -13329,7 +13323,7 @@ var require_insert = __commonJS((exports) => {
13329
13323
 
13330
13324
  class InsertOneOperation extends InsertOperation {
13331
13325
  constructor(collection, doc, options) {
13332
- super(collection.s.namespace, (0, common_functions_1.prepareDocs)(collection, [doc], options), options);
13326
+ super(collection.s.namespace, (0, common_functions_1.maybeAddIdToDocuments)(collection, [doc], options), options);
13333
13327
  }
13334
13328
  async execute(server, session) {
13335
13329
  const res = await super.execute(server, session);
@@ -13363,7 +13357,9 @@ var require_insert = __commonJS((exports) => {
13363
13357
  const coll = this.collection;
13364
13358
  const options = { ...this.options, ...this.bsonOptions, readPreference: this.readPreference };
13365
13359
  const writeConcern = write_concern_1.WriteConcern.fromOptions(options);
13366
- const bulkWriteOperation = new bulk_write_1.BulkWriteOperation(coll, (0, common_functions_1.prepareDocs)(coll, this.docs, options).map((document) => ({ insertOne: { document } })), options);
13360
+ const bulkWriteOperation = new bulk_write_1.BulkWriteOperation(coll, this.docs.map((document) => ({
13361
+ insertOne: { document }
13362
+ })), options);
13367
13363
  try {
13368
13364
  const res = await bulkWriteOperation.execute(server, session);
13369
13365
  return {
@@ -13693,15 +13689,6 @@ var require_common2 = __commonJS((exports) => {
13693
13689
  code: err.result?.writeConcernError.result
13694
13690
  }, new BulkWriteResult(bulkResult, isOrdered)));
13695
13691
  };
13696
- var shouldForceServerObjectId = function(bulkOperation) {
13697
- if (typeof bulkOperation.s.options.forceServerObjectId === "boolean") {
13698
- return bulkOperation.s.options.forceServerObjectId;
13699
- }
13700
- if (typeof bulkOperation.s.collection.s.db.options?.forceServerObjectId === "boolean") {
13701
- return bulkOperation.s.collection.s.db.options?.forceServerObjectId;
13702
- }
13703
- return false;
13704
- };
13705
13692
  var isInsertBatch = function(batch) {
13706
13693
  return batch.batchType === exports.BatchType.INSERT;
13707
13694
  };
@@ -13723,6 +13710,7 @@ var require_common2 = __commonJS((exports) => {
13723
13710
  var util_1 = import.meta.require("util");
13724
13711
  var bson_1 = require_bson2();
13725
13712
  var error_1 = require_error();
13713
+ var common_functions_1 = require_common_functions();
13726
13714
  var delete_1 = require_delete();
13727
13715
  var execute_operation_1 = require_execute_operation();
13728
13716
  var insert_1 = require_insert();
@@ -13999,6 +13987,7 @@ var require_common2 = __commonJS((exports) => {
13999
13987
 
14000
13988
  class BulkOperationBase {
14001
13989
  constructor(collection, options, isOrdered) {
13990
+ this.collection = collection;
14002
13991
  this.isOrdered = isOrdered;
14003
13992
  const topology = (0, utils_1.getTopology)(collection);
14004
13993
  options = options == null ? {} : options;
@@ -14055,9 +14044,9 @@ var require_common2 = __commonJS((exports) => {
14055
14044
  }
14056
14045
  }
14057
14046
  insert(document) {
14058
- if (document._id == null && !shouldForceServerObjectId(this)) {
14059
- document._id = new bson_1.ObjectId;
14060
- }
14047
+ (0, common_functions_1.maybeAddIdToDocuments)(this.collection, document, {
14048
+ forceServerObjectId: this.shouldForceServerObjectId()
14049
+ });
14061
14050
  return this.addToOperationsList(exports.BatchType.INSERT, document);
14062
14051
  }
14063
14052
  find(selector) {
@@ -14074,17 +14063,10 @@ var require_common2 = __commonJS((exports) => {
14074
14063
  throw new error_1.MongoInvalidArgumentError("Operation must be an object with an operation key");
14075
14064
  }
14076
14065
  if ("insertOne" in op) {
14077
- const forceServerObjectId = shouldForceServerObjectId(this);
14078
- if (op.insertOne && op.insertOne.document == null) {
14079
- if (forceServerObjectId !== true && op.insertOne._id == null) {
14080
- op.insertOne._id = new bson_1.ObjectId;
14081
- }
14082
- return this.addToOperationsList(exports.BatchType.INSERT, op.insertOne);
14083
- }
14084
- if (forceServerObjectId !== true && op.insertOne.document._id == null) {
14085
- op.insertOne.document._id = new bson_1.ObjectId;
14086
- }
14087
- return this.addToOperationsList(exports.BatchType.INSERT, op.insertOne.document);
14066
+ const forceServerObjectId = this.shouldForceServerObjectId();
14067
+ const document = op.insertOne && op.insertOne.document == null ? op.insertOne : op.insertOne.document;
14068
+ (0, common_functions_1.maybeAddIdToDocuments)(this.collection, document, { forceServerObjectId });
14069
+ return this.addToOperationsList(exports.BatchType.INSERT, document);
14088
14070
  }
14089
14071
  if ("replaceOne" in op || "updateOne" in op || "updateMany" in op) {
14090
14072
  if ("replaceOne" in op) {
@@ -14203,6 +14185,9 @@ var require_common2 = __commonJS((exports) => {
14203
14185
  }
14204
14186
  return false;
14205
14187
  }
14188
+ shouldForceServerObjectId() {
14189
+ return this.s.options.forceServerObjectId === true || this.s.collection.s.db.options?.forceServerObjectId === true;
14190
+ }
14206
14191
  }
14207
14192
  exports.BulkOperationBase = BulkOperationBase;
14208
14193
  Object.defineProperty(BulkOperationBase.prototype, "length", {
@@ -14432,7 +14417,8 @@ var require_mongo_logger = __commonJS((exports) => {
14432
14417
  var createStdioLogger = function(stream) {
14433
14418
  return {
14434
14419
  write: (0, util_1.promisify)((log, cb) => {
14435
- stream.write((0, util_1.inspect)(log, { compact: true, breakLength: Infinity }), "utf-8", cb);
14420
+ const logLine = (0, util_1.inspect)(log, { compact: true, breakLength: Infinity });
14421
+ stream.write(`${logLine}\n`, "utf-8", cb);
14436
14422
  return;
14437
14423
  })
14438
14424
  };
@@ -15485,9 +15471,6 @@ var require_topology_description = __commonJS((exports) => {
15485
15471
  var require_shared = __commonJS((exports) => {
15486
15472
  var getReadPreference = function(options) {
15487
15473
  let readPreference = options?.readPreference ?? read_preference_1.ReadPreference.primary;
15488
- if (options?.readPreference) {
15489
- readPreference = options.readPreference;
15490
- }
15491
15474
  if (typeof readPreference === "string") {
15492
15475
  readPreference = read_preference_1.ReadPreference.fromString(readPreference);
15493
15476
  }
@@ -23169,7 +23152,7 @@ var require_lib3 = __commonJS((exports) => {
23169
23152
  var require_package = __commonJS((exports, module) => {
23170
23153
  module.exports = {
23171
23154
  name: "mongodb",
23172
- version: "6.4.0",
23155
+ version: "6.5.0",
23173
23156
  description: "The official MongoDB driver for Node.js",
23174
23157
  main: "lib/index.js",
23175
23158
  files: [
@@ -23194,7 +23177,7 @@ var require_package = __commonJS((exports, module) => {
23194
23177
  email: "dbx-node@mongodb.com"
23195
23178
  },
23196
23179
  dependencies: {
23197
- "@mongodb-js/saslprep": "^1.1.0",
23180
+ "@mongodb-js/saslprep": "^1.1.5",
23198
23181
  bson: "^6.4.0",
23199
23182
  "mongodb-connection-string-url": "^3.0.0"
23200
23183
  },
@@ -23392,6 +23375,38 @@ var require_client_metadata = __commonJS((exports) => {
23392
23375
  }
23393
23376
  return metadataDocument.toObject();
23394
23377
  };
23378
+ async function getContainerMetadata() {
23379
+ const containerMetadata = {};
23380
+ dockerPromise ??= fs_1.promises.access("/.dockerenv").then(() => true, () => false);
23381
+ const isDocker = await dockerPromise;
23382
+ const { KUBERNETES_SERVICE_HOST = "" } = process2.env;
23383
+ const isKubernetes = KUBERNETES_SERVICE_HOST.length > 0 ? true : false;
23384
+ if (isDocker)
23385
+ containerMetadata.runtime = "docker";
23386
+ if (isKubernetes)
23387
+ containerMetadata.orchestrator = "kubernetes";
23388
+ return containerMetadata;
23389
+ }
23390
+ async function addContainerMetadata(originalMetadata) {
23391
+ const containerMetadata = await getContainerMetadata();
23392
+ if (Object.keys(containerMetadata).length === 0)
23393
+ return originalMetadata;
23394
+ const extendedMetadata = new LimitedSizeDocument(512);
23395
+ const extendedEnvMetadata = { ...originalMetadata?.env, container: containerMetadata };
23396
+ for (const [key, val] of Object.entries(originalMetadata)) {
23397
+ if (key !== "env") {
23398
+ extendedMetadata.ifItFitsItSits(key, val);
23399
+ } else {
23400
+ if (!extendedMetadata.ifItFitsItSits("env", extendedEnvMetadata)) {
23401
+ extendedMetadata.ifItFitsItSits("env", val);
23402
+ }
23403
+ }
23404
+ }
23405
+ if (!("env" in originalMetadata)) {
23406
+ extendedMetadata.ifItFitsItSits("env", extendedEnvMetadata);
23407
+ }
23408
+ return extendedMetadata.toObject();
23409
+ }
23395
23410
  var getFAASEnv = function() {
23396
23411
  const { AWS_EXECUTION_ENV = "", AWS_LAMBDA_RUNTIME_API = "", FUNCTIONS_WORKER_RUNTIME = "", K_SERVICE = "", FUNCTION_NAME = "", VERCEL = "", AWS_LAMBDA_FUNCTION_MEMORY_SIZE = "", AWS_REGION = "", FUNCTION_MEMORY_MB = "", FUNCTION_REGION = "", FUNCTION_TIMEOUT_SEC = "", VERCEL_REGION = "" } = process2.env;
23397
23412
  const isAWSFaaS = AWS_EXECUTION_ENV.startsWith("AWS_Lambda_") || AWS_LAMBDA_RUNTIME_API.length > 0;
@@ -23447,7 +23462,8 @@ var require_client_metadata = __commonJS((exports) => {
23447
23462
  return `Node.js ${process2.version}, ${os.endianness()}`;
23448
23463
  };
23449
23464
  Object.defineProperty(exports, "__esModule", { value: true });
23450
- exports.getFAASEnv = exports.makeClientMetadata = exports.LimitedSizeDocument = undefined;
23465
+ exports.getFAASEnv = exports.addContainerMetadata = exports.makeClientMetadata = exports.LimitedSizeDocument = undefined;
23466
+ var fs_1 = import.meta.require("fs");
23451
23467
  var os = import.meta.require("os");
23452
23468
  var process2 = import.meta.require("process");
23453
23469
  var bson_1 = require_bson2();
@@ -23480,6 +23496,8 @@ var require_client_metadata = __commonJS((exports) => {
23480
23496
  }
23481
23497
  exports.LimitedSizeDocument = LimitedSizeDocument;
23482
23498
  exports.makeClientMetadata = makeClientMetadata;
23499
+ var dockerPromise;
23500
+ exports.addContainerMetadata = addContainerMetadata;
23483
23501
  exports.getFAASEnv = getFAASEnv;
23484
23502
  });
23485
23503
 
@@ -23489,7 +23507,6 @@ var require_commands = __commonJS((exports) => {
23489
23507
  exports.OpCompressedRequest = exports.OpMsgResponse = exports.OpMsgRequest = exports.OpQueryResponse = exports.OpQueryRequest = undefined;
23490
23508
  var BSON = require_bson2();
23491
23509
  var error_1 = require_error();
23492
- var read_preference_1 = require_read_preference();
23493
23510
  var compression_1 = require_compression();
23494
23511
  var constants_1 = require_constants();
23495
23512
  var _requestId = 0;
@@ -23721,9 +23738,6 @@ var require_commands = __commonJS((exports) => {
23721
23738
  if (command2 == null)
23722
23739
  throw new error_1.MongoInvalidArgumentError("Query document must be specified for query");
23723
23740
  this.command.$db = databaseName;
23724
- if (options.readPreference && options.readPreference.mode !== read_preference_1.ReadPreference.PRIMARY) {
23725
- this.command.$readPreference = options.readPreference.toJSON();
23726
- }
23727
23741
  this.options = options ?? {};
23728
23742
  this.requestId = options.requestId ? options.requestId : OpMsgRequest.getRequestId();
23729
23743
  this.serializeFunctions = typeof options.serializeFunctions === "boolean" ? options.serializeFunctions : false;
@@ -25231,8 +25245,7 @@ var require_stream_description = __commonJS((exports) => {
25231
25245
 
25232
25246
  // node_modules/mongodb/lib/cmap/wire_protocol/on_data.js
25233
25247
  var require_on_data = __commonJS((exports) => {
25234
- var onData = function(emitter, options) {
25235
- const signal = options.signal;
25248
+ var onData = function(emitter) {
25236
25249
  const unconsumedEvents = new utils_1.List;
25237
25250
  const unconsumedPromises = new utils_1.List;
25238
25251
  let error = null;
@@ -25267,15 +25280,7 @@ var require_on_data = __commonJS((exports) => {
25267
25280
  };
25268
25281
  emitter.on("data", eventHandler);
25269
25282
  emitter.on("error", errorHandler2);
25270
- if (signal.aborted) {
25271
- queueMicrotask(abortListener);
25272
- } else {
25273
- signal.addEventListener("abort", abortListener, { once: true });
25274
- }
25275
25283
  return iterator;
25276
- function abortListener() {
25277
- errorHandler2(signal.reason);
25278
- }
25279
25284
  function eventHandler(value) {
25280
25285
  const promise = unconsumedPromises.shift();
25281
25286
  if (promise != null)
@@ -25294,7 +25299,6 @@ var require_on_data = __commonJS((exports) => {
25294
25299
  function closeHandler() {
25295
25300
  emitter.off("data", eventHandler);
25296
25301
  emitter.off("error", errorHandler2);
25297
- signal.removeEventListener("abort", abortListener);
25298
25302
  finished = true;
25299
25303
  const doneResult = { value: undefined, done: finished };
25300
25304
  for (const promise of unconsumedPromises) {
@@ -25329,11 +25333,12 @@ var require_connection = __commonJS((exports) => {
25329
25333
  exports.CryptoConnection = exports.SizedMessageTransform = exports.Connection = exports.hasSessionSupport = undefined;
25330
25334
  var stream_1 = import.meta.require("stream");
25331
25335
  var timers_1 = import.meta.require("timers");
25332
- var util_1 = import.meta.require("util");
25333
25336
  var constants_1 = require_constants2();
25334
25337
  var error_1 = require_error();
25335
25338
  var mongo_logger_1 = require_mongo_logger();
25336
25339
  var mongo_types_1 = require_mongo_types();
25340
+ var read_preference_1 = require_read_preference();
25341
+ var common_1 = require_common();
25337
25342
  var sessions_1 = require_sessions();
25338
25343
  var utils_1 = require_utils2();
25339
25344
  var command_monitoring_events_1 = require_command_monitoring_events();
@@ -25350,7 +25355,11 @@ var require_connection = __commonJS((exports) => {
25350
25355
  this.lastHelloMS = -1;
25351
25356
  this.helloOk = false;
25352
25357
  this.delayedTimeoutId = null;
25358
+ this.closed = false;
25353
25359
  this.clusterTime = null;
25360
+ this.error = null;
25361
+ this.dataEvents = null;
25362
+ this.socket = stream;
25354
25363
  this.id = options.id;
25355
25364
  this.address = streamIdentifier(stream, options);
25356
25365
  this.socketTimeoutMS = options.socketTimeoutMS ?? 0;
@@ -25361,26 +25370,9 @@ var require_connection = __commonJS((exports) => {
25361
25370
  this.description = new stream_description_1.StreamDescription(this.address, options);
25362
25371
  this.generation = options.generation;
25363
25372
  this.lastUseTime = (0, utils_1.now)();
25364
- this.socket = stream;
25365
- this.controller = new AbortController;
25366
- const { signal } = this.controller;
25367
- this.signal = signal;
25368
- const { promise: aborted, reject } = (0, utils_1.promiseWithResolvers)();
25369
- aborted.then(undefined, () => null);
25370
- this.signal.addEventListener("abort", function onAbort() {
25371
- reject(signal.reason);
25372
- }, { once: true });
25373
- this.aborted = aborted;
25374
25373
  this.messageStream = this.socket.on("error", this.onError.bind(this)).pipe(new SizedMessageTransform({ connection: this })).on("error", this.onError.bind(this));
25375
25374
  this.socket.on("close", this.onClose.bind(this));
25376
25375
  this.socket.on("timeout", this.onTimeout.bind(this));
25377
- const socketWrite = (0, util_1.promisify)(this.socket.write.bind(this.socket));
25378
- this.socketWrite = async (buffer) => {
25379
- return Promise.race([socketWrite(buffer), this.aborted]);
25380
- };
25381
- }
25382
- get closed() {
25383
- return this.signal.aborted;
25384
25376
  }
25385
25377
  get hello() {
25386
25378
  return this.description.hello;
@@ -25424,15 +25416,10 @@ var require_connection = __commonJS((exports) => {
25424
25416
  this.cleanup(new error_1.MongoNetworkTimeoutError(message, { beforeHandshake }));
25425
25417
  }, 1).unref();
25426
25418
  }
25427
- destroy(options, callback) {
25419
+ destroy() {
25428
25420
  if (this.closed) {
25429
- if (typeof callback === "function")
25430
- process.nextTick(callback);
25431
25421
  return;
25432
25422
  }
25433
- if (typeof callback === "function") {
25434
- this.once("close", () => process.nextTick(() => callback()));
25435
- }
25436
25423
  this.removeAllListeners(Connection.PINNED);
25437
25424
  this.removeAllListeners(Connection.UNPINNED);
25438
25425
  const message = `connection ${this.id} to ${this.address} closed`;
@@ -25443,7 +25430,9 @@ var require_connection = __commonJS((exports) => {
25443
25430
  return;
25444
25431
  }
25445
25432
  this.socket.destroy();
25446
- this.controller.abort(error);
25433
+ this.error = error;
25434
+ this.dataEvents?.throw(error).then(undefined, () => null);
25435
+ this.closed = true;
25447
25436
  this.emit(Connection.CLOSE);
25448
25437
  }
25449
25438
  prepareCommand(db, command2, options) {
@@ -25472,19 +25461,24 @@ var require_connection = __commonJS((exports) => {
25472
25461
  if (clusterTime) {
25473
25462
  cmd.$clusterTime = clusterTime;
25474
25463
  }
25475
- if ((0, shared_1.isSharded)(this) && !this.supportsOpMsg && readPreference && readPreference.mode !== "primary") {
25476
- cmd = {
25477
- $query: cmd,
25478
- $readPreference: readPreference.toJSON()
25479
- };
25464
+ if (this.description.type !== common_1.ServerType.Standalone) {
25465
+ if (!(0, shared_1.isSharded)(this) && !this.description.loadBalanced && this.supportsOpMsg && options.directConnection === true && readPreference?.mode === "primary") {
25466
+ cmd.$readPreference = read_preference_1.ReadPreference.primaryPreferred.toJSON();
25467
+ } else if ((0, shared_1.isSharded)(this) && !this.supportsOpMsg && readPreference?.mode !== "primary") {
25468
+ cmd = {
25469
+ $query: cmd,
25470
+ $readPreference: readPreference.toJSON()
25471
+ };
25472
+ } else if (readPreference?.mode !== "primary") {
25473
+ cmd.$readPreference = readPreference.toJSON();
25474
+ }
25480
25475
  }
25481
25476
  const commandOptions = {
25482
25477
  numberToSkip: 0,
25483
25478
  numberToReturn: -1,
25484
25479
  checkKeys: false,
25485
25480
  secondaryOk: readPreference.secondaryOk(),
25486
- ...options,
25487
- readPreference
25481
+ ...options
25488
25482
  };
25489
25483
  const message = this.supportsOpMsg ? new commands_1.OpMsgRequest(db, cmd, commandOptions) : new commands_1.OpQueryRequest(db, cmd, commandOptions);
25490
25484
  return message;
@@ -25585,7 +25579,8 @@ var require_connection = __commonJS((exports) => {
25585
25579
  exhaustLoop().catch(replyListener);
25586
25580
  }
25587
25581
  throwIfAborted() {
25588
- this.signal.throwIfAborted();
25582
+ if (this.error)
25583
+ throw this.error;
25589
25584
  }
25590
25585
  async writeCommand(command2, options) {
25591
25586
  const finalCommand = options.agreedCompressor === "none" || !commands_1.OpCompressedRequest.canCompress(command2) ? command2 : new commands_1.OpCompressedRequest(command2, {
@@ -25593,15 +25588,23 @@ var require_connection = __commonJS((exports) => {
25593
25588
  zlibCompressionLevel: options.zlibCompressionLevel ?? 0
25594
25589
  });
25595
25590
  const buffer = Buffer.concat(await finalCommand.toBin());
25596
- return this.socketWrite(buffer);
25591
+ if (this.socket.write(buffer))
25592
+ return;
25593
+ return (0, utils_1.once)(this.socket, "drain");
25597
25594
  }
25598
25595
  async* readMany() {
25599
- for await (const message of (0, on_data_1.onData)(this.messageStream, { signal: this.signal })) {
25600
- const response = await (0, compression_1.decompressResponse)(message);
25601
- yield response;
25602
- if (!response.moreToCome) {
25603
- return;
25596
+ try {
25597
+ this.dataEvents = (0, on_data_1.onData)(this.messageStream);
25598
+ for await (const message of this.dataEvents) {
25599
+ const response = await (0, compression_1.decompressResponse)(message);
25600
+ yield response;
25601
+ if (!response.moreToCome) {
25602
+ return;
25603
+ }
25604
25604
  }
25605
+ } finally {
25606
+ this.dataEvents = null;
25607
+ this.throwIfAborted();
25605
25608
  }
25606
25609
  }
25607
25610
  }
@@ -25687,7 +25690,7 @@ var require_connect = __commonJS((exports) => {
25687
25690
  await performInitialHandshake(connection, options);
25688
25691
  return connection;
25689
25692
  } catch (error) {
25690
- connection?.destroy({ force: false });
25693
+ connection?.destroy();
25691
25694
  throw error;
25692
25695
  }
25693
25696
  }
@@ -25771,10 +25774,11 @@ var require_connect = __commonJS((exports) => {
25771
25774
  const options = authContext.options;
25772
25775
  const compressors = options.compressors ? options.compressors : [];
25773
25776
  const { serverApi } = authContext.connection;
25777
+ const clientMetadata = await options.extendedMetadata;
25774
25778
  const handshakeDoc = {
25775
25779
  [serverApi?.version || options.loadBalanced === true ? "hello" : constants_1.LEGACY_HELLO_COMMAND]: 1,
25776
25780
  helloOk: true,
25777
- client: options.metadata,
25781
+ client: clientMetadata,
25778
25782
  compression: compressors
25779
25783
  };
25780
25784
  if (options.loadBalanced === true) {
@@ -25838,7 +25842,6 @@ var require_connect = __commonJS((exports) => {
25838
25842
  const useTLS = options.tls ?? false;
25839
25843
  const noDelay = options.noDelay ?? true;
25840
25844
  const connectTimeoutMS = options.connectTimeoutMS ?? 30000;
25841
- const rejectUnauthorized = options.rejectUnauthorized ?? true;
25842
25845
  const existingSocket = options.existingSocket;
25843
25846
  let socket;
25844
25847
  if (options.proxyHost != null) {
@@ -25878,9 +25881,6 @@ var require_connect = __commonJS((exports) => {
25878
25881
  return socket;
25879
25882
  } catch (error) {
25880
25883
  socket.destroy();
25881
- if ("authorizationError" in socket && socket.authorizationError != null && rejectUnauthorized) {
25882
- throw socket.authorizationError;
25883
- }
25884
25884
  throw error;
25885
25885
  } finally {
25886
25886
  socket.setTimeout(0);
@@ -26306,8 +26306,7 @@ var require_connection_pool = __commonJS((exports) => {
26306
26306
  maxIdleTimeMS: options.maxIdleTimeMS ?? 0,
26307
26307
  waitQueueTimeoutMS: options.waitQueueTimeoutMS ?? 0,
26308
26308
  minPoolSizeCheckFrequencyMS: options.minPoolSizeCheckFrequencyMS ?? 100,
26309
- autoEncrypter: options.autoEncrypter,
26310
- metadata: options.metadata
26309
+ autoEncrypter: options.autoEncrypter
26311
26310
  });
26312
26311
  if (this.options.minPoolSize > this.options.maxPoolSize) {
26313
26312
  throw new error_1.MongoInvalidArgumentError("Connection pool minimum size must not be greater than maximum pool size");
@@ -26456,20 +26455,14 @@ var require_connection_pool = __commonJS((exports) => {
26456
26455
  interruptInUseConnections(minGeneration) {
26457
26456
  for (const connection of this[kCheckedOut]) {
26458
26457
  if (connection.generation <= minGeneration) {
26459
- this.checkIn(connection);
26460
26458
  connection.onError(new errors_1.PoolClearedOnNetworkError(this));
26459
+ this.checkIn(connection);
26461
26460
  }
26462
26461
  }
26463
26462
  }
26464
- close(_options, _cb) {
26465
- let options = _options;
26466
- const callback = _cb ?? _options;
26467
- if (typeof options === "function") {
26468
- options = {};
26469
- }
26470
- options = Object.assign({ force: false }, options);
26463
+ close() {
26471
26464
  if (this.closed) {
26472
- return callback();
26465
+ return;
26473
26466
  }
26474
26467
  this[kCancellationToken].emit("cancel");
26475
26468
  if (typeof this[kConnectionCounter].return === "function") {
@@ -26478,14 +26471,12 @@ var require_connection_pool = __commonJS((exports) => {
26478
26471
  this[kPoolState] = exports.PoolState.closed;
26479
26472
  this.clearMinPoolSizeTimer();
26480
26473
  this.processWaitQueue();
26481
- (0, utils_1.eachAsync)(this[kConnections].toArray(), (conn, cb) => {
26474
+ for (const conn of this[kConnections]) {
26482
26475
  this.emitAndLog(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, conn, "poolClosed"));
26483
- conn.destroy({ force: !!options.force }, cb);
26484
- }, (err) => {
26485
- this[kConnections].clear();
26486
- this.emitAndLog(ConnectionPool.CONNECTION_POOL_CLOSED, new connection_pool_events_1.ConnectionPoolClosedEvent(this));
26487
- callback(err);
26488
- });
26476
+ conn.destroy();
26477
+ }
26478
+ this[kConnections].clear();
26479
+ this.emitAndLog(ConnectionPool.CONNECTION_POOL_CLOSED, new connection_pool_events_1.ConnectionPoolClosedEvent(this));
26489
26480
  }
26490
26481
  async reauthenticate(connection) {
26491
26482
  const authContext = connection.authContext;
@@ -26512,7 +26503,7 @@ var require_connection_pool = __commonJS((exports) => {
26512
26503
  }
26513
26504
  destroyConnection(connection, reason) {
26514
26505
  this.emitAndLog(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, connection, reason));
26515
- process.nextTick(() => connection.destroy({ force: false }));
26506
+ connection.destroy();
26516
26507
  }
26517
26508
  connectionIsStale(connection) {
26518
26509
  const serviceId = connection.serviceId;
@@ -26550,7 +26541,7 @@ var require_connection_pool = __commonJS((exports) => {
26550
26541
  (0, connect_1.connect)(connectOptions).then((connection) => {
26551
26542
  if (this[kPoolState] !== exports.PoolState.ready) {
26552
26543
  this[kPending]--;
26553
- connection.destroy({ force: true });
26544
+ connection.destroy();
26554
26545
  callback(this.closed ? new errors_1.PoolClosedError(this) : new errors_1.PoolClearedError(this));
26555
26546
  return;
26556
26547
  }
@@ -26823,29 +26814,17 @@ var require_server = __commonJS((exports) => {
26823
26814
  this.emit(Server.CONNECT, this);
26824
26815
  }
26825
26816
  }
26826
- destroy(options, callback) {
26827
- if (typeof options === "function") {
26828
- callback = options;
26829
- options = { force: false };
26830
- }
26831
- options = Object.assign({}, { force: false }, options);
26817
+ destroy() {
26832
26818
  if (this.s.state === common_1.STATE_CLOSED) {
26833
- if (typeof callback === "function") {
26834
- callback();
26835
- }
26836
26819
  return;
26837
26820
  }
26838
26821
  stateTransition(this, common_1.STATE_CLOSING);
26839
26822
  if (!this.loadBalanced) {
26840
26823
  this.monitor?.close();
26841
26824
  }
26842
- this.pool.close(options, (err) => {
26843
- stateTransition(this, common_1.STATE_CLOSED);
26844
- this.emit("closed");
26845
- if (typeof callback === "function") {
26846
- callback(err);
26847
- }
26848
- });
26825
+ this.pool.close();
26826
+ stateTransition(this, common_1.STATE_CLOSED);
26827
+ this.emit("closed");
26849
26828
  }
26850
26829
  requestCheck() {
26851
26830
  if (!this.loadBalanced) {
@@ -26859,7 +26838,10 @@ var require_server = __commonJS((exports) => {
26859
26838
  if (this.s.state === common_1.STATE_CLOSING || this.s.state === common_1.STATE_CLOSED) {
26860
26839
  throw new error_1.MongoServerClosedError;
26861
26840
  }
26862
- const finalOptions = Object.assign({}, options, { wireProtocolCommand: false });
26841
+ const finalOptions = Object.assign({}, options, {
26842
+ wireProtocolCommand: false,
26843
+ directConnection: this.topology.s.options.directConnection
26844
+ });
26863
26845
  if (finalOptions.omitReadPreference) {
26864
26846
  delete finalOptions.readPreference;
26865
26847
  }
@@ -27002,7 +26984,7 @@ var require_monitor = __commonJS((exports) => {
27002
26984
  monitor.rttPinger?.close();
27003
26985
  monitor.rttPinger = undefined;
27004
26986
  monitor[kCancellationToken].emit("cancel");
27005
- monitor.connection?.destroy({ force: true });
26987
+ monitor.connection?.destroy();
27006
26988
  monitor.connection = null;
27007
26989
  };
27008
26990
  var useStreamingProtocol = function(monitor, topologyVersion) {
@@ -27024,7 +27006,7 @@ var require_monitor = __commonJS((exports) => {
27024
27006
  const isAwaitable = useStreamingProtocol(monitor, topologyVersion);
27025
27007
  monitor.emitAndLogHeartbeat(server_1.Server.SERVER_HEARTBEAT_STARTED, monitor[kServer].topology.s.id, undefined, new events_1.ServerHeartbeatStartedEvent(monitor.address, isAwaitable));
27026
27008
  function onHeartbeatFailed(err) {
27027
- monitor.connection?.destroy({ force: true });
27009
+ monitor.connection?.destroy();
27028
27010
  monitor.connection = null;
27029
27011
  monitor.emitAndLogHeartbeat(server_1.Server.SERVER_HEARTBEAT_FAILED, monitor[kServer].topology.s.id, undefined, new events_1.ServerHeartbeatFailedEvent(monitor.address, (0, utils_1.calculateDurationInMs)(start), err, awaited));
27030
27012
  const error = !(err instanceof error_1.MongoError) ? new error_1.MongoError(error_1.MongoError.buildErrorMessage(err), { cause: err }) : err;
@@ -27087,12 +27069,12 @@ var require_monitor = __commonJS((exports) => {
27087
27069
  await (0, connect_1.performInitialHandshake)(connection2, monitor.connectOptions);
27088
27070
  return connection2;
27089
27071
  } catch (error) {
27090
- connection2.destroy({ force: false });
27072
+ connection2.destroy();
27091
27073
  throw error;
27092
27074
  }
27093
27075
  })().then((connection2) => {
27094
27076
  if (isInCloseState(monitor)) {
27095
- connection2.destroy({ force: true });
27077
+ connection2.destroy();
27096
27078
  return;
27097
27079
  }
27098
27080
  monitor.connection = connection2;
@@ -27149,7 +27131,7 @@ var require_monitor = __commonJS((exports) => {
27149
27131
  }
27150
27132
  function measureAndReschedule(conn) {
27151
27133
  if (rttPinger.closed) {
27152
- conn?.destroy({ force: true });
27134
+ conn?.destroy();
27153
27135
  return;
27154
27136
  }
27155
27137
  if (rttPinger.connection == null) {
@@ -27170,7 +27152,7 @@ var require_monitor = __commonJS((exports) => {
27170
27152
  }
27171
27153
  const commandName = connection.serverApi?.version || connection.helloOk ? "hello" : constants_1.LEGACY_HELLO_COMMAND;
27172
27154
  connection.command((0, utils_1.ns)("admin.$cmd"), { [commandName]: 1 }, undefined).then(() => measureAndReschedule(), () => {
27173
- rttPinger.connection?.destroy({ force: true });
27155
+ rttPinger.connection?.destroy();
27174
27156
  rttPinger.connection = undefined;
27175
27157
  rttPinger[kRoundTripTime] = 0;
27176
27158
  return;
@@ -27309,7 +27291,7 @@ var require_monitor = __commonJS((exports) => {
27309
27291
  close() {
27310
27292
  this.closed = true;
27311
27293
  (0, timers_1.clearTimeout)(this[kMonitorId]);
27312
- this.connection?.destroy({ force: true });
27294
+ this.connection?.destroy();
27313
27295
  this.connection = undefined;
27314
27296
  }
27315
27297
  }
@@ -27412,6 +27394,9 @@ var require_connection_string = __commonJS((exports) => {
27412
27394
  throw new error_1.MongoAPIError("URI must include hostname, domain name, and tld");
27413
27395
  }
27414
27396
  const lookupAddress = options.srvHost;
27397
+ const txtResolutionPromise = dns.promises.resolveTxt(lookupAddress);
27398
+ txtResolutionPromise.catch(() => {
27399
+ });
27415
27400
  const addresses = await dns.promises.resolveSrv(`_${options.srvServiceName}._tcp.${lookupAddress}`);
27416
27401
  if (addresses.length === 0) {
27417
27402
  throw new error_1.MongoAPIError("No addresses found at host");
@@ -27425,7 +27410,7 @@ var require_connection_string = __commonJS((exports) => {
27425
27410
  validateLoadBalancedOptions(hostAddresses, options, true);
27426
27411
  let record;
27427
27412
  try {
27428
- record = await dns.promises.resolveTxt(lookupAddress);
27413
+ record = await txtResolutionPromise;
27429
27414
  } catch (error) {
27430
27415
  if (error.code !== "ENODATA" && error.code !== "ENOTFOUND") {
27431
27416
  throw error;
@@ -27708,6 +27693,8 @@ var require_connection_string = __commonJS((exports) => {
27708
27693
  }
27709
27694
  mongoOptions.mongoLoggerOptions = mongo_logger_1.MongoLogger.resolveOptions(loggerEnvOptions, loggerClientOptions);
27710
27695
  mongoOptions.metadata = (0, client_metadata_1.makeClientMetadata)(mongoOptions);
27696
+ mongoOptions.extendedMetadata = (0, client_metadata_1.addContainerMetadata)(mongoOptions.metadata).catch(() => {
27697
+ });
27711
27698
  return mongoOptions;
27712
27699
  };
27713
27700
  var validateLoadBalancedOptions = function(hosts, mongoOptions, isSrv) {
@@ -29451,6 +29438,9 @@ var require_code_points_data = __commonJS((exports) => {
29451
29438
 
29452
29439
  // node_modules/@mongodb-js/saslprep/dist/node.js
29453
29440
  var require_node = __commonJS((exports, module) => {
29441
+ var saslprep = function(input, opts) {
29442
+ return (0, index_1.default)(codePoints, input, opts);
29443
+ };
29454
29444
  var __importDefault = exports && exports.__importDefault || function(mod) {
29455
29445
  return mod && mod.__esModule ? mod : { default: mod };
29456
29446
  };
@@ -29458,8 +29448,8 @@ var require_node = __commonJS((exports, module) => {
29458
29448
  var memory_code_points_1 = require_memory_code_points();
29459
29449
  var code_points_data_1 = __importDefault(require_code_points_data());
29460
29450
  var codePoints = (0, memory_code_points_1.createMemoryCodePoints)(code_points_data_1.default);
29461
- var saslprep = index_1.default.bind(null, codePoints);
29462
- Object.assign(saslprep, { saslprep, default: saslprep });
29451
+ saslprep.saslprep = saslprep;
29452
+ saslprep.default = saslprep;
29463
29453
  module.exports = saslprep;
29464
29454
  });
29465
29455
 
@@ -29946,20 +29936,15 @@ var require_srv_polling = __commonJS((exports) => {
29946
29936
 
29947
29937
  // node_modules/mongodb/lib/sdam/topology.js
29948
29938
  var require_topology = __commonJS((exports) => {
29949
- var destroyServer = function(server, topology, options, callback) {
29950
- options = options ?? { force: false };
29939
+ var destroyServer = function(server, topology) {
29951
29940
  for (const event of constants_1.LOCAL_SERVER_EVENTS) {
29952
29941
  server.removeAllListeners(event);
29953
29942
  }
29954
- server.destroy(options, () => {
29955
- topology.emitAndLog(Topology.SERVER_CLOSED, new events_1.ServerClosedEvent(topology.s.id, server.description.address));
29956
- for (const event of constants_1.SERVER_RELAY_EVENTS) {
29957
- server.removeAllListeners(event);
29958
- }
29959
- if (typeof callback === "function") {
29960
- callback();
29961
- }
29962
- });
29943
+ server.destroy();
29944
+ topology.emitAndLog(Topology.SERVER_CLOSED, new events_1.ServerClosedEvent(topology.s.id, server.description.address));
29945
+ for (const event of constants_1.SERVER_RELAY_EVENTS) {
29946
+ server.removeAllListeners(event);
29947
+ }
29963
29948
  };
29964
29949
  var topologyTypeFromOptions = function(options) {
29965
29950
  if (options?.directConnection) {
@@ -30268,7 +30253,8 @@ var require_topology = __commonJS((exports) => {
30268
30253
  const selectServerOptions = { operationName: "ping", ...options };
30269
30254
  this.selectServer((0, server_selection_1.readPreferenceServerSelector)(readPreference), selectServerOptions, (err, server) => {
30270
30255
  if (err) {
30271
- return this.close({ force: false }, () => exitWithError(err));
30256
+ this.close();
30257
+ return exitWithError(err);
30272
30258
  }
30273
30259
  const skipPingOnConnect = this.s.options[Symbol.for("@@mdb.skipPingOnConnect")] === true;
30274
30260
  if (!skipPingOnConnect && server && this.s.credentials) {
@@ -30286,27 +30272,24 @@ var require_topology = __commonJS((exports) => {
30286
30272
  callback?.(undefined, this);
30287
30273
  });
30288
30274
  }
30289
- close(options, callback) {
30290
- options = options ?? { force: false };
30275
+ close() {
30291
30276
  if (this.s.state === common_1.STATE_CLOSED || this.s.state === common_1.STATE_CLOSING) {
30292
- return callback?.();
30277
+ return;
30293
30278
  }
30294
- const destroyedServers = Array.from(this.s.servers.values(), (server) => {
30295
- return (0, util_1.promisify)(destroyServer)(server, this, { force: !!options?.force });
30296
- });
30297
- Promise.all(destroyedServers).then(() => {
30298
- this.s.servers.clear();
30299
- stateTransition(this, common_1.STATE_CLOSING);
30300
- drainWaitQueue(this[kWaitQueue], new error_1.MongoTopologyClosedError);
30301
- (0, common_1.drainTimerQueue)(this.s.connectionTimers);
30302
- if (this.s.srvPoller) {
30303
- this.s.srvPoller.stop();
30304
- this.s.srvPoller.removeListener(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords);
30305
- }
30306
- this.removeListener(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology);
30307
- stateTransition(this, common_1.STATE_CLOSED);
30308
- this.emitAndLog(Topology.TOPOLOGY_CLOSED, new events_1.TopologyClosedEvent(this.s.id));
30309
- }).finally(() => callback?.());
30279
+ for (const server of this.s.servers.values()) {
30280
+ destroyServer(server, this);
30281
+ }
30282
+ this.s.servers.clear();
30283
+ stateTransition(this, common_1.STATE_CLOSING);
30284
+ drainWaitQueue(this[kWaitQueue], new error_1.MongoTopologyClosedError);
30285
+ (0, common_1.drainTimerQueue)(this.s.connectionTimers);
30286
+ if (this.s.srvPoller) {
30287
+ this.s.srvPoller.stop();
30288
+ this.s.srvPoller.removeListener(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords);
30289
+ }
30290
+ this.removeListener(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology);
30291
+ stateTransition(this, common_1.STATE_CLOSED);
30292
+ this.emitAndLog(Topology.TOPOLOGY_CLOSED, new events_1.TopologyClosedEvent(this.s.id));
30310
30293
  }
30311
30294
  selectServer(selector, options, callback) {
30312
30295
  let serverSelector;
@@ -30643,7 +30626,7 @@ var require_mongo_client = __commonJS((exports) => {
30643
30626
  try {
30644
30627
  await (0, util_1.promisify)((callback) => this.topology?.connect(options, callback))();
30645
30628
  } catch (error) {
30646
- this.topology?.close({ force: true });
30629
+ this.topology?.close();
30647
30630
  throw error;
30648
30631
  }
30649
30632
  };
@@ -30681,21 +30664,11 @@ var require_mongo_client = __commonJS((exports) => {
30681
30664
  }
30682
30665
  const topology = this.topology;
30683
30666
  this.topology = undefined;
30684
- await new Promise((resolve, reject) => {
30685
- topology.close({ force }, (error) => {
30686
- if (error)
30687
- return reject(error);
30688
- const { encrypter } = this[kOptions];
30689
- if (encrypter) {
30690
- return encrypter.closeCallback(this, force, (error2) => {
30691
- if (error2)
30692
- return reject(error2);
30693
- resolve();
30694
- });
30695
- }
30696
- resolve();
30697
- });
30698
- });
30667
+ topology.close();
30668
+ const { encrypter } = this[kOptions];
30669
+ if (encrypter) {
30670
+ await encrypter.close(this, force);
30671
+ }
30699
30672
  }
30700
30673
  db(dbName, options) {
30701
30674
  options = options ?? {};
@@ -59829,6 +59802,8 @@ class ApiError extends BaseError {
59829
59802
  }
59830
59803
  // src/index.ts
59831
59804
  var import_mongodb3 = __toESM(require_lib4(), 1);
59805
+ // node_modules/@point-hub/express-utils/lib/object/keys/index.js
59806
+ var objKeys = (value) => !isNil(value) && typeof value === "object" ? Object.keys(value) : [];
59832
59807
  // node_modules/@point-hub/express-utils/lib/string/capitalize/index.js
59833
59808
  var capitalize = (value) => value[0].toUpperCase() + value.slice(1);
59834
59809
  // node_modules/@point-hub/express-utils/lib/string/camel-case/index.js
@@ -59841,6 +59816,30 @@ var camelCase = (value) => {
59841
59816
  var pascalCase = (value) => capitalize(camelCase(value));
59842
59817
  // node_modules/@point-hub/express-utils/lib/string/kebab-case/index.js
59843
59818
  var kebabCase = (value) => value.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
59819
+ // node_modules/@point-hub/express-utils/lib/type/is-type/index.js
59820
+ var isType = (value, type) => typeOf(value) === type;
59821
+ var typeOf = (value) => {
59822
+ if (Array.isArray(value))
59823
+ return "array";
59824
+ if (value instanceof Date)
59825
+ return "date";
59826
+ return typeof value;
59827
+ };
59828
+ // node_modules/@point-hub/express-utils/lib/value/is-empty/index.js
59829
+ var isEmpty = (value) => {
59830
+ if (isType(value, "date") || isType(value, "boolean") || isType(value, "number") || isType(value, "function")) {
59831
+ return false;
59832
+ }
59833
+ if (typeof value === "string" || Array.isArray(value)) {
59834
+ return value.length === 0;
59835
+ }
59836
+ if (typeof value === "object") {
59837
+ return objKeys(value).length === 0;
59838
+ }
59839
+ return true;
59840
+ };
59841
+ // node_modules/@point-hub/express-utils/lib/value/is-nil/index.js
59842
+ var isNil = (value) => value === undefined || value === null;
59844
59843
  // node_modules/@point-hub/express-utils/lib/render/handlebars/index.js
59845
59844
  var import_handlebars = __toESM(require_lib5(), 1);
59846
59845
  // node_modules/@point-hub/express-utils/lib/render/inlinecss/index.js
@@ -60309,11 +60308,13 @@ class MongoDBConnection {
60309
60308
  }
60310
60309
  const retrieveOptions = options;
60311
60310
  const cursor = this._collection.find(MongoDBHelper.stringToObjectId(query.filter ?? {}), retrieveOptions).limit(mongodb_querystring_default.limit(query.page_size)).skip(mongodb_querystring_default.skip(mongodb_querystring_default.page(query.page), mongodb_querystring_default.limit(query.page_size)));
60312
- if (query.sort && mongodb_querystring_default.sort(query.sort)) {
60313
- cursor.sort(mongodb_querystring_default.sort(query.sort));
60311
+ const sort2 = mongodb_querystring_default.sort(query.sort ?? "");
60312
+ if (!isEmpty(sort2)) {
60313
+ cursor.sort(sort2);
60314
60314
  }
60315
- if (mongodb_querystring_default.fields(query.fields, query.exclude_fields)) {
60316
- cursor.project(mongodb_querystring_default.fields(query.fields, query.exclude_fields));
60315
+ const fields2 = mongodb_querystring_default.fields(query.fields ?? "", query.exclude_fields ?? []);
60316
+ if (!isEmpty(fields2)) {
60317
+ cursor.project(fields2);
60317
60318
  }
60318
60319
  const result = await cursor.toArray();
60319
60320
  const totalDocument = await this._collection.countDocuments(query.filter ?? {}, retrieveOptions);
@@ -60399,11 +60400,13 @@ class MongoDBConnection {
60399
60400
  { $skip: (mongodb_querystring_default.page(query.page) - 1) * mongodb_querystring_default.limit(query.page_size) },
60400
60401
  { $limit: mongodb_querystring_default.limit(query.page_size) }
60401
60402
  ], aggregateOptions);
60402
- if (query.sort && mongodb_querystring_default.sort(query.sort)) {
60403
- cursor.sort(mongodb_querystring_default.sort(query.sort));
60403
+ const sort2 = mongodb_querystring_default.sort(query.sort ?? "");
60404
+ if (!isEmpty(sort2)) {
60405
+ cursor.sort(sort2);
60404
60406
  }
60405
- if (mongodb_querystring_default.fields(query.fields, query.exclude_fields)) {
60406
- cursor.project(mongodb_querystring_default.fields(query.fields, query.exclude_fields));
60407
+ const fields2 = mongodb_querystring_default.fields(query.fields ?? "", query.exclude_fields ?? []);
60408
+ if (!isEmpty(fields2)) {
60409
+ cursor.project(fields2);
60407
60410
  }
60408
60411
  const result = await cursor.toArray();
60409
60412
  const cursorPagination = this._collection.aggregate([...pipeline, { $count: "totalDocument" }], aggregateOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/database/mongodb/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/database/mongodb/connection.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@point-hub/papi",
3
- "version": "0.2.5",
3
+ "version": "0.3.0",
4
4
  "description": "Point API Framework",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -34,12 +34,12 @@
34
34
  "@types/compression": "^1.7.5",
35
35
  "@types/cors": "^2.8.17",
36
36
  "@types/express": "^4.17.21",
37
- "@types/node": "^20.11.25",
37
+ "@types/node": "^20.11.29",
38
38
  "@types/shelljs": "^0.8.15",
39
39
  "@types/validatorjs": "^3.15.5",
40
- "@typescript-eslint/eslint-plugin": "^7.1.1",
41
- "@typescript-eslint/parser": "^7.1.1",
42
- "bun-types": "^1.0.30",
40
+ "@typescript-eslint/eslint-plugin": "^7.3.1",
41
+ "@typescript-eslint/parser": "^7.3.1",
42
+ "bun-types": "^1.0.33",
43
43
  "cross-env": "^7.0.3",
44
44
  "eslint": "^8.57.0",
45
45
  "eslint-config-prettier": "^9.1.0",
@@ -51,11 +51,11 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@point-hub/express-cli": "^0.2.2",
54
- "@point-hub/express-error-handler": "^0.1.3",
54
+ "@point-hub/express-error-handler": "^0.2.0",
55
55
  "@point-hub/express-factory": "^1.1.4",
56
56
  "@point-hub/express-utils": "^0.2.4",
57
- "date-fns": "^3.3.1",
58
- "mongodb": "^6.4.0",
57
+ "date-fns": "^3.6.0",
58
+ "mongodb": "^6.5.0",
59
59
  "shelljs": "^0.8.5"
60
60
  },
61
61
  "peerDependencies": {