@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/README.md +6 -9
- package/dist/index.d.ts +6 -6
- package/dist/index.js +142 -92
- package/dist/index.js.map +1 -1
- package/dist/{timeout-BgrqtMnd.d.ts → timeout-BE_ULjdG.d.ts} +11 -3
- package/dist/utils.d.ts +21 -2
- package/dist/utils.js +18 -3
- package/dist/utils.js.map +1 -1
- package/package.json +2 -1
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((
|
|
20
|
-
|
|
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 (
|
|
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, {
|
|
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, {
|
|
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 (
|
|
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
|
|
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
|
-
|
|
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: {
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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 {
|
|
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
|
-
{
|
|
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
|
|
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
|
},
|