@ignex/ninox 0.1.3 → 0.1.4

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/dist/index.js CHANGED
@@ -16,8 +16,11 @@ var withTimeout = (promise, timeoutMs, label) => {
16
16
  if (timer !== void 0) clearTimeout(timer);
17
17
  });
18
18
  };
19
- var sleep = (ms) => new Promise((r) => setTimeout(r, ms));
20
- var sleepJittered = (ms, jitterMs = 1e3) => sleep(ms + Math.floor(Math.random() * Math.min(ms, jitterMs)));
19
+ var sleep = (ms, unref = false) => new Promise((resolve) => {
20
+ const timer = setTimeout(resolve, ms);
21
+ if (unref) timer.unref?.();
22
+ });
23
+ var sleepJittered = (ms, jitterMs = 1e3, unref = false) => sleep(ms + Math.floor(Math.random() * Math.min(ms, jitterMs)), unref);
21
24
 
22
25
  // src/capabilities.ts
23
26
  var createMongoCapabilitiesStore = () => {
@@ -82,7 +85,7 @@ var AppError = class extends Error {
82
85
  this.name = "AppError";
83
86
  this.code = code;
84
87
  this.statusCode = statusCode;
85
- this.extra = extra;
88
+ if (extra !== void 0) this.extra = extra;
86
89
  }
87
90
  /**
88
91
  * Stable, client-safe serialization for framework error middleware: a
@@ -466,6 +469,18 @@ var RefreshTicker = class {
466
469
  // src/cache/hot-cache/types.ts
467
470
  var WATCH_SEP = "\0";
468
471
 
472
+ // src/utils/watch-errors.ts
473
+ var isPermanentWatchError = (message) => (
474
+ // Standalone server: `$changeStream` is not supported at all.
475
+ /only supported on replica sets/i.test(message) || // Credentials/authorization problems: the user cannot run `aggregate` on
476
+ // this collection/server. Wrong creds, missing roles, or a user created
477
+ // without the `read`/`changeStream` privilege will never start working by
478
+ // retrying — fail once and stop instead of retrying forever.
479
+ /requires authentication|not authorized|unauthorized|authentication failed|Command .* requires authentication/i.test(
480
+ message
481
+ )
482
+ );
483
+
469
484
  // src/cache/hot-cache/watcher.ts
470
485
  var WatchCoordinator = class {
471
486
  constructor(host) {
@@ -551,14 +566,14 @@ var WatchCoordinator = class {
551
566
  } catch {
552
567
  }
553
568
  }
554
- if (/only supported on replica sets/i.test(message)) {
569
+ if (isPermanentWatchError(message)) {
555
570
  this.markStreamFailed(key);
556
571
  return;
557
572
  }
558
573
  }
559
574
  if (this.stopped) return;
560
575
  backoff = Math.min(backoff + 1e3, 5e3);
561
- await sleepJittered(backoff);
576
+ await sleepJittered(backoff, 1e3, true);
562
577
  }
563
578
  }
564
579
  markStreamFailed(key) {
@@ -660,7 +675,7 @@ var HotCache = class {
660
675
  ttlMs: config.ttlMs ?? this.options.defaultTtlMs ?? 0,
661
676
  refreshIntervalMs: config.refreshIntervalMs ?? 0,
662
677
  clone: config.clone ?? false,
663
- maxValueBytes: config.maxValueBytes,
678
+ ...config.maxValueBytes !== void 0 ? { maxValueBytes: config.maxValueBytes } : {},
664
679
  gen: 0,
665
680
  hits: 0,
666
681
  misses: 0,
@@ -954,7 +969,11 @@ var QueryCache = class {
954
969
  this.sets++;
955
970
  const ttl = ttlMs ?? this.ttlMs;
956
971
  const expiresAt = ttl > 0 ? Date.now() + ttl : Infinity;
957
- this.lru.set(key, { value, expiresAt, versions });
972
+ this.lru.set(key, {
973
+ value,
974
+ expiresAt,
975
+ ...versions !== void 0 ? { versions } : {}
976
+ });
958
977
  const sep = key.indexOf(SEP);
959
978
  const primary = sep === -1 ? key : key.slice(0, sep);
960
979
  const collectionKeys = /* @__PURE__ */ new Set([primary, ...collections ?? []]);
@@ -992,7 +1011,9 @@ var QueryCache = class {
992
1011
 
993
1012
  // src/graceful-transaction.ts
994
1013
  var withGracefulMongoTransaction = async (runner, fn, options = {}) => {
995
- const enabled = options.capabilities === void 0 || mongoTransactionsEnabled(options.capabilities, { urlHint: options.urlHint });
1014
+ const enabled = options.capabilities === void 0 || mongoTransactionsEnabled(options.capabilities, {
1015
+ ...options.urlHint !== void 0 ? { urlHint: options.urlHint } : {}
1016
+ });
996
1017
  if (!enabled) return fn(null);
997
1018
  try {
998
1019
  return await runner.transaction(fn);
@@ -2256,13 +2277,13 @@ var CacheInvalidator = class {
2256
2277
  } catch {
2257
2278
  }
2258
2279
  }
2259
- if (/only supported on replica sets/i.test(message)) {
2280
+ if (isPermanentWatchError(message)) {
2260
2281
  this.disabled = true;
2261
2282
  if (!this.warnedUnsupported) {
2262
2283
  this.warnedUnsupported = true;
2263
2284
  this.logger.warn?.(
2264
2285
  { collection: ref.collection, error: message },
2265
- "cacheWatch: change streams are not supported here (standalone?) \u2014 the query cache stays write-through only; set cache: { ttlMs } or disable cacheWatch"
2286
+ "cacheWatch: change streams unavailable permanently \u2014 the query cache stays write-through only; set cache: { ttlMs } or disable cacheWatch"
2266
2287
  );
2267
2288
  }
2268
2289
  return;
@@ -2273,7 +2294,7 @@ var CacheInvalidator = class {
2273
2294
  "cacheWatch: change stream error, retrying with backoff"
2274
2295
  );
2275
2296
  backoff = Math.min(backoff + 1e3, 5e3);
2276
- await sleepJittered(backoff);
2297
+ await sleepJittered(backoff, 1e3, true);
2277
2298
  }
2278
2299
  }
2279
2300
  }
@@ -2422,15 +2443,15 @@ var createHealth = (db) => async () => {
2422
2443
 
2423
2444
  // src/relation/populate.ts
2424
2445
  var createForeignKeyLoader = (deps2, collection, foreignField, options = {}) => new DataLoader({
2425
- maxBatchSize: options.maxBatchSize,
2426
- cache: options.cache,
2446
+ ...options.maxBatchSize !== void 0 ? { maxBatchSize: options.maxBatchSize } : {},
2447
+ ...options.cache !== void 0 ? { cache: options.cache } : {},
2427
2448
  keyOf: canonicalKey,
2428
2449
  batch: async (keys) => {
2429
2450
  const docs = await deps2.findMany(
2430
2451
  collection,
2431
2452
  { [foreignField]: { $in: keys } },
2432
2453
  {
2433
- limit: options.maxDocs
2454
+ ...options.maxDocs !== void 0 ? { limit: options.maxDocs } : {}
2434
2455
  }
2435
2456
  );
2436
2457
  const index = /* @__PURE__ */ new Map();
@@ -2535,11 +2556,23 @@ var asCollectionDefinition = (value) => {
2535
2556
  };
2536
2557
 
2537
2558
  // src/service/trace-db-op.ts
2559
+ var debugQueryCache;
2560
+ var probeDebugQuery = async () => {
2561
+ if (debugQueryCache !== void 0) return;
2562
+ try {
2563
+ const mod = await import('@ignex/core/debug');
2564
+ debugQueryCache = typeof mod.debugQuery === "function" ? mod.debugQuery : null;
2565
+ } catch {
2566
+ debugQueryCache = null;
2567
+ }
2568
+ };
2538
2569
  var traceDbOp = async (logger, meta, fn, options = {}) => {
2539
2570
  const start = performance.now();
2540
2571
  logger.debug({ ...meta, operation: "start" }, "start");
2541
2572
  try {
2542
- const result = await fn();
2573
+ if (debugQueryCache === void 0) await probeDebugQuery();
2574
+ const debugQuery = debugQueryCache;
2575
+ const result = debugQuery ? await debugQuery(`${meta.collection}.${meta.op}`, void 0, () => fn()) : await fn();
2543
2576
  const durationMs = performance.now() - start;
2544
2577
  logger.info({ ...meta, durationMs }, "ok");
2545
2578
  return result;
@@ -2584,10 +2617,16 @@ var resolveQueryOptions = (options) => {
2584
2617
  return {
2585
2618
  maxAttempts,
2586
2619
  retryDelayMs,
2587
- dedupe,
2588
- cache,
2589
- retryWrites,
2590
- sdk: { session, maxTimeMS, hint, batchSize, drift },
2620
+ ...dedupe !== void 0 ? { dedupe } : {},
2621
+ ...cache !== void 0 ? { cache } : {},
2622
+ ...retryWrites !== void 0 ? { retryWrites } : {},
2623
+ sdk: {
2624
+ ...session !== void 0 ? { session } : {},
2625
+ ...maxTimeMS !== void 0 ? { maxTimeMS } : {},
2626
+ ...hint !== void 0 ? { hint } : {},
2627
+ ...batchSize !== void 0 ? { batchSize } : {},
2628
+ ...drift !== void 0 ? { drift } : {}
2629
+ },
2591
2630
  driverOpts: rest
2592
2631
  };
2593
2632
  };
@@ -2699,7 +2738,7 @@ var PipelineBuilder = class _PipelineBuilder {
2699
2738
  collection: this.deps.logical,
2700
2739
  opName: "mongo.pipeline",
2701
2740
  pipeline: this.stages,
2702
- options: this.deps.options,
2741
+ ...this.deps.options !== void 0 ? { options: this.deps.options } : {},
2703
2742
  execute: run
2704
2743
  });
2705
2744
  }
@@ -2726,7 +2765,7 @@ var PipelineBuilder = class _PipelineBuilder {
2726
2765
  collection: this.deps.logical,
2727
2766
  opName: "mongo.pipeline.first",
2728
2767
  pipeline: this.stages,
2729
- options: this.deps.options,
2768
+ ...this.deps.options !== void 0 ? { options: this.deps.options } : {},
2730
2769
  execute: run
2731
2770
  });
2732
2771
  }
@@ -2863,7 +2902,7 @@ var makeAggregateOps = (ctx) => {
2863
2902
  coll: () => coll(collection),
2864
2903
  crudDeps: deps2,
2865
2904
  mergeDriver: mergeAggOptions2,
2866
- options,
2905
+ ...options !== void 0 ? { options } : {},
2867
2906
  cachedAggregate
2868
2907
  });
2869
2908
  return { aggregate, pipeline };
@@ -2872,10 +2911,10 @@ var makeAggregateOps = (ctx) => {
2872
2911
  // src/service/aggregation/helpers.ts
2873
2912
  var mergeAggOptions = (driverOpts, sdk) => ({
2874
2913
  ...driverOpts,
2875
- session: sdk.session,
2876
- maxTimeMS: sdk.maxTimeMS,
2877
- hint: sdk.hint,
2878
- batchSize: sdk.batchSize
2914
+ ...sdk.session !== void 0 ? { session: sdk.session } : {},
2915
+ ...sdk.maxTimeMS !== void 0 ? { maxTimeMS: sdk.maxTimeMS } : {},
2916
+ ...sdk.hint !== void 0 ? { hint: sdk.hint } : {},
2917
+ ...sdk.batchSize !== void 0 ? { batchSize: sdk.batchSize } : {}
2879
2918
  });
2880
2919
  var DATE_PART_FORMATS = {
2881
2920
  hour: "%Y-%m-%dT%H",
@@ -2997,7 +3036,7 @@ var makeGroupOps = (ctx) => {
2997
3036
  collection,
2998
3037
  opName: "mongo.groupBy",
2999
3038
  pipeline,
3000
- options,
3039
+ ...options !== void 0 ? { options } : {},
3001
3040
  execute: (r) => coll(collection).aggregate(pipeline, mergeAggOptions2(r.driverOpts, r.sdk)).toArray()
3002
3041
  });
3003
3042
  };
@@ -3027,7 +3066,7 @@ var makeGroupOps = (ctx) => {
3027
3066
  collection,
3028
3067
  opName: "mongo.dateRangeAnalysis",
3029
3068
  pipeline,
3030
- options,
3069
+ ...options !== void 0 ? { options } : {},
3031
3070
  execute: (r) => coll(collection).aggregate(pipeline, mergeAggOptions2(r.driverOpts, r.sdk)).toArray()
3032
3071
  });
3033
3072
  };
@@ -3059,7 +3098,7 @@ var makeLookupJoinOp = (ctx) => {
3059
3098
  collection,
3060
3099
  opName: "mongo.lookupJoin",
3061
3100
  pipeline,
3062
- options,
3101
+ ...options !== void 0 ? { options } : {},
3063
3102
  // Writes to any joined collection must invalidate the cached join.
3064
3103
  sources: lookups.map((l) => l.fromCollection),
3065
3104
  execute: (r) => coll(collection).aggregate(pipeline, mergeAggOptions2(r.driverOpts, r.sdk)).toArray()
@@ -3133,7 +3172,10 @@ var makeTextSearchOp = (ctx) => {
3133
3172
  const { coll, mergeAggOptions: mergeAggOptions2, cachedAggregate } = ctx;
3134
3173
  const textSearch = async (collection, baseFilter, searchConfig, paginationConfig = {}, customization = {}, options) => {
3135
3174
  const normalized = normalizePageLimit(
3136
- { page: paginationConfig.page, limit: paginationConfig.limit },
3175
+ {
3176
+ ...paginationConfig.page !== void 0 ? { page: paginationConfig.page } : {},
3177
+ ...paginationConfig.limit !== void 0 ? { limit: paginationConfig.limit } : {}
3178
+ },
3137
3179
  paginationConfig.maxLimit ?? DEFAULT_MAX_LIMIT
3138
3180
  );
3139
3181
  const searchStages = buildSearchStages(
@@ -3160,7 +3202,7 @@ var makeTextSearchOp = (ctx) => {
3160
3202
  collection,
3161
3203
  opName: "mongo.textSearch",
3162
3204
  pipeline,
3163
- options,
3205
+ ...options !== void 0 ? { options } : {},
3164
3206
  execute: async (r) => {
3165
3207
  const rows = await coll(collection).aggregate(pipeline, mergeAggOptions2(r.driverOpts, r.sdk)).toArray();
3166
3208
  const row = rows[0];
@@ -3278,7 +3320,12 @@ var createCrudContext = (client, dbLabel, logger, opts) => {
3278
3320
  if (resolved.driverOpts.projection !== void 0) return;
3279
3321
  const docs = shape === "many" ? value : shape === "one" && value !== null ? [value] : [];
3280
3322
  checkDocsDrift(
3281
- { logger, db: dbLabel, drift: mode, getSchema: opts.getSchema },
3323
+ {
3324
+ logger,
3325
+ db: dbLabel,
3326
+ drift: mode,
3327
+ ...opts.getSchema !== void 0 ? { getSchema: opts.getSchema } : {}
3328
+ },
3282
3329
  String(collection),
3283
3330
  opName,
3284
3331
  docs
@@ -3358,7 +3405,7 @@ var mergeMongoActiveFilter = (softDelete, filter) => {
3358
3405
 
3359
3406
  // src/service/crud/read-ops.ts
3360
3407
  var makeReadOps = (ctx) => {
3361
- const { client, opts } = ctx;
3408
+ const { opts } = ctx;
3362
3409
  const { coll, toDriverFilter, read, normalizeFindOptions } = ctx;
3363
3410
  const getOne = async (collection, filter, options) => {
3364
3411
  const f = filter ?? {};
@@ -3371,9 +3418,9 @@ var makeReadOps = (ctx) => {
3371
3418
  async (r) => {
3372
3419
  const opts2 = {
3373
3420
  ...r.driverOpts,
3374
- session: r.sdk.session,
3375
- maxTimeMS: r.sdk.maxTimeMS,
3376
- hint: r.sdk.hint
3421
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
3422
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {},
3423
+ ...r.sdk.hint !== void 0 ? { hint: r.sdk.hint } : {}
3377
3424
  };
3378
3425
  return coll(collection).findOne(toDriverFilter(f), opts2);
3379
3426
  },
@@ -3416,9 +3463,9 @@ var makeReadOps = (ctx) => {
3416
3463
  async (r) => {
3417
3464
  const opts2 = {
3418
3465
  ...r.driverOpts,
3419
- session: r.sdk.session,
3420
- maxTimeMS: r.sdk.maxTimeMS,
3421
- hint: r.sdk.hint
3466
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
3467
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {},
3468
+ ...r.sdk.hint !== void 0 ? { hint: r.sdk.hint } : {}
3422
3469
  };
3423
3470
  return coll(collection).find(toDriverFilter(filter ?? {}), opts2).toArray();
3424
3471
  },
@@ -3465,9 +3512,9 @@ var makeReadOps = (ctx) => {
3465
3512
  async (r) => {
3466
3513
  const opts2 = {
3467
3514
  ...r.driverOpts,
3468
- session: r.sdk.session,
3469
- maxTimeMS: r.sdk.maxTimeMS,
3470
- hint: r.sdk.hint
3515
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
3516
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {},
3517
+ ...r.sdk.hint !== void 0 ? { hint: r.sdk.hint } : {}
3471
3518
  };
3472
3519
  return coll(collection).countDocuments(toDriverFilter(filter ?? {}), opts2);
3473
3520
  },
@@ -3484,9 +3531,9 @@ var makeReadOps = (ctx) => {
3484
3531
  async (r) => {
3485
3532
  const opts2 = {
3486
3533
  ...r.driverOpts,
3487
- session: r.sdk.session,
3488
- maxTimeMS: r.sdk.maxTimeMS,
3489
- hint: r.sdk.hint
3534
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
3535
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {},
3536
+ ...r.sdk.hint !== void 0 ? { hint: r.sdk.hint } : {}
3490
3537
  };
3491
3538
  return coll(collection).distinct(
3492
3539
  String(field),
@@ -3503,8 +3550,8 @@ var makeReadOps = (ctx) => {
3503
3550
  async (r) => {
3504
3551
  const opts2 = {
3505
3552
  ...r.driverOpts,
3506
- session: r.sdk.session,
3507
- maxTimeMS: r.sdk.maxTimeMS
3553
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
3554
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {}
3508
3555
  };
3509
3556
  return coll(collection).estimatedDocumentCount(opts2);
3510
3557
  },
@@ -3541,9 +3588,9 @@ var makeWatchOps = (ctx) => {
3541
3588
  async (r) => {
3542
3589
  const opts = {
3543
3590
  ...r.driverOpts,
3544
- session: r.sdk.session,
3545
- maxTimeMS: r.sdk.maxTimeMS,
3546
- hint: r.sdk.hint
3591
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
3592
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {},
3593
+ ...r.sdk.hint !== void 0 ? { hint: r.sdk.hint } : {}
3547
3594
  };
3548
3595
  return execute(opts);
3549
3596
  },
@@ -3574,7 +3621,7 @@ var makeWriteOps = (ctx, readOps) => {
3574
3621
  async (r) => {
3575
3622
  const insertOpts = {
3576
3623
  ...r.driverOpts,
3577
- session: r.sdk.session
3624
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {}
3578
3625
  };
3579
3626
  return coll(collection).insertOne(doc, insertOpts);
3580
3627
  },
@@ -3604,7 +3651,7 @@ var makeWriteOps = (ctx, readOps) => {
3604
3651
  async (r) => {
3605
3652
  const bulkOpts = {
3606
3653
  ...r.driverOpts,
3607
- session: r.sdk.session
3654
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {}
3608
3655
  };
3609
3656
  return coll(collection).insertMany(
3610
3657
  docs,
@@ -3632,7 +3679,7 @@ var makeWriteOps = (ctx, readOps) => {
3632
3679
  async (r) => {
3633
3680
  const updateOpts = {
3634
3681
  ...r.driverOpts,
3635
- session: r.sdk.session
3682
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {}
3636
3683
  };
3637
3684
  return coll(collection).updateOne(
3638
3685
  toDriverFilter(filter),
@@ -3657,7 +3704,7 @@ var makeWriteOps = (ctx, readOps) => {
3657
3704
  async (r) => {
3658
3705
  const updateOpts = {
3659
3706
  ...r.driverOpts,
3660
- session: r.sdk.session
3707
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {}
3661
3708
  };
3662
3709
  return coll(collection).updateMany(
3663
3710
  toDriverFilter(filter),
@@ -3678,9 +3725,9 @@ var makeWriteOps = (ctx, readOps) => {
3678
3725
  async (r) => {
3679
3726
  const fOpts = {
3680
3727
  ...r.driverOpts,
3681
- session: r.sdk.session,
3682
- maxTimeMS: r.sdk.maxTimeMS,
3683
- hint: r.sdk.hint,
3728
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
3729
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {},
3730
+ ...r.sdk.hint !== void 0 ? { hint: r.sdk.hint } : {},
3684
3731
  // `after` is the ORM's default, but honor an explicit caller override.
3685
3732
  returnDocument: r.driverOpts.returnDocument ?? "after"
3686
3733
  };
@@ -3703,9 +3750,9 @@ var makeWriteOps = (ctx, readOps) => {
3703
3750
  async (r) => {
3704
3751
  const fOpts = {
3705
3752
  ...r.driverOpts,
3706
- session: r.sdk.session,
3707
- maxTimeMS: r.sdk.maxTimeMS,
3708
- hint: r.sdk.hint,
3753
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
3754
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {},
3755
+ ...r.sdk.hint !== void 0 ? { hint: r.sdk.hint } : {},
3709
3756
  // `after` is the ORM's default, but honor an explicit caller override.
3710
3757
  returnDocument: r.driverOpts.returnDocument ?? "after"
3711
3758
  };
@@ -3727,7 +3774,7 @@ var makeWriteOps = (ctx, readOps) => {
3727
3774
  async (r) => {
3728
3775
  const repOpts = {
3729
3776
  ...r.driverOpts,
3730
- session: r.sdk.session
3777
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {}
3731
3778
  };
3732
3779
  return coll(collection).replaceOne(
3733
3780
  toDriverFilter(filter),
@@ -3751,7 +3798,7 @@ var makeWriteOps = (ctx, readOps) => {
3751
3798
  async (r) => {
3752
3799
  const delOpts = {
3753
3800
  ...r.driverOpts,
3754
- session: r.sdk.session
3801
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {}
3755
3802
  };
3756
3803
  return coll(collection).deleteOne(toDriverFilter(filter), delOpts);
3757
3804
  },
@@ -3771,7 +3818,7 @@ var makeWriteOps = (ctx, readOps) => {
3771
3818
  async (r) => {
3772
3819
  const delOpts = {
3773
3820
  ...r.driverOpts,
3774
- session: r.sdk.session
3821
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {}
3775
3822
  };
3776
3823
  return coll(collection).deleteMany(toDriverFilter(filter), delOpts);
3777
3824
  },
@@ -3787,9 +3834,9 @@ var makeWriteOps = (ctx, readOps) => {
3787
3834
  async (r) => {
3788
3835
  const fOpts = {
3789
3836
  ...r.driverOpts,
3790
- session: r.sdk.session,
3791
- maxTimeMS: r.sdk.maxTimeMS,
3792
- hint: r.sdk.hint
3837
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
3838
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {},
3839
+ ...r.sdk.hint !== void 0 ? { hint: r.sdk.hint } : {}
3793
3840
  };
3794
3841
  return coll(collection).findOneAndDelete(
3795
3842
  toDriverFilter(filter),
@@ -3809,7 +3856,7 @@ var makeWriteOps = (ctx, readOps) => {
3809
3856
  async (r) => {
3810
3857
  const updateOpts = {
3811
3858
  ...r.driverOpts,
3812
- session: r.sdk.session
3859
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {}
3813
3860
  };
3814
3861
  return coll(collection).updateOne(
3815
3862
  active,
@@ -3830,7 +3877,7 @@ var makeWriteOps = (ctx, readOps) => {
3830
3877
  async (r) => {
3831
3878
  const updateOpts = {
3832
3879
  ...r.driverOpts,
3833
- session: r.sdk.session,
3880
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
3834
3881
  upsert: true
3835
3882
  };
3836
3883
  return coll(collection).updateOne(toDriverFilter(filter), formatted, updateOpts);
@@ -3859,7 +3906,7 @@ var makeWriteOps = (ctx, readOps) => {
3859
3906
  async (r) => {
3860
3907
  const bulkOpts = {
3861
3908
  ...r.driverOpts,
3862
- session: r.sdk.session
3909
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {}
3863
3910
  };
3864
3911
  return coll(collection).bulkWrite(writes, bulkOpts);
3865
3912
  },
@@ -3880,7 +3927,7 @@ var makeWriteOps = (ctx, readOps) => {
3880
3927
  async (r) => {
3881
3928
  const bulkOpts = {
3882
3929
  ...r.driverOpts,
3883
- session: r.sdk.session
3930
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {}
3884
3931
  };
3885
3932
  return coll(collection).bulkWrite(operations, bulkOpts);
3886
3933
  },
@@ -4018,7 +4065,7 @@ var makePaginateCursor = (ctx) => {
4018
4065
  throw new BadRequest("paginateCursor: provide either `after` or `before`, not both");
4019
4066
  }
4020
4067
  const limit = normalizePageLimit(
4021
- { page: 1, limit: config.limit },
4068
+ { page: 1, ...config.limit !== void 0 ? { limit: config.limit } : {} },
4022
4069
  config.maxLimit ?? DEFAULT_MAX_LIMIT,
4023
4070
  { limit: DEFAULT_FIND_LIMIT }
4024
4071
  ).limit;
@@ -4045,9 +4092,9 @@ var makePaginateCursor = (ctx) => {
4045
4092
  async (r) => {
4046
4093
  const findOpts = {
4047
4094
  ...r.driverOpts,
4048
- session: r.sdk.session,
4049
- maxTimeMS: r.sdk.maxTimeMS,
4050
- hint: r.sdk.hint
4095
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
4096
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {},
4097
+ ...r.sdk.hint !== void 0 ? { hint: r.sdk.hint } : {}
4051
4098
  };
4052
4099
  return client.collection(resolve(String(collection))).find(filter, findOpts).sort(effectiveSort).limit(limit + 1).toArray();
4053
4100
  },
@@ -4060,7 +4107,7 @@ var makePaginateCursor = (ctx) => {
4060
4107
  logger,
4061
4108
  db: dbLabel,
4062
4109
  drift: resolveDriftMode(config.queryOptions?.drift, opts.drift),
4063
- getSchema: opts.getSchema
4110
+ ...opts.getSchema !== void 0 ? { getSchema: opts.getSchema } : {}
4064
4111
  },
4065
4112
  String(collection),
4066
4113
  "mongo.paginateCursor",
@@ -4081,7 +4128,10 @@ var makePaginateFlexible = (ctx) => {
4081
4128
  const { client, dbLabel, logger, opts, resolve, cachedAggregate } = ctx;
4082
4129
  const paginateFlexible = async (collection, baseFilter, config = {}) => {
4083
4130
  const normalized = normalizePageLimit(
4084
- { page: config.page, limit: config.limit },
4131
+ {
4132
+ ...config.page !== void 0 ? { page: config.page } : {},
4133
+ ...config.limit !== void 0 ? { limit: config.limit } : {}
4134
+ },
4085
4135
  config.maxLimit ?? DEFAULT_MAX_LIMIT
4086
4136
  );
4087
4137
  const dataStages = [
@@ -4104,14 +4154,14 @@ var makePaginateFlexible = (ctx) => {
4104
4154
  collection,
4105
4155
  opName: "mongo.paginateFlexible",
4106
4156
  pipeline,
4107
- options: config.queryOptions,
4157
+ ...config.queryOptions !== void 0 ? { options: config.queryOptions } : {},
4108
4158
  execute: async (r) => {
4109
4159
  const aggOptions = {
4110
4160
  ...r.driverOpts,
4111
- session: r.sdk.session,
4112
- maxTimeMS: r.sdk.maxTimeMS,
4113
- hint: r.sdk.hint,
4114
- batchSize: r.sdk.batchSize
4161
+ ...r.sdk.session !== void 0 ? { session: r.sdk.session } : {},
4162
+ ...r.sdk.maxTimeMS !== void 0 ? { maxTimeMS: r.sdk.maxTimeMS } : {},
4163
+ ...r.sdk.hint !== void 0 ? { hint: r.sdk.hint } : {},
4164
+ ...r.sdk.batchSize !== void 0 ? { batchSize: r.sdk.batchSize } : {}
4115
4165
  };
4116
4166
  const rows = await client.collection(resolve(String(collection))).aggregate(pipeline, aggOptions).toArray();
4117
4167
  const row = rows[0];
@@ -4122,7 +4172,7 @@ var makePaginateFlexible = (ctx) => {
4122
4172
  logger,
4123
4173
  db: dbLabel,
4124
4174
  drift: resolveDriftMode(config.queryOptions?.drift, opts.drift),
4125
- getSchema: opts.getSchema
4175
+ ...opts.getSchema !== void 0 ? { getSchema: opts.getSchema } : {}
4126
4176
  },
4127
4177
  String(collection),
4128
4178
  "mongo.paginateFlexible",
@@ -4323,27 +4373,27 @@ var buildManager = (deps2, dbKey, dbName, client) => {
4323
4373
  const crud = makeCrudOps(handle, dbName, logger, {
4324
4374
  resolveCollectionName,
4325
4375
  wrapMongoErrors: deps2.wrapMongoErrors,
4326
- cache: sharedCache,
4376
+ ...sharedCache !== void 0 ? { cache: sharedCache } : {},
4327
4377
  dedupeReads,
4328
4378
  inFlight,
4329
4379
  hooks,
4330
4380
  timestamps,
4331
- drift: deps2.drift,
4332
- getSchema: (logical) => getDefinition(logical)?.schema
4381
+ ...deps2.drift !== void 0 ? { drift: deps2.drift } : {},
4382
+ ...getDefinition !== void 0 ? { getSchema: (logical) => getDefinition(logical)?.schema } : {}
4333
4383
  });
4334
4384
  const pagination = makePaginationOps(handle, dbName, logger, {
4335
4385
  resolveCollectionName,
4336
4386
  wrapMongoErrors: deps2.wrapMongoErrors,
4337
- drift: deps2.drift,
4338
- getSchema: (logical) => getDefinition(logical)?.schema,
4339
- cache: sharedCache,
4387
+ ...deps2.drift !== void 0 ? { drift: deps2.drift } : {},
4388
+ ...getDefinition !== void 0 ? { getSchema: (logical) => getDefinition(logical)?.schema } : {},
4389
+ ...sharedCache !== void 0 ? { cache: sharedCache } : {},
4340
4390
  dedupeReads,
4341
4391
  inFlight
4342
4392
  });
4343
4393
  const aggregation = makeAggregationOps(handle, dbName, logger, {
4344
4394
  resolveCollectionName,
4345
4395
  wrapMongoErrors: deps2.wrapMongoErrors,
4346
- cache: sharedCache,
4396
+ ...sharedCache !== void 0 ? { cache: sharedCache } : {},
4347
4397
  dedupeReads,
4348
4398
  inFlight
4349
4399
  });
@@ -4356,7 +4406,7 @@ var buildManager = (deps2, dbKey, dbName, client) => {
4356
4406
  findMany: async (logical, filter, options) => {
4357
4407
  const physical = resolveCollectionName(logical);
4358
4408
  return handle.collection(physical).find(filter, {
4359
- projection: options?.projection,
4409
+ ...options?.projection !== void 0 ? { projection: options.projection } : {},
4360
4410
  limit: options?.limit ?? 1e4
4361
4411
  }).toArray();
4362
4412
  }
@@ -4396,11 +4446,11 @@ var createMongoService = (dbClients, configOverrides = {}) => {
4396
4446
  dbClients,
4397
4447
  config,
4398
4448
  logger,
4399
- sharedCache,
4449
+ ...sharedCache !== void 0 ? { sharedCache } : {},
4400
4450
  dedupeReads,
4401
4451
  inFlight,
4402
4452
  wrapMongoErrors: runtime.wrapMongoErrors,
4403
- drift: configOverrides.drift,
4453
+ ...configOverrides.drift !== void 0 ? { drift: configOverrides.drift } : {},
4404
4454
  collectionRefs,
4405
4455
  db
4406
4456
  },