cqm-models 3.1.1 → 3.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.eslintrc.json +7 -0
- data/.github/workflows/ci.yml +1 -1
- data/app/assets/javascripts/basetypes/Any.js +1 -1
- data/cqm-models.gemspec +1 -1
- data/dist/browser.js +1110 -658
- data/dist/index.js +1110 -658
- data/package.json +3 -3
- data/yarn.lock +899 -999
- metadata +7 -7
data/dist/browser.js
CHANGED
@@ -3408,7 +3408,7 @@ function Any(key, options) {
|
|
3408
3408
|
Any.prototype = Object.create(mongoose.SchemaType.prototype);
|
3409
3409
|
|
3410
3410
|
function RecursiveCast(any) {
|
3411
|
-
if (any && any.value && any.unit) {
|
3411
|
+
if (any && any.value !== undefined && any.unit) {
|
3412
3412
|
return new cql.Quantity(any.value, any.unit);
|
3413
3413
|
}
|
3414
3414
|
|
@@ -7032,8 +7032,8 @@ class Unit {
|
|
7032
7032
|
* concatenated string. Basically it checks to see if the string
|
7033
7033
|
* needs to be enclosed either in parentheses or square brackets.
|
7034
7034
|
*
|
7035
|
-
* The string is enclosed if it is not a number,
|
7036
|
-
*
|
7035
|
+
* The string is enclosed if it is not a number, is not already enclosed in a pair of
|
7036
|
+
* parentheses or square brackets, and includes a period, and asterisk,
|
7037
7037
|
* a slash or a blank space.
|
7038
7038
|
*
|
7039
7039
|
* @param str the string
|
@@ -7049,7 +7049,7 @@ class Unit {
|
|
7049
7049
|
if (intUtils_.isNumericString(str)) {
|
7050
7050
|
ret = str;
|
7051
7051
|
} else {
|
7052
|
-
if (str.charAt(0) === '(' || str.charAt(0) === '[') {
|
7052
|
+
if (str.charAt(0) === '(' && str.endsWith(')') || str.charAt(0) === '[' && str.endsWith(']')) {
|
7053
7053
|
ret = str;
|
7054
7054
|
} else if (/[./* ]/.test(str)) {
|
7055
7055
|
ret = startChar + str + endChar;
|
@@ -9931,7 +9931,7 @@ var objectKeys = Object.keys || function (obj) {
|
|
9931
9931
|
};
|
9932
9932
|
|
9933
9933
|
}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
9934
|
-
},{"object-assign":
|
9934
|
+
},{"object-assign":326,"util/":106}],104:[function(require,module,exports){
|
9935
9935
|
if (typeof Object.create === 'function') {
|
9936
9936
|
// implementation from standard node.js 'util' module
|
9937
9937
|
module.exports = function inherits(ctor, superCtor) {
|
@@ -10553,7 +10553,7 @@ function hasOwnProperty(obj, prop) {
|
|
10553
10553
|
}
|
10554
10554
|
|
10555
10555
|
}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
10556
|
-
},{"./support/isBuffer":105,"_process":
|
10556
|
+
},{"./support/isBuffer":105,"_process":327,"inherits":104}],107:[function(require,module,exports){
|
10557
10557
|
'use strict'
|
10558
10558
|
|
10559
10559
|
exports.byteLength = byteLength
|
@@ -16331,7 +16331,7 @@ module.exports = ret;
|
|
16331
16331
|
},{"./es5":13}]},{},[4])(4)
|
16332
16332
|
}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }
|
16333
16333
|
}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate)
|
16334
|
-
},{"_process":
|
16334
|
+
},{"_process":327,"timers":331}],109:[function(require,module,exports){
|
16335
16335
|
(function (global){(function (){
|
16336
16336
|
/**
|
16337
16337
|
* Module dependencies.
|
@@ -18265,6 +18265,11 @@ Long.prototype.toNumber = function() {
|
|
18265
18265
|
return this.high_ * Long.TWO_PWR_32_DBL_ + this.getLowBitsUnsigned();
|
18266
18266
|
};
|
18267
18267
|
|
18268
|
+
/** Converts the Long to a BigInt (arbitrary precision). */
|
18269
|
+
Long.prototype.toBigInt = function () {
|
18270
|
+
return BigInt(this.toString());
|
18271
|
+
}
|
18272
|
+
|
18268
18273
|
/**
|
18269
18274
|
* Return the JSON value.
|
18270
18275
|
*
|
@@ -18899,6 +18904,15 @@ Long.fromNumber = function(value) {
|
|
18899
18904
|
}
|
18900
18905
|
};
|
18901
18906
|
|
18907
|
+
/**
|
18908
|
+
* Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.
|
18909
|
+
* @param {bigint} value - The number in question
|
18910
|
+
* @returns {Long} The corresponding Long value
|
18911
|
+
*/
|
18912
|
+
Long.fromBigInt = function(value) {
|
18913
|
+
return Long.fromString(value.toString(10), 10);
|
18914
|
+
}
|
18915
|
+
|
18902
18916
|
/**
|
18903
18917
|
* Returns a Long representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits.
|
18904
18918
|
*
|
@@ -19598,7 +19612,7 @@ module.exports.ObjectID = ObjectID;
|
|
19598
19612
|
module.exports.ObjectId = ObjectID;
|
19599
19613
|
|
19600
19614
|
}).call(this)}).call(this,require('_process'),require("buffer").Buffer)
|
19601
|
-
},{"./parser/utils":125,"_process":
|
19615
|
+
},{"./parser/utils":125,"_process":327,"buffer":129,"util":334}],122:[function(require,module,exports){
|
19602
19616
|
(function (Buffer){(function (){
|
19603
19617
|
'use strict';
|
19604
19618
|
|
@@ -21354,6 +21368,8 @@ var serializeInto = function serializeInto(
|
|
21354
21368
|
index = serializeString(buffer, key, value, index, true);
|
21355
21369
|
} else if (type === 'number') {
|
21356
21370
|
index = serializeNumber(buffer, key, value, index, true);
|
21371
|
+
} else if(type === 'bigint') {
|
21372
|
+
throw new TypeError('Unsupported type BigInt, please use Decimal128');
|
21357
21373
|
} else if (type === 'boolean') {
|
21358
21374
|
index = serializeBoolean(buffer, key, value, index, true);
|
21359
21375
|
} else if (value instanceof Date || isDate(value)) {
|
@@ -21465,6 +21481,8 @@ var serializeInto = function serializeInto(
|
|
21465
21481
|
index = serializeString(buffer, key, value, index);
|
21466
21482
|
} else if (type === 'number') {
|
21467
21483
|
index = serializeNumber(buffer, key, value, index);
|
21484
|
+
} else if(type === 'bigint') {
|
21485
|
+
throw new TypeError('Unsupported type BigInt, please use Decimal128');
|
21468
21486
|
} else if (type === 'boolean') {
|
21469
21487
|
index = serializeBoolean(buffer, key, value, index);
|
21470
21488
|
} else if (value instanceof Date || isDate(value)) {
|
@@ -21568,6 +21586,8 @@ var serializeInto = function serializeInto(
|
|
21568
21586
|
index = serializeString(buffer, key, value, index);
|
21569
21587
|
} else if (type === 'number') {
|
21570
21588
|
index = serializeNumber(buffer, key, value, index);
|
21589
|
+
} else if(type === 'bigint') {
|
21590
|
+
throw new TypeError('Unsupported type BigInt, please use Decimal128');
|
21571
21591
|
} else if (type === 'boolean') {
|
21572
21592
|
index = serializeBoolean(buffer, key, value, index);
|
21573
21593
|
} else if (value instanceof Date || isDate(value)) {
|
@@ -21954,7 +21974,7 @@ module.exports = Symbol;
|
|
21954
21974
|
module.exports.Symbol = Symbol;
|
21955
21975
|
|
21956
21976
|
}).call(this)}).call(this,require("buffer").Buffer)
|
21957
|
-
},{"buffer":129,"util":
|
21977
|
+
},{"buffer":129,"util":334}],128:[function(require,module,exports){
|
21958
21978
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
21959
21979
|
// you may not use this file except in compliance with the License.
|
21960
21980
|
// You may obtain a copy of the License at
|
@@ -40718,7 +40738,7 @@ function decorateNextFn(fn) {
|
|
40718
40738
|
module.exports = Kareem;
|
40719
40739
|
|
40720
40740
|
}).call(this)}).call(this,require('_process'))
|
40721
|
-
},{"_process":
|
40741
|
+
},{"_process":327}],183:[function(require,module,exports){
|
40722
40742
|
'use strict';
|
40723
40743
|
|
40724
40744
|
Object.defineProperty(exports, '__esModule', { value: true });
|
@@ -41435,13 +41455,13 @@ var monthsNarrow = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"];
|
|
41435
41455
|
function months(length) {
|
41436
41456
|
switch (length) {
|
41437
41457
|
case "narrow":
|
41438
|
-
return monthsNarrow;
|
41458
|
+
return [].concat(monthsNarrow);
|
41439
41459
|
|
41440
41460
|
case "short":
|
41441
|
-
return monthsShort;
|
41461
|
+
return [].concat(monthsShort);
|
41442
41462
|
|
41443
41463
|
case "long":
|
41444
|
-
return monthsLong;
|
41464
|
+
return [].concat(monthsLong);
|
41445
41465
|
|
41446
41466
|
case "numeric":
|
41447
41467
|
return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];
|
@@ -41459,13 +41479,13 @@ var weekdaysNarrow = ["M", "T", "W", "T", "F", "S", "S"];
|
|
41459
41479
|
function weekdays(length) {
|
41460
41480
|
switch (length) {
|
41461
41481
|
case "narrow":
|
41462
|
-
return weekdaysNarrow;
|
41482
|
+
return [].concat(weekdaysNarrow);
|
41463
41483
|
|
41464
41484
|
case "short":
|
41465
|
-
return weekdaysShort;
|
41485
|
+
return [].concat(weekdaysShort);
|
41466
41486
|
|
41467
41487
|
case "long":
|
41468
|
-
return weekdaysLong;
|
41488
|
+
return [].concat(weekdaysLong);
|
41469
41489
|
|
41470
41490
|
case "numeric":
|
41471
41491
|
return ["1", "2", "3", "4", "5", "6", "7"];
|
@@ -41481,13 +41501,13 @@ var erasNarrow = ["B", "A"];
|
|
41481
41501
|
function eras(length) {
|
41482
41502
|
switch (length) {
|
41483
41503
|
case "narrow":
|
41484
|
-
return erasNarrow;
|
41504
|
+
return [].concat(erasNarrow);
|
41485
41505
|
|
41486
41506
|
case "short":
|
41487
|
-
return erasShort;
|
41507
|
+
return [].concat(erasShort);
|
41488
41508
|
|
41489
41509
|
case "long":
|
41490
|
-
return erasLong;
|
41510
|
+
return [].concat(erasLong);
|
41491
41511
|
|
41492
41512
|
default:
|
41493
41513
|
return null;
|
@@ -42502,7 +42522,7 @@ var IANAZone = /*#__PURE__*/function (_Zone) {
|
|
42502
42522
|
|
42503
42523
|
IANAZone.parseGMTOffset = function parseGMTOffset(specifier) {
|
42504
42524
|
if (specifier) {
|
42505
|
-
var match = specifier.match(/^Etc\/GMT([+-]\d{1,2})$/i);
|
42525
|
+
var match = specifier.match(/^Etc\/GMT(0|[+-]\d{1,2})$/i);
|
42506
42526
|
|
42507
42527
|
if (match) {
|
42508
42528
|
return -60 * parseInt(match[1]);
|
@@ -42545,8 +42565,10 @@ var IANAZone = /*#__PURE__*/function (_Zone) {
|
|
42545
42565
|
;
|
42546
42566
|
|
42547
42567
|
_proto.offset = function offset(ts) {
|
42548
|
-
var date = new Date(ts)
|
42549
|
-
|
42568
|
+
var date = new Date(ts);
|
42569
|
+
if (isNaN(date)) return NaN;
|
42570
|
+
|
42571
|
+
var dtf = makeDTF(this.name),
|
42550
42572
|
_ref2 = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date),
|
42551
42573
|
year = _ref2[0],
|
42552
42574
|
month = _ref2[1],
|
@@ -43205,12 +43227,16 @@ var PolyDateFormatter = /*#__PURE__*/function () {
|
|
43205
43227
|
if (dt.zone.universal && this.hasIntl) {
|
43206
43228
|
// UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.
|
43207
43229
|
// That is why fixed-offset TZ is set to that unless it is:
|
43208
|
-
// 1.
|
43209
|
-
// 2.
|
43230
|
+
// 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.
|
43231
|
+
// 2. Unsupported by the browser:
|
43232
|
+
// - some do not support Etc/
|
43233
|
+
// - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata
|
43210
43234
|
var gmtOffset = -1 * (dt.offset / 60);
|
43235
|
+
var offsetZ = gmtOffset >= 0 ? "Etc/GMT+" + gmtOffset : "Etc/GMT" + gmtOffset;
|
43236
|
+
var isOffsetZoneSupported = IANAZone.isValidZone(offsetZ);
|
43211
43237
|
|
43212
|
-
if (
|
43213
|
-
z =
|
43238
|
+
if (dt.offset !== 0 && isOffsetZoneSupported) {
|
43239
|
+
z = offsetZ;
|
43214
43240
|
this.dt = dt;
|
43215
43241
|
} else {
|
43216
43242
|
// Not all fixed-offset zones like Etc/+4:30 are present in tzdata.
|
@@ -43747,9 +43773,14 @@ function extractISODuration(match) {
|
|
43747
43773
|
secondStr = match[7],
|
43748
43774
|
millisecondsStr = match[8];
|
43749
43775
|
var hasNegativePrefix = s[0] === "-";
|
43776
|
+
var negativeSeconds = secondStr && secondStr[0] === "-";
|
43777
|
+
|
43778
|
+
var maybeNegate = function maybeNegate(num, force) {
|
43779
|
+
if (force === void 0) {
|
43780
|
+
force = false;
|
43781
|
+
}
|
43750
43782
|
|
43751
|
-
|
43752
|
-
return num && hasNegativePrefix ? -num : num;
|
43783
|
+
return num !== undefined && (force || num && hasNegativePrefix) ? -num : num;
|
43753
43784
|
};
|
43754
43785
|
|
43755
43786
|
return [{
|
@@ -43759,8 +43790,8 @@ function extractISODuration(match) {
|
|
43759
43790
|
days: maybeNegate(parseInteger(dayStr)),
|
43760
43791
|
hours: maybeNegate(parseInteger(hourStr)),
|
43761
43792
|
minutes: maybeNegate(parseInteger(minuteStr)),
|
43762
|
-
seconds: maybeNegate(parseInteger(secondStr)),
|
43763
|
-
milliseconds: maybeNegate(parseMillis(millisecondsStr))
|
43793
|
+
seconds: maybeNegate(parseInteger(secondStr), secondStr === "-0"),
|
43794
|
+
milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds)
|
43764
43795
|
}];
|
43765
43796
|
} // These are a little braindead. EDT *should* tell us that we're in, say, America/New_York
|
43766
43797
|
// and not just that we're in -240 *right now*. But since I don't think these are used that often
|
@@ -43865,14 +43896,14 @@ var isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeEx
|
|
43865
43896
|
var isoTimeCombinedRegex = combineRegexes(isoTimeRegex);
|
43866
43897
|
var extractISOYmdTimeAndOffset = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset);
|
43867
43898
|
var extractISOWeekTimeAndOffset = combineExtractors(extractISOWeekData, extractISOTime, extractISOOffset);
|
43868
|
-
var
|
43899
|
+
var extractISOOrdinalDateAndTime = combineExtractors(extractISOOrdinalData, extractISOTime, extractISOOffset);
|
43869
43900
|
var extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset);
|
43870
43901
|
/**
|
43871
43902
|
* @private
|
43872
43903
|
*/
|
43873
43904
|
|
43874
43905
|
function parseISODate(s) {
|
43875
|
-
return parse(s, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex,
|
43906
|
+
return parse(s, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime], [isoTimeCombinedRegex, extractISOTimeAndOffset]);
|
43876
43907
|
}
|
43877
43908
|
function parseRFC2822Date(s) {
|
43878
43909
|
return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);
|
@@ -44100,7 +44131,7 @@ var Duration = /*#__PURE__*/function () {
|
|
44100
44131
|
}, opts));
|
44101
44132
|
}
|
44102
44133
|
/**
|
44103
|
-
* Create a Duration from a JavaScript object with keys like 'years' and 'hours.
|
44134
|
+
* Create a Duration from a JavaScript object with keys like 'years' and 'hours'.
|
44104
44135
|
* If this object is empty then a zero milliseconds duration is returned.
|
44105
44136
|
* @param {Object} obj - the object to create the DateTime from
|
44106
44137
|
* @param {number} obj.years
|
@@ -44492,9 +44523,9 @@ var Duration = /*#__PURE__*/function () {
|
|
44492
44523
|
/**
|
44493
44524
|
* Get the value of unit.
|
44494
44525
|
* @param {string} unit - a unit such as 'minute' or 'day'
|
44495
|
-
* @example Duration.fromObject({years: 2, days: 3}).years //=> 2
|
44496
|
-
* @example Duration.fromObject({years: 2, days: 3}).months //=> 0
|
44497
|
-
* @example Duration.fromObject({years: 2, days: 3}).days //=> 3
|
44526
|
+
* @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2
|
44527
|
+
* @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0
|
44528
|
+
* @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3
|
44498
44529
|
* @return {number}
|
44499
44530
|
*/
|
44500
44531
|
;
|
@@ -45200,15 +45231,18 @@ var Interval = /*#__PURE__*/function () {
|
|
45200
45231
|
}
|
45201
45232
|
|
45202
45233
|
var s = this.s,
|
45203
|
-
|
45234
|
+
idx = 1,
|
45204
45235
|
next;
|
45205
45236
|
var results = [];
|
45206
45237
|
|
45207
45238
|
while (s < this.e) {
|
45208
|
-
added =
|
45239
|
+
var added = this.start.plus(dur.mapUnits(function (x) {
|
45240
|
+
return x * idx;
|
45241
|
+
}));
|
45209
45242
|
next = +added > +this.e ? this.e : added;
|
45210
45243
|
results.push(Interval.fromDateTimes(s, next));
|
45211
45244
|
s = next;
|
45245
|
+
idx += 1;
|
45212
45246
|
}
|
45213
45247
|
|
45214
45248
|
return results;
|
@@ -45295,7 +45329,7 @@ var Interval = /*#__PURE__*/function () {
|
|
45295
45329
|
var s = this.s > other.s ? this.s : other.s,
|
45296
45330
|
e = this.e < other.e ? this.e : other.e;
|
45297
45331
|
|
45298
|
-
if (s
|
45332
|
+
if (s >= e) {
|
45299
45333
|
return null;
|
45300
45334
|
} else {
|
45301
45335
|
return Interval.fromDateTimes(s, e);
|
@@ -45620,6 +45654,7 @@ var Info = /*#__PURE__*/function () {
|
|
45620
45654
|
* @param {Object} opts - options
|
45621
45655
|
* @param {string} [opts.locale] - the locale code
|
45622
45656
|
* @param {string} [opts.numberingSystem=null] - the numbering system
|
45657
|
+
* @param {string} [opts.locObj=null] - an existing locale object to use
|
45623
45658
|
* @param {string} [opts.outputCalendar='gregory'] - the calendar
|
45624
45659
|
* @example Info.months()[0] //=> 'January'
|
45625
45660
|
* @example Info.months('short')[0] //=> 'Jan'
|
@@ -45641,10 +45676,12 @@ var Info = /*#__PURE__*/function () {
|
|
45641
45676
|
locale = _ref$locale === void 0 ? null : _ref$locale,
|
45642
45677
|
_ref$numberingSystem = _ref.numberingSystem,
|
45643
45678
|
numberingSystem = _ref$numberingSystem === void 0 ? null : _ref$numberingSystem,
|
45679
|
+
_ref$locObj = _ref.locObj,
|
45680
|
+
locObj = _ref$locObj === void 0 ? null : _ref$locObj,
|
45644
45681
|
_ref$outputCalendar = _ref.outputCalendar,
|
45645
45682
|
outputCalendar = _ref$outputCalendar === void 0 ? "gregory" : _ref$outputCalendar;
|
45646
45683
|
|
45647
|
-
return Locale.create(locale, numberingSystem, outputCalendar).months(length);
|
45684
|
+
return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);
|
45648
45685
|
}
|
45649
45686
|
/**
|
45650
45687
|
* Return an array of format month names.
|
@@ -45655,6 +45692,7 @@ var Info = /*#__PURE__*/function () {
|
|
45655
45692
|
* @param {Object} opts - options
|
45656
45693
|
* @param {string} [opts.locale] - the locale code
|
45657
45694
|
* @param {string} [opts.numberingSystem=null] - the numbering system
|
45695
|
+
* @param {string} [opts.locObj=null] - an existing locale object to use
|
45658
45696
|
* @param {string} [opts.outputCalendar='gregory'] - the calendar
|
45659
45697
|
* @return {[string]}
|
45660
45698
|
*/
|
@@ -45670,10 +45708,12 @@ var Info = /*#__PURE__*/function () {
|
|
45670
45708
|
locale = _ref2$locale === void 0 ? null : _ref2$locale,
|
45671
45709
|
_ref2$numberingSystem = _ref2.numberingSystem,
|
45672
45710
|
numberingSystem = _ref2$numberingSystem === void 0 ? null : _ref2$numberingSystem,
|
45711
|
+
_ref2$locObj = _ref2.locObj,
|
45712
|
+
locObj = _ref2$locObj === void 0 ? null : _ref2$locObj,
|
45673
45713
|
_ref2$outputCalendar = _ref2.outputCalendar,
|
45674
45714
|
outputCalendar = _ref2$outputCalendar === void 0 ? "gregory" : _ref2$outputCalendar;
|
45675
45715
|
|
45676
|
-
return Locale.create(locale, numberingSystem, outputCalendar).months(length, true);
|
45716
|
+
return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);
|
45677
45717
|
}
|
45678
45718
|
/**
|
45679
45719
|
* Return an array of standalone week names.
|
@@ -45682,6 +45722,7 @@ var Info = /*#__PURE__*/function () {
|
|
45682
45722
|
* @param {Object} opts - options
|
45683
45723
|
* @param {string} [opts.locale] - the locale code
|
45684
45724
|
* @param {string} [opts.numberingSystem=null] - the numbering system
|
45725
|
+
* @param {string} [opts.locObj=null] - an existing locale object to use
|
45685
45726
|
* @example Info.weekdays()[0] //=> 'Monday'
|
45686
45727
|
* @example Info.weekdays('short')[0] //=> 'Mon'
|
45687
45728
|
* @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'
|
@@ -45699,9 +45740,11 @@ var Info = /*#__PURE__*/function () {
|
|
45699
45740
|
_ref3$locale = _ref3.locale,
|
45700
45741
|
locale = _ref3$locale === void 0 ? null : _ref3$locale,
|
45701
45742
|
_ref3$numberingSystem = _ref3.numberingSystem,
|
45702
|
-
numberingSystem = _ref3$numberingSystem === void 0 ? null : _ref3$numberingSystem
|
45743
|
+
numberingSystem = _ref3$numberingSystem === void 0 ? null : _ref3$numberingSystem,
|
45744
|
+
_ref3$locObj = _ref3.locObj,
|
45745
|
+
locObj = _ref3$locObj === void 0 ? null : _ref3$locObj;
|
45703
45746
|
|
45704
|
-
return Locale.create(locale, numberingSystem, null).weekdays(length);
|
45747
|
+
return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);
|
45705
45748
|
}
|
45706
45749
|
/**
|
45707
45750
|
* Return an array of format week names.
|
@@ -45712,6 +45755,7 @@ var Info = /*#__PURE__*/function () {
|
|
45712
45755
|
* @param {Object} opts - options
|
45713
45756
|
* @param {string} [opts.locale=null] - the locale code
|
45714
45757
|
* @param {string} [opts.numberingSystem=null] - the numbering system
|
45758
|
+
* @param {string} [opts.locObj=null] - an existing locale object to use
|
45715
45759
|
* @return {[string]}
|
45716
45760
|
*/
|
45717
45761
|
;
|
@@ -45725,9 +45769,11 @@ var Info = /*#__PURE__*/function () {
|
|
45725
45769
|
_ref4$locale = _ref4.locale,
|
45726
45770
|
locale = _ref4$locale === void 0 ? null : _ref4$locale,
|
45727
45771
|
_ref4$numberingSystem = _ref4.numberingSystem,
|
45728
|
-
numberingSystem = _ref4$numberingSystem === void 0 ? null : _ref4$numberingSystem
|
45772
|
+
numberingSystem = _ref4$numberingSystem === void 0 ? null : _ref4$numberingSystem,
|
45773
|
+
_ref4$locObj = _ref4.locObj,
|
45774
|
+
locObj = _ref4$locObj === void 0 ? null : _ref4$locObj;
|
45729
45775
|
|
45730
|
-
return Locale.create(locale, numberingSystem, null).weekdays(length, true);
|
45776
|
+
return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);
|
45731
45777
|
}
|
45732
45778
|
/**
|
45733
45779
|
* Return an array of meridiems.
|
@@ -47018,7 +47064,7 @@ function diffRelative(start, end, opts) {
|
|
47018
47064
|
}
|
47019
47065
|
}
|
47020
47066
|
|
47021
|
-
return format(0, opts.units[opts.units.length - 1]);
|
47067
|
+
return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);
|
47022
47068
|
}
|
47023
47069
|
/**
|
47024
47070
|
* A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.
|
@@ -47145,7 +47191,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
47145
47191
|
|
47146
47192
|
DateTime.local = function local(year, month, day, hour, minute, second, millisecond) {
|
47147
47193
|
if (isUndefined(year)) {
|
47148
|
-
return
|
47194
|
+
return DateTime.now();
|
47149
47195
|
} else {
|
47150
47196
|
return quickDT({
|
47151
47197
|
year: year,
|
@@ -47413,8 +47459,8 @@ var DateTime = /*#__PURE__*/function () {
|
|
47413
47459
|
* @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone
|
47414
47460
|
* @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one
|
47415
47461
|
* @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance
|
47416
|
-
* @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
|
47417
|
-
* @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance
|
47462
|
+
* @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance
|
47463
|
+
* @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance
|
47418
47464
|
* @example DateTime.fromISO('2016-05-25T09:08:34.123')
|
47419
47465
|
* @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')
|
47420
47466
|
* @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})
|
@@ -47789,7 +47835,21 @@ var DateTime = /*#__PURE__*/function () {
|
|
47789
47835
|
_proto.set = function set(values) {
|
47790
47836
|
if (!this.isValid) return this;
|
47791
47837
|
var normalized = normalizeObject(values, normalizeUnit, []),
|
47792
|
-
settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday)
|
47838
|
+
settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday),
|
47839
|
+
containsOrdinal = !isUndefined(normalized.ordinal),
|
47840
|
+
containsGregorYear = !isUndefined(normalized.year),
|
47841
|
+
containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),
|
47842
|
+
containsGregor = containsGregorYear || containsGregorMD,
|
47843
|
+
definiteWeekDef = normalized.weekYear || normalized.weekNumber;
|
47844
|
+
|
47845
|
+
if ((containsGregor || containsOrdinal) && definiteWeekDef) {
|
47846
|
+
throw new ConflictingSpecificationError("Can't mix weekYear/weekNumber units with year/month/day or ordinals");
|
47847
|
+
}
|
47848
|
+
|
47849
|
+
if (containsGregorMD && containsOrdinal) {
|
47850
|
+
throw new ConflictingSpecificationError("Can't mix ordinal dates with month/day");
|
47851
|
+
}
|
47852
|
+
|
47793
47853
|
var mixed;
|
47794
47854
|
|
47795
47855
|
if (settingWeekStuff) {
|
@@ -48373,7 +48433,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48373
48433
|
* @param {Object} options - options that affect the output
|
48374
48434
|
* @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.
|
48375
48435
|
* @param {string} [options.style="long"] - the style of units, must be "long", "short", or "narrow"
|
48376
|
-
* @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of "years", "quarters", "months", "weeks", "days", "hours", "minutes", or "seconds"
|
48436
|
+
* @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of "years", "quarters", "months", "weeks", "days", "hours", "minutes", or "seconds"
|
48377
48437
|
* @param {boolean} [options.round=true] - whether to round the numbers in the output.
|
48378
48438
|
* @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.
|
48379
48439
|
* @param {string} options.locale - override the locale of this DateTime
|
@@ -48397,9 +48457,18 @@ var DateTime = /*#__PURE__*/function () {
|
|
48397
48457
|
zone: this.zone
|
48398
48458
|
}),
|
48399
48459
|
padding = options.padding ? this < base ? -options.padding : options.padding : 0;
|
48460
|
+
var units = ["years", "months", "days", "hours", "minutes", "seconds"];
|
48461
|
+
var unit = options.unit;
|
48462
|
+
|
48463
|
+
if (Array.isArray(options.unit)) {
|
48464
|
+
units = options.unit;
|
48465
|
+
unit = undefined;
|
48466
|
+
}
|
48467
|
+
|
48400
48468
|
return diffRelative(base, this.plus(padding), Object.assign(options, {
|
48401
48469
|
numeric: "always",
|
48402
|
-
units:
|
48470
|
+
units: units,
|
48471
|
+
unit: unit
|
48403
48472
|
}));
|
48404
48473
|
}
|
48405
48474
|
/**
|
@@ -48686,7 +48755,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48686
48755
|
/**
|
48687
48756
|
* Get the week year
|
48688
48757
|
* @see https://en.wikipedia.org/wiki/ISO_week_date
|
48689
|
-
* @example DateTime.local(2014,
|
48758
|
+
* @example DateTime.local(2014, 12, 31).weekYear //=> 2015
|
48690
48759
|
* @type {number}
|
48691
48760
|
*/
|
48692
48761
|
|
@@ -48742,7 +48811,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48742
48811
|
key: "monthShort",
|
48743
48812
|
get: function get() {
|
48744
48813
|
return this.isValid ? Info.months("short", {
|
48745
|
-
|
48814
|
+
locObj: this.loc
|
48746
48815
|
})[this.month - 1] : null;
|
48747
48816
|
}
|
48748
48817
|
/**
|
@@ -48756,7 +48825,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48756
48825
|
key: "monthLong",
|
48757
48826
|
get: function get() {
|
48758
48827
|
return this.isValid ? Info.months("long", {
|
48759
|
-
|
48828
|
+
locObj: this.loc
|
48760
48829
|
})[this.month - 1] : null;
|
48761
48830
|
}
|
48762
48831
|
/**
|
@@ -48770,7 +48839,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48770
48839
|
key: "weekdayShort",
|
48771
48840
|
get: function get() {
|
48772
48841
|
return this.isValid ? Info.weekdays("short", {
|
48773
|
-
|
48842
|
+
locObj: this.loc
|
48774
48843
|
})[this.weekday - 1] : null;
|
48775
48844
|
}
|
48776
48845
|
/**
|
@@ -48784,7 +48853,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48784
48853
|
key: "weekdayLong",
|
48785
48854
|
get: function get() {
|
48786
48855
|
return this.isValid ? Info.weekdays("long", {
|
48787
|
-
|
48856
|
+
locObj: this.loc
|
48788
48857
|
})[this.weekday - 1] : null;
|
48789
48858
|
}
|
48790
48859
|
/**
|
@@ -49143,7 +49212,7 @@ function friendlyDateTime(dateTimeish) {
|
|
49143
49212
|
}
|
49144
49213
|
}
|
49145
49214
|
|
49146
|
-
var VERSION = "1.
|
49215
|
+
var VERSION = "1.28.0";
|
49147
49216
|
|
49148
49217
|
exports.DateTime = DateTime;
|
49149
49218
|
exports.Duration = Duration;
|
@@ -49240,11 +49309,14 @@ exports.Schema = require('./schema');
|
|
49240
49309
|
*
|
49241
49310
|
* ####Types:
|
49242
49311
|
*
|
49243
|
-
* - [
|
49244
|
-
* - [Buffer](#
|
49245
|
-
* - [
|
49246
|
-
* - [
|
49247
|
-
* - [
|
49312
|
+
* - [Array](/docs/schematypes.html#arrays)
|
49313
|
+
* - [Buffer](/docs/schematypes.html#buffers)
|
49314
|
+
* - [Embedded](/docs/schematypes.html#schemas)
|
49315
|
+
* - [DocumentArray](/docs/api/documentarraypath.html)
|
49316
|
+
* - [Decimal128](/docs/api.html#mongoose_Mongoose-Decimal128)
|
49317
|
+
* - [ObjectId](/docs/schematypes.html#objectids)
|
49318
|
+
* - [Map](/docs/schematypes.html#maps)
|
49319
|
+
* - [Subdocument](/docs/schematypes.html#schemas)
|
49248
49320
|
*
|
49249
49321
|
* Using this exposed access to the `ObjectId` type, we can construct ids on demand.
|
49250
49322
|
*
|
@@ -49327,7 +49399,7 @@ if (typeof window !== 'undefined') {
|
|
49327
49399
|
}
|
49328
49400
|
|
49329
49401
|
}).call(this)}).call(this,require("buffer").Buffer)
|
49330
|
-
},{"./document_provider.js":195,"./driver":196,"./drivers/browser":200,"./error/index":204,"./promise_provider":
|
49402
|
+
},{"./document_provider.js":195,"./driver":196,"./drivers/browser":200,"./error/index":204,"./promise_provider":274,"./schema":276,"./schematype.js":297,"./types":305,"./utils.js":309,"./virtualtype":310,"buffer":129}],186:[function(require,module,exports){
|
49331
49403
|
/*!
|
49332
49404
|
* Module dependencies.
|
49333
49405
|
*/
|
@@ -49429,7 +49501,7 @@ Document.$emitter = new EventEmitter();
|
|
49429
49501
|
Document.ValidationError = ValidationError;
|
49430
49502
|
module.exports = exports = Document;
|
49431
49503
|
|
49432
|
-
},{"./document":194,"./error/index":204,"./helpers/isObject":
|
49504
|
+
},{"./document":194,"./error/index":204,"./helpers/isObject":236,"./helpers/model/applyHooks":238,"./schema":276,"./types/objectid":307,"events":177}],187:[function(require,module,exports){
|
49433
49505
|
'use strict';
|
49434
49506
|
|
49435
49507
|
/*!
|
@@ -49441,6 +49513,7 @@ const StrictModeError = require('./error/strict');
|
|
49441
49513
|
const Types = require('./schema/index');
|
49442
49514
|
const castTextSearch = require('./schema/operators/text');
|
49443
49515
|
const get = require('./helpers/get');
|
49516
|
+
const getConstructorName = require('./helpers/getConstructorName');
|
49444
49517
|
const getSchemaDiscriminatorByValue = require('./helpers/discriminator/getSchemaDiscriminatorByValue');
|
49445
49518
|
const isOperator = require('./helpers/query/isOperator');
|
49446
49519
|
const util = require('util');
|
@@ -49699,7 +49772,7 @@ module.exports = function cast(schema, obj, options, context) {
|
|
49699
49772
|
}
|
49700
49773
|
} else if (val == null) {
|
49701
49774
|
continue;
|
49702
|
-
} else if (val
|
49775
|
+
} else if (getConstructorName(val) === 'Object') {
|
49703
49776
|
any$conditionals = Object.keys(val).some(isOperator);
|
49704
49777
|
|
49705
49778
|
if (!any$conditionals) {
|
@@ -49794,7 +49867,7 @@ function _cast(val, numbertype, context) {
|
|
49794
49867
|
}
|
49795
49868
|
}
|
49796
49869
|
}
|
49797
|
-
},{"./error/cast":202,"./error/strict":214,"./helpers/discriminator/getSchemaDiscriminatorByValue":
|
49870
|
+
},{"./error/cast":202,"./error/strict":214,"./helpers/discriminator/getSchemaDiscriminatorByValue":225,"./helpers/get":230,"./helpers/getConstructorName":231,"./helpers/isMongooseObject":235,"./helpers/isObject":236,"./helpers/query/isOperator":245,"./schema/index":284,"./schema/operators/text":293,"util":334}],188:[function(require,module,exports){
|
49798
49871
|
'use strict';
|
49799
49872
|
|
49800
49873
|
const CastError = require('../error/cast');
|
@@ -49909,7 +49982,7 @@ module.exports = function castDecimal128(value) {
|
|
49909
49982
|
assert.ok(false);
|
49910
49983
|
};
|
49911
49984
|
}).call(this)}).call(this,{"isBuffer":require("../../../is-buffer/index.js")})
|
49912
|
-
},{"../../../is-buffer/index.js":179,"../types/decimal128":
|
49985
|
+
},{"../../../is-buffer/index.js":179,"../types/decimal128":302,"assert":103}],191:[function(require,module,exports){
|
49913
49986
|
'use strict';
|
49914
49987
|
|
49915
49988
|
const assert = require('assert');
|
@@ -50024,7 +50097,7 @@ module.exports = function castString(value, path) {
|
|
50024
50097
|
};
|
50025
50098
|
|
50026
50099
|
},{"../error/cast":202}],194:[function(require,module,exports){
|
50027
|
-
(function (Buffer
|
50100
|
+
(function (Buffer){(function (){
|
50028
50101
|
'use strict';
|
50029
50102
|
|
50030
50103
|
/*!
|
@@ -50052,6 +50125,7 @@ const get = require('./helpers/get');
|
|
50052
50125
|
const getEmbeddedDiscriminatorPath = require('./helpers/document/getEmbeddedDiscriminatorPath');
|
50053
50126
|
const handleSpreadDoc = require('./helpers/document/handleSpreadDoc');
|
50054
50127
|
const idGetter = require('./plugins/idGetter');
|
50128
|
+
const immediate = require('./helpers/immediate');
|
50055
50129
|
const isDefiningProjection = require('./helpers/projection/isDefiningProjection');
|
50056
50130
|
const isExclusive = require('./helpers/projection/isExclusive');
|
50057
50131
|
const inspect = require('util').inspect;
|
@@ -50074,6 +50148,7 @@ const documentSchemaSymbol = require('./helpers/symbols').documentSchemaSymbol;
|
|
50074
50148
|
const getSymbol = require('./helpers/symbols').getSymbol;
|
50075
50149
|
const populateModelSymbol = require('./helpers/symbols').populateModelSymbol;
|
50076
50150
|
const scopeSymbol = require('./helpers/symbols').scopeSymbol;
|
50151
|
+
const schemaMixedSymbol = require('./schema/symbols').schemaMixedSymbol;
|
50077
50152
|
|
50078
50153
|
let DocumentArray;
|
50079
50154
|
let MongooseArray;
|
@@ -50103,9 +50178,8 @@ function Document(obj, fields, skipId, options) {
|
|
50103
50178
|
options = Object.assign({}, options);
|
50104
50179
|
const defaults = get(options, 'defaults', true);
|
50105
50180
|
options.defaults = defaults;
|
50106
|
-
|
50107
50181
|
// Support `browserDocument.js` syntax
|
50108
|
-
if (this
|
50182
|
+
if (this.$__schema == null) {
|
50109
50183
|
const _schema = utils.isObject(fields) && !fields.instanceOfSchema ?
|
50110
50184
|
new Schema(fields) :
|
50111
50185
|
fields;
|
@@ -50122,12 +50196,11 @@ function Document(obj, fields, skipId, options) {
|
|
50122
50196
|
this.$__.$options = options || {};
|
50123
50197
|
this.$locals = {};
|
50124
50198
|
this.$op = null;
|
50125
|
-
|
50126
50199
|
if (obj != null && typeof obj !== 'object') {
|
50127
50200
|
throw new ObjectParameterError(obj, 'obj', 'Document');
|
50128
50201
|
}
|
50129
50202
|
|
50130
|
-
const schema = this
|
50203
|
+
const schema = this.$__schema;
|
50131
50204
|
|
50132
50205
|
if (typeof fields === 'boolean' || fields === 'throw') {
|
50133
50206
|
this.$__.strictMode = fields;
|
@@ -50230,6 +50303,17 @@ for (const i in EventEmitter.prototype) {
|
|
50230
50303
|
Document[i] = EventEmitter.prototype[i];
|
50231
50304
|
}
|
50232
50305
|
|
50306
|
+
/**
|
50307
|
+
* The document's internal schema.
|
50308
|
+
*
|
50309
|
+
* @api private
|
50310
|
+
* @property schema
|
50311
|
+
* @memberOf Document
|
50312
|
+
* @instance
|
50313
|
+
*/
|
50314
|
+
|
50315
|
+
Document.prototype.$__schema;
|
50316
|
+
|
50233
50317
|
/**
|
50234
50318
|
* The document's schema.
|
50235
50319
|
*
|
@@ -50281,6 +50365,28 @@ Object.defineProperty(Document.prototype, '$locals', {
|
|
50281
50365
|
|
50282
50366
|
Document.prototype.isNew;
|
50283
50367
|
|
50368
|
+
/**
|
50369
|
+
* Set this property to add additional query filters when Mongoose saves this document and `isNew` is false.
|
50370
|
+
*
|
50371
|
+
* ####Example:
|
50372
|
+
*
|
50373
|
+
* // Make sure `save()` never updates a soft deleted document.
|
50374
|
+
* schema.pre('save', function() {
|
50375
|
+
* this.$where = { isDeleted: false };
|
50376
|
+
* });
|
50377
|
+
*
|
50378
|
+
* @api public
|
50379
|
+
* @property $where
|
50380
|
+
* @memberOf Document
|
50381
|
+
* @instance
|
50382
|
+
*/
|
50383
|
+
|
50384
|
+
Object.defineProperty(Document.prototype, '$where', {
|
50385
|
+
configurable: false,
|
50386
|
+
enumerable: false,
|
50387
|
+
writable: true
|
50388
|
+
});
|
50389
|
+
|
50284
50390
|
/**
|
50285
50391
|
* The string version of this documents _id.
|
50286
50392
|
*
|
@@ -50359,7 +50465,7 @@ function $__hasIncludedChildren(fields) {
|
|
50359
50465
|
*/
|
50360
50466
|
|
50361
50467
|
function $__applyDefaults(doc, fields, skipId, exclude, hasIncludedChildren, isBeforeSetters, pathsToSkip) {
|
50362
|
-
const paths = Object.keys(doc.
|
50468
|
+
const paths = Object.keys(doc.$__schema.paths);
|
50363
50469
|
const plen = paths.length;
|
50364
50470
|
|
50365
50471
|
for (let i = 0; i < plen; ++i) {
|
@@ -50371,12 +50477,11 @@ function $__applyDefaults(doc, fields, skipId, exclude, hasIncludedChildren, isB
|
|
50371
50477
|
continue;
|
50372
50478
|
}
|
50373
50479
|
|
50374
|
-
const type = doc.
|
50375
|
-
const path =
|
50480
|
+
const type = doc.$__schema.paths[p];
|
50481
|
+
const path = type.splitPath();
|
50376
50482
|
const len = path.length;
|
50377
50483
|
let included = false;
|
50378
50484
|
let doc_ = doc._doc;
|
50379
|
-
|
50380
50485
|
for (let j = 0; j < len; ++j) {
|
50381
50486
|
if (doc_ == null) {
|
50382
50487
|
break;
|
@@ -50485,7 +50590,7 @@ function $__applyDefaults(doc, fields, skipId, exclude, hasIncludedChildren, isB
|
|
50485
50590
|
Document.prototype.$__buildDoc = function(obj, fields, skipId, exclude, hasIncludedChildren) {
|
50486
50591
|
const doc = {};
|
50487
50592
|
|
50488
|
-
const paths = Object.keys(this.
|
50593
|
+
const paths = Object.keys(this.$__schema.paths).
|
50489
50594
|
// Don't build up any paths that are underneath a map, we don't know
|
50490
50595
|
// what the keys will be
|
50491
50596
|
filter(p => !p.includes('$*'));
|
@@ -50504,7 +50609,7 @@ Document.prototype.$__buildDoc = function(obj, fields, skipId, exclude, hasInclu
|
|
50504
50609
|
}
|
50505
50610
|
}
|
50506
50611
|
|
50507
|
-
const path = p.
|
50612
|
+
const path = this.$__schema.paths[p].splitPath();
|
50508
50613
|
const len = path.length;
|
50509
50614
|
const last = len - 1;
|
50510
50615
|
let curPath = '';
|
@@ -50605,6 +50710,7 @@ Document.prototype.$__init = function(doc, opts) {
|
|
50605
50710
|
}
|
50606
50711
|
child.$__.parent = this;
|
50607
50712
|
}
|
50713
|
+
item._childDocs = [];
|
50608
50714
|
}
|
50609
50715
|
}
|
50610
50716
|
|
@@ -50616,7 +50722,6 @@ Document.prototype.$__init = function(doc, opts) {
|
|
50616
50722
|
this.constructor.emit('init', this);
|
50617
50723
|
|
50618
50724
|
this.$__._id = this._id;
|
50619
|
-
|
50620
50725
|
return this;
|
50621
50726
|
};
|
50622
50727
|
|
@@ -50685,12 +50790,12 @@ function init(self, obj, doc, opts, prefix) {
|
|
50685
50790
|
function _init(index) {
|
50686
50791
|
i = keys[index];
|
50687
50792
|
path = prefix + i;
|
50688
|
-
schema = self.
|
50793
|
+
schema = self.$__schema.path(path);
|
50689
50794
|
|
50690
50795
|
// Should still work if not a model-level discriminator, but should not be
|
50691
50796
|
// necessary. This is *only* to catch the case where we queried using the
|
50692
50797
|
// base model and the discriminated model has a projection
|
50693
|
-
if (self
|
50798
|
+
if (self.$__schema.$isRootDiscriminator && !self.$__isSelected(path)) {
|
50694
50799
|
return;
|
50695
50800
|
}
|
50696
50801
|
|
@@ -50795,10 +50900,10 @@ Document.prototype.update = function update() {
|
|
50795
50900
|
|
50796
50901
|
Document.prototype.updateOne = function updateOne(doc, options, callback) {
|
50797
50902
|
const query = this.constructor.updateOne({ _id: this._id }, doc, options);
|
50798
|
-
query.
|
50903
|
+
query.pre(cb => {
|
50799
50904
|
this.constructor._middleware.execPre('updateOne', this, [this], cb);
|
50800
50905
|
});
|
50801
|
-
query.
|
50906
|
+
query.post(cb => {
|
50802
50907
|
this.constructor._middleware.execPost('updateOne', this, [this], {}, cb);
|
50803
50908
|
});
|
50804
50909
|
|
@@ -50820,7 +50925,7 @@ Document.prototype.updateOne = function updateOne(doc, options, callback) {
|
|
50820
50925
|
*
|
50821
50926
|
* ####Valid options:
|
50822
50927
|
*
|
50823
|
-
* - same as in [Model.replaceOne](#model_Model.replaceOne)
|
50928
|
+
* - same as in [Model.replaceOne](https://mongoosejs.com/docs/api/model.html#model_Model.replaceOne)
|
50824
50929
|
*
|
50825
50930
|
* @see Model.replaceOne #model_Model.replaceOne
|
50826
50931
|
* @param {Object} doc
|
@@ -50863,12 +50968,22 @@ Document.prototype.replaceOne = function replaceOne() {
|
|
50863
50968
|
|
50864
50969
|
Document.prototype.$session = function $session(session) {
|
50865
50970
|
if (arguments.length === 0) {
|
50971
|
+
if (this.$__.session != null && this.$__.session.hasEnded) {
|
50972
|
+
this.$__.session = null;
|
50973
|
+
return null;
|
50974
|
+
}
|
50866
50975
|
return this.$__.session;
|
50867
50976
|
}
|
50977
|
+
|
50978
|
+
if (session != null && session.hasEnded) {
|
50979
|
+
throw new MongooseError('Cannot set a document\'s session to a session that has ended. Make sure you haven\'t ' +
|
50980
|
+
'called `endSession()` on the session you are passing to `$session()`.');
|
50981
|
+
}
|
50982
|
+
|
50868
50983
|
this.$__.session = session;
|
50869
50984
|
|
50870
50985
|
if (!this.ownerDocument) {
|
50871
|
-
const subdocs = this.$
|
50986
|
+
const subdocs = this.$getAllSubdocs();
|
50872
50987
|
for (const child of subdocs) {
|
50873
50988
|
child.$session(session);
|
50874
50989
|
}
|
@@ -50898,10 +51013,10 @@ Document.prototype.overwrite = function overwrite(obj) {
|
|
50898
51013
|
continue;
|
50899
51014
|
}
|
50900
51015
|
// Explicitly skip version key
|
50901
|
-
if (this.
|
51016
|
+
if (this.$__schema.options.versionKey && key === this.$__schema.options.versionKey) {
|
50902
51017
|
continue;
|
50903
51018
|
}
|
50904
|
-
if (this.
|
51019
|
+
if (this.$__schema.options.discriminatorKey && key === this.$__schema.options.discriminatorKey) {
|
50905
51020
|
continue;
|
50906
51021
|
}
|
50907
51022
|
this.$set(key, obj[key]);
|
@@ -50925,7 +51040,6 @@ Document.prototype.overwrite = function overwrite(obj) {
|
|
50925
51040
|
*/
|
50926
51041
|
|
50927
51042
|
Document.prototype.$set = function $set(path, val, type, options) {
|
50928
|
-
|
50929
51043
|
if (utils.isPOJO(type)) {
|
50930
51044
|
options = type;
|
50931
51045
|
type = undefined;
|
@@ -50935,6 +51049,7 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
50935
51049
|
const merge = options.merge;
|
50936
51050
|
const adhoc = type && type !== true;
|
50937
51051
|
const constructing = type === true;
|
51052
|
+
const typeKey = this.$__schema.options.typeKey;
|
50938
51053
|
let adhocs;
|
50939
51054
|
let keys;
|
50940
51055
|
let i = 0;
|
@@ -50948,7 +51063,7 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
50948
51063
|
|
50949
51064
|
if (adhoc) {
|
50950
51065
|
adhocs = this.$__.adhocPaths || (this.$__.adhocPaths = {});
|
50951
|
-
adhocs[path] = this.
|
51066
|
+
adhocs[path] = this.$__schema.interpretAsType(path, type, this.$__schema.options);
|
50952
51067
|
}
|
50953
51068
|
|
50954
51069
|
if (path == null) {
|
@@ -50988,7 +51103,7 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
50988
51103
|
for (let i = 0; i < len; ++i) {
|
50989
51104
|
key = keys[i];
|
50990
51105
|
const pathName = prefix + key;
|
50991
|
-
pathtype = this.
|
51106
|
+
pathtype = this.$__schema.pathType(pathName);
|
50992
51107
|
|
50993
51108
|
// On initial set, delete any nested keys if we're going to overwrite
|
50994
51109
|
// them to ensure we keep the user's key order.
|
@@ -51001,6 +51116,9 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51001
51116
|
delete this._doc[key];
|
51002
51117
|
// Make sure we set `{}` back even if we minimize re: gh-8565
|
51003
51118
|
options = Object.assign({}, options, { _skipMinimizeTopLevel: true });
|
51119
|
+
} else {
|
51120
|
+
// Make sure we set `{_skipMinimizeTopLevel: false}` if don't have overwrite: gh-10441
|
51121
|
+
options = Object.assign({}, options, { _skipMinimizeTopLevel: false });
|
51004
51122
|
}
|
51005
51123
|
|
51006
51124
|
const someCondition = typeof path[key] === 'object' &&
|
@@ -51011,9 +51129,9 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51011
51129
|
pathtype !== 'real' &&
|
51012
51130
|
pathtype !== 'adhocOrUndefined' &&
|
51013
51131
|
!(this.$__path(pathName) instanceof MixedSchema) &&
|
51014
|
-
!(this.
|
51015
|
-
this.
|
51016
|
-
this.
|
51132
|
+
!(this.$__schema.paths[pathName] &&
|
51133
|
+
this.$__schema.paths[pathName].options &&
|
51134
|
+
this.$__schema.paths[pathName].options.ref);
|
51017
51135
|
|
51018
51136
|
if (someCondition) {
|
51019
51137
|
this.$__.$setCalled.add(prefix + key);
|
@@ -51032,8 +51150,8 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51032
51150
|
if (pathtype === 'real' || pathtype === 'virtual') {
|
51033
51151
|
// Check for setting single embedded schema to document (gh-3535)
|
51034
51152
|
let p = path[key];
|
51035
|
-
if (this.
|
51036
|
-
this.
|
51153
|
+
if (this.$__schema.paths[pathName] &&
|
51154
|
+
this.$__schema.paths[pathName].$isSingleNested &&
|
51037
51155
|
path[key] instanceof Document) {
|
51038
51156
|
p = p.toObject({ virtuals: false, transform: false });
|
51039
51157
|
}
|
@@ -51058,7 +51176,7 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51058
51176
|
this.$__.$setCalled.add(path);
|
51059
51177
|
}
|
51060
51178
|
|
51061
|
-
let pathType = this.
|
51179
|
+
let pathType = this.$__schema.pathType(path);
|
51062
51180
|
if (pathType === 'adhocOrUndefined') {
|
51063
51181
|
pathType = getEmbeddedDiscriminatorPath(this, path, { typeOnly: true });
|
51064
51182
|
}
|
@@ -51109,8 +51227,8 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51109
51227
|
const parts = path.indexOf('.') === -1 ? [path] : path.split('.');
|
51110
51228
|
|
51111
51229
|
// Might need to change path for top-level alias
|
51112
|
-
if (typeof this.
|
51113
|
-
parts[0] = this.
|
51230
|
+
if (typeof this.$__schema.aliases[parts[0]] == 'string') {
|
51231
|
+
parts[0] = this.$__schema.aliases[parts[0]];
|
51114
51232
|
}
|
51115
51233
|
|
51116
51234
|
if (pathType === 'adhocOrUndefined' && strict) {
|
@@ -51121,12 +51239,12 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51121
51239
|
const subpath = parts.slice(0, i + 1).join('.');
|
51122
51240
|
|
51123
51241
|
// If path is underneath a virtual, bypass everything and just set it.
|
51124
|
-
if (i + 1 < parts.length && this.
|
51242
|
+
if (i + 1 < parts.length && this.$__schema.pathType(subpath) === 'virtual') {
|
51125
51243
|
mpath.set(path, val, this);
|
51126
51244
|
return this;
|
51127
51245
|
}
|
51128
51246
|
|
51129
|
-
schema = this.
|
51247
|
+
schema = this.$__schema.path(subpath);
|
51130
51248
|
if (schema == null) {
|
51131
51249
|
continue;
|
51132
51250
|
}
|
@@ -51150,7 +51268,7 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51150
51268
|
return this;
|
51151
51269
|
}
|
51152
51270
|
} else if (pathType === 'virtual') {
|
51153
|
-
schema = this.
|
51271
|
+
schema = this.$__schema.virtualpath(path);
|
51154
51272
|
schema.applySetters(val, this);
|
51155
51273
|
return this;
|
51156
51274
|
} else {
|
@@ -51270,25 +51388,20 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51270
51388
|
|
51271
51389
|
let popOpts;
|
51272
51390
|
if (schema.options &&
|
51273
|
-
Array.isArray(schema.options[
|
51274
|
-
schema.options[
|
51275
|
-
schema.options[
|
51276
|
-
_isManuallyPopulatedArray(val, schema.options[
|
51277
|
-
|
51278
|
-
|
51279
|
-
|
51280
|
-
val.map(function(v) { return v._id; }), popOpts);
|
51281
|
-
} else {
|
51282
|
-
popOpts = { [populateModelSymbol]: val[0].constructor };
|
51283
|
-
this.populated(path, val.map(function(v) { return v._id; }), popOpts);
|
51284
|
-
}
|
51391
|
+
Array.isArray(schema.options[typeKey]) &&
|
51392
|
+
schema.options[typeKey].length &&
|
51393
|
+
schema.options[typeKey][0].ref &&
|
51394
|
+
_isManuallyPopulatedArray(val, schema.options[typeKey][0].ref)) {
|
51395
|
+
popOpts = { [populateModelSymbol]: val[0].constructor };
|
51396
|
+
this.populated(path, val.map(function(v) { return v._id; }), popOpts);
|
51397
|
+
|
51285
51398
|
for (const doc of val) {
|
51286
51399
|
doc.$__.wasPopulated = true;
|
51287
51400
|
}
|
51288
51401
|
didPopulate = true;
|
51289
51402
|
}
|
51290
51403
|
|
51291
|
-
if (this.
|
51404
|
+
if (this.$__schema.singleNestedPaths[path] == null) {
|
51292
51405
|
// If this path is underneath a single nested schema, we'll call the setter
|
51293
51406
|
// later in `$__set()` because we don't take `_doc` when we iterate through
|
51294
51407
|
// a single nested doc. That's to make sure we get the correct context.
|
@@ -51447,7 +51560,7 @@ Document.prototype.$__shouldModify = function(pathToMark, path, constructing, pa
|
|
51447
51560
|
// Re: the note about gh-7196, `val` is the raw value without casting or
|
51448
51561
|
// setters if the full path is under a single nested subdoc because we don't
|
51449
51562
|
// want to double run setters. So don't set it as modified. See gh-7264.
|
51450
|
-
if (this.
|
51563
|
+
if (this.$__schema.singleNestedPaths[path] != null) {
|
51451
51564
|
return false;
|
51452
51565
|
}
|
51453
51566
|
|
@@ -51610,20 +51723,20 @@ Document.prototype.get = function(path, type, options) {
|
|
51610
51723
|
let adhoc;
|
51611
51724
|
options = options || {};
|
51612
51725
|
if (type) {
|
51613
|
-
adhoc = this.
|
51726
|
+
adhoc = this.$__schema.interpretAsType(path, type, this.$__schema.options);
|
51614
51727
|
}
|
51615
51728
|
|
51616
51729
|
let schema = this.$__path(path);
|
51617
51730
|
if (schema == null) {
|
51618
|
-
schema = this.
|
51731
|
+
schema = this.$__schema.virtualpath(path);
|
51619
51732
|
}
|
51620
51733
|
if (schema instanceof MixedSchema) {
|
51621
|
-
const virtual = this.
|
51734
|
+
const virtual = this.$__schema.virtualpath(path);
|
51622
51735
|
if (virtual != null) {
|
51623
51736
|
schema = virtual;
|
51624
51737
|
}
|
51625
51738
|
}
|
51626
|
-
const pieces = path.split('.');
|
51739
|
+
const pieces = path.indexOf('.') === -1 ? [path] : path.split('.');
|
51627
51740
|
let obj = this._doc;
|
51628
51741
|
|
51629
51742
|
if (schema instanceof VirtualType) {
|
@@ -51631,8 +51744,8 @@ Document.prototype.get = function(path, type, options) {
|
|
51631
51744
|
}
|
51632
51745
|
|
51633
51746
|
// Might need to change path for top-level alias
|
51634
|
-
if (typeof this.
|
51635
|
-
pieces[0] = this.
|
51747
|
+
if (typeof this.$__schema.aliases[pieces[0]] == 'string') {
|
51748
|
+
pieces[0] = this.$__schema.aliases[pieces[0]];
|
51636
51749
|
}
|
51637
51750
|
|
51638
51751
|
for (let i = 0, l = pieces.length; i < l; i++) {
|
@@ -51657,7 +51770,7 @@ Document.prototype.get = function(path, type, options) {
|
|
51657
51770
|
|
51658
51771
|
if (schema != null && options.getters !== false) {
|
51659
51772
|
obj = schema.applyGetters(obj, this);
|
51660
|
-
} else if (this.
|
51773
|
+
} else if (this.$__schema.nested[path] && options.virtuals) {
|
51661
51774
|
// Might need to apply virtuals if this is a nested path
|
51662
51775
|
return applyVirtuals(this, utils.clone(obj) || {}, { path: path });
|
51663
51776
|
}
|
@@ -51688,7 +51801,7 @@ Document.prototype.$__path = function(path) {
|
|
51688
51801
|
if (adhocType) {
|
51689
51802
|
return adhocType;
|
51690
51803
|
}
|
51691
|
-
return this.
|
51804
|
+
return this.$__schema.path(path);
|
51692
51805
|
};
|
51693
51806
|
|
51694
51807
|
/**
|
@@ -52223,6 +52336,7 @@ Document.prototype.isDirectSelected = function isDirectSelected(path) {
|
|
52223
52336
|
* @param {Array|String} [pathsToValidate] list of paths to validate. If set, Mongoose will validate only the modified paths that are in the given list.
|
52224
52337
|
* @param {Object} [options] internal options
|
52225
52338
|
* @param {Boolean} [options.validateModifiedOnly=false] if `true` mongoose validates only modified paths.
|
52339
|
+
* @param {Array|string} [options.pathsToSkip] list of paths to skip. If set, Mongoose will validate every modified path that is not in this list.
|
52226
52340
|
* @param {Function} [callback] optional callback called after validation completes, passing an error if one occurred
|
52227
52341
|
* @return {Promise} Promise
|
52228
52342
|
* @api public
|
@@ -52243,7 +52357,17 @@ Document.prototype.validate = function(pathsToValidate, options, callback) {
|
|
52243
52357
|
this.$__.validating = new ParallelValidateError(this, { parentStack: options && options.parentStack });
|
52244
52358
|
}
|
52245
52359
|
|
52246
|
-
if (
|
52360
|
+
if (arguments.length === 1) {
|
52361
|
+
if (typeof arguments[0] === 'object' && !Array.isArray(arguments[0])) {
|
52362
|
+
options = arguments[0];
|
52363
|
+
callback = null;
|
52364
|
+
pathsToValidate = null;
|
52365
|
+
} else if (typeof arguments[0] === 'function') {
|
52366
|
+
callback = arguments[0];
|
52367
|
+
options = null;
|
52368
|
+
pathsToValidate = null;
|
52369
|
+
}
|
52370
|
+
} else if (typeof pathsToValidate === 'function') {
|
52247
52371
|
callback = pathsToValidate;
|
52248
52372
|
options = null;
|
52249
52373
|
pathsToValidate = null;
|
@@ -52252,6 +52376,10 @@ Document.prototype.validate = function(pathsToValidate, options, callback) {
|
|
52252
52376
|
options = pathsToValidate;
|
52253
52377
|
pathsToValidate = null;
|
52254
52378
|
}
|
52379
|
+
if (options && typeof options.pathsToSkip === 'string') {
|
52380
|
+
const isOnePathOnly = options.pathsToSkip.indexOf(' ') === -1;
|
52381
|
+
options.pathsToSkip = isOnePathOnly ? [options.pathsToSkip] : options.pathsToSkip.split(' ');
|
52382
|
+
}
|
52255
52383
|
|
52256
52384
|
return promiseOrCallback(callback, cb => {
|
52257
52385
|
if (parallelValidate != null) {
|
@@ -52271,7 +52399,7 @@ Document.prototype.validate = function(pathsToValidate, options, callback) {
|
|
52271
52399
|
|
52272
52400
|
function _evaluateRequiredFunctions(doc) {
|
52273
52401
|
Object.keys(doc.$__.activePaths.states.require).forEach(path => {
|
52274
|
-
const p = doc.
|
52402
|
+
const p = doc.$__schema.path(path);
|
52275
52403
|
|
52276
52404
|
if (p != null && typeof p.originalRequiredValue === 'function') {
|
52277
52405
|
doc.$__.cachedRequired[path] = p.originalRequiredValue.call(doc, doc);
|
@@ -52304,7 +52432,7 @@ function _getPathsToValidate(doc) {
|
|
52304
52432
|
Object.keys(doc.$__.activePaths.states.default).forEach(addToPaths);
|
52305
52433
|
function addToPaths(p) { paths.add(p); }
|
52306
52434
|
|
52307
|
-
const subdocs = doc.$
|
52435
|
+
const subdocs = doc.$getAllSubdocs();
|
52308
52436
|
const modifiedPaths = doc.modifiedPaths();
|
52309
52437
|
for (const subdoc of subdocs) {
|
52310
52438
|
if (subdoc.$basePath) {
|
@@ -52331,7 +52459,7 @@ function _getPathsToValidate(doc) {
|
|
52331
52459
|
// gh-661: if a whole array is modified, make sure to run validation on all
|
52332
52460
|
// the children as well
|
52333
52461
|
for (const path of paths) {
|
52334
|
-
const _pathType = doc.
|
52462
|
+
const _pathType = doc.$__schema.path(path);
|
52335
52463
|
if (!_pathType ||
|
52336
52464
|
!_pathType.$isMongooseArray ||
|
52337
52465
|
// To avoid potential performance issues, skip doc arrays whose children
|
@@ -52360,12 +52488,12 @@ function _getPathsToValidate(doc) {
|
|
52360
52488
|
|
52361
52489
|
const flattenOptions = { skipArrays: true };
|
52362
52490
|
for (const pathToCheck of paths) {
|
52363
|
-
if (doc.
|
52491
|
+
if (doc.$__schema.nested[pathToCheck]) {
|
52364
52492
|
let _v = doc.$__getValue(pathToCheck);
|
52365
52493
|
if (isMongooseObject(_v)) {
|
52366
52494
|
_v = _v.toObject({ transform: false });
|
52367
52495
|
}
|
52368
|
-
const flat = flatten(_v, pathToCheck, flattenOptions, doc
|
52496
|
+
const flat = flatten(_v, pathToCheck, flattenOptions, doc.$__schema);
|
52369
52497
|
Object.keys(flat).forEach(addToPaths);
|
52370
52498
|
}
|
52371
52499
|
}
|
@@ -52374,11 +52502,11 @@ function _getPathsToValidate(doc) {
|
|
52374
52502
|
// Single nested paths (paths embedded under single nested subdocs) will
|
52375
52503
|
// be validated on their own when we call `validate()` on the subdoc itself.
|
52376
52504
|
// Re: gh-8468
|
52377
|
-
if (doc.
|
52505
|
+
if (doc.$__schema.singleNestedPaths.hasOwnProperty(path)) {
|
52378
52506
|
paths.delete(path);
|
52379
52507
|
continue;
|
52380
52508
|
}
|
52381
|
-
const _pathType = doc.
|
52509
|
+
const _pathType = doc.$__schema.path(path);
|
52382
52510
|
if (!_pathType || !_pathType.$isSchemaMap) {
|
52383
52511
|
continue;
|
52384
52512
|
}
|
@@ -52414,11 +52542,13 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52414
52542
|
(typeof options === 'object') &&
|
52415
52543
|
('validateModifiedOnly' in options);
|
52416
52544
|
|
52545
|
+
const pathsToSkip = get(options, 'pathsToSkip', null);
|
52546
|
+
|
52417
52547
|
let shouldValidateModifiedOnly;
|
52418
52548
|
if (hasValidateModifiedOnlyOption) {
|
52419
52549
|
shouldValidateModifiedOnly = !!options.validateModifiedOnly;
|
52420
52550
|
} else {
|
52421
|
-
shouldValidateModifiedOnly = this.
|
52551
|
+
shouldValidateModifiedOnly = this.$__schema.options.validateModifiedOnly;
|
52422
52552
|
}
|
52423
52553
|
|
52424
52554
|
const _this = this;
|
@@ -52463,14 +52593,19 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52463
52593
|
pathDetails[0].filter((path) => this.isModified(path)) :
|
52464
52594
|
pathDetails[0];
|
52465
52595
|
const skipSchemaValidators = pathDetails[1];
|
52596
|
+
if (typeof pathsToValidate === 'string') {
|
52597
|
+
pathsToValidate = pathsToValidate.split(' ');
|
52598
|
+
}
|
52466
52599
|
if (Array.isArray(pathsToValidate)) {
|
52467
52600
|
paths = _handlePathsToValidate(paths, pathsToValidate);
|
52601
|
+
} else if (pathsToSkip) {
|
52602
|
+
paths = _handlePathsToSkip(paths, pathsToSkip);
|
52468
52603
|
}
|
52469
52604
|
if (paths.length === 0) {
|
52470
|
-
return
|
52605
|
+
return immediate(function() {
|
52471
52606
|
const error = _complete();
|
52472
52607
|
if (error) {
|
52473
|
-
return _this.
|
52608
|
+
return _this.$__schema.s.hooks.execPost('validate:error', _this, [_this], { error: error }, function(error) {
|
52474
52609
|
callback(error);
|
52475
52610
|
});
|
52476
52611
|
}
|
@@ -52481,17 +52616,11 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52481
52616
|
const validated = {};
|
52482
52617
|
let total = 0;
|
52483
52618
|
|
52484
|
-
const
|
52485
|
-
|
52486
|
-
|
52487
|
-
return _this.schema.s.hooks.execPost('validate:error', _this, [_this], { error: error }, function(error) {
|
52488
|
-
callback(error);
|
52489
|
-
});
|
52490
|
-
}
|
52491
|
-
callback(null, _this);
|
52492
|
-
};
|
52619
|
+
for (const path of paths) {
|
52620
|
+
validatePath(path);
|
52621
|
+
}
|
52493
52622
|
|
52494
|
-
|
52623
|
+
function validatePath(path) {
|
52495
52624
|
if (path == null || validated[path]) {
|
52496
52625
|
return;
|
52497
52626
|
}
|
@@ -52499,8 +52628,8 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52499
52628
|
validated[path] = true;
|
52500
52629
|
total++;
|
52501
52630
|
|
52502
|
-
|
52503
|
-
const schemaType = _this.
|
52631
|
+
immediate(function() {
|
52632
|
+
const schemaType = _this.$__schema.path(path);
|
52504
52633
|
|
52505
52634
|
if (!schemaType) {
|
52506
52635
|
return --total || complete();
|
@@ -52512,6 +52641,11 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52512
52641
|
return;
|
52513
52642
|
}
|
52514
52643
|
|
52644
|
+
// If setting a path under a mixed path, avoid using the mixed path validator (gh-10141)
|
52645
|
+
if (schemaType[schemaMixedSymbol] != null && path !== schemaType.path) {
|
52646
|
+
return --total || complete();
|
52647
|
+
}
|
52648
|
+
|
52515
52649
|
let val = _this.$__getValue(path);
|
52516
52650
|
|
52517
52651
|
// If you `populate()` and get back a null value, required validators
|
@@ -52542,12 +52676,18 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52542
52676
|
--total || complete();
|
52543
52677
|
}, scope, doValidateOptions);
|
52544
52678
|
});
|
52545
|
-
}
|
52679
|
+
}
|
52546
52680
|
|
52547
|
-
|
52548
|
-
|
52549
|
-
|
52681
|
+
function complete() {
|
52682
|
+
const error = _complete();
|
52683
|
+
if (error) {
|
52684
|
+
return _this.$__schema.s.hooks.execPost('validate:error', _this, [_this], { error: error }, function(error) {
|
52685
|
+
callback(error);
|
52686
|
+
});
|
52687
|
+
}
|
52688
|
+
callback(null, _this);
|
52550
52689
|
}
|
52690
|
+
|
52551
52691
|
};
|
52552
52692
|
|
52553
52693
|
/*!
|
@@ -52583,6 +52723,15 @@ function _handlePathsToValidate(paths, pathsToValidate) {
|
|
52583
52723
|
return ret;
|
52584
52724
|
}
|
52585
52725
|
|
52726
|
+
/*!
|
52727
|
+
* ignore
|
52728
|
+
*/
|
52729
|
+
function _handlePathsToSkip(paths, pathsToSkip) {
|
52730
|
+
pathsToSkip = new Set(pathsToSkip);
|
52731
|
+
paths = paths.filter(p => !pathsToSkip.has(p));
|
52732
|
+
return paths;
|
52733
|
+
}
|
52734
|
+
|
52586
52735
|
/**
|
52587
52736
|
* Executes registered validation rules (skipping asynchronous validators) for this document.
|
52588
52737
|
*
|
@@ -52602,6 +52751,7 @@ function _handlePathsToValidate(paths, pathsToValidate) {
|
|
52602
52751
|
* @param {Array|string} pathsToValidate only validate the given paths
|
52603
52752
|
* @param {Object} [options] options for validation
|
52604
52753
|
* @param {Boolean} [options.validateModifiedOnly=false] If `true`, Mongoose will only validate modified paths, as opposed to modified paths and `required` paths.
|
52754
|
+
* @param {Array|string} [options.pathsToSkip] list of paths to skip. If set, Mongoose will validate every modified path that is not in this list.
|
52605
52755
|
* @return {ValidationError|undefined} ValidationError if there are errors during validation, or undefined if there is no error.
|
52606
52756
|
* @api public
|
52607
52757
|
*/
|
@@ -52609,6 +52759,11 @@ function _handlePathsToValidate(paths, pathsToValidate) {
|
|
52609
52759
|
Document.prototype.validateSync = function(pathsToValidate, options) {
|
52610
52760
|
const _this = this;
|
52611
52761
|
|
52762
|
+
if (arguments.length === 1 && typeof arguments[0] === 'object' && !Array.isArray(arguments[0])) {
|
52763
|
+
options = arguments[0];
|
52764
|
+
pathsToValidate = null;
|
52765
|
+
}
|
52766
|
+
|
52612
52767
|
const hasValidateModifiedOnlyOption = options &&
|
52613
52768
|
(typeof options === 'object') &&
|
52614
52769
|
('validateModifiedOnly' in options);
|
@@ -52617,11 +52772,16 @@ Document.prototype.validateSync = function(pathsToValidate, options) {
|
|
52617
52772
|
if (hasValidateModifiedOnlyOption) {
|
52618
52773
|
shouldValidateModifiedOnly = !!options.validateModifiedOnly;
|
52619
52774
|
} else {
|
52620
|
-
shouldValidateModifiedOnly = this.
|
52775
|
+
shouldValidateModifiedOnly = this.$__schema.options.validateModifiedOnly;
|
52621
52776
|
}
|
52622
52777
|
|
52778
|
+
let pathsToSkip = options && options.pathsToSkip;
|
52779
|
+
|
52623
52780
|
if (typeof pathsToValidate === 'string') {
|
52624
|
-
|
52781
|
+
const isOnePathOnly = pathsToValidate.indexOf(' ') === -1;
|
52782
|
+
pathsToValidate = isOnePathOnly ? [pathsToValidate] : pathsToValidate.split(' ');
|
52783
|
+
} else if (typeof pathsToSkip === 'string' && pathsToSkip.indexOf(' ') !== -1) {
|
52784
|
+
pathsToSkip = pathsToSkip.split(' ');
|
52625
52785
|
}
|
52626
52786
|
|
52627
52787
|
// only validate required fields when necessary
|
@@ -52633,6 +52793,8 @@ Document.prototype.validateSync = function(pathsToValidate, options) {
|
|
52633
52793
|
|
52634
52794
|
if (Array.isArray(pathsToValidate)) {
|
52635
52795
|
paths = _handlePathsToValidate(paths, pathsToValidate);
|
52796
|
+
} else if (Array.isArray(pathsToSkip)) {
|
52797
|
+
paths = _handlePathsToSkip(paths, pathsToSkip);
|
52636
52798
|
}
|
52637
52799
|
const validating = {};
|
52638
52800
|
|
@@ -52643,7 +52805,7 @@ Document.prototype.validateSync = function(pathsToValidate, options) {
|
|
52643
52805
|
|
52644
52806
|
validating[path] = true;
|
52645
52807
|
|
52646
|
-
const p = _this.
|
52808
|
+
const p = _this.$__schema.path(path);
|
52647
52809
|
if (!p) {
|
52648
52810
|
return;
|
52649
52811
|
}
|
@@ -52916,7 +53078,13 @@ Document.prototype.$__reset = function reset() {
|
|
52916
53078
|
}).
|
52917
53079
|
forEach(function(doc) {
|
52918
53080
|
doc.$__reset();
|
52919
|
-
|
53081
|
+
if (doc.$__parent === _this) {
|
53082
|
+
_this.$__.activePaths.init(doc.$basePath);
|
53083
|
+
} else if (doc.$__parent != null && doc.$__parent.ownerDocument) {
|
53084
|
+
// If map path underneath subdocument, may end up with a case where
|
53085
|
+
// map path is modified but parent still needs to be reset. See gh-10295
|
53086
|
+
doc.$__parent.$__reset();
|
53087
|
+
}
|
52920
53088
|
});
|
52921
53089
|
|
52922
53090
|
// clear atomics
|
@@ -52943,7 +53111,7 @@ Document.prototype.$__reset = function reset() {
|
|
52943
53111
|
this.$__.validationError = undefined;
|
52944
53112
|
this.errors = undefined;
|
52945
53113
|
_this = this;
|
52946
|
-
this.
|
53114
|
+
this.$__schema.requiredPaths().forEach(function(path) {
|
52947
53115
|
_this.$__.activePaths.require(path);
|
52948
53116
|
});
|
52949
53117
|
|
@@ -52973,7 +53141,7 @@ Document.prototype.$__undoReset = function $__undoReset() {
|
|
52973
53141
|
}
|
52974
53142
|
}
|
52975
53143
|
|
52976
|
-
for (const subdoc of this.$
|
53144
|
+
for (const subdoc of this.$getAllSubdocs()) {
|
52977
53145
|
subdoc.$__undoReset();
|
52978
53146
|
}
|
52979
53147
|
};
|
@@ -52997,7 +53165,6 @@ Document.prototype.$__dirty = function() {
|
|
52997
53165
|
schema: _this.$__path(path)
|
52998
53166
|
};
|
52999
53167
|
});
|
53000
|
-
|
53001
53168
|
// gh-2558: if we had to set a default and the value is not undefined,
|
53002
53169
|
// we have to save as well
|
53003
53170
|
all = all.concat(this.$__.activePaths.map('default', function(path) {
|
@@ -53041,7 +53208,6 @@ Document.prototype.$__dirty = function() {
|
|
53041
53208
|
top.value[arrayAtomicsSymbol].$set = top.value;
|
53042
53209
|
}
|
53043
53210
|
});
|
53044
|
-
|
53045
53211
|
top = lastPath = null;
|
53046
53212
|
return minimal;
|
53047
53213
|
};
|
@@ -53064,8 +53230,10 @@ Document.prototype.$__setSchema = function(schema) {
|
|
53064
53230
|
for (const key of Object.keys(schema.virtuals)) {
|
53065
53231
|
schema.virtuals[key]._applyDefaultGetters();
|
53066
53232
|
}
|
53067
|
-
|
53068
|
-
|
53233
|
+
if (schema.path('schema') == null) {
|
53234
|
+
this.schema = schema;
|
53235
|
+
}
|
53236
|
+
this.$__schema = schema;
|
53069
53237
|
this[documentSchemaSymbol] = schema;
|
53070
53238
|
};
|
53071
53239
|
|
@@ -53101,21 +53269,25 @@ Document.prototype.$__getArrayPathsToValidate = function() {
|
|
53101
53269
|
/**
|
53102
53270
|
* Get all subdocs (by bfs)
|
53103
53271
|
*
|
53104
|
-
* @api
|
53105
|
-
* @method $
|
53272
|
+
* @api public
|
53273
|
+
* @method $getAllSubdocs
|
53106
53274
|
* @memberOf Document
|
53107
53275
|
* @instance
|
53108
53276
|
*/
|
53109
53277
|
|
53110
|
-
Document.prototype.$
|
53278
|
+
Document.prototype.$getAllSubdocs = function $getAllSubdocs() {
|
53111
53279
|
DocumentArray || (DocumentArray = require('./types/documentarray'));
|
53112
53280
|
Embedded = Embedded || require('./types/embedded');
|
53113
53281
|
|
53114
53282
|
function docReducer(doc, seed, path) {
|
53115
53283
|
let val = doc;
|
53284
|
+
let isNested = false;
|
53116
53285
|
if (path) {
|
53117
53286
|
if (doc instanceof Document && doc[documentSchemaSymbol].paths[path]) {
|
53118
53287
|
val = doc._doc[path];
|
53288
|
+
} else if (doc instanceof Document && doc[documentSchemaSymbol].nested[path]) {
|
53289
|
+
val = doc._doc[path];
|
53290
|
+
isNested = true;
|
53119
53291
|
} else {
|
53120
53292
|
val = doc[path];
|
53121
53293
|
}
|
@@ -53143,18 +53315,18 @@ Document.prototype.$__getAllSubdocs = function() {
|
|
53143
53315
|
seed.push(doc);
|
53144
53316
|
}
|
53145
53317
|
});
|
53146
|
-
} else if (
|
53147
|
-
|
53148
|
-
|
53149
|
-
}
|
53318
|
+
} else if (isNested && val != null) {
|
53319
|
+
for (const path of Object.keys(val)) {
|
53320
|
+
docReducer(val, seed, path);
|
53321
|
+
}
|
53150
53322
|
}
|
53151
53323
|
return seed;
|
53152
53324
|
}
|
53153
53325
|
|
53154
|
-
const
|
53155
|
-
const
|
53156
|
-
|
53157
|
-
}
|
53326
|
+
const subDocs = [];
|
53327
|
+
for (const path of Object.keys(this._doc)) {
|
53328
|
+
docReducer(this, subDocs, path);
|
53329
|
+
}
|
53158
53330
|
|
53159
53331
|
return subDocs;
|
53160
53332
|
};
|
@@ -53164,7 +53336,7 @@ Document.prototype.$__getAllSubdocs = function() {
|
|
53164
53336
|
*/
|
53165
53337
|
|
53166
53338
|
function applyQueue(doc) {
|
53167
|
-
const q = doc
|
53339
|
+
const q = doc.$__schema && doc.$__schema.callQueue;
|
53168
53340
|
if (!q.length) {
|
53169
53341
|
return;
|
53170
53342
|
}
|
@@ -53206,7 +53378,7 @@ Document.prototype.$toObject = function(options, json) {
|
|
53206
53378
|
|
53207
53379
|
const path = json ? 'toJSON' : 'toObject';
|
53208
53380
|
const baseOptions = get(this, 'constructor.base.options.' + path, {});
|
53209
|
-
const schemaOptions = get(this, '
|
53381
|
+
const schemaOptions = get(this, '$__schema.options', {});
|
53210
53382
|
// merge base default options with Schema's set default options if available.
|
53211
53383
|
// `clone` is necessary here because `utils.options` directly modifies the second input.
|
53212
53384
|
defaultOptions = utils.options(defaultOptions, clone(baseOptions));
|
@@ -53216,10 +53388,6 @@ Document.prototype.$toObject = function(options, json) {
|
|
53216
53388
|
options = utils.isPOJO(options) ? clone(options) : {};
|
53217
53389
|
options._calledWithOptions = options._calledWithOptions || clone(options);
|
53218
53390
|
|
53219
|
-
if (!('flattenMaps' in options)) {
|
53220
|
-
options.flattenMaps = defaultOptions.flattenMaps;
|
53221
|
-
}
|
53222
|
-
|
53223
53391
|
let _minimize;
|
53224
53392
|
if (options._calledWithOptions.minimize != null) {
|
53225
53393
|
_minimize = options.minimize;
|
@@ -53229,6 +53397,15 @@ Document.prototype.$toObject = function(options, json) {
|
|
53229
53397
|
_minimize = schemaOptions.minimize;
|
53230
53398
|
}
|
53231
53399
|
|
53400
|
+
let flattenMaps;
|
53401
|
+
if (options._calledWithOptions.flattenMaps != null) {
|
53402
|
+
flattenMaps = options.flattenMaps;
|
53403
|
+
} else if (defaultOptions.flattenMaps != null) {
|
53404
|
+
flattenMaps = defaultOptions.flattenMaps;
|
53405
|
+
} else {
|
53406
|
+
flattenMaps = schemaOptions.flattenMaps;
|
53407
|
+
}
|
53408
|
+
|
53232
53409
|
// The original options that will be passed to `clone()`. Important because
|
53233
53410
|
// `clone()` will recursively call `$toObject()` on embedded docs, so we
|
53234
53411
|
// need the original options the user passed in, plus `_isNested` and
|
@@ -53236,7 +53413,8 @@ Document.prototype.$toObject = function(options, json) {
|
|
53236
53413
|
const cloneOptions = Object.assign(utils.clone(options), {
|
53237
53414
|
_isNested: true,
|
53238
53415
|
json: json,
|
53239
|
-
minimize: _minimize
|
53416
|
+
minimize: _minimize,
|
53417
|
+
flattenMaps: flattenMaps
|
53240
53418
|
});
|
53241
53419
|
|
53242
53420
|
if (utils.hasUserDefinedProperty(options, 'getters')) {
|
@@ -53285,8 +53463,8 @@ Document.prototype.$toObject = function(options, json) {
|
|
53285
53463
|
applyVirtuals(this, ret, gettersOptions, options);
|
53286
53464
|
}
|
53287
53465
|
|
53288
|
-
if (options.versionKey === false && this.
|
53289
|
-
delete ret[this.
|
53466
|
+
if (options.versionKey === false && this.$__schema.options.versionKey) {
|
53467
|
+
delete ret[this.$__schema.options.versionKey];
|
53290
53468
|
}
|
53291
53469
|
|
53292
53470
|
let transform = options.transform;
|
@@ -53516,7 +53694,7 @@ function minimize(obj) {
|
|
53516
53694
|
*/
|
53517
53695
|
|
53518
53696
|
function applyVirtuals(self, json, options, toObjectOptions) {
|
53519
|
-
const schema = self
|
53697
|
+
const schema = self.$__schema;
|
53520
53698
|
const paths = Object.keys(schema.virtuals);
|
53521
53699
|
let i = paths.length;
|
53522
53700
|
const numPaths = i;
|
@@ -53526,6 +53704,19 @@ function applyVirtuals(self, json, options, toObjectOptions) {
|
|
53526
53704
|
let v;
|
53527
53705
|
const aliases = get(toObjectOptions, 'aliases', true);
|
53528
53706
|
|
53707
|
+
let virtualsToApply = null;
|
53708
|
+
if (Array.isArray(options.virtuals)) {
|
53709
|
+
virtualsToApply = new Set(options.virtuals);
|
53710
|
+
}
|
53711
|
+
else if (options.virtuals && options.virtuals.pathsToSkip) {
|
53712
|
+
virtualsToApply = new Set(paths);
|
53713
|
+
for (let i = 0; i < options.virtuals.pathsToSkip.length; i++) {
|
53714
|
+
if (virtualsToApply.has(options.virtuals.pathsToSkip[i])) {
|
53715
|
+
virtualsToApply.delete(options.virtuals.pathsToSkip[i]);
|
53716
|
+
}
|
53717
|
+
}
|
53718
|
+
}
|
53719
|
+
|
53529
53720
|
if (!cur) {
|
53530
53721
|
return json;
|
53531
53722
|
}
|
@@ -53534,6 +53725,10 @@ function applyVirtuals(self, json, options, toObjectOptions) {
|
|
53534
53725
|
for (i = 0; i < numPaths; ++i) {
|
53535
53726
|
path = paths[i];
|
53536
53727
|
|
53728
|
+
if (virtualsToApply != null && !virtualsToApply.has(path)) {
|
53729
|
+
continue;
|
53730
|
+
}
|
53731
|
+
|
53537
53732
|
// Allow skipping aliases with `toObject({ virtuals: true, aliases: false })`
|
53538
53733
|
if (!aliases && schema.aliases.hasOwnProperty(path)) {
|
53539
53734
|
continue;
|
@@ -53566,6 +53761,7 @@ function applyVirtuals(self, json, options, toObjectOptions) {
|
|
53566
53761
|
return json;
|
53567
53762
|
}
|
53568
53763
|
|
53764
|
+
|
53569
53765
|
/*!
|
53570
53766
|
* Applies virtuals properties to `json`.
|
53571
53767
|
*
|
@@ -53575,7 +53771,7 @@ function applyVirtuals(self, json, options, toObjectOptions) {
|
|
53575
53771
|
*/
|
53576
53772
|
|
53577
53773
|
function applyGetters(self, json, options) {
|
53578
|
-
const schema = self
|
53774
|
+
const schema = self.$__schema;
|
53579
53775
|
const paths = Object.keys(schema.paths);
|
53580
53776
|
let i = paths.length;
|
53581
53777
|
let path;
|
@@ -53630,7 +53826,7 @@ function applyGetters(self, json, options) {
|
|
53630
53826
|
*/
|
53631
53827
|
|
53632
53828
|
function applySchemaTypeTransforms(self, json) {
|
53633
|
-
const schema = self
|
53829
|
+
const schema = self.$__schema;
|
53634
53830
|
const paths = Object.keys(schema.paths || {});
|
53635
53831
|
const cur = self._doc;
|
53636
53832
|
|
@@ -53673,7 +53869,7 @@ function throwErrorIfPromise(path, transformedValue) {
|
|
53673
53869
|
*/
|
53674
53870
|
|
53675
53871
|
function omitDeselectedFields(self, json) {
|
53676
|
-
const schema = self
|
53872
|
+
const schema = self.$__schema;
|
53677
53873
|
const paths = Object.keys(schema.paths || {});
|
53678
53874
|
const cur = self._doc;
|
53679
53875
|
|
@@ -53928,6 +54124,34 @@ Document.prototype.populate = function populate() {
|
|
53928
54124
|
return this;
|
53929
54125
|
};
|
53930
54126
|
|
54127
|
+
/**
|
54128
|
+
* Gets all populated documents associated with this document.
|
54129
|
+
*
|
54130
|
+
* @api public
|
54131
|
+
* @return {Array<Document>} array of populated documents. Empty array if there are no populated documents associated with this document.
|
54132
|
+
* @memberOf Document
|
54133
|
+
* @instance
|
54134
|
+
*/
|
54135
|
+
Document.prototype.$getPopulatedDocs = function $getPopulatedDocs() {
|
54136
|
+
let keys = [];
|
54137
|
+
if (this.$__.populated != null) {
|
54138
|
+
keys = keys.concat(Object.keys(this.$__.populated));
|
54139
|
+
}
|
54140
|
+
if (this.$$populatedVirtuals != null) {
|
54141
|
+
keys = keys.concat(Object.keys(this.$$populatedVirtuals));
|
54142
|
+
}
|
54143
|
+
let result = [];
|
54144
|
+
for (const key of keys) {
|
54145
|
+
const value = this.get(key);
|
54146
|
+
if (Array.isArray(value)) {
|
54147
|
+
result = result.concat(value);
|
54148
|
+
} else if (value instanceof Document) {
|
54149
|
+
result.push(value);
|
54150
|
+
}
|
54151
|
+
}
|
54152
|
+
return result;
|
54153
|
+
};
|
54154
|
+
|
53931
54155
|
/**
|
53932
54156
|
* Explicitly executes population and returns a promise. Useful for promises integration.
|
53933
54157
|
*
|
@@ -53997,25 +54221,21 @@ Document.prototype.execPopulate = function(callback) {
|
|
53997
54221
|
|
53998
54222
|
Document.prototype.populated = function(path, val, options) {
|
53999
54223
|
// val and options are internal
|
54000
|
-
if (val
|
54224
|
+
if (val == null || val === true) {
|
54001
54225
|
if (!this.$__.populated) {
|
54002
54226
|
return undefined;
|
54003
54227
|
}
|
54004
|
-
|
54228
|
+
|
54229
|
+
// Map paths can be populated with either `path.$*` or just `path`
|
54230
|
+
const _path = path.endsWith('.$*') ? path.replace(/\.\$\*$/, '') : path;
|
54231
|
+
|
54232
|
+
const v = this.$__.populated[_path];
|
54005
54233
|
if (v) {
|
54006
|
-
return v.value;
|
54234
|
+
return val === true ? v : v.value;
|
54007
54235
|
}
|
54008
54236
|
return undefined;
|
54009
54237
|
}
|
54010
54238
|
|
54011
|
-
// internal
|
54012
|
-
if (val === true) {
|
54013
|
-
if (!this.$__.populated) {
|
54014
|
-
return undefined;
|
54015
|
-
}
|
54016
|
-
return this.$__.populated[path];
|
54017
|
-
}
|
54018
|
-
|
54019
54239
|
this.$__.populated || (this.$__.populated = {});
|
54020
54240
|
this.$__.populated[path] = { value: val, options: options };
|
54021
54241
|
|
@@ -54048,7 +54268,7 @@ Document.prototype.populated = function(path, val, options) {
|
|
54048
54268
|
* console.log(doc.author); // '5144cf8050f071d979c118a7'
|
54049
54269
|
* })
|
54050
54270
|
*
|
54051
|
-
* If the path was not
|
54271
|
+
* If the path was not provided, then all populated fields are returned to their unpopulated state.
|
54052
54272
|
*
|
54053
54273
|
* @param {String} path
|
54054
54274
|
* @return {Document} this
|
@@ -54083,7 +54303,7 @@ Document.prototype.depopulate = function(path) {
|
|
54083
54303
|
continue;
|
54084
54304
|
}
|
54085
54305
|
delete populated[key];
|
54086
|
-
|
54306
|
+
utils.setValue(key, populatedIds, this._doc);
|
54087
54307
|
}
|
54088
54308
|
return this;
|
54089
54309
|
}
|
@@ -54096,7 +54316,7 @@ Document.prototype.depopulate = function(path) {
|
|
54096
54316
|
delete this.$$populatedVirtuals[singlePath];
|
54097
54317
|
delete this._doc[singlePath];
|
54098
54318
|
} else if (populatedIds) {
|
54099
|
-
|
54319
|
+
utils.setValue(singlePath, populatedIds, this._doc);
|
54100
54320
|
}
|
54101
54321
|
}
|
54102
54322
|
return this;
|
@@ -54173,8 +54393,8 @@ Document.prototype.getChanges = function() {
|
|
54173
54393
|
Document.ValidationError = ValidationError;
|
54174
54394
|
module.exports = exports = Document;
|
54175
54395
|
|
54176
|
-
}).call(this)}).call(this,{"isBuffer":require("../../is-buffer/index.js")}
|
54177
|
-
},{"../../is-buffer/index.js":179,"./error/index":204,"./error/objectExpected":209,"./error/objectParameter":210,"./error/parallelValidate":213,"./error/strict":214,"./error/validation":215,"./error/validator":216,"./helpers/common":220,"./helpers/document/cleanModifiedSubpaths":
|
54396
|
+
}).call(this)}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
|
54397
|
+
},{"../../is-buffer/index.js":179,"./error/index":204,"./error/objectExpected":209,"./error/objectParameter":210,"./error/parallelValidate":213,"./error/strict":214,"./error/validation":215,"./error/validator":216,"./helpers/common":220,"./helpers/document/cleanModifiedSubpaths":226,"./helpers/document/compile":227,"./helpers/document/getEmbeddedDiscriminatorPath":228,"./helpers/document/handleSpreadDoc":229,"./helpers/get":230,"./helpers/immediate":233,"./helpers/isPromise":237,"./helpers/projection/isDefiningProjection":241,"./helpers/projection/isExclusive":242,"./helpers/promiseOrCallback":243,"./helpers/symbols":254,"./internal":258,"./options":259,"./plugins/idGetter":273,"./queryhelpers":275,"./schema":276,"./schema/mixed":286,"./schema/symbols":296,"./types/array":299,"./types/documentarray":303,"./types/embedded":304,"./utils":309,"./virtualtype":310,"events":177,"mpath":312,"util":334}],195:[function(require,module,exports){
|
54178
54398
|
'use strict';
|
54179
54399
|
|
54180
54400
|
/* eslint-env browser */
|
@@ -54268,6 +54488,9 @@ exports.Binary = require('./binary');
|
|
54268
54488
|
exports.Collection = function() {
|
54269
54489
|
throw new Error('Cannot create a collection from browser library');
|
54270
54490
|
};
|
54491
|
+
exports.getConnection = () => function() {
|
54492
|
+
throw new Error('Cannot create a connection from browser library');
|
54493
|
+
};
|
54271
54494
|
exports.Decimal128 = require('./decimal128');
|
54272
54495
|
exports.ObjectId = require('./objectid');
|
54273
54496
|
exports.ReadPreference = require('./ReadPreference');
|
@@ -54327,8 +54550,9 @@ class CastError extends MongooseError {
|
|
54327
54550
|
// If no args, assume we'll `init()` later.
|
54328
54551
|
if (arguments.length > 0) {
|
54329
54552
|
const stringValue = getStringValue(value);
|
54553
|
+
const valueType = getValueType(value);
|
54330
54554
|
const messageFormat = getMessageFormat(schemaType);
|
54331
|
-
const msg = formatMessage(null, type, stringValue, path, messageFormat);
|
54555
|
+
const msg = formatMessage(null, type, stringValue, path, messageFormat, valueType);
|
54332
54556
|
super(msg);
|
54333
54557
|
this.init(type, value, path, reason, schemaType);
|
54334
54558
|
} else {
|
@@ -54336,6 +54560,18 @@ class CastError extends MongooseError {
|
|
54336
54560
|
}
|
54337
54561
|
}
|
54338
54562
|
|
54563
|
+
toJSON() {
|
54564
|
+
return {
|
54565
|
+
stringValue: this.stringValue,
|
54566
|
+
valueType: this.valueType,
|
54567
|
+
kind: this.kind,
|
54568
|
+
value: this.value,
|
54569
|
+
path: this.path,
|
54570
|
+
reason: this.reason,
|
54571
|
+
name: this.name,
|
54572
|
+
message: this.message
|
54573
|
+
};
|
54574
|
+
}
|
54339
54575
|
/*!
|
54340
54576
|
* ignore
|
54341
54577
|
*/
|
@@ -54346,6 +54582,7 @@ class CastError extends MongooseError {
|
|
54346
54582
|
this.value = value;
|
54347
54583
|
this.path = path;
|
54348
54584
|
this.reason = reason;
|
54585
|
+
this.valueType = getValueType(value);
|
54349
54586
|
}
|
54350
54587
|
|
54351
54588
|
/*!
|
@@ -54360,6 +54597,7 @@ class CastError extends MongooseError {
|
|
54360
54597
|
this.path = other.path;
|
54361
54598
|
this.reason = other.reason;
|
54362
54599
|
this.message = other.message;
|
54600
|
+
this.valueType = other.valueType;
|
54363
54601
|
}
|
54364
54602
|
|
54365
54603
|
/*!
|
@@ -54368,7 +54606,7 @@ class CastError extends MongooseError {
|
|
54368
54606
|
setModel(model) {
|
54369
54607
|
this.model = model;
|
54370
54608
|
this.message = formatMessage(model, this.kind, this.stringValue, this.path,
|
54371
|
-
this.messageFormat);
|
54609
|
+
this.messageFormat, this.valueType);
|
54372
54610
|
}
|
54373
54611
|
}
|
54374
54612
|
|
@@ -54385,6 +54623,21 @@ function getStringValue(value) {
|
|
54385
54623
|
return stringValue;
|
54386
54624
|
}
|
54387
54625
|
|
54626
|
+
function getValueType(value) {
|
54627
|
+
if (value == null) {
|
54628
|
+
return '' + value;
|
54629
|
+
}
|
54630
|
+
|
54631
|
+
const t = typeof value;
|
54632
|
+
if (t !== 'object') {
|
54633
|
+
return t;
|
54634
|
+
}
|
54635
|
+
if (typeof value.constructor !== 'function') {
|
54636
|
+
return t;
|
54637
|
+
}
|
54638
|
+
return value.constructor.name;
|
54639
|
+
}
|
54640
|
+
|
54388
54641
|
function getMessageFormat(schemaType) {
|
54389
54642
|
const messageFormat = get(schemaType, 'options.cast', null);
|
54390
54643
|
if (typeof messageFormat === 'string') {
|
@@ -54396,7 +54649,7 @@ function getMessageFormat(schemaType) {
|
|
54396
54649
|
* ignore
|
54397
54650
|
*/
|
54398
54651
|
|
54399
|
-
function formatMessage(model, kind, stringValue, path, messageFormat) {
|
54652
|
+
function formatMessage(model, kind, stringValue, path, messageFormat, valueType) {
|
54400
54653
|
if (messageFormat != null) {
|
54401
54654
|
let ret = messageFormat.
|
54402
54655
|
replace('{KIND}', kind).
|
@@ -54408,12 +54661,12 @@ function formatMessage(model, kind, stringValue, path, messageFormat) {
|
|
54408
54661
|
|
54409
54662
|
return ret;
|
54410
54663
|
} else {
|
54664
|
+
const valueTypeMsg = valueType ? ' (type ' + valueType + ')' : '';
|
54411
54665
|
let ret = 'Cast to ' + kind + ' failed for value ' +
|
54412
|
-
stringValue + ' at path "' + path + '"';
|
54666
|
+
stringValue + valueTypeMsg + ' at path "' + path + '"';
|
54413
54667
|
if (model != null) {
|
54414
54668
|
ret += ' for model "' + model.modelName + '"';
|
54415
54669
|
}
|
54416
|
-
|
54417
54670
|
return ret;
|
54418
54671
|
}
|
54419
54672
|
}
|
@@ -54424,7 +54677,7 @@ function formatMessage(model, kind, stringValue, path, messageFormat) {
|
|
54424
54677
|
|
54425
54678
|
module.exports = CastError;
|
54426
54679
|
|
54427
|
-
},{"../helpers/get":
|
54680
|
+
},{"../helpers/get":230,"./mongooseError":207,"util":334}],203:[function(require,module,exports){
|
54428
54681
|
|
54429
54682
|
/*!
|
54430
54683
|
* Module dependencies.
|
@@ -54812,7 +55065,7 @@ Object.defineProperty(DocumentNotFoundError.prototype, 'name', {
|
|
54812
55065
|
|
54813
55066
|
module.exports = DocumentNotFoundError;
|
54814
55067
|
|
54815
|
-
},{"./":204,"util":
|
55068
|
+
},{"./":204,"util":334}],209:[function(require,module,exports){
|
54816
55069
|
/*!
|
54817
55070
|
* Module dependencies.
|
54818
55071
|
*/
|
@@ -55014,6 +55267,7 @@ module.exports = StrictModeError;
|
|
55014
55267
|
'use strict';
|
55015
55268
|
|
55016
55269
|
const MongooseError = require('./mongooseError');
|
55270
|
+
const getConstructorName = require('../helpers/getConstructorName');
|
55017
55271
|
const util = require('util');
|
55018
55272
|
|
55019
55273
|
class ValidationError extends MongooseError {
|
@@ -55026,7 +55280,7 @@ class ValidationError extends MongooseError {
|
|
55026
55280
|
*/
|
55027
55281
|
constructor(instance) {
|
55028
55282
|
let _message;
|
55029
|
-
if (instance
|
55283
|
+
if (getConstructorName(instance) === 'model') {
|
55030
55284
|
_message = instance.constructor.modelName + ' validation failed';
|
55031
55285
|
} else {
|
55032
55286
|
_message = 'Validation failed';
|
@@ -55119,7 +55373,7 @@ function _generateMessage(err) {
|
|
55119
55373
|
|
55120
55374
|
module.exports = ValidationError;
|
55121
55375
|
|
55122
|
-
},{"./mongooseError":207,"util":
|
55376
|
+
},{"../helpers/getConstructorName":231,"./mongooseError":207,"util":334}],216:[function(require,module,exports){
|
55123
55377
|
/*!
|
55124
55378
|
* Module dependencies.
|
55125
55379
|
*/
|
@@ -55265,6 +55519,9 @@ function arrayDepth(arr) {
|
|
55265
55519
|
if (arr.length === 0) {
|
55266
55520
|
return { min: 1, max: 1, containsNonArrayItem: false };
|
55267
55521
|
}
|
55522
|
+
if (arr.length === 1 && !Array.isArray(arr[0])) {
|
55523
|
+
return { min: 1, max: 1, containsNonArrayItem: false };
|
55524
|
+
}
|
55268
55525
|
|
55269
55526
|
const res = arrayDepth(arr[0]);
|
55270
55527
|
|
@@ -55428,7 +55685,7 @@ function cloneArray(arr, options) {
|
|
55428
55685
|
|
55429
55686
|
return ret;
|
55430
55687
|
}
|
55431
|
-
},{"../types/decimal128":
|
55688
|
+
},{"../types/decimal128":302,"../types/objectid":307,"../utils":309,"./getFunctionName":232,"./isBsonType":234,"./isMongooseObject":235,"./isObject":236,"./specialProperties":253,"./symbols":254,"regexp-clone":328}],220:[function(require,module,exports){
|
55432
55689
|
(function (Buffer){(function (){
|
55433
55690
|
'use strict';
|
55434
55691
|
|
@@ -55538,7 +55795,24 @@ function shouldFlatten(val) {
|
|
55538
55795
|
}
|
55539
55796
|
|
55540
55797
|
}).call(this)}).call(this,require("buffer").Buffer)
|
55541
|
-
},{"../driver":196,"../types/decimal128":
|
55798
|
+
},{"../driver":196,"../types/decimal128":302,"../types/objectid":307,"./isMongooseObject":235,"buffer":129}],221:[function(require,module,exports){
|
55799
|
+
'use strict';
|
55800
|
+
|
55801
|
+
const ObjectId = require('../../types/objectid');
|
55802
|
+
|
55803
|
+
module.exports = function areDiscriminatorValuesEqual(a, b) {
|
55804
|
+
if (typeof a === 'string' && typeof b === 'string') {
|
55805
|
+
return a === b;
|
55806
|
+
}
|
55807
|
+
if (typeof a === 'number' && typeof b === 'number') {
|
55808
|
+
return a === b;
|
55809
|
+
}
|
55810
|
+
if (a instanceof ObjectId && b instanceof ObjectId) {
|
55811
|
+
return a.toString() === b.toString();
|
55812
|
+
}
|
55813
|
+
return false;
|
55814
|
+
};
|
55815
|
+
},{"../../types/objectid":307}],222:[function(require,module,exports){
|
55542
55816
|
'use strict';
|
55543
55817
|
|
55544
55818
|
module.exports = function checkEmbeddedDiscriminatorKeyProjection(userProjection, path, schema, selected, addedPaths) {
|
@@ -55551,7 +55825,7 @@ module.exports = function checkEmbeddedDiscriminatorKeyProjection(userProjection
|
|
55551
55825
|
selected.splice(selected.indexOf(_discriminatorKey), 1);
|
55552
55826
|
}
|
55553
55827
|
};
|
55554
|
-
},{}],
|
55828
|
+
},{}],223:[function(require,module,exports){
|
55555
55829
|
'use strict';
|
55556
55830
|
|
55557
55831
|
const getDiscriminatorByValue = require('./getDiscriminatorByValue');
|
@@ -55568,7 +55842,7 @@ module.exports = function getConstructor(Constructor, value) {
|
|
55568
55842
|
if (Constructor.discriminators[value[discriminatorKey]]) {
|
55569
55843
|
Constructor = Constructor.discriminators[value[discriminatorKey]];
|
55570
55844
|
} else {
|
55571
|
-
const constructorByValue = getDiscriminatorByValue(Constructor, value[discriminatorKey]);
|
55845
|
+
const constructorByValue = getDiscriminatorByValue(Constructor.discriminators, value[discriminatorKey]);
|
55572
55846
|
if (constructorByValue) {
|
55573
55847
|
Constructor = constructorByValue;
|
55574
55848
|
}
|
@@ -55577,9 +55851,11 @@ module.exports = function getConstructor(Constructor, value) {
|
|
55577
55851
|
|
55578
55852
|
return Constructor;
|
55579
55853
|
};
|
55580
|
-
},{"./getDiscriminatorByValue":
|
55854
|
+
},{"./getDiscriminatorByValue":224}],224:[function(require,module,exports){
|
55581
55855
|
'use strict';
|
55582
55856
|
|
55857
|
+
const areDiscriminatorValuesEqual = require('./areDiscriminatorValuesEqual');
|
55858
|
+
|
55583
55859
|
/*!
|
55584
55860
|
* returns discriminator by discriminatorMapping.value
|
55585
55861
|
*
|
@@ -55587,27 +55863,27 @@ module.exports = function getConstructor(Constructor, value) {
|
|
55587
55863
|
* @param {string} value
|
55588
55864
|
*/
|
55589
55865
|
|
55590
|
-
module.exports = function getDiscriminatorByValue(
|
55591
|
-
|
55592
|
-
|
55593
|
-
return discriminator;
|
55866
|
+
module.exports = function getDiscriminatorByValue(discriminators, value) {
|
55867
|
+
if (discriminators == null) {
|
55868
|
+
return null;
|
55594
55869
|
}
|
55595
|
-
for (const name
|
55596
|
-
const it =
|
55870
|
+
for (const name of Object.keys(discriminators)) {
|
55871
|
+
const it = discriminators[name];
|
55597
55872
|
if (
|
55598
55873
|
it.schema &&
|
55599
55874
|
it.schema.discriminatorMapping &&
|
55600
|
-
it.schema.discriminatorMapping.value
|
55875
|
+
areDiscriminatorValuesEqual(it.schema.discriminatorMapping.value, value)
|
55601
55876
|
) {
|
55602
|
-
|
55603
|
-
break;
|
55877
|
+
return it;
|
55604
55878
|
}
|
55605
55879
|
}
|
55606
|
-
return
|
55880
|
+
return null;
|
55607
55881
|
};
|
55608
|
-
},{}],
|
55882
|
+
},{"./areDiscriminatorValuesEqual":221}],225:[function(require,module,exports){
|
55609
55883
|
'use strict';
|
55610
55884
|
|
55885
|
+
const areDiscriminatorValuesEqual = require('./areDiscriminatorValuesEqual');
|
55886
|
+
|
55611
55887
|
/*!
|
55612
55888
|
* returns discriminator by discriminatorMapping.value
|
55613
55889
|
*
|
@@ -55624,13 +55900,13 @@ module.exports = function getSchemaDiscriminatorByValue(schema, value) {
|
|
55624
55900
|
if (discriminatorSchema.discriminatorMapping == null) {
|
55625
55901
|
continue;
|
55626
55902
|
}
|
55627
|
-
if (discriminatorSchema.discriminatorMapping.value
|
55903
|
+
if (areDiscriminatorValuesEqual(discriminatorSchema.discriminatorMapping.value, value)) {
|
55628
55904
|
return discriminatorSchema;
|
55629
55905
|
}
|
55630
55906
|
}
|
55631
55907
|
return null;
|
55632
55908
|
};
|
55633
|
-
},{}],
|
55909
|
+
},{"./areDiscriminatorValuesEqual":221}],226:[function(require,module,exports){
|
55634
55910
|
'use strict';
|
55635
55911
|
|
55636
55912
|
/*!
|
@@ -55647,7 +55923,7 @@ module.exports = function cleanModifiedSubpaths(doc, path, options) {
|
|
55647
55923
|
}
|
55648
55924
|
for (const modifiedPath of Object.keys(doc.$__.activePaths.states.modify)) {
|
55649
55925
|
if (skipDocArrays) {
|
55650
|
-
const schemaType = doc.
|
55926
|
+
const schemaType = doc.$__schema.path(modifiedPath);
|
55651
55927
|
if (schemaType && schemaType.$isMongooseDocumentArray) {
|
55652
55928
|
continue;
|
55653
55929
|
}
|
@@ -55660,7 +55936,7 @@ module.exports = function cleanModifiedSubpaths(doc, path, options) {
|
|
55660
55936
|
return deleted;
|
55661
55937
|
};
|
55662
55938
|
|
55663
|
-
},{}],
|
55939
|
+
},{}],227:[function(require,module,exports){
|
55664
55940
|
'use strict';
|
55665
55941
|
|
55666
55942
|
const documentSchemaSymbol = require('../../helpers/symbols').documentSchemaSymbol;
|
@@ -55737,6 +56013,13 @@ function defineKey(prop, subprops, prototype, prefix, keys, options) {
|
|
55737
56013
|
value: prototype.schema
|
55738
56014
|
});
|
55739
56015
|
|
56016
|
+
Object.defineProperty(nested, '$__schema', {
|
56017
|
+
enumerable: false,
|
56018
|
+
configurable: true,
|
56019
|
+
writable: false,
|
56020
|
+
value: prototype.schema
|
56021
|
+
});
|
56022
|
+
|
55740
56023
|
Object.defineProperty(nested, documentSchemaSymbol, {
|
55741
56024
|
enumerable: false,
|
55742
56025
|
configurable: true,
|
@@ -55844,13 +56127,7 @@ function getOwnPropertyDescriptors(object) {
|
|
55844
56127
|
const result = {};
|
55845
56128
|
|
55846
56129
|
Object.getOwnPropertyNames(object).forEach(function(key) {
|
55847
|
-
|
55848
|
-
// Assume these are schema paths, ignore them re: #5470
|
55849
|
-
if (result[key].get) {
|
55850
|
-
delete result[key];
|
55851
|
-
return;
|
55852
|
-
}
|
55853
|
-
result[key].enumerable = [
|
56130
|
+
const skip = [
|
55854
56131
|
'isNew',
|
55855
56132
|
'$__',
|
55856
56133
|
'errors',
|
@@ -55861,12 +56138,18 @@ function getOwnPropertyDescriptors(object) {
|
|
55861
56138
|
'__index',
|
55862
56139
|
'$isDocumentArrayElement'
|
55863
56140
|
].indexOf(key) === -1;
|
56141
|
+
if (skip) {
|
56142
|
+
return;
|
56143
|
+
}
|
56144
|
+
|
56145
|
+
result[key] = Object.getOwnPropertyDescriptor(object, key);
|
56146
|
+
result[key].enumerable = false;
|
55864
56147
|
});
|
55865
56148
|
|
55866
56149
|
return result;
|
55867
56150
|
}
|
55868
56151
|
|
55869
|
-
},{"../../document":194,"../../helpers/get":
|
56152
|
+
},{"../../document":194,"../../helpers/get":230,"../../helpers/symbols":254,"../../options":259,"../../utils":309}],228:[function(require,module,exports){
|
55870
56153
|
'use strict';
|
55871
56154
|
|
55872
56155
|
const get = require('../get');
|
@@ -55911,7 +56194,7 @@ module.exports = function getEmbeddedDiscriminatorPath(doc, path, options) {
|
|
55911
56194
|
return typeOnly ? type : schema;
|
55912
56195
|
};
|
55913
56196
|
|
55914
|
-
},{"../get":
|
56197
|
+
},{"../get":230}],229:[function(require,module,exports){
|
55915
56198
|
'use strict';
|
55916
56199
|
|
55917
56200
|
const utils = require('../../utils');
|
@@ -55929,7 +56212,7 @@ module.exports = function handleSpreadDoc(v) {
|
|
55929
56212
|
|
55930
56213
|
return v;
|
55931
56214
|
};
|
55932
|
-
},{"../../utils":
|
56215
|
+
},{"../../utils":309}],230:[function(require,module,exports){
|
55933
56216
|
'use strict';
|
55934
56217
|
|
55935
56218
|
/*!
|
@@ -55938,7 +56221,30 @@ module.exports = function handleSpreadDoc(v) {
|
|
55938
56221
|
*/
|
55939
56222
|
|
55940
56223
|
module.exports = function get(obj, path, def) {
|
55941
|
-
|
56224
|
+
let parts;
|
56225
|
+
let isPathArray = false;
|
56226
|
+
if (typeof path === 'string') {
|
56227
|
+
if (path.indexOf('.') === -1) {
|
56228
|
+
const _v = getProperty(obj, path);
|
56229
|
+
if (_v == null) {
|
56230
|
+
return def;
|
56231
|
+
}
|
56232
|
+
return _v;
|
56233
|
+
}
|
56234
|
+
|
56235
|
+
parts = path.split('.');
|
56236
|
+
} else {
|
56237
|
+
isPathArray = true;
|
56238
|
+
parts = path;
|
56239
|
+
|
56240
|
+
if (parts.length === 1) {
|
56241
|
+
const _v = getProperty(obj, parts[0]);
|
56242
|
+
if (_v == null) {
|
56243
|
+
return def;
|
56244
|
+
}
|
56245
|
+
return _v;
|
56246
|
+
}
|
56247
|
+
}
|
55942
56248
|
let rest = path;
|
55943
56249
|
let cur = obj;
|
55944
56250
|
for (const part of parts) {
|
@@ -55948,13 +56254,15 @@ module.exports = function get(obj, path, def) {
|
|
55948
56254
|
|
55949
56255
|
// `lib/cast.js` depends on being able to get dotted paths in updates,
|
55950
56256
|
// like `{ $set: { 'a.b': 42 } }`
|
55951
|
-
if (cur[rest] != null) {
|
56257
|
+
if (!isPathArray && cur[rest] != null) {
|
55952
56258
|
return cur[rest];
|
55953
56259
|
}
|
55954
56260
|
|
55955
56261
|
cur = getProperty(cur, part);
|
55956
56262
|
|
55957
|
-
|
56263
|
+
if (!isPathArray) {
|
56264
|
+
rest = rest.substr(part.length + 1);
|
56265
|
+
}
|
55958
56266
|
}
|
55959
56267
|
|
55960
56268
|
return cur == null ? def : cur;
|
@@ -55969,7 +56277,23 @@ function getProperty(obj, prop) {
|
|
55969
56277
|
}
|
55970
56278
|
return obj[prop];
|
55971
56279
|
}
|
55972
|
-
},{}],
|
56280
|
+
},{}],231:[function(require,module,exports){
|
56281
|
+
'use strict';
|
56282
|
+
|
56283
|
+
/*!
|
56284
|
+
* If `val` is an object, returns constructor name, if possible. Otherwise returns undefined.
|
56285
|
+
*/
|
56286
|
+
|
56287
|
+
module.exports = function getConstructorName(val) {
|
56288
|
+
if (val == null) {
|
56289
|
+
return void 0;
|
56290
|
+
}
|
56291
|
+
if (typeof val.constructor !== 'function') {
|
56292
|
+
return void 0;
|
56293
|
+
}
|
56294
|
+
return val.constructor.name;
|
56295
|
+
};
|
56296
|
+
},{}],232:[function(require,module,exports){
|
55973
56297
|
'use strict';
|
55974
56298
|
|
55975
56299
|
module.exports = function(fn) {
|
@@ -55979,7 +56303,7 @@ module.exports = function(fn) {
|
|
55979
56303
|
return (fn.toString().trim().match(/^function\s*([^\s(]+)/) || [])[1];
|
55980
56304
|
};
|
55981
56305
|
|
55982
|
-
},{}],
|
56306
|
+
},{}],233:[function(require,module,exports){
|
55983
56307
|
(function (process){(function (){
|
55984
56308
|
/*!
|
55985
56309
|
* Centralize this so we can more easily work around issues with people
|
@@ -55990,12 +56314,14 @@ module.exports = function(fn) {
|
|
55990
56314
|
|
55991
56315
|
'use strict';
|
55992
56316
|
|
56317
|
+
const nextTick = process.nextTick.bind(process);
|
56318
|
+
|
55993
56319
|
module.exports = function immediate(cb) {
|
55994
|
-
return
|
56320
|
+
return nextTick(cb);
|
55995
56321
|
};
|
55996
56322
|
|
55997
56323
|
}).call(this)}).call(this,require('_process'))
|
55998
|
-
},{"_process":
|
56324
|
+
},{"_process":327}],234:[function(require,module,exports){
|
55999
56325
|
'use strict';
|
56000
56326
|
|
56001
56327
|
const get = require('./get');
|
@@ -56010,7 +56336,7 @@ function isBsonType(obj, typename) {
|
|
56010
56336
|
|
56011
56337
|
module.exports = isBsonType;
|
56012
56338
|
|
56013
|
-
},{"./get":
|
56339
|
+
},{"./get":230}],235:[function(require,module,exports){
|
56014
56340
|
'use strict';
|
56015
56341
|
|
56016
56342
|
/*!
|
@@ -56032,7 +56358,7 @@ module.exports = function(v) {
|
|
56032
56358
|
v.isMongooseBuffer || // Buffer
|
56033
56359
|
v.$isMongooseMap; // Map
|
56034
56360
|
};
|
56035
|
-
},{}],
|
56361
|
+
},{}],236:[function(require,module,exports){
|
56036
56362
|
(function (Buffer){(function (){
|
56037
56363
|
'use strict';
|
56038
56364
|
|
@@ -56051,14 +56377,14 @@ module.exports = function(arg) {
|
|
56051
56377
|
return Object.prototype.toString.call(arg) === '[object Object]';
|
56052
56378
|
};
|
56053
56379
|
}).call(this)}).call(this,{"isBuffer":require("../../../is-buffer/index.js")})
|
56054
|
-
},{"../../../is-buffer/index.js":179}],
|
56380
|
+
},{"../../../is-buffer/index.js":179}],237:[function(require,module,exports){
|
56055
56381
|
'use strict';
|
56056
56382
|
function isPromise(val) {
|
56057
56383
|
return !!val && (typeof val === 'object' || typeof val === 'function') && typeof val.then === 'function';
|
56058
56384
|
}
|
56059
56385
|
|
56060
56386
|
module.exports = isPromise;
|
56061
|
-
},{}],
|
56387
|
+
},{}],238:[function(require,module,exports){
|
56062
56388
|
'use strict';
|
56063
56389
|
|
56064
56390
|
const symbols = require('../../schema/symbols');
|
@@ -56197,7 +56523,7 @@ function applyHooks(model, schema, options) {
|
|
56197
56523
|
createWrapper(method, originalMethod, null, customMethodOptions);
|
56198
56524
|
}
|
56199
56525
|
}
|
56200
|
-
},{"../../schema/symbols":
|
56526
|
+
},{"../../schema/symbols":296,"../promiseOrCallback":243}],239:[function(require,module,exports){
|
56201
56527
|
'use strict';
|
56202
56528
|
|
56203
56529
|
const Mixed = require('../../schema/mixed');
|
@@ -56263,7 +56589,7 @@ module.exports = function discriminator(model, name, schema, tiedValue, applyPlu
|
|
56263
56589
|
}
|
56264
56590
|
|
56265
56591
|
let value = name;
|
56266
|
-
if (typeof tiedValue
|
56592
|
+
if ((typeof tiedValue === 'string' && tiedValue.length) || tiedValue != null) {
|
56267
56593
|
value = tiedValue;
|
56268
56594
|
}
|
56269
56595
|
|
@@ -56326,17 +56652,17 @@ module.exports = function discriminator(model, name, schema, tiedValue, applyPlu
|
|
56326
56652
|
default: value,
|
56327
56653
|
select: true,
|
56328
56654
|
set: function(newName) {
|
56329
|
-
if (newName === value) {
|
56655
|
+
if (newName === value || (Array.isArray(value) && utils.deepEqual(newName, value))) {
|
56330
56656
|
return value;
|
56331
56657
|
}
|
56332
56658
|
throw new Error('Can\'t set discriminator key "' + key + '"');
|
56333
56659
|
},
|
56334
56660
|
$skipDiscriminatorCheck: true
|
56335
56661
|
};
|
56336
|
-
obj[key][schema.options.typeKey] = existingPath ?
|
56337
|
-
existingPath.instance :
|
56338
|
-
String;
|
56662
|
+
obj[key][schema.options.typeKey] = existingPath ? existingPath.options[schema.options.typeKey] : String;
|
56339
56663
|
schema.add(obj);
|
56664
|
+
|
56665
|
+
|
56340
56666
|
schema.discriminatorMapping = { key: key, value: value, isRoot: false };
|
56341
56667
|
|
56342
56668
|
if (baseSchema.options.collection) {
|
@@ -56404,7 +56730,7 @@ module.exports = function discriminator(model, name, schema, tiedValue, applyPlu
|
|
56404
56730
|
return schema;
|
56405
56731
|
};
|
56406
56732
|
|
56407
|
-
},{"../../schema/mixed":
|
56733
|
+
},{"../../schema/mixed":286,"../../utils":309,"../document/compile":227,"../get":230}],240:[function(require,module,exports){
|
56408
56734
|
'use strict';
|
56409
56735
|
|
56410
56736
|
const MongooseError = require('../../error/mongooseError');
|
@@ -56424,7 +56750,7 @@ function validateRef(ref, path) {
|
|
56424
56750
|
throw new MongooseError('Invalid ref at path "' + path + '". Got ' +
|
56425
56751
|
util.inspect(ref, { depth: 0 }));
|
56426
56752
|
}
|
56427
|
-
},{"../../error/mongooseError":207,"util":
|
56753
|
+
},{"../../error/mongooseError":207,"util":334}],241:[function(require,module,exports){
|
56428
56754
|
'use strict';
|
56429
56755
|
|
56430
56756
|
/*!
|
@@ -56444,7 +56770,7 @@ module.exports = function isDefiningProjection(val) {
|
|
56444
56770
|
return true;
|
56445
56771
|
};
|
56446
56772
|
|
56447
|
-
},{}],
|
56773
|
+
},{}],242:[function(require,module,exports){
|
56448
56774
|
'use strict';
|
56449
56775
|
|
56450
56776
|
const isDefiningProjection = require('./isDefiningProjection');
|
@@ -56454,6 +56780,10 @@ const isDefiningProjection = require('./isDefiningProjection');
|
|
56454
56780
|
*/
|
56455
56781
|
|
56456
56782
|
module.exports = function isExclusive(projection) {
|
56783
|
+
if (projection == null) {
|
56784
|
+
return null;
|
56785
|
+
}
|
56786
|
+
|
56457
56787
|
const keys = Object.keys(projection);
|
56458
56788
|
let ki = keys.length;
|
56459
56789
|
let exclude = null;
|
@@ -56474,26 +56804,26 @@ module.exports = function isExclusive(projection) {
|
|
56474
56804
|
return exclude;
|
56475
56805
|
};
|
56476
56806
|
|
56477
|
-
},{"./isDefiningProjection":
|
56478
|
-
(function (process){(function (){
|
56807
|
+
},{"./isDefiningProjection":241}],243:[function(require,module,exports){
|
56479
56808
|
'use strict';
|
56480
56809
|
|
56481
56810
|
const PromiseProvider = require('../promise_provider');
|
56811
|
+
const immediate = require('./immediate');
|
56482
56812
|
|
56483
|
-
const emittedSymbol = Symbol
|
56813
|
+
const emittedSymbol = Symbol('mongoose:emitted');
|
56484
56814
|
|
56485
56815
|
module.exports = function promiseOrCallback(callback, fn, ee, Promise) {
|
56486
56816
|
if (typeof callback === 'function') {
|
56487
56817
|
return fn(function(error) {
|
56488
56818
|
if (error != null) {
|
56489
|
-
if (ee != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) {
|
56819
|
+
if (ee != null && ee.listeners != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) {
|
56490
56820
|
error[emittedSymbol] = true;
|
56491
56821
|
ee.emit('error', error);
|
56492
56822
|
}
|
56493
56823
|
try {
|
56494
56824
|
callback(error);
|
56495
56825
|
} catch (error) {
|
56496
|
-
return
|
56826
|
+
return immediate(() => {
|
56497
56827
|
throw error;
|
56498
56828
|
});
|
56499
56829
|
}
|
@@ -56508,7 +56838,7 @@ module.exports = function promiseOrCallback(callback, fn, ee, Promise) {
|
|
56508
56838
|
return new Promise((resolve, reject) => {
|
56509
56839
|
fn(function(error, res) {
|
56510
56840
|
if (error != null) {
|
56511
|
-
if (ee != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) {
|
56841
|
+
if (ee != null && ee.listeners != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) {
|
56512
56842
|
error[emittedSymbol] = true;
|
56513
56843
|
ee.emit('error', error);
|
56514
56844
|
}
|
@@ -56521,8 +56851,8 @@ module.exports = function promiseOrCallback(callback, fn, ee, Promise) {
|
|
56521
56851
|
});
|
56522
56852
|
});
|
56523
56853
|
};
|
56524
|
-
|
56525
|
-
},{"../promise_provider":
|
56854
|
+
|
56855
|
+
},{"../promise_provider":274,"./immediate":233}],244:[function(require,module,exports){
|
56526
56856
|
'use strict';
|
56527
56857
|
|
56528
56858
|
/*!
|
@@ -56616,7 +56946,7 @@ function _getContexts(hook) {
|
|
56616
56946
|
}
|
56617
56947
|
return ret;
|
56618
56948
|
}
|
56619
|
-
},{}],
|
56949
|
+
},{}],245:[function(require,module,exports){
|
56620
56950
|
'use strict';
|
56621
56951
|
|
56622
56952
|
const specialKeys = new Set([
|
@@ -56628,7 +56958,7 @@ const specialKeys = new Set([
|
|
56628
56958
|
module.exports = function isOperator(path) {
|
56629
56959
|
return path.startsWith('$') && !specialKeys.has(path);
|
56630
56960
|
};
|
56631
|
-
},{}],
|
56961
|
+
},{}],246:[function(require,module,exports){
|
56632
56962
|
'use strict';
|
56633
56963
|
|
56634
56964
|
module.exports = function addAutoId(schema) {
|
@@ -56636,7 +56966,7 @@ module.exports = function addAutoId(schema) {
|
|
56636
56966
|
_obj._id[schema.options.typeKey] = 'ObjectId';
|
56637
56967
|
schema.add(_obj);
|
56638
56968
|
};
|
56639
|
-
},{}],
|
56969
|
+
},{}],247:[function(require,module,exports){
|
56640
56970
|
'use strict';
|
56641
56971
|
|
56642
56972
|
/**
|
@@ -56649,7 +56979,7 @@ module.exports = function cleanPositionalOperators(path) {
|
|
56649
56979
|
replace(/\.\$(\[[^\]]*\])?(?=\.)/g, '.0').
|
56650
56980
|
replace(/\.\$(\[[^\]]*\])?$/g, '.0');
|
56651
56981
|
};
|
56652
|
-
},{}],
|
56982
|
+
},{}],248:[function(require,module,exports){
|
56653
56983
|
'use strict';
|
56654
56984
|
|
56655
56985
|
const get = require('../get');
|
@@ -56806,7 +57136,7 @@ module.exports = function getIndexes(schema) {
|
|
56806
57136
|
}
|
56807
57137
|
};
|
56808
57138
|
|
56809
|
-
},{"../get":
|
57139
|
+
},{"../get":230,"../isObject":236}],249:[function(require,module,exports){
|
56810
57140
|
'use strict';
|
56811
57141
|
|
56812
57142
|
const addAutoId = require('./addAutoId');
|
@@ -56827,7 +57157,7 @@ module.exports = function handleIdOption(schema, options) {
|
|
56827
57157
|
|
56828
57158
|
return schema;
|
56829
57159
|
};
|
56830
|
-
},{"./addAutoId":
|
57160
|
+
},{"./addAutoId":246}],250:[function(require,module,exports){
|
56831
57161
|
'use strict';
|
56832
57162
|
|
56833
57163
|
module.exports = handleTimestampOption;
|
@@ -56852,11 +57182,19 @@ function handleTimestampOption(arg, prop) {
|
|
56852
57182
|
}
|
56853
57183
|
return arg[prop];
|
56854
57184
|
}
|
56855
|
-
},{}],
|
57185
|
+
},{}],251:[function(require,module,exports){
|
56856
57186
|
'use strict';
|
56857
57187
|
|
56858
|
-
module.exports = function merge(s1, s2) {
|
56859
|
-
|
57188
|
+
module.exports = function merge(s1, s2, skipConflictingPaths) {
|
57189
|
+
const paths = Object.keys(s2.tree);
|
57190
|
+
const pathsToAdd = {};
|
57191
|
+
for (const key of paths) {
|
57192
|
+
if (skipConflictingPaths && (s1.paths[key] || s1.nested[key] || s1.singleNestedPaths[key])) {
|
57193
|
+
continue;
|
57194
|
+
}
|
57195
|
+
pathsToAdd[key] = s2.tree[key];
|
57196
|
+
}
|
57197
|
+
s1.add(pathsToAdd);
|
56860
57198
|
|
56861
57199
|
s1.callQueue = s1.callQueue.concat(s2.callQueue);
|
56862
57200
|
s1.method(s2.methods);
|
@@ -56873,7 +57211,7 @@ module.exports = function merge(s1, s2) {
|
|
56873
57211
|
s1.s.hooks.merge(s2.s.hooks, false);
|
56874
57212
|
};
|
56875
57213
|
|
56876
|
-
},{}],
|
57214
|
+
},{}],252:[function(require,module,exports){
|
56877
57215
|
'use strict';
|
56878
57216
|
|
56879
57217
|
const StrictModeError = require('../../error/strict');
|
@@ -56920,11 +57258,11 @@ function createImmutableSetter(path, immutable) {
|
|
56920
57258
|
};
|
56921
57259
|
}
|
56922
57260
|
|
56923
|
-
},{"../../error/strict":214}],
|
57261
|
+
},{"../../error/strict":214}],253:[function(require,module,exports){
|
56924
57262
|
'use strict';
|
56925
57263
|
|
56926
57264
|
module.exports = new Set(['__proto__', 'constructor', 'prototype']);
|
56927
|
-
},{}],
|
57265
|
+
},{}],254:[function(require,module,exports){
|
56928
57266
|
'use strict';
|
56929
57267
|
|
56930
57268
|
exports.arrayAtomicsSymbol = Symbol('mongoose#Array#_atomics');
|
@@ -56944,7 +57282,7 @@ exports.schemaTypeSymbol = Symbol('mongoose#schemaType');
|
|
56944
57282
|
exports.sessionNewDocuments = Symbol('mongoose:ClientSession#newDocuments');
|
56945
57283
|
exports.scopeSymbol = Symbol('mongoose#Document#scope');
|
56946
57284
|
exports.validatorErrorSymbol = Symbol('mongoose:validatorError');
|
56947
|
-
},{}],
|
57285
|
+
},{}],255:[function(require,module,exports){
|
56948
57286
|
'use strict';
|
56949
57287
|
|
56950
57288
|
const applyTimestampsToChildren = require('../update/applyTimestampsToChildren');
|
@@ -56998,7 +57336,7 @@ module.exports = function setupTimestamps(schema, timestamps) {
|
|
56998
57336
|
(this.ownerDocument ? this.ownerDocument() : this).constructor.base.now();
|
56999
57337
|
const auto_id = this._id && this._id.auto;
|
57000
57338
|
|
57001
|
-
if (!skipCreatedAt && createdAt && !this.get(createdAt) && this.$__isSelected(createdAt)) {
|
57339
|
+
if (!skipCreatedAt && this.isNew && createdAt && !this.get(createdAt) && this.$__isSelected(createdAt)) {
|
57002
57340
|
this.$set(createdAt, auto_id ? this._id.getTimestamp() : defaultTimestamp);
|
57003
57341
|
}
|
57004
57342
|
|
@@ -57056,7 +57394,7 @@ module.exports = function setupTimestamps(schema, timestamps) {
|
|
57056
57394
|
next();
|
57057
57395
|
}
|
57058
57396
|
};
|
57059
|
-
},{"../../schema/symbols":
|
57397
|
+
},{"../../schema/symbols":296,"../get":230,"../schema/handleTimestampOption":250,"../update/applyTimestampsToChildren":256,"../update/applyTimestampsToUpdate":257}],256:[function(require,module,exports){
|
57060
57398
|
'use strict';
|
57061
57399
|
|
57062
57400
|
const cleanPositionalOperators = require('../schema/cleanPositionalOperators');
|
@@ -57078,34 +57416,10 @@ function applyTimestampsToChildren(now, update, schema) {
|
|
57078
57416
|
|
57079
57417
|
if (hasDollarKey) {
|
57080
57418
|
if (update.$push) {
|
57081
|
-
|
57082
|
-
|
57083
|
-
|
57084
|
-
|
57085
|
-
$path.$isMongooseDocumentArray &&
|
57086
|
-
$path.schema.options.timestamps) {
|
57087
|
-
const timestamps = $path.schema.options.timestamps;
|
57088
|
-
const createdAt = handleTimestampOption(timestamps, 'createdAt');
|
57089
|
-
const updatedAt = handleTimestampOption(timestamps, 'updatedAt');
|
57090
|
-
if (update.$push[key].$each) {
|
57091
|
-
update.$push[key].$each.forEach(function(subdoc) {
|
57092
|
-
if (updatedAt != null) {
|
57093
|
-
subdoc[updatedAt] = now;
|
57094
|
-
}
|
57095
|
-
if (createdAt != null) {
|
57096
|
-
subdoc[createdAt] = now;
|
57097
|
-
}
|
57098
|
-
});
|
57099
|
-
} else {
|
57100
|
-
if (updatedAt != null) {
|
57101
|
-
update.$push[key][updatedAt] = now;
|
57102
|
-
}
|
57103
|
-
if (createdAt != null) {
|
57104
|
-
update.$push[key][createdAt] = now;
|
57105
|
-
}
|
57106
|
-
}
|
57107
|
-
}
|
57108
|
-
}
|
57419
|
+
_applyTimestampToUpdateOperator(update.$push);
|
57420
|
+
}
|
57421
|
+
if (update.$addToSet) {
|
57422
|
+
_applyTimestampToUpdateOperator(update.$addToSet);
|
57109
57423
|
}
|
57110
57424
|
if (update.$set != null) {
|
57111
57425
|
const keys = Object.keys(update.$set);
|
@@ -57113,12 +57427,49 @@ function applyTimestampsToChildren(now, update, schema) {
|
|
57113
57427
|
applyTimestampsToUpdateKey(schema, key, update.$set, now);
|
57114
57428
|
}
|
57115
57429
|
}
|
57430
|
+
if (update.$setOnInsert != null) {
|
57431
|
+
const keys = Object.keys(update.$setOnInsert);
|
57432
|
+
for (const key of keys) {
|
57433
|
+
applyTimestampsToUpdateKey(schema, key, update.$setOnInsert, now);
|
57434
|
+
}
|
57435
|
+
}
|
57116
57436
|
}
|
57117
57437
|
|
57118
57438
|
const updateKeys = Object.keys(update).filter(key => !key.startsWith('$'));
|
57119
57439
|
for (const key of updateKeys) {
|
57120
57440
|
applyTimestampsToUpdateKey(schema, key, update, now);
|
57121
57441
|
}
|
57442
|
+
|
57443
|
+
function _applyTimestampToUpdateOperator(op) {
|
57444
|
+
for (const key of Object.keys(op)) {
|
57445
|
+
const $path = schema.path(key.replace(/\.\$\./i, '.').replace(/.\$$/, ''));
|
57446
|
+
if (op[key] &&
|
57447
|
+
$path &&
|
57448
|
+
$path.$isMongooseDocumentArray &&
|
57449
|
+
$path.schema.options.timestamps) {
|
57450
|
+
const timestamps = $path.schema.options.timestamps;
|
57451
|
+
const createdAt = handleTimestampOption(timestamps, 'createdAt');
|
57452
|
+
const updatedAt = handleTimestampOption(timestamps, 'updatedAt');
|
57453
|
+
if (op[key].$each) {
|
57454
|
+
op[key].$each.forEach(function(subdoc) {
|
57455
|
+
if (updatedAt != null) {
|
57456
|
+
subdoc[updatedAt] = now;
|
57457
|
+
}
|
57458
|
+
if (createdAt != null) {
|
57459
|
+
subdoc[createdAt] = now;
|
57460
|
+
}
|
57461
|
+
});
|
57462
|
+
} else {
|
57463
|
+
if (updatedAt != null) {
|
57464
|
+
op[key][updatedAt] = now;
|
57465
|
+
}
|
57466
|
+
if (createdAt != null) {
|
57467
|
+
op[key][createdAt] = now;
|
57468
|
+
}
|
57469
|
+
}
|
57470
|
+
}
|
57471
|
+
}
|
57472
|
+
}
|
57122
57473
|
}
|
57123
57474
|
|
57124
57475
|
function applyTimestampsToDocumentArray(arr, schematype, now) {
|
@@ -57229,7 +57580,7 @@ function applyTimestampsToUpdateKey(schema, key, update, now) {
|
|
57229
57580
|
}
|
57230
57581
|
}
|
57231
57582
|
}
|
57232
|
-
},{"../schema/cleanPositionalOperators":
|
57583
|
+
},{"../schema/cleanPositionalOperators":247,"../schema/handleTimestampOption":250}],257:[function(require,module,exports){
|
57233
57584
|
'use strict';
|
57234
57585
|
|
57235
57586
|
/*!
|
@@ -57350,7 +57701,7 @@ function applyTimestampsToUpdate(now, createdAt, updatedAt, currentUpdate, optio
|
|
57350
57701
|
return updates;
|
57351
57702
|
}
|
57352
57703
|
|
57353
|
-
},{"../get":
|
57704
|
+
},{"../get":230}],258:[function(require,module,exports){
|
57354
57705
|
/*!
|
57355
57706
|
* Dependencies
|
57356
57707
|
*/
|
@@ -57390,7 +57741,7 @@ function InternalCache() {
|
|
57390
57741
|
this.fullPath = undefined;
|
57391
57742
|
}
|
57392
57743
|
|
57393
|
-
},{"./statemachine":
|
57744
|
+
},{"./statemachine":298}],259:[function(require,module,exports){
|
57394
57745
|
'use strict';
|
57395
57746
|
|
57396
57747
|
/*!
|
@@ -57403,10 +57754,11 @@ exports.internalToObjectOptions = {
|
|
57403
57754
|
getters: false,
|
57404
57755
|
_skipDepopulateTopLevel: true,
|
57405
57756
|
depopulate: true,
|
57406
|
-
flattenDecimals: false
|
57757
|
+
flattenDecimals: false,
|
57758
|
+
useProjection: false
|
57407
57759
|
};
|
57408
57760
|
|
57409
|
-
},{}],
|
57761
|
+
},{}],260:[function(require,module,exports){
|
57410
57762
|
'use strict';
|
57411
57763
|
|
57412
57764
|
const clone = require('../helpers/clone');
|
@@ -57443,7 +57795,7 @@ class PopulateOptions {
|
|
57443
57795
|
*/
|
57444
57796
|
|
57445
57797
|
module.exports = PopulateOptions;
|
57446
|
-
},{"../helpers/clone":219}],
|
57798
|
+
},{"../helpers/clone":219}],261:[function(require,module,exports){
|
57447
57799
|
'use strict';
|
57448
57800
|
|
57449
57801
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57496,14 +57848,14 @@ Object.defineProperty(SchemaArrayOptions.prototype, 'enum', opts);
|
|
57496
57848
|
* @instance
|
57497
57849
|
*/
|
57498
57850
|
|
57499
|
-
Object.defineProperty(SchemaArrayOptions.prototype, '
|
57851
|
+
Object.defineProperty(SchemaArrayOptions.prototype, 'of', opts);
|
57500
57852
|
|
57501
57853
|
/*!
|
57502
57854
|
* ignore
|
57503
57855
|
*/
|
57504
57856
|
|
57505
57857
|
module.exports = SchemaArrayOptions;
|
57506
|
-
},{"./SchemaTypeOptions":
|
57858
|
+
},{"./SchemaTypeOptions":270,"./propertyOptions":272}],262:[function(require,module,exports){
|
57507
57859
|
'use strict';
|
57508
57860
|
|
57509
57861
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57542,7 +57894,7 @@ Object.defineProperty(SchemaBufferOptions.prototype, 'subtype', opts);
|
|
57542
57894
|
*/
|
57543
57895
|
|
57544
57896
|
module.exports = SchemaBufferOptions;
|
57545
|
-
},{"./SchemaTypeOptions":
|
57897
|
+
},{"./SchemaTypeOptions":270,"./propertyOptions":272}],263:[function(require,module,exports){
|
57546
57898
|
'use strict';
|
57547
57899
|
|
57548
57900
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57607,7 +57959,7 @@ Object.defineProperty(SchemaDateOptions.prototype, 'expires', opts);
|
|
57607
57959
|
*/
|
57608
57960
|
|
57609
57961
|
module.exports = SchemaDateOptions;
|
57610
|
-
},{"./SchemaTypeOptions":
|
57962
|
+
},{"./SchemaTypeOptions":270,"./propertyOptions":272}],264:[function(require,module,exports){
|
57611
57963
|
'use strict';
|
57612
57964
|
|
57613
57965
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57676,7 +58028,7 @@ Object.defineProperty(SchemaDocumentArrayOptions.prototype, '_id', opts);
|
|
57676
58028
|
*/
|
57677
58029
|
|
57678
58030
|
module.exports = SchemaDocumentArrayOptions;
|
57679
|
-
},{"./SchemaTypeOptions":
|
58031
|
+
},{"./SchemaTypeOptions":270,"./propertyOptions":272}],265:[function(require,module,exports){
|
57680
58032
|
'use strict';
|
57681
58033
|
|
57682
58034
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57720,7 +58072,7 @@ const opts = require('./propertyOptions');
|
|
57720
58072
|
Object.defineProperty(SchemaMapOptions.prototype, 'of', opts);
|
57721
58073
|
|
57722
58074
|
module.exports = SchemaMapOptions;
|
57723
|
-
},{"./SchemaTypeOptions":
|
58075
|
+
},{"./SchemaTypeOptions":270,"./propertyOptions":272}],266:[function(require,module,exports){
|
57724
58076
|
'use strict';
|
57725
58077
|
|
57726
58078
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57820,7 +58172,7 @@ Object.defineProperty(SchemaNumberOptions.prototype, 'populate', opts);
|
|
57820
58172
|
*/
|
57821
58173
|
|
57822
58174
|
module.exports = SchemaNumberOptions;
|
57823
|
-
},{"./SchemaTypeOptions":
|
58175
|
+
},{"./SchemaTypeOptions":270,"./propertyOptions":272}],267:[function(require,module,exports){
|
57824
58176
|
'use strict';
|
57825
58177
|
|
57826
58178
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57884,7 +58236,7 @@ Object.defineProperty(SchemaObjectIdOptions.prototype, 'populate', opts);
|
|
57884
58236
|
*/
|
57885
58237
|
|
57886
58238
|
module.exports = SchemaObjectIdOptions;
|
57887
|
-
},{"./SchemaTypeOptions":
|
58239
|
+
},{"./SchemaTypeOptions":270,"./propertyOptions":272}],268:[function(require,module,exports){
|
57888
58240
|
'use strict';
|
57889
58241
|
|
57890
58242
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57927,7 +58279,7 @@ const opts = require('./propertyOptions');
|
|
57927
58279
|
Object.defineProperty(SchemaSingleNestedOptions.prototype, '_id', opts);
|
57928
58280
|
|
57929
58281
|
module.exports = SchemaSingleNestedOptions;
|
57930
|
-
},{"./SchemaTypeOptions":
|
58282
|
+
},{"./SchemaTypeOptions":270,"./propertyOptions":272}],269:[function(require,module,exports){
|
57931
58283
|
'use strict';
|
57932
58284
|
|
57933
58285
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -58067,7 +58419,7 @@ Object.defineProperty(SchemaStringOptions.prototype, 'populate', opts);
|
|
58067
58419
|
|
58068
58420
|
module.exports = SchemaStringOptions;
|
58069
58421
|
|
58070
|
-
},{"./SchemaTypeOptions":
|
58422
|
+
},{"./SchemaTypeOptions":270,"./propertyOptions":272}],270:[function(require,module,exports){
|
58071
58423
|
'use strict';
|
58072
58424
|
|
58073
58425
|
const clone = require('../helpers/clone');
|
@@ -58299,7 +58651,7 @@ Object.defineProperty(SchemaTypeOptions.prototype, 'text', opts);
|
|
58299
58651
|
Object.defineProperty(SchemaTypeOptions.prototype, 'transform', opts);
|
58300
58652
|
|
58301
58653
|
module.exports = SchemaTypeOptions;
|
58302
|
-
},{"../helpers/clone":219,"./propertyOptions":
|
58654
|
+
},{"../helpers/clone":219,"./propertyOptions":272}],271:[function(require,module,exports){
|
58303
58655
|
'use strict';
|
58304
58656
|
|
58305
58657
|
const opts = require('./propertyOptions');
|
@@ -58464,7 +58816,7 @@ Object.defineProperty(VirtualOptions.prototype, 'limit', opts);
|
|
58464
58816
|
Object.defineProperty(VirtualOptions.prototype, 'perDocumentLimit', opts);
|
58465
58817
|
|
58466
58818
|
module.exports = VirtualOptions;
|
58467
|
-
},{"./propertyOptions":
|
58819
|
+
},{"./propertyOptions":272}],272:[function(require,module,exports){
|
58468
58820
|
'use strict';
|
58469
58821
|
|
58470
58822
|
module.exports = Object.freeze({
|
@@ -58473,7 +58825,7 @@ module.exports = Object.freeze({
|
|
58473
58825
|
writable: true,
|
58474
58826
|
value: void 0
|
58475
58827
|
});
|
58476
|
-
},{}],
|
58828
|
+
},{}],273:[function(require,module,exports){
|
58477
58829
|
'use strict';
|
58478
58830
|
|
58479
58831
|
/*!
|
@@ -58503,7 +58855,7 @@ function idGetter() {
|
|
58503
58855
|
return null;
|
58504
58856
|
}
|
58505
58857
|
|
58506
|
-
},{}],
|
58858
|
+
},{}],274:[function(require,module,exports){
|
58507
58859
|
(function (global){(function (){
|
58508
58860
|
/*!
|
58509
58861
|
* ignore
|
@@ -58556,7 +58908,7 @@ store.set(global.Promise);
|
|
58556
58908
|
module.exports = store;
|
58557
58909
|
|
58558
58910
|
}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
58559
|
-
},{"assert":103,"mquery":
|
58911
|
+
},{"assert":103,"mquery":319}],275:[function(require,module,exports){
|
58560
58912
|
'use strict';
|
58561
58913
|
|
58562
58914
|
/*!
|
@@ -58590,6 +58942,10 @@ exports.preparePopulationOptions = function preparePopulationOptions(query, opti
|
|
58590
58942
|
forEach(makeLean(options.lean));
|
58591
58943
|
}
|
58592
58944
|
|
58945
|
+
pop.forEach(opts => {
|
58946
|
+
opts._localModel = query.model;
|
58947
|
+
});
|
58948
|
+
|
58593
58949
|
return pop;
|
58594
58950
|
};
|
58595
58951
|
|
@@ -58630,6 +58986,9 @@ exports.preparePopulationOptionsMQ = function preparePopulationOptionsMQ(query,
|
|
58630
58986
|
pop.forEach(p => {
|
58631
58987
|
p._queryProjection = projection;
|
58632
58988
|
});
|
58989
|
+
pop.forEach(opts => {
|
58990
|
+
opts._localModel = query.model;
|
58991
|
+
});
|
58633
58992
|
|
58634
58993
|
return pop;
|
58635
58994
|
};
|
@@ -58644,7 +59003,7 @@ exports.preparePopulationOptionsMQ = function preparePopulationOptionsMQ(query,
|
|
58644
59003
|
*
|
58645
59004
|
* @return {Document}
|
58646
59005
|
*/
|
58647
|
-
exports.createModel = function createModel(model, doc, fields, userProvidedFields) {
|
59006
|
+
exports.createModel = function createModel(model, doc, fields, userProvidedFields, options) {
|
58648
59007
|
model.hooks.execPreSync('createModel', doc);
|
58649
59008
|
const discriminatorMapping = model.schema ?
|
58650
59009
|
model.schema.discriminatorMapping :
|
@@ -58656,18 +59015,22 @@ exports.createModel = function createModel(model, doc, fields, userProvidedField
|
|
58656
59015
|
|
58657
59016
|
const value = doc[key];
|
58658
59017
|
if (key && value && model.discriminators) {
|
58659
|
-
const discriminator = model.discriminators[value] || getDiscriminatorByValue(model, value);
|
59018
|
+
const discriminator = model.discriminators[value] || getDiscriminatorByValue(model.discriminators, value);
|
58660
59019
|
if (discriminator) {
|
58661
59020
|
const _fields = clone(userProvidedFields);
|
58662
59021
|
exports.applyPaths(_fields, discriminator.schema);
|
58663
59022
|
return new discriminator(undefined, _fields, true);
|
58664
59023
|
}
|
58665
59024
|
}
|
58666
|
-
|
59025
|
+
if (typeof options === 'undefined') {
|
59026
|
+
options = {};
|
59027
|
+
options.defaults = true;
|
59028
|
+
}
|
58667
59029
|
return new model(undefined, fields, {
|
58668
59030
|
skipId: true,
|
58669
59031
|
isNew: false,
|
58670
|
-
willInit: true
|
59032
|
+
willInit: true,
|
59033
|
+
defaults: options.defaults
|
58671
59034
|
});
|
58672
59035
|
};
|
58673
59036
|
|
@@ -58758,7 +59121,11 @@ exports.applyPaths = function applyPaths(fields, schema) {
|
|
58758
59121
|
schema.eachPath(function(path, type) {
|
58759
59122
|
if (prefix) path = prefix + '.' + path;
|
58760
59123
|
|
58761
|
-
|
59124
|
+
let addedPath = analyzePath(path, type);
|
59125
|
+
// arrays
|
59126
|
+
if (addedPath == null && type.$isMongooseArray && !type.$isMongooseDocumentArray) {
|
59127
|
+
addedPath = analyzePath(path, type.caster);
|
59128
|
+
}
|
58762
59129
|
if (addedPath != null) {
|
58763
59130
|
addedPaths.push(addedPath);
|
58764
59131
|
}
|
@@ -58873,7 +59240,7 @@ exports.handleDeleteWriteOpResult = function handleDeleteWriteOpResult(callback)
|
|
58873
59240
|
};
|
58874
59241
|
};
|
58875
59242
|
|
58876
|
-
},{"./helpers/clone":219,"./helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection":
|
59243
|
+
},{"./helpers/clone":219,"./helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection":222,"./helpers/discriminator/getDiscriminatorByValue":224,"./helpers/get":230,"./helpers/projection/isDefiningProjection":241}],276:[function(require,module,exports){
|
58877
59244
|
(function (Buffer){(function (){
|
58878
59245
|
'use strict';
|
58879
59246
|
|
@@ -58891,6 +59258,7 @@ const VirtualType = require('./virtualtype');
|
|
58891
59258
|
const addAutoId = require('./helpers/schema/addAutoId');
|
58892
59259
|
const arrayParentSymbol = require('./helpers/symbols').arrayParentSymbol;
|
58893
59260
|
const get = require('./helpers/get');
|
59261
|
+
const getConstructorName = require('./helpers/getConstructorName');
|
58894
59262
|
const getIndexes = require('./helpers/schema/getIndexes');
|
58895
59263
|
const merge = require('./helpers/schema/merge');
|
58896
59264
|
const mpath = require('mpath');
|
@@ -58930,6 +59298,7 @@ let id = 0;
|
|
58930
59298
|
* - [bufferTimeoutMS](/docs/guide.html#bufferTimeoutMS): number - defaults to 10000 (10 seconds). If `bufferCommands` is enabled, the amount of time Mongoose will wait for connectivity to be restablished before erroring out.
|
58931
59299
|
* - [capped](/docs/guide.html#capped): bool - defaults to false
|
58932
59300
|
* - [collection](/docs/guide.html#collection): string - no default
|
59301
|
+
* - [discriminatorKey](/docs/guide.html#discriminatorKey): string - defaults to `__t`
|
58933
59302
|
* - [id](/docs/guide.html#id): bool - defaults to true
|
58934
59303
|
* - [_id](/docs/guide.html#_id): bool - defaults to true
|
58935
59304
|
* - [minimize](/docs/guide.html#minimize): bool - controls [document#toObject](#document_Document-toObject) behavior when called manually - defaults to true
|
@@ -58990,6 +59359,7 @@ function Schema(obj, options) {
|
|
58990
59359
|
this.plugins = [];
|
58991
59360
|
// For internal debugging. Do not use this to try to save a schema in MDB.
|
58992
59361
|
this.$id = ++id;
|
59362
|
+
this.mapPaths = [];
|
58993
59363
|
|
58994
59364
|
this.s = {
|
58995
59365
|
hooks: new Kareem()
|
@@ -59196,6 +59566,7 @@ Schema.prototype.clone = function() {
|
|
59196
59566
|
s.$globalPluginsApplied = this.$globalPluginsApplied;
|
59197
59567
|
s.$isRootDiscriminator = this.$isRootDiscriminator;
|
59198
59568
|
s.$implicitlyCreated = this.$implicitlyCreated;
|
59569
|
+
s.mapPaths = [].concat(this.mapPaths);
|
59199
59570
|
|
59200
59571
|
if (this.discriminatorMapping != null) {
|
59201
59572
|
s.discriminatorMapping = Object.assign({}, this.discriminatorMapping);
|
@@ -59343,6 +59714,11 @@ Schema.prototype.add = function add(obj, prefix) {
|
|
59343
59714
|
}
|
59344
59715
|
|
59345
59716
|
prefix = prefix || '';
|
59717
|
+
// avoid prototype pollution
|
59718
|
+
if (prefix === '__proto__.' || prefix === 'constructor.' || prefix === 'prototype.') {
|
59719
|
+
return this;
|
59720
|
+
}
|
59721
|
+
|
59346
59722
|
const keys = Object.keys(obj);
|
59347
59723
|
|
59348
59724
|
for (const key of keys) {
|
@@ -59468,7 +59844,6 @@ reserved.isNew =
|
|
59468
59844
|
reserved.populated =
|
59469
59845
|
reserved.remove =
|
59470
59846
|
reserved.save =
|
59471
|
-
reserved.schema =
|
59472
59847
|
reserved.toObject =
|
59473
59848
|
reserved.validate = 1;
|
59474
59849
|
|
@@ -59565,8 +59940,13 @@ Schema.prototype.path = function(path, obj) {
|
|
59565
59940
|
!utils.hasUserDefinedProperty(obj.of, this.options.typeKey);
|
59566
59941
|
_mapType = isInlineSchema ? new Schema(obj.of) : obj.of;
|
59567
59942
|
}
|
59943
|
+
if (utils.hasUserDefinedProperty(obj, 'ref')) {
|
59944
|
+
_mapType = { type: _mapType, ref: obj.ref };
|
59945
|
+
}
|
59946
|
+
|
59568
59947
|
this.paths[mapPath] = this.interpretAsType(mapPath,
|
59569
59948
|
_mapType, this.options);
|
59949
|
+
this.mapPaths.push(this.paths[mapPath]);
|
59570
59950
|
schemaType.$__schemaType = this.paths[mapPath];
|
59571
59951
|
}
|
59572
59952
|
|
@@ -59643,19 +60023,25 @@ Schema.prototype.path = function(path, obj) {
|
|
59643
60023
|
|
59644
60024
|
if (schemaType.$isMongooseDocumentArray) {
|
59645
60025
|
for (const key of Object.keys(schemaType.schema.paths)) {
|
59646
|
-
|
59647
|
-
|
60026
|
+
const _schemaType = schemaType.schema.paths[key];
|
60027
|
+
this.subpaths[path + '.' + key] = _schemaType;
|
60028
|
+
if (typeof _schemaType === 'object' && _schemaType != null) {
|
60029
|
+
_schemaType.$isUnderneathDocArray = true;
|
60030
|
+
}
|
59648
60031
|
}
|
59649
60032
|
for (const key of Object.keys(schemaType.schema.subpaths)) {
|
59650
|
-
|
59651
|
-
|
60033
|
+
const _schemaType = schemaType.schema.subpaths[key];
|
60034
|
+
this.subpaths[path + '.' + key] = _schemaType;
|
60035
|
+
if (typeof _schemaType === 'object' && _schemaType != null) {
|
60036
|
+
_schemaType.$isUnderneathDocArray = true;
|
60037
|
+
}
|
59652
60038
|
}
|
59653
60039
|
for (const key of Object.keys(schemaType.schema.singleNestedPaths)) {
|
59654
|
-
|
59655
|
-
|
60040
|
+
const _schemaType = schemaType.schema.singleNestedPaths[key];
|
60041
|
+
this.subpaths[path + '.' + key] = _schemaType;
|
60042
|
+
if (typeof _schemaType === 'object' && _schemaType != null) {
|
60043
|
+
_schemaType.$isUnderneathDocArray = true;
|
59656
60044
|
}
|
59657
|
-
this.subpaths[path + '.' + key] = schemaType.schema.singleNestedPaths[key];
|
59658
|
-
schemaType.schema.singleNestedPaths[key].$isUnderneathDocArray = true;
|
59659
60045
|
}
|
59660
60046
|
}
|
59661
60047
|
|
@@ -59713,10 +60099,11 @@ function _pathToPositionalSyntax(path) {
|
|
59713
60099
|
*/
|
59714
60100
|
|
59715
60101
|
function getMapPath(schema, path) {
|
59716
|
-
|
59717
|
-
|
59718
|
-
|
59719
|
-
|
60102
|
+
if (schema.mapPaths.length === 0) {
|
60103
|
+
return null;
|
60104
|
+
}
|
60105
|
+
for (const val of schema.mapPaths) {
|
60106
|
+
const _path = val.path;
|
59720
60107
|
const re = new RegExp('^' + _path.replace(/\.\$\*/g, '\\.[^.]+') + '$');
|
59721
60108
|
if (re.test(path)) {
|
59722
60109
|
return schema.paths[_path];
|
@@ -59790,11 +60177,21 @@ Schema.prototype.interpretAsType = function(path, obj, options) {
|
|
59790
60177
|
: type[0];
|
59791
60178
|
|
59792
60179
|
if (cast && cast.instanceOfSchema) {
|
60180
|
+
if (!(cast instanceof Schema)) {
|
60181
|
+
throw new TypeError('Schema for array path `' + path +
|
60182
|
+
'` is from a different copy of the Mongoose module. Please make sure you\'re using the same version ' +
|
60183
|
+
'of Mongoose everywhere with `npm list mongoose`.');
|
60184
|
+
}
|
59793
60185
|
return new MongooseTypes.DocumentArray(path, cast, obj);
|
59794
60186
|
}
|
59795
60187
|
if (cast &&
|
59796
60188
|
cast[options.typeKey] &&
|
59797
60189
|
cast[options.typeKey].instanceOfSchema) {
|
60190
|
+
if (!(cast[options.typeKey] instanceof Schema)) {
|
60191
|
+
throw new TypeError('Schema for array path `' + path +
|
60192
|
+
'` is from a different copy of the Mongoose module. Please make sure you\'re using the same version ' +
|
60193
|
+
'of Mongoose everywhere with `npm list mongoose`.');
|
60194
|
+
}
|
59798
60195
|
return new MongooseTypes.DocumentArray(path, cast[options.typeKey], obj, cast);
|
59799
60196
|
}
|
59800
60197
|
|
@@ -59847,6 +60244,11 @@ Schema.prototype.interpretAsType = function(path, obj, options) {
|
|
59847
60244
|
? type
|
59848
60245
|
: type.schemaName || utils.getFunctionName(type);
|
59849
60246
|
|
60247
|
+
// For Jest 26+, see #10296
|
60248
|
+
if (name === 'ClockDate') {
|
60249
|
+
name = 'Date';
|
60250
|
+
}
|
60251
|
+
|
59850
60252
|
if (!MongooseTypes.hasOwnProperty(name)) {
|
59851
60253
|
throw new TypeError('Invalid schema configuration: ' +
|
59852
60254
|
`\`${name}\` is not a valid type within the array \`${path}\`.` +
|
@@ -59877,6 +60279,10 @@ Schema.prototype.interpretAsType = function(path, obj, options) {
|
|
59877
60279
|
if (name === 'ObjectID') {
|
59878
60280
|
name = 'ObjectId';
|
59879
60281
|
}
|
60282
|
+
// For Jest 26+, see #10296
|
60283
|
+
if (name === 'ClockDate') {
|
60284
|
+
name = 'Date';
|
60285
|
+
}
|
59880
60286
|
|
59881
60287
|
if (MongooseTypes[name] == null) {
|
59882
60288
|
throw new TypeError(`Invalid schema configuration: \`${name}\` is not ` +
|
@@ -60331,7 +60737,7 @@ Schema.prototype.plugin = function(fn, opts) {
|
|
60331
60737
|
* fizz.purr();
|
60332
60738
|
* fizz.scratch();
|
60333
60739
|
*
|
60334
|
-
* NOTE: `Schema.method()` adds instance methods to the `Schema.methods` object. You can also add instance methods directly to the `Schema.methods` object as seen in the [guide](
|
60740
|
+
* NOTE: `Schema.method()` adds instance methods to the `Schema.methods` object. You can also add instance methods directly to the `Schema.methods` object as seen in the [guide](/docs/guide.html#methods)
|
60335
60741
|
*
|
60336
60742
|
* @param {String|Object} method name
|
60337
60743
|
* @param {Function} [fn]
|
@@ -60393,7 +60799,7 @@ Schema.prototype.static = function(name, fn) {
|
|
60393
60799
|
*
|
60394
60800
|
* @param {Object} fields
|
60395
60801
|
* @param {Object} [options] Options to pass to [MongoDB driver's `createIndex()` function](http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#createIndex)
|
60396
|
-
* @param {String} [options.expires=null] Mongoose-specific syntactic sugar, uses [ms](https://www.npmjs.com/package/ms) to convert `expires` option into seconds for the `expireAfterSeconds` in the above link.
|
60802
|
+
* @param {String | number} [options.expires=null] Mongoose-specific syntactic sugar, uses [ms](https://www.npmjs.com/package/ms) to convert `expires` option into seconds for the `expireAfterSeconds` in the above link.
|
60397
60803
|
* @api public
|
60398
60804
|
*/
|
60399
60805
|
|
@@ -60514,8 +60920,8 @@ Object.defineProperty(Schema, 'indexTypes', {
|
|
60514
60920
|
});
|
60515
60921
|
|
60516
60922
|
/**
|
60517
|
-
* Returns a list of indexes that this schema declares, via `schema.index()`
|
60518
|
-
*
|
60923
|
+
* Returns a list of indexes that this schema declares, via `schema.index()` or by `index: true` in a path's options.
|
60924
|
+
* Indexes are expressed as an array `[spec, options]`.
|
60519
60925
|
*
|
60520
60926
|
* ####Example:
|
60521
60927
|
*
|
@@ -60528,6 +60934,17 @@ Object.defineProperty(Schema, 'indexTypes', {
|
|
60528
60934
|
* // [ { registeredAt: 1 }, { background: true } ] ]
|
60529
60935
|
* userSchema.indexes();
|
60530
60936
|
*
|
60937
|
+
* [Plugins](/docs/plugins.html) can use the return value of this function to modify a schema's indexes.
|
60938
|
+
* For example, the below plugin makes every index unique by default.
|
60939
|
+
*
|
60940
|
+
* function myPlugin(schema) {
|
60941
|
+
* for (const index of schema.indexes()) {
|
60942
|
+
* if (index[1].unique === undefined) {
|
60943
|
+
* index[1].unique = true;
|
60944
|
+
* }
|
60945
|
+
* }
|
60946
|
+
* }
|
60947
|
+
*
|
60531
60948
|
* @api public
|
60532
60949
|
* @return {Array} list of indexes defined in the schema
|
60533
60950
|
*/
|
@@ -60551,7 +60968,7 @@ Schema.prototype.indexes = function() {
|
|
60551
60968
|
*/
|
60552
60969
|
|
60553
60970
|
Schema.prototype.virtual = function(name, options) {
|
60554
|
-
if (name instanceof VirtualType || (name
|
60971
|
+
if (name instanceof VirtualType || getConstructorName(name) === 'VirtualType') {
|
60555
60972
|
return this.virtual(name.path, name.options);
|
60556
60973
|
}
|
60557
60974
|
|
@@ -60735,9 +61152,9 @@ function _deletePath(schema, name) {
|
|
60735
61152
|
/**
|
60736
61153
|
* Loads an ES6 class into a schema. Maps [setters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set) + [getters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get), [static methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static),
|
60737
61154
|
* and [instance methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Class_body_and_method_definitions)
|
60738
|
-
* to schema [virtuals](
|
60739
|
-
* [statics](
|
60740
|
-
* [methods](
|
61155
|
+
* to schema [virtuals](/docs/guide.html#virtuals),
|
61156
|
+
* [statics](/docs/guide.html#statics), and
|
61157
|
+
* [methods](/docs/guide.html#methods).
|
60741
61158
|
*
|
60742
61159
|
* ####Example:
|
60743
61160
|
*
|
@@ -60782,12 +61199,12 @@ Schema.prototype.loadClass = function(model, virtualsOnly) {
|
|
60782
61199
|
// Add static methods
|
60783
61200
|
if (!virtualsOnly) {
|
60784
61201
|
Object.getOwnPropertyNames(model).forEach(function(name) {
|
60785
|
-
if (name.match(/^(length|name|prototype)$/)) {
|
61202
|
+
if (name.match(/^(length|name|prototype|constructor|__proto__)$/)) {
|
60786
61203
|
return;
|
60787
61204
|
}
|
60788
|
-
const
|
60789
|
-
if (
|
60790
|
-
this.static(name,
|
61205
|
+
const prop = Object.getOwnPropertyDescriptor(model, name);
|
61206
|
+
if (prop.hasOwnProperty('value')) {
|
61207
|
+
this.static(name, prop.value);
|
60791
61208
|
}
|
60792
61209
|
}, this);
|
60793
61210
|
}
|
@@ -60885,7 +61302,7 @@ Schema.prototype._getSchema = function(path) {
|
|
60885
61302
|
}
|
60886
61303
|
} else if (foundschema.$isSchemaMap) {
|
60887
61304
|
if (p + 1 >= parts.length) {
|
60888
|
-
return foundschema
|
61305
|
+
return foundschema;
|
60889
61306
|
}
|
60890
61307
|
const ret = search(parts.slice(p + 1), foundschema.$__schemaType.schema);
|
60891
61308
|
return ret;
|
@@ -60996,14 +61413,14 @@ module.exports = exports = Schema;
|
|
60996
61413
|
*
|
60997
61414
|
* ####Types:
|
60998
61415
|
*
|
60999
|
-
* - [String](#
|
61000
|
-
* - [Number](#
|
61001
|
-
* - [Boolean](#
|
61002
|
-
* - [Array](#
|
61003
|
-
* - [Buffer](#
|
61004
|
-
* - [Date](#
|
61005
|
-
* - [ObjectId](#
|
61006
|
-
* - [Mixed](#
|
61416
|
+
* - [String](/docs/schematypes.html#strings)
|
61417
|
+
* - [Number](/docs/schematypes.html#numbers)
|
61418
|
+
* - [Boolean](/docs/schematypes.html#booleans) | Bool
|
61419
|
+
* - [Array](/docs/schematypes.html#arrays)
|
61420
|
+
* - [Buffer](/docs/schematypes.html#buffers)
|
61421
|
+
* - [Date](/docs/schematypes.html#dates)
|
61422
|
+
* - [ObjectId](/docs/schematypes.html#objectids) | Oid
|
61423
|
+
* - [Mixed](/docs/schematypes.html#mixed)
|
61007
61424
|
*
|
61008
61425
|
* Using this exposed access to the `Mixed` SchemaType, we can use them in our schema.
|
61009
61426
|
*
|
@@ -61022,7 +61439,7 @@ Schema.Types = MongooseTypes = require('./schema/index');
|
|
61022
61439
|
exports.ObjectId = MongooseTypes.ObjectId;
|
61023
61440
|
|
61024
61441
|
}).call(this)}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
|
61025
|
-
},{"../../is-buffer/index.js":179,"./driver":196,"./error/mongooseError":207,"./helpers/get":
|
61442
|
+
},{"../../is-buffer/index.js":179,"./driver":196,"./error/mongooseError":207,"./helpers/get":230,"./helpers/getConstructorName":231,"./helpers/model/applyHooks":238,"./helpers/populate/validateRef":240,"./helpers/query/applyQueryMiddleware":244,"./helpers/schema/addAutoId":246,"./helpers/schema/getIndexes":248,"./helpers/schema/merge":251,"./helpers/symbols":254,"./helpers/timestamps/setupTimestamps":255,"./options/SchemaTypeOptions":270,"./options/VirtualOptions":271,"./schema/index":284,"./schematype":297,"./utils":309,"./virtualtype":310,"events":177,"kareem":182,"mpath":312,"util":334}],277:[function(require,module,exports){
|
61026
61443
|
'use strict';
|
61027
61444
|
|
61028
61445
|
/*!
|
@@ -61360,7 +61777,7 @@ SingleNestedPath.prototype.clone = function() {
|
|
61360
61777
|
return schematype;
|
61361
61778
|
};
|
61362
61779
|
|
61363
|
-
},{"../error/cast":202,"../error/objectExpected":209,"../helpers/discriminator/getConstructor":
|
61780
|
+
},{"../error/cast":202,"../error/objectExpected":209,"../helpers/discriminator/getConstructor":223,"../helpers/get":230,"../helpers/model/discriminator":239,"../helpers/schema/handleIdOption":249,"../options":259,"../options/SchemaSingleNestedOptions":268,"../schematype":297,"../types/subdocument":308,"./operators/exists":290,"./operators/geospatial":291,"./operators/helpers":292,"events":177}],278:[function(require,module,exports){
|
61364
61781
|
'use strict';
|
61365
61782
|
|
61366
61783
|
/*!
|
@@ -61388,6 +61805,7 @@ let MongooseArray;
|
|
61388
61805
|
let EmbeddedDoc;
|
61389
61806
|
|
61390
61807
|
const isNestedArraySymbol = Symbol('mongoose#isNestedArray');
|
61808
|
+
const emptyOpts = Object.freeze({});
|
61391
61809
|
|
61392
61810
|
/**
|
61393
61811
|
* Array SchemaType constructor
|
@@ -61423,6 +61841,10 @@ function SchemaArray(key, cast, options, schemaOptions) {
|
|
61423
61841
|
}
|
61424
61842
|
}
|
61425
61843
|
|
61844
|
+
if (options != null && options.ref != null && castOptions.ref == null) {
|
61845
|
+
castOptions.ref = options.ref;
|
61846
|
+
}
|
61847
|
+
|
61426
61848
|
if (cast === Object) {
|
61427
61849
|
cast = Mixed;
|
61428
61850
|
}
|
@@ -61444,16 +61866,16 @@ function SchemaArray(key, cast, options, schemaOptions) {
|
|
61444
61866
|
if (typeof caster === 'function' &&
|
61445
61867
|
!caster.$isArraySubdocument &&
|
61446
61868
|
!caster.$isSchemaMap) {
|
61447
|
-
this.caster
|
61869
|
+
const path = this.caster instanceof EmbeddedDoc ? null : key;
|
61870
|
+
this.caster = new caster(path, castOptions);
|
61448
61871
|
} else {
|
61449
61872
|
this.caster = caster;
|
61873
|
+
if (!(this.caster instanceof EmbeddedDoc)) {
|
61874
|
+
this.caster.path = key;
|
61875
|
+
}
|
61450
61876
|
}
|
61451
61877
|
|
61452
61878
|
this.$embeddedSchemaType = this.caster;
|
61453
|
-
|
61454
|
-
if (!(this.caster instanceof EmbeddedDoc)) {
|
61455
|
-
this.caster.path = key;
|
61456
|
-
}
|
61457
61879
|
}
|
61458
61880
|
|
61459
61881
|
this.$isMongooseArray = true;
|
@@ -61504,6 +61926,10 @@ SchemaArray.schemaName = 'Array';
|
|
61504
61926
|
|
61505
61927
|
SchemaArray.options = { castNonArrays: true };
|
61506
61928
|
|
61929
|
+
/*!
|
61930
|
+
* ignore
|
61931
|
+
*/
|
61932
|
+
|
61507
61933
|
SchemaArray.defaultOptions = {};
|
61508
61934
|
|
61509
61935
|
/**
|
@@ -61521,7 +61947,6 @@ SchemaArray.defaultOptions = {};
|
|
61521
61947
|
* @param {*} value - value for option
|
61522
61948
|
* @return {undefined}
|
61523
61949
|
* @function set
|
61524
|
-
* @static
|
61525
61950
|
* @api public
|
61526
61951
|
*/
|
61527
61952
|
SchemaArray.set = SchemaType.set;
|
@@ -61554,7 +61979,6 @@ SchemaArray._checkRequired = SchemaType.prototype.checkRequired;
|
|
61554
61979
|
* @param {Function} fn
|
61555
61980
|
* @return {Function}
|
61556
61981
|
* @function checkRequired
|
61557
|
-
* @static
|
61558
61982
|
* @api public
|
61559
61983
|
*/
|
61560
61984
|
|
@@ -61624,7 +62048,7 @@ SchemaArray.prototype.enum = function() {
|
|
61624
62048
|
*/
|
61625
62049
|
|
61626
62050
|
SchemaArray.prototype.applyGetters = function(value, scope) {
|
61627
|
-
if (scope != null && scope.populated(this.path)) {
|
62051
|
+
if (scope != null && scope.$__ != null && scope.populated(this.path)) {
|
61628
62052
|
// means the object id was populated
|
61629
62053
|
return value;
|
61630
62054
|
}
|
@@ -61640,14 +62064,14 @@ SchemaArray.prototype.applyGetters = function(value, scope) {
|
|
61640
62064
|
};
|
61641
62065
|
|
61642
62066
|
SchemaArray.prototype._applySetters = function(value, scope, init, priorVal) {
|
61643
|
-
if (this.casterConstructor
|
62067
|
+
if (this.casterConstructor.$isMongooseArray &&
|
61644
62068
|
SchemaArray.options.castNonArrays &&
|
61645
62069
|
!this[isNestedArraySymbol]) {
|
61646
62070
|
// Check nesting levels and wrap in array if necessary
|
61647
62071
|
let depth = 0;
|
61648
62072
|
let arr = this;
|
61649
62073
|
while (arr != null &&
|
61650
|
-
arr
|
62074
|
+
arr.$isMongooseArray &&
|
61651
62075
|
!arr.$isMongooseDocumentArray) {
|
61652
62076
|
++depth;
|
61653
62077
|
arr = arr.casterConstructor;
|
@@ -61684,7 +62108,8 @@ SchemaArray.prototype.cast = function(value, doc, init, prev, options) {
|
|
61684
62108
|
let l;
|
61685
62109
|
|
61686
62110
|
if (Array.isArray(value)) {
|
61687
|
-
|
62111
|
+
const len = value.length;
|
62112
|
+
if (!len && doc) {
|
61688
62113
|
const indexes = doc.schema.indexedPaths();
|
61689
62114
|
|
61690
62115
|
const arrayPath = this.path;
|
@@ -61709,39 +62134,35 @@ SchemaArray.prototype.cast = function(value, doc, init, prev, options) {
|
|
61709
62134
|
}
|
61710
62135
|
}
|
61711
62136
|
|
61712
|
-
|
61713
|
-
|
61714
|
-
|
61715
|
-
// We need to create a new array, otherwise change tracking will
|
61716
|
-
// update the old doc (gh-4449)
|
61717
|
-
value = MongooseArray(value, get(options, 'path', null) || this._arrayPath || this.path, doc, this);
|
61718
|
-
}
|
62137
|
+
options = options || emptyOpts;
|
62138
|
+
|
62139
|
+
value = MongooseArray(value, options.path || this._arrayPath || this.path, doc, this);
|
61719
62140
|
|
61720
|
-
|
61721
|
-
if (isPopulated && init) {
|
62141
|
+
if (init && doc != null && doc.$__ != null && doc.populated(this.path)) {
|
61722
62142
|
return value;
|
61723
62143
|
}
|
61724
62144
|
|
61725
62145
|
const caster = this.caster;
|
62146
|
+
const isMongooseArray = caster.$isMongooseArray;
|
62147
|
+
const isArrayOfNumbers = caster.instance === 'Number';
|
61726
62148
|
if (caster && this.casterConstructor !== Mixed) {
|
61727
62149
|
try {
|
61728
|
-
const len = value.length;
|
61729
62150
|
for (i = 0; i < len; i++) {
|
61730
62151
|
// Special case: number arrays disallow undefined.
|
61731
62152
|
// Re: gh-840
|
61732
62153
|
// See commit 1298fe92d2c790a90594bd08199e45a4a09162a6
|
61733
|
-
if (
|
62154
|
+
if (isArrayOfNumbers && value[i] === void 0) {
|
61734
62155
|
throw new MongooseError('Mongoose number arrays disallow storing undefined');
|
61735
62156
|
}
|
61736
62157
|
const opts = {};
|
61737
62158
|
// Perf: creating `arrayPath` is expensive for large arrays.
|
61738
62159
|
// We only need `arrayPath` if this is a nested array, so
|
61739
62160
|
// skip if possible.
|
61740
|
-
if (
|
61741
|
-
if (options
|
61742
|
-
opts.
|
61743
|
-
} else if (
|
61744
|
-
opts.
|
62161
|
+
if (isMongooseArray) {
|
62162
|
+
if (options.arrayPath != null) {
|
62163
|
+
opts.arrayPathIndex = i;
|
62164
|
+
} else if (caster._arrayParentPath != null) {
|
62165
|
+
opts.arrayPathIndex = i;
|
61745
62166
|
}
|
61746
62167
|
}
|
61747
62168
|
value[i] = caster.applySetters(value[i], doc, init, void 0, opts);
|
@@ -61767,12 +62188,50 @@ SchemaArray.prototype.cast = function(value, doc, init, prev, options) {
|
|
61767
62188
|
throw new CastError('Array', util.inspect(value), this.path, null, this);
|
61768
62189
|
};
|
61769
62190
|
|
62191
|
+
/*!
|
62192
|
+
* ignore
|
62193
|
+
*/
|
62194
|
+
|
62195
|
+
SchemaArray.prototype._castForPopulate = function _castForPopulate(value, doc) {
|
62196
|
+
// lazy load
|
62197
|
+
MongooseArray || (MongooseArray = require('../types').Array);
|
62198
|
+
|
62199
|
+
if (Array.isArray(value)) {
|
62200
|
+
let i;
|
62201
|
+
const len = value.length;
|
62202
|
+
|
62203
|
+
const caster = this.caster;
|
62204
|
+
if (caster && this.casterConstructor !== Mixed) {
|
62205
|
+
try {
|
62206
|
+
for (i = 0; i < len; i++) {
|
62207
|
+
const opts = {};
|
62208
|
+
// Perf: creating `arrayPath` is expensive for large arrays.
|
62209
|
+
// We only need `arrayPath` if this is a nested array, so
|
62210
|
+
// skip if possible.
|
62211
|
+
if (caster.$isMongooseArray && caster._arrayParentPath != null) {
|
62212
|
+
opts.arrayPathIndex = i;
|
62213
|
+
}
|
62214
|
+
|
62215
|
+
value[i] = caster.cast(value[i], doc, false, void 0, opts);
|
62216
|
+
}
|
62217
|
+
} catch (e) {
|
62218
|
+
// rethrow
|
62219
|
+
throw new CastError('[' + e.kind + ']', util.inspect(value), this.path + '.' + i, e, this);
|
62220
|
+
}
|
62221
|
+
}
|
62222
|
+
|
62223
|
+
return value;
|
62224
|
+
}
|
62225
|
+
|
62226
|
+
throw new CastError('Array', util.inspect(value), this.path, null, this);
|
62227
|
+
};
|
62228
|
+
|
61770
62229
|
/*!
|
61771
62230
|
* Ignore
|
61772
62231
|
*/
|
61773
62232
|
|
61774
62233
|
SchemaArray.prototype.discriminator = function(name, schema) {
|
61775
|
-
let arr = this;
|
62234
|
+
let arr = this;
|
61776
62235
|
while (arr.$isMongooseArray && !arr.$isMongooseDocumentArray) {
|
61777
62236
|
arr = arr.casterConstructor;
|
61778
62237
|
if (arr == null || typeof arr === 'function') {
|
@@ -61830,7 +62289,7 @@ SchemaArray.prototype.castForQuery = function($conditional, value) {
|
|
61830
62289
|
Constructor.discriminators[val[Constructor.schema.options.discriminatorKey]]) {
|
61831
62290
|
Constructor = Constructor.discriminators[val[Constructor.schema.options.discriminatorKey]];
|
61832
62291
|
} else {
|
61833
|
-
const constructorByValue = getDiscriminatorByValue(Constructor, val[Constructor.schema.options.discriminatorKey]);
|
62292
|
+
const constructorByValue = getDiscriminatorByValue(Constructor.discriminators, val[Constructor.schema.options.discriminatorKey]);
|
61834
62293
|
if (constructorByValue) {
|
61835
62294
|
Constructor = constructorByValue;
|
61836
62295
|
}
|
@@ -61971,7 +62430,7 @@ handle.$in = SchemaType.prototype.$conditionalHandlers.$in;
|
|
61971
62430
|
|
61972
62431
|
module.exports = SchemaArray;
|
61973
62432
|
|
61974
|
-
},{"../cast":187,"../error/mongooseError":207,"../helpers/arrayDepth":218,"../helpers/discriminator/getDiscriminatorByValue":
|
62433
|
+
},{"../cast":187,"../error/mongooseError":207,"../helpers/arrayDepth":218,"../helpers/discriminator/getDiscriminatorByValue":224,"../helpers/get":230,"../helpers/query/isOperator":245,"../options/SchemaArrayOptions":261,"../schematype":297,"../types":305,"../utils":309,"./index.js":284,"./mixed":286,"./operators/exists":290,"./operators/geospatial":291,"./operators/helpers":292,"./operators/type":294,"util":334}],279:[function(require,module,exports){
|
61975
62434
|
'use strict';
|
61976
62435
|
|
61977
62436
|
/*!
|
@@ -62243,7 +62702,7 @@ SchemaBoolean.prototype._castNullish = function _castNullish(v) {
|
|
62243
62702
|
|
62244
62703
|
module.exports = SchemaBoolean;
|
62245
62704
|
|
62246
|
-
},{"../cast/boolean":188,"../error/cast":202,"../schematype":
|
62705
|
+
},{"../cast/boolean":188,"../error/cast":202,"../schematype":297,"../utils":309}],280:[function(require,module,exports){
|
62247
62706
|
(function (Buffer){(function (){
|
62248
62707
|
/*!
|
62249
62708
|
* Module dependencies.
|
@@ -62257,11 +62716,8 @@ const SchemaType = require('../schematype');
|
|
62257
62716
|
const handleBitwiseOperator = require('./operators/bitwise');
|
62258
62717
|
const utils = require('../utils');
|
62259
62718
|
|
62260
|
-
const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
62261
|
-
|
62262
62719
|
const Binary = MongooseBuffer.Binary;
|
62263
62720
|
const CastError = SchemaType.CastError;
|
62264
|
-
let Document;
|
62265
62721
|
|
62266
62722
|
/**
|
62267
62723
|
* Buffer SchemaType constructor
|
@@ -62371,36 +62827,30 @@ SchemaBuffer.prototype.checkRequired = function(value, doc) {
|
|
62371
62827
|
SchemaBuffer.prototype.cast = function(value, doc, init) {
|
62372
62828
|
let ret;
|
62373
62829
|
if (SchemaType._isRef(this, value, doc, init)) {
|
62374
|
-
|
62375
|
-
|
62376
|
-
if (value === null || value === undefined) {
|
62830
|
+
if (value && value.isMongooseBuffer) {
|
62377
62831
|
return value;
|
62378
62832
|
}
|
62379
62833
|
|
62380
|
-
|
62381
|
-
|
62382
|
-
|
62383
|
-
|
62384
|
-
|
62834
|
+
if (Buffer.isBuffer(value)) {
|
62835
|
+
if (!value || !value.isMongooseBuffer) {
|
62836
|
+
value = new MongooseBuffer(value, [this.path, doc]);
|
62837
|
+
if (this.options.subtype != null) {
|
62838
|
+
value._subtype = this.options.subtype;
|
62839
|
+
}
|
62840
|
+
}
|
62385
62841
|
return value;
|
62386
62842
|
}
|
62387
62843
|
|
62388
|
-
|
62389
|
-
|
62390
|
-
|
62391
|
-
|
62392
|
-
|
62844
|
+
if (value instanceof Binary) {
|
62845
|
+
ret = new MongooseBuffer(value.value(true), [this.path, doc]);
|
62846
|
+
if (typeof value.sub_type !== 'number') {
|
62847
|
+
throw new CastError('Buffer', value, this.path, null, this);
|
62848
|
+
}
|
62849
|
+
ret._subtype = value.sub_type;
|
62850
|
+
return ret;
|
62393
62851
|
}
|
62394
62852
|
|
62395
|
-
|
62396
|
-
// path to a plain object; cast to the Model used in
|
62397
|
-
// the population query.
|
62398
|
-
const path = doc.$__fullPath(this.path);
|
62399
|
-
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
62400
|
-
const pop = owner.populated(path, true);
|
62401
|
-
ret = new pop.options[populateModelSymbol](value);
|
62402
|
-
ret.$__.wasPopulated = true;
|
62403
|
-
return ret;
|
62853
|
+
return this._castRef(value, doc, init);
|
62404
62854
|
}
|
62405
62855
|
|
62406
62856
|
// documents
|
@@ -62523,7 +62973,7 @@ SchemaBuffer.prototype.castForQuery = function($conditional, val) {
|
|
62523
62973
|
module.exports = SchemaBuffer;
|
62524
62974
|
|
62525
62975
|
}).call(this)}).call(this,{"isBuffer":require("../../../is-buffer/index.js")})
|
62526
|
-
},{"../../../is-buffer/index.js":179,"../
|
62976
|
+
},{"../../../is-buffer/index.js":179,"../options/SchemaBufferOptions":262,"../schematype":297,"../types/buffer":300,"../utils":309,"./operators/bitwise":289}],281:[function(require,module,exports){
|
62527
62977
|
/*!
|
62528
62978
|
* Module requirements.
|
62529
62979
|
*/
|
@@ -62534,6 +62984,7 @@ const MongooseError = require('../error/index');
|
|
62534
62984
|
const SchemaDateOptions = require('../options/SchemaDateOptions');
|
62535
62985
|
const SchemaType = require('../schematype');
|
62536
62986
|
const castDate = require('../cast/date');
|
62987
|
+
const getConstructorName = require('../helpers/getConstructorName');
|
62537
62988
|
const utils = require('../utils');
|
62538
62989
|
|
62539
62990
|
const CastError = SchemaType.CastError;
|
@@ -62673,7 +63124,7 @@ SchemaDate._defaultCaster = v => {
|
|
62673
63124
|
*/
|
62674
63125
|
|
62675
63126
|
SchemaDate.prototype.expires = function(when) {
|
62676
|
-
if (
|
63127
|
+
if (getConstructorName(this._index) !== 'Object') {
|
62677
63128
|
this._index = {};
|
62678
63129
|
}
|
62679
63130
|
|
@@ -62927,8 +63378,7 @@ SchemaDate.prototype.castForQuery = function($conditional, val) {
|
|
62927
63378
|
|
62928
63379
|
module.exports = SchemaDate;
|
62929
63380
|
|
62930
|
-
},{"../cast/date":189,"../error/index":204,"../options/SchemaDateOptions":
|
62931
|
-
(function (Buffer){(function (){
|
63381
|
+
},{"../cast/date":189,"../error/index":204,"../helpers/getConstructorName":231,"../options/SchemaDateOptions":263,"../schematype":297,"../utils":309}],282:[function(require,module,exports){
|
62932
63382
|
/*!
|
62933
63383
|
* Module dependencies.
|
62934
63384
|
*/
|
@@ -62941,10 +63391,6 @@ const Decimal128Type = require('../types/decimal128');
|
|
62941
63391
|
const castDecimal128 = require('../cast/decimal128');
|
62942
63392
|
const utils = require('../utils');
|
62943
63393
|
|
62944
|
-
const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
62945
|
-
|
62946
|
-
let Document;
|
62947
|
-
|
62948
63394
|
/**
|
62949
63395
|
* Decimal128 SchemaType constructor.
|
62950
63396
|
*
|
@@ -63099,44 +63545,11 @@ Decimal128.prototype.checkRequired = function checkRequired(value, doc) {
|
|
63099
63545
|
|
63100
63546
|
Decimal128.prototype.cast = function(value, doc, init) {
|
63101
63547
|
if (SchemaType._isRef(this, value, doc, init)) {
|
63102
|
-
// wait! we may need to cast this to a document
|
63103
|
-
|
63104
|
-
if (value === null || value === undefined) {
|
63105
|
-
return value;
|
63106
|
-
}
|
63107
|
-
|
63108
|
-
// lazy load
|
63109
|
-
Document || (Document = require('./../document'));
|
63110
|
-
|
63111
|
-
if (value instanceof Document) {
|
63112
|
-
value.$__.wasPopulated = true;
|
63113
|
-
return value;
|
63114
|
-
}
|
63115
|
-
|
63116
|
-
// setting a populated path
|
63117
63548
|
if (value instanceof Decimal128Type) {
|
63118
63549
|
return value;
|
63119
|
-
} else if (Buffer.isBuffer(value) || !utils.isObject(value)) {
|
63120
|
-
throw new CastError('Decimal128', value, this.path, null, this);
|
63121
|
-
}
|
63122
|
-
|
63123
|
-
// Handle the case where user directly sets a populated
|
63124
|
-
// path to a plain object; cast to the Model used in
|
63125
|
-
// the population query.
|
63126
|
-
const path = doc.$__fullPath(this.path);
|
63127
|
-
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
63128
|
-
const pop = owner.populated(path, true);
|
63129
|
-
let ret = value;
|
63130
|
-
if (!doc.$__.populated ||
|
63131
|
-
!doc.$__.populated[path] ||
|
63132
|
-
!doc.$__.populated[path].options ||
|
63133
|
-
!doc.$__.populated[path].options.options ||
|
63134
|
-
!doc.$__.populated[path].options.options.lean) {
|
63135
|
-
ret = new pop.options[populateModelSymbol](value);
|
63136
|
-
ret.$__.wasPopulated = true;
|
63137
63550
|
}
|
63138
63551
|
|
63139
|
-
return
|
63552
|
+
return this._castRef(value, doc, init);
|
63140
63553
|
}
|
63141
63554
|
|
63142
63555
|
let castDecimal128;
|
@@ -63177,8 +63590,7 @@ Decimal128.prototype.$conditionalHandlers =
|
|
63177
63590
|
|
63178
63591
|
module.exports = Decimal128;
|
63179
63592
|
|
63180
|
-
}
|
63181
|
-
},{"../../../is-buffer/index.js":179,"../cast/decimal128":190,"../helpers/symbols":252,"../schematype":295,"../types/decimal128":300,"../utils":307,"./../document":194}],281:[function(require,module,exports){
|
63593
|
+
},{"../cast/decimal128":190,"../schematype":297,"../types/decimal128":302,"../utils":309}],283:[function(require,module,exports){
|
63182
63594
|
'use strict';
|
63183
63595
|
|
63184
63596
|
/*!
|
@@ -63199,6 +63611,7 @@ const util = require('util');
|
|
63199
63611
|
const utils = require('../utils');
|
63200
63612
|
const getConstructor = require('../helpers/discriminator/getConstructor');
|
63201
63613
|
|
63614
|
+
const arrayAtomicsSymbol = require('../helpers/symbols').arrayAtomicsSymbol;
|
63202
63615
|
const arrayPathSymbol = require('../helpers/symbols').arrayPathSymbol;
|
63203
63616
|
const documentArrayParent = require('../helpers/symbols').documentArrayParent;
|
63204
63617
|
|
@@ -63582,8 +63995,12 @@ DocumentArrayPath.prototype.cast = function(value, doc, init, prev, options) {
|
|
63582
63995
|
value = new MongooseDocumentArray(value, this.path, doc);
|
63583
63996
|
}
|
63584
63997
|
|
63585
|
-
if (
|
63586
|
-
value[
|
63998
|
+
if (prev != null) {
|
63999
|
+
value[arrayAtomicsSymbol] = prev[arrayAtomicsSymbol] || {};
|
64000
|
+
}
|
64001
|
+
|
64002
|
+
if (options.arrayPathIndex != null) {
|
64003
|
+
value[arrayPathSymbol] = this.path + '.' + options.arrayPathIndex;
|
63587
64004
|
}
|
63588
64005
|
|
63589
64006
|
const len = value.length;
|
@@ -63743,7 +64160,7 @@ DocumentArrayPath.set = SchemaType.set;
|
|
63743
64160
|
|
63744
64161
|
module.exports = DocumentArrayPath;
|
63745
64162
|
|
63746
|
-
},{"../error/cast":202,"../error/validation":215,"../helpers/discriminator/getConstructor":
|
64163
|
+
},{"../error/cast":202,"../error/validation":215,"../helpers/discriminator/getConstructor":223,"../helpers/get":230,"../helpers/model/discriminator":239,"../helpers/schema/handleIdOption":249,"../helpers/symbols":254,"../options/SchemaDocumentArrayOptions":264,"../schematype":297,"../types/documentarray":303,"../types/embedded":304,"../utils":309,"./array":278,"events":177,"util":334}],284:[function(require,module,exports){
|
63747
64164
|
|
63748
64165
|
/*!
|
63749
64166
|
* Module exports.
|
@@ -63782,7 +64199,7 @@ exports.Object = exports.Mixed;
|
|
63782
64199
|
exports.Bool = exports.Boolean;
|
63783
64200
|
exports.ObjectID = exports.ObjectId;
|
63784
64201
|
|
63785
|
-
},{"./SingleNestedPath":
|
64202
|
+
},{"./SingleNestedPath":277,"./array":278,"./boolean":279,"./buffer":280,"./date":281,"./decimal128":282,"./documentarray":283,"./map":285,"./mixed":286,"./number":287,"./objectid":288,"./string":295}],285:[function(require,module,exports){
|
63786
64203
|
(function (global){(function (){
|
63787
64204
|
'use strict';
|
63788
64205
|
|
@@ -63862,7 +64279,7 @@ Map.defaultOptions = {};
|
|
63862
64279
|
module.exports = Map;
|
63863
64280
|
|
63864
64281
|
}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
63865
|
-
},{"../options/SchemaMapOptions":
|
64282
|
+
},{"../options/SchemaMapOptions":265,"../schematype":297,"../types/map":306}],286:[function(require,module,exports){
|
63866
64283
|
/*!
|
63867
64284
|
* Module dependencies.
|
63868
64285
|
*/
|
@@ -63872,6 +64289,7 @@ module.exports = Map;
|
|
63872
64289
|
const SchemaType = require('../schematype');
|
63873
64290
|
const symbols = require('./symbols');
|
63874
64291
|
const isObject = require('../helpers/isObject');
|
64292
|
+
const utils = require('../utils');
|
63875
64293
|
|
63876
64294
|
/**
|
63877
64295
|
* Mixed SchemaType constructor.
|
@@ -63968,6 +64386,9 @@ Mixed.set = SchemaType.set;
|
|
63968
64386
|
*/
|
63969
64387
|
|
63970
64388
|
Mixed.prototype.cast = function(val) {
|
64389
|
+
if (val instanceof Error) {
|
64390
|
+
return utils.errorToPOJO(val);
|
64391
|
+
}
|
63971
64392
|
return val;
|
63972
64393
|
};
|
63973
64394
|
|
@@ -63992,8 +64413,7 @@ Mixed.prototype.castForQuery = function($cond, val) {
|
|
63992
64413
|
|
63993
64414
|
module.exports = Mixed;
|
63994
64415
|
|
63995
|
-
},{"../helpers/isObject":
|
63996
|
-
(function (Buffer){(function (){
|
64416
|
+
},{"../helpers/isObject":236,"../schematype":297,"../utils":309,"./symbols":296}],287:[function(require,module,exports){
|
63997
64417
|
'use strict';
|
63998
64418
|
|
63999
64419
|
/*!
|
@@ -64007,10 +64427,7 @@ const castNumber = require('../cast/number');
|
|
64007
64427
|
const handleBitwiseOperator = require('./operators/bitwise');
|
64008
64428
|
const utils = require('../utils');
|
64009
64429
|
|
64010
|
-
const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
64011
|
-
|
64012
64430
|
const CastError = SchemaType.CastError;
|
64013
|
-
let Document;
|
64014
64431
|
|
64015
64432
|
/**
|
64016
64433
|
* Number SchemaType constructor.
|
@@ -64346,36 +64763,11 @@ SchemaNumber.prototype.enum = function(values, message) {
|
|
64346
64763
|
|
64347
64764
|
SchemaNumber.prototype.cast = function(value, doc, init) {
|
64348
64765
|
if (SchemaType._isRef(this, value, doc, init)) {
|
64349
|
-
// wait! we may need to cast this to a document
|
64350
|
-
|
64351
|
-
if (value === null || value === undefined) {
|
64352
|
-
return value;
|
64353
|
-
}
|
64354
|
-
|
64355
|
-
// lazy load
|
64356
|
-
Document || (Document = require('./../document'));
|
64357
|
-
|
64358
|
-
if (value instanceof Document) {
|
64359
|
-
value.$__.wasPopulated = true;
|
64360
|
-
return value;
|
64361
|
-
}
|
64362
|
-
|
64363
|
-
// setting a populated path
|
64364
64766
|
if (typeof value === 'number') {
|
64365
64767
|
return value;
|
64366
|
-
} else if (Buffer.isBuffer(value) || !utils.isObject(value)) {
|
64367
|
-
throw new CastError('Number', value, this.path, null, this);
|
64368
64768
|
}
|
64369
64769
|
|
64370
|
-
|
64371
|
-
// path to a plain object; cast to the Model used in
|
64372
|
-
// the population query.
|
64373
|
-
const path = doc.$__fullPath(this.path);
|
64374
|
-
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
64375
|
-
const pop = owner.populated(path, true);
|
64376
|
-
const ret = new pop.options[populateModelSymbol](value);
|
64377
|
-
ret.$__.wasPopulated = true;
|
64378
|
-
return ret;
|
64770
|
+
return this._castRef(value, doc, init);
|
64379
64771
|
}
|
64380
64772
|
|
64381
64773
|
const val = value && typeof value._id !== 'undefined' ?
|
@@ -64456,9 +64848,7 @@ SchemaNumber.prototype.castForQuery = function($conditional, val) {
|
|
64456
64848
|
|
64457
64849
|
module.exports = SchemaNumber;
|
64458
64850
|
|
64459
|
-
}
|
64460
|
-
},{"../../../is-buffer/index.js":179,"../cast/number":191,"../error/index":204,"../helpers/symbols":252,"../options/SchemaNumberOptions":264,"../schematype":295,"../utils":307,"./../document":194,"./operators/bitwise":287}],286:[function(require,module,exports){
|
64461
|
-
(function (Buffer){(function (){
|
64851
|
+
},{"../cast/number":191,"../error/index":204,"../options/SchemaNumberOptions":266,"../schematype":297,"../utils":309,"./operators/bitwise":289}],288:[function(require,module,exports){
|
64462
64852
|
/*!
|
64463
64853
|
* Module dependencies.
|
64464
64854
|
*/
|
@@ -64468,11 +64858,10 @@ module.exports = SchemaNumber;
|
|
64468
64858
|
const SchemaObjectIdOptions = require('../options/SchemaObjectIdOptions');
|
64469
64859
|
const SchemaType = require('../schematype');
|
64470
64860
|
const castObjectId = require('../cast/objectid');
|
64861
|
+
const getConstructorName = require('../helpers/getConstructorName');
|
64471
64862
|
const oid = require('../types/objectid');
|
64472
64863
|
const utils = require('../utils');
|
64473
64864
|
|
64474
|
-
const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
64475
|
-
|
64476
64865
|
const CastError = SchemaType.CastError;
|
64477
64866
|
let Document;
|
64478
64867
|
|
@@ -64686,45 +65075,13 @@ ObjectId.prototype.checkRequired = function checkRequired(value, doc) {
|
|
64686
65075
|
ObjectId.prototype.cast = function(value, doc, init) {
|
64687
65076
|
if (SchemaType._isRef(this, value, doc, init)) {
|
64688
65077
|
// wait! we may need to cast this to a document
|
64689
|
-
|
64690
|
-
if (value === null || value === undefined) {
|
64691
|
-
return value;
|
64692
|
-
}
|
64693
|
-
|
64694
|
-
// lazy load
|
64695
|
-
Document || (Document = require('./../document'));
|
64696
|
-
|
64697
|
-
if (value instanceof Document) {
|
64698
|
-
value.$__.wasPopulated = true;
|
64699
|
-
return value;
|
64700
|
-
}
|
64701
|
-
|
64702
|
-
// setting a populated path
|
64703
65078
|
if (value instanceof oid) {
|
64704
65079
|
return value;
|
64705
|
-
} else if ((value
|
65080
|
+
} else if ((getConstructorName(value) || '').toLowerCase() === 'objectid') {
|
64706
65081
|
return new oid(value.toHexString());
|
64707
|
-
} else if (Buffer.isBuffer(value) || !utils.isObject(value)) {
|
64708
|
-
throw new CastError('ObjectId', value, this.path, null, this);
|
64709
|
-
}
|
64710
|
-
|
64711
|
-
// Handle the case where user directly sets a populated
|
64712
|
-
// path to a plain object; cast to the Model used in
|
64713
|
-
// the population query.
|
64714
|
-
const path = doc.$__fullPath(this.path);
|
64715
|
-
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
64716
|
-
const pop = owner.populated(path, true);
|
64717
|
-
let ret = value;
|
64718
|
-
if (!doc.$__.populated ||
|
64719
|
-
!doc.$__.populated[path] ||
|
64720
|
-
!doc.$__.populated[path].options ||
|
64721
|
-
!doc.$__.populated[path].options.options ||
|
64722
|
-
!doc.$__.populated[path].options.options.lean) {
|
64723
|
-
ret = new pop.options[populateModelSymbol](value);
|
64724
|
-
ret.$__.wasPopulated = true;
|
64725
65082
|
}
|
64726
65083
|
|
64727
|
-
return
|
65084
|
+
return this._castRef(value, doc, init);
|
64728
65085
|
}
|
64729
65086
|
|
64730
65087
|
let castObjectId;
|
@@ -64791,8 +65148,7 @@ function resetId(v) {
|
|
64791
65148
|
|
64792
65149
|
module.exports = ObjectId;
|
64793
65150
|
|
64794
|
-
}
|
64795
|
-
},{"../../../is-buffer/index.js":179,"../cast/objectid":192,"../helpers/symbols":252,"../options/SchemaObjectIdOptions":265,"../schematype":295,"../types/objectid":305,"../utils":307,"./../document":194}],287:[function(require,module,exports){
|
65151
|
+
},{"../cast/objectid":192,"../helpers/getConstructorName":231,"../options/SchemaObjectIdOptions":267,"../schematype":297,"../types/objectid":307,"../utils":309,"./../document":194}],289:[function(require,module,exports){
|
64796
65152
|
(function (Buffer){(function (){
|
64797
65153
|
/*!
|
64798
65154
|
* Module requirements.
|
@@ -64834,7 +65190,7 @@ function _castNumber(path, num) {
|
|
64834
65190
|
module.exports = handleBitwiseOperator;
|
64835
65191
|
|
64836
65192
|
}).call(this)}).call(this,{"isBuffer":require("../../../../is-buffer/index.js")})
|
64837
|
-
},{"../../../../is-buffer/index.js":179,"../../error/cast":202}],
|
65193
|
+
},{"../../../../is-buffer/index.js":179,"../../error/cast":202}],290:[function(require,module,exports){
|
64838
65194
|
'use strict';
|
64839
65195
|
|
64840
65196
|
const castBoolean = require('../../cast/boolean');
|
@@ -64848,7 +65204,7 @@ module.exports = function(val) {
|
|
64848
65204
|
return castBoolean(val, path);
|
64849
65205
|
};
|
64850
65206
|
|
64851
|
-
},{"../../cast/boolean":188}],
|
65207
|
+
},{"../../cast/boolean":188}],291:[function(require,module,exports){
|
64852
65208
|
/*!
|
64853
65209
|
* Module requirements.
|
64854
65210
|
*/
|
@@ -64957,7 +65313,7 @@ function _castMinMaxDistance(self, val) {
|
|
64957
65313
|
}
|
64958
65314
|
}
|
64959
65315
|
|
64960
|
-
},{"../array":
|
65316
|
+
},{"../array":278,"./helpers":292}],292:[function(require,module,exports){
|
64961
65317
|
'use strict';
|
64962
65318
|
|
64963
65319
|
/*!
|
@@ -64991,7 +65347,7 @@ function castArraysOfNumbers(arr, self) {
|
|
64991
65347
|
});
|
64992
65348
|
}
|
64993
65349
|
|
64994
|
-
},{"../number":
|
65350
|
+
},{"../number":287}],293:[function(require,module,exports){
|
64995
65351
|
'use strict';
|
64996
65352
|
|
64997
65353
|
const CastError = require('../../error/cast');
|
@@ -65032,7 +65388,7 @@ module.exports = function(val, path) {
|
|
65032
65388
|
return val;
|
65033
65389
|
};
|
65034
65390
|
|
65035
|
-
},{"../../cast/boolean":188,"../../cast/string":193,"../../error/cast":202}],
|
65391
|
+
},{"../../cast/boolean":188,"../../cast/string":193,"../../error/cast":202}],294:[function(require,module,exports){
|
65036
65392
|
'use strict';
|
65037
65393
|
|
65038
65394
|
/*!
|
@@ -65054,8 +65410,7 @@ module.exports = function(val) {
|
|
65054
65410
|
return val;
|
65055
65411
|
};
|
65056
65412
|
|
65057
|
-
},{}],
|
65058
|
-
(function (Buffer){(function (){
|
65413
|
+
},{}],295:[function(require,module,exports){
|
65059
65414
|
'use strict';
|
65060
65415
|
|
65061
65416
|
/*!
|
@@ -65068,10 +65423,7 @@ const SchemaStringOptions = require('../options/SchemaStringOptions');
|
|
65068
65423
|
const castString = require('../cast/string');
|
65069
65424
|
const utils = require('../utils');
|
65070
65425
|
|
65071
|
-
const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
65072
|
-
|
65073
65426
|
const CastError = SchemaType.CastError;
|
65074
|
-
let Document;
|
65075
65427
|
|
65076
65428
|
/**
|
65077
65429
|
* String SchemaType constructor.
|
@@ -65642,36 +65994,11 @@ SchemaString.prototype.checkRequired = function checkRequired(value, doc) {
|
|
65642
65994
|
|
65643
65995
|
SchemaString.prototype.cast = function(value, doc, init) {
|
65644
65996
|
if (SchemaType._isRef(this, value, doc, init)) {
|
65645
|
-
// wait! we may need to cast this to a document
|
65646
|
-
|
65647
|
-
if (value === null || value === undefined) {
|
65648
|
-
return value;
|
65649
|
-
}
|
65650
|
-
|
65651
|
-
// lazy load
|
65652
|
-
Document || (Document = require('./../document'));
|
65653
|
-
|
65654
|
-
if (value instanceof Document) {
|
65655
|
-
value.$__.wasPopulated = true;
|
65656
|
-
return value;
|
65657
|
-
}
|
65658
|
-
|
65659
|
-
// setting a populated path
|
65660
65997
|
if (typeof value === 'string') {
|
65661
65998
|
return value;
|
65662
|
-
} else if (Buffer.isBuffer(value) || !utils.isObject(value)) {
|
65663
|
-
throw new CastError('string', value, this.path, null, this);
|
65664
65999
|
}
|
65665
66000
|
|
65666
|
-
|
65667
|
-
// path to a plain object; cast to the Model used in
|
65668
|
-
// the population query.
|
65669
|
-
const path = doc.$__fullPath(this.path);
|
65670
|
-
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
65671
|
-
const pop = owner.populated(path, true);
|
65672
|
-
const ret = new pop.options[populateModelSymbol](value);
|
65673
|
-
ret.$__.wasPopulated = true;
|
65674
|
-
return ret;
|
66001
|
+
return this._castRef(value, doc, init);
|
65675
66002
|
}
|
65676
66003
|
|
65677
66004
|
let castString;
|
@@ -65757,14 +66084,13 @@ SchemaString.prototype.castForQuery = function($conditional, val) {
|
|
65757
66084
|
|
65758
66085
|
module.exports = SchemaString;
|
65759
66086
|
|
65760
|
-
}
|
65761
|
-
},{"../../../is-buffer/index.js":179,"../cast/string":193,"../error/index":204,"../helpers/symbols":252,"../options/SchemaStringOptions":267,"../schematype":295,"../utils":307,"./../document":194}],294:[function(require,module,exports){
|
66087
|
+
},{"../cast/string":193,"../error/index":204,"../options/SchemaStringOptions":269,"../schematype":297,"../utils":309}],296:[function(require,module,exports){
|
65762
66088
|
'use strict';
|
65763
66089
|
|
65764
66090
|
exports.schemaMixedSymbol = Symbol.for('mongoose:schema_mixed');
|
65765
66091
|
|
65766
66092
|
exports.builtInMiddleware = Symbol.for('mongoose:built-in-middleware');
|
65767
|
-
},{}],
|
66093
|
+
},{}],297:[function(require,module,exports){
|
65768
66094
|
(function (Buffer){(function (){
|
65769
66095
|
'use strict';
|
65770
66096
|
|
@@ -65785,6 +66111,8 @@ const utils = require('./utils');
|
|
65785
66111
|
const validatorErrorSymbol = require('./helpers/symbols').validatorErrorSymbol;
|
65786
66112
|
const documentIsModified = require('./helpers/symbols').documentIsModified;
|
65787
66113
|
|
66114
|
+
const populateModelSymbol = require('./helpers/symbols').populateModelSymbol;
|
66115
|
+
|
65788
66116
|
const CastError = MongooseError.CastError;
|
65789
66117
|
const ValidatorError = MongooseError.ValidatorError;
|
65790
66118
|
|
@@ -65813,6 +66141,8 @@ function SchemaType(path, options, instance) {
|
|
65813
66141
|
[];
|
65814
66142
|
this.setters = [];
|
65815
66143
|
|
66144
|
+
this.splitPath();
|
66145
|
+
|
65816
66146
|
options = options || {};
|
65817
66147
|
const defaultOptions = this.constructor.defaultOptions || {};
|
65818
66148
|
const defaultOptionsKeys = Object.keys(defaultOptions);
|
@@ -65887,11 +66217,27 @@ function SchemaType(path, options, instance) {
|
|
65887
66217
|
}
|
65888
66218
|
|
65889
66219
|
/*!
|
65890
|
-
*
|
66220
|
+
* The class that Mongoose uses internally to instantiate this SchemaType's `options` property.
|
65891
66221
|
*/
|
65892
66222
|
|
65893
66223
|
SchemaType.prototype.OptionsConstructor = SchemaTypeOptions;
|
65894
66224
|
|
66225
|
+
/*!
|
66226
|
+
* ignore
|
66227
|
+
*/
|
66228
|
+
|
66229
|
+
SchemaType.prototype.splitPath = function() {
|
66230
|
+
if (this._presplitPath != null) {
|
66231
|
+
return this._presplitPath;
|
66232
|
+
}
|
66233
|
+
if (this.path == null) {
|
66234
|
+
return undefined;
|
66235
|
+
}
|
66236
|
+
|
66237
|
+
this._presplitPath = this.path.indexOf('.') === -1 ? [this.path] : this.path.split('.');
|
66238
|
+
return this._presplitPath;
|
66239
|
+
};
|
66240
|
+
|
65895
66241
|
/**
|
65896
66242
|
* Get/set the function used to cast arbitrary values to this type.
|
65897
66243
|
*
|
@@ -65958,6 +66304,19 @@ SchemaType.prototype.castFunction = function castFunction(caster) {
|
|
65958
66304
|
return this._castFunction;
|
65959
66305
|
};
|
65960
66306
|
|
66307
|
+
/**
|
66308
|
+
* The function that Mongoose calls to cast arbitrary values to this SchemaType.
|
66309
|
+
*
|
66310
|
+
* @param {Object} value value to cast
|
66311
|
+
* @param {Document} doc document that triggers the casting
|
66312
|
+
* @param {Boolean} init
|
66313
|
+
* @api public
|
66314
|
+
*/
|
66315
|
+
|
66316
|
+
SchemaType.prototype.cast = function cast() {
|
66317
|
+
throw new Error('Base SchemaType class does not implement a `cast()` function');
|
66318
|
+
};
|
66319
|
+
|
65961
66320
|
/**
|
65962
66321
|
* Sets a default option for this schema type.
|
65963
66322
|
*
|
@@ -66824,8 +67183,8 @@ SchemaType.prototype._applySetters = function(value, scope, init) {
|
|
66824
67183
|
}
|
66825
67184
|
const setters = this.setters;
|
66826
67185
|
|
66827
|
-
for (
|
66828
|
-
v =
|
67186
|
+
for (let i = setters.length - 1; i >= 0; i--) {
|
67187
|
+
v = setters[i].call(scope, v, this);
|
66829
67188
|
}
|
66830
67189
|
|
66831
67190
|
return v;
|
@@ -66850,7 +67209,6 @@ SchemaType.prototype._castNullish = function _castNullish(v) {
|
|
66850
67209
|
|
66851
67210
|
SchemaType.prototype.applySetters = function(value, scope, init, priorVal, options) {
|
66852
67211
|
let v = this._applySetters(value, scope, init, priorVal, options);
|
66853
|
-
|
66854
67212
|
if (v == null) {
|
66855
67213
|
return this._castNullish(v);
|
66856
67214
|
}
|
@@ -67182,11 +67540,54 @@ SchemaType._isRef = function(self, value, doc, init) {
|
|
67182
67540
|
) {
|
67183
67541
|
return true;
|
67184
67542
|
}
|
67543
|
+
|
67544
|
+
return init;
|
67185
67545
|
}
|
67186
67546
|
|
67187
67547
|
return false;
|
67188
67548
|
};
|
67189
67549
|
|
67550
|
+
/*!
|
67551
|
+
* ignore
|
67552
|
+
*/
|
67553
|
+
|
67554
|
+
SchemaType.prototype._castRef = function _castRef(value, doc, init) {
|
67555
|
+
if (value == null) {
|
67556
|
+
return value;
|
67557
|
+
}
|
67558
|
+
|
67559
|
+
if (value.$__ != null) {
|
67560
|
+
value.$__.wasPopulated = true;
|
67561
|
+
return value;
|
67562
|
+
}
|
67563
|
+
|
67564
|
+
// setting a populated path
|
67565
|
+
if (Buffer.isBuffer(value) || !utils.isObject(value)) {
|
67566
|
+
if (init) {
|
67567
|
+
return value;
|
67568
|
+
}
|
67569
|
+
throw new CastError(this.instance, value, this.path, null, this);
|
67570
|
+
}
|
67571
|
+
|
67572
|
+
// Handle the case where user directly sets a populated
|
67573
|
+
// path to a plain object; cast to the Model used in
|
67574
|
+
// the population query.
|
67575
|
+
const path = doc.$__fullPath(this.path);
|
67576
|
+
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
67577
|
+
const pop = owner.populated(path, true);
|
67578
|
+
let ret = value;
|
67579
|
+
if (!doc.$__.populated ||
|
67580
|
+
!doc.$__.populated[path] ||
|
67581
|
+
!doc.$__.populated[path].options ||
|
67582
|
+
!doc.$__.populated[path].options.options ||
|
67583
|
+
!doc.$__.populated[path].options.options.lean) {
|
67584
|
+
ret = new pop.options[populateModelSymbol](value);
|
67585
|
+
ret.$__.wasPopulated = true;
|
67586
|
+
}
|
67587
|
+
|
67588
|
+
return ret;
|
67589
|
+
};
|
67590
|
+
|
67190
67591
|
/*!
|
67191
67592
|
* ignore
|
67192
67593
|
*/
|
@@ -67365,7 +67766,7 @@ exports.CastError = CastError;
|
|
67365
67766
|
exports.ValidatorError = ValidatorError;
|
67366
67767
|
|
67367
67768
|
}).call(this)}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
|
67368
|
-
},{"../../is-buffer/index.js":179,"./error/index":204,"./helpers/get":
|
67769
|
+
},{"../../is-buffer/index.js":179,"./error/index":204,"./helpers/get":230,"./helpers/immediate":233,"./helpers/schematype/handleImmutable":252,"./helpers/symbols":254,"./options/SchemaTypeOptions":270,"./schema/operators/exists":290,"./schema/operators/type":294,"./utils":309,"util":334}],298:[function(require,module,exports){
|
67369
67770
|
|
67370
67771
|
/*!
|
67371
67772
|
* Module dependencies.
|
@@ -67547,7 +67948,7 @@ StateMachine.prototype.map = function map() {
|
|
67547
67948
|
return this.map.apply(this, arguments);
|
67548
67949
|
};
|
67549
67950
|
|
67550
|
-
},{"./utils":
|
67951
|
+
},{"./utils":309}],299:[function(require,module,exports){
|
67551
67952
|
/*!
|
67552
67953
|
* Module dependencies.
|
67553
67954
|
*/
|
@@ -67555,7 +67956,6 @@ StateMachine.prototype.map = function map() {
|
|
67555
67956
|
'use strict';
|
67556
67957
|
|
67557
67958
|
const CoreMongooseArray = require('./core_array');
|
67558
|
-
const Document = require('../document');
|
67559
67959
|
|
67560
67960
|
const arrayAtomicsSymbol = require('../helpers/symbols').arrayAtomicsSymbol;
|
67561
67961
|
const arrayParentSymbol = require('../helpers/symbols').arrayParentSymbol;
|
@@ -67580,28 +67980,44 @@ const _basePush = Array.prototype.push;
|
|
67580
67980
|
*/
|
67581
67981
|
|
67582
67982
|
function MongooseArray(values, path, doc, schematype) {
|
67583
|
-
|
67584
|
-
arr[arrayAtomicsSymbol] = {};
|
67983
|
+
let arr;
|
67585
67984
|
|
67586
67985
|
if (Array.isArray(values)) {
|
67587
67986
|
const len = values.length;
|
67588
|
-
|
67589
|
-
|
67987
|
+
|
67988
|
+
// Perf optimizations for small arrays: much faster to use `...` than `for` + `push`,
|
67989
|
+
// but large arrays may cause stack overflows. And for arrays of length 0/1, just
|
67990
|
+
// modifying the array is faster. Seems small, but adds up when you have a document
|
67991
|
+
// with thousands of nested arrays.
|
67992
|
+
if (len === 0) {
|
67993
|
+
arr = new CoreMongooseArray();
|
67994
|
+
} else if (len === 1) {
|
67995
|
+
arr = new CoreMongooseArray(1);
|
67996
|
+
arr[0] = values[0];
|
67997
|
+
} else if (len < 10000) {
|
67998
|
+
arr = new CoreMongooseArray();
|
67999
|
+
_basePush.apply(arr, values);
|
68000
|
+
} else {
|
68001
|
+
arr = new CoreMongooseArray();
|
68002
|
+
for (let i = 0; i < len; ++i) {
|
68003
|
+
_basePush.call(arr, values[i]);
|
68004
|
+
}
|
67590
68005
|
}
|
67591
68006
|
|
67592
68007
|
if (values[arrayAtomicsSymbol] != null) {
|
67593
68008
|
arr[arrayAtomicsSymbol] = values[arrayAtomicsSymbol];
|
67594
68009
|
}
|
68010
|
+
} else {
|
68011
|
+
arr = new CoreMongooseArray();
|
67595
68012
|
}
|
67596
68013
|
|
67597
68014
|
arr[arrayPathSymbol] = path;
|
67598
|
-
arr[arraySchemaSymbol] = void 0;
|
67599
68015
|
|
67600
68016
|
// Because doc comes from the context of another function, doc === global
|
67601
68017
|
// can happen if there was a null somewhere up the chain (see #3020)
|
67602
68018
|
// RB Jun 17, 2015 updated to check for presence of expected paths instead
|
67603
68019
|
// to make more proof against unusual node environments
|
67604
|
-
if (doc && doc
|
68020
|
+
if (doc != null && doc.$__ != null) {
|
67605
68021
|
arr[arrayParentSymbol] = doc;
|
67606
68022
|
arr[arraySchemaSymbol] = schematype || doc.schema.path(path);
|
67607
68023
|
}
|
@@ -67615,7 +68031,7 @@ function MongooseArray(values, path, doc, schematype) {
|
|
67615
68031
|
|
67616
68032
|
module.exports = exports = MongooseArray;
|
67617
68033
|
|
67618
|
-
},{"../
|
68034
|
+
},{"../helpers/symbols":254,"./core_array":301}],300:[function(require,module,exports){
|
67619
68035
|
/*!
|
67620
68036
|
* Module dependencies.
|
67621
68037
|
*/
|
@@ -67893,7 +68309,7 @@ MongooseBuffer.Binary = Binary;
|
|
67893
68309
|
|
67894
68310
|
module.exports = MongooseBuffer;
|
67895
68311
|
|
67896
|
-
},{"../driver":196,"../utils":
|
68312
|
+
},{"../driver":196,"../utils":309,"safe-buffer":329}],301:[function(require,module,exports){
|
67897
68313
|
(function (Buffer){(function (){
|
67898
68314
|
'use strict';
|
67899
68315
|
|
@@ -67991,7 +68407,7 @@ class CoreMongooseArray extends Array {
|
|
67991
68407
|
*/
|
67992
68408
|
|
67993
68409
|
$atomics() {
|
67994
|
-
return this[arrayAtomicsSymbol];
|
68410
|
+
return this[arrayAtomicsSymbol] || {};
|
67995
68411
|
}
|
67996
68412
|
|
67997
68413
|
/*!
|
@@ -68145,8 +68561,8 @@ class CoreMongooseArray extends Array {
|
|
68145
68561
|
|
68146
68562
|
// gh-2399
|
68147
68563
|
// we should cast model only when it's not a discriminator
|
68148
|
-
const isDisc = value
|
68149
|
-
value.
|
68564
|
+
const isDisc = value.$__schema && value.$__schema.discriminatorMapping &&
|
68565
|
+
value.$__schema.discriminatorMapping.key !== undefined;
|
68150
68566
|
if (!isDisc) {
|
68151
68567
|
value = new Model(value);
|
68152
68568
|
}
|
@@ -68225,6 +68641,8 @@ class CoreMongooseArray extends Array {
|
|
68225
68641
|
return this;
|
68226
68642
|
}
|
68227
68643
|
|
68644
|
+
this[arrayAtomicsSymbol] || (this[arrayAtomicsSymbol] = {});
|
68645
|
+
|
68228
68646
|
const atomics = this[arrayAtomicsSymbol];
|
68229
68647
|
|
68230
68648
|
// reset pop/shift after save
|
@@ -68865,7 +69283,7 @@ function _checkManualPopulation(arr, docs) {
|
|
68865
69283
|
module.exports = CoreMongooseArray;
|
68866
69284
|
|
68867
69285
|
}).call(this)}).call(this,{"isBuffer":require("../../../is-buffer/index.js")})
|
68868
|
-
},{"../../../is-buffer/index.js":179,"../document":194,"../error/mongooseError":207,"../helpers/document/cleanModifiedSubpaths":
|
69286
|
+
},{"../../../is-buffer/index.js":179,"../document":194,"../error/mongooseError":207,"../helpers/document/cleanModifiedSubpaths":226,"../helpers/get":230,"../helpers/symbols":254,"../options":259,"../utils":309,"./embedded":304,"./objectid":307,"util":334}],302:[function(require,module,exports){
|
68869
69287
|
/**
|
68870
69288
|
* ObjectId type constructor
|
68871
69289
|
*
|
@@ -68880,7 +69298,7 @@ module.exports = CoreMongooseArray;
|
|
68880
69298
|
|
68881
69299
|
module.exports = require('../driver').get().Decimal128;
|
68882
69300
|
|
68883
|
-
},{"../driver":196}],
|
69301
|
+
},{"../driver":196}],303:[function(require,module,exports){
|
68884
69302
|
(function (Buffer){(function (){
|
68885
69303
|
'use strict';
|
68886
69304
|
|
@@ -68980,7 +69398,7 @@ class CoreDocumentArray extends CoreMongooseArray {
|
|
68980
69398
|
Constructor.discriminators[value[Constructor.schema.options.discriminatorKey]]) {
|
68981
69399
|
Constructor = Constructor.discriminators[value[Constructor.schema.options.discriminatorKey]];
|
68982
69400
|
} else {
|
68983
|
-
const constructorByValue = getDiscriminatorByValue(Constructor, value[Constructor.schema.options.discriminatorKey]);
|
69401
|
+
const constructorByValue = getDiscriminatorByValue(Constructor.discriminators, value[Constructor.schema.options.discriminatorKey]);
|
68984
69402
|
if (constructorByValue) {
|
68985
69403
|
Constructor = constructorByValue;
|
68986
69404
|
}
|
@@ -69173,7 +69591,7 @@ class CoreDocumentArray extends CoreMongooseArray {
|
|
69173
69591
|
Constructor.discriminators[obj[Constructor.schema.options.discriminatorKey]]) {
|
69174
69592
|
Constructor = Constructor.discriminators[obj[Constructor.schema.options.discriminatorKey]];
|
69175
69593
|
} else {
|
69176
|
-
const constructorByValue = getDiscriminatorByValue(Constructor, obj[Constructor.schema.options.discriminatorKey]);
|
69594
|
+
const constructorByValue = getDiscriminatorByValue(Constructor.discriminators, obj[Constructor.schema.options.discriminatorKey]);
|
69177
69595
|
if (constructorByValue) {
|
69178
69596
|
Constructor = constructorByValue;
|
69179
69597
|
}
|
@@ -69332,7 +69750,7 @@ function MongooseDocumentArray(values, path, doc) {
|
|
69332
69750
|
module.exports = MongooseDocumentArray;
|
69333
69751
|
|
69334
69752
|
}).call(this)}).call(this,{"isBuffer":require("../../../is-buffer/index.js")})
|
69335
|
-
},{"../../../is-buffer/index.js":179,"../cast/objectid":192,"../document":194,"../helpers/discriminator/getDiscriminatorByValue":
|
69753
|
+
},{"../../../is-buffer/index.js":179,"../cast/objectid":192,"../document":194,"../helpers/discriminator/getDiscriminatorByValue":224,"../helpers/symbols":254,"../options":259,"../utils":309,"./core_array":301,"./objectid":307,"util":334}],304:[function(require,module,exports){
|
69336
69754
|
/* eslint no-func-assign: 1 */
|
69337
69755
|
|
69338
69756
|
/*!
|
@@ -69732,7 +70150,7 @@ EmbeddedDocument.prototype.ownerDocument = function() {
|
|
69732
70150
|
|
69733
70151
|
EmbeddedDocument.prototype.$__fullPath = function(path) {
|
69734
70152
|
if (!this.$__.fullPath) {
|
69735
|
-
let parent = this;
|
70153
|
+
let parent = this;
|
69736
70154
|
if (!parent[documentArrayParent]) {
|
69737
70155
|
return path;
|
69738
70156
|
}
|
@@ -69794,7 +70212,7 @@ EmbeddedDocument.prototype.parentArray = function() {
|
|
69794
70212
|
|
69795
70213
|
module.exports = EmbeddedDocument;
|
69796
70214
|
|
69797
|
-
},{"../document_provider":195,"../error/validation":215,"../helpers/get":
|
70215
|
+
},{"../document_provider":195,"../error/validation":215,"../helpers/get":230,"../helpers/immediate":233,"../helpers/promiseOrCallback":243,"../helpers/symbols":254,"../options":259,"events":177,"util":334}],305:[function(require,module,exports){
|
69798
70216
|
|
69799
70217
|
/*!
|
69800
70218
|
* Module exports.
|
@@ -69816,13 +70234,15 @@ exports.Map = require('./map');
|
|
69816
70234
|
|
69817
70235
|
exports.Subdocument = require('./subdocument');
|
69818
70236
|
|
69819
|
-
},{"./array":
|
70237
|
+
},{"./array":299,"./buffer":300,"./decimal128":302,"./documentarray":303,"./embedded":304,"./map":306,"./objectid":307,"./subdocument":308}],306:[function(require,module,exports){
|
69820
70238
|
'use strict';
|
69821
70239
|
|
69822
70240
|
const Mixed = require('../schema/mixed');
|
69823
70241
|
const ObjectId = require('./objectid');
|
70242
|
+
const clone = require('../helpers/clone');
|
69824
70243
|
const deepEqual = require('../utils').deepEqual;
|
69825
70244
|
const get = require('../helpers/get');
|
70245
|
+
const getConstructorName = require('../helpers/getConstructorName');
|
69826
70246
|
const handleSpreadDoc = require('../helpers/document/handleSpreadDoc');
|
69827
70247
|
const util = require('util');
|
69828
70248
|
const specialProperties = require('../helpers/specialProperties');
|
@@ -69835,7 +70255,7 @@ const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
|
69835
70255
|
|
69836
70256
|
class MongooseMap extends Map {
|
69837
70257
|
constructor(v, path, doc, schemaType) {
|
69838
|
-
if (v
|
70258
|
+
if (getConstructorName(v) === 'Object') {
|
69839
70259
|
v = Object.keys(v).reduce((arr, key) => arr.concat([[key, v[key]]]), []);
|
69840
70260
|
}
|
69841
70261
|
super(v);
|
@@ -69952,7 +70372,7 @@ class MongooseMap extends Map {
|
|
69952
70372
|
const ret = {};
|
69953
70373
|
const keys = this.keys();
|
69954
70374
|
for (const key of keys) {
|
69955
|
-
ret[key] = this.get(key);
|
70375
|
+
ret[key] = clone(this.get(key));
|
69956
70376
|
}
|
69957
70377
|
return ret;
|
69958
70378
|
}
|
@@ -70056,7 +70476,7 @@ function checkValidKey(key) {
|
|
70056
70476
|
|
70057
70477
|
module.exports = MongooseMap;
|
70058
70478
|
|
70059
|
-
},{"../helpers/document/handleSpreadDoc":
|
70479
|
+
},{"../helpers/clone":219,"../helpers/document/handleSpreadDoc":229,"../helpers/get":230,"../helpers/getConstructorName":231,"../helpers/specialProperties":253,"../helpers/symbols":254,"../schema/mixed":286,"../utils":309,"./objectid":307,"util":334}],307:[function(require,module,exports){
|
70060
70480
|
/**
|
70061
70481
|
* ObjectId type constructor
|
70062
70482
|
*
|
@@ -70088,7 +70508,7 @@ ObjectId.prototype[objectIdSymbol] = true;
|
|
70088
70508
|
|
70089
70509
|
module.exports = ObjectId;
|
70090
70510
|
|
70091
|
-
},{"../driver":196,"../helpers/symbols":
|
70511
|
+
},{"../driver":196,"../helpers/symbols":254}],308:[function(require,module,exports){
|
70092
70512
|
'use strict';
|
70093
70513
|
|
70094
70514
|
const Document = require('../document');
|
@@ -70116,9 +70536,9 @@ function Subdocument(value, fields, parent, skipId, options) {
|
|
70116
70536
|
let initedPaths = null;
|
70117
70537
|
if (hasPriorDoc) {
|
70118
70538
|
this._doc = Object.assign({}, options.priorDoc._doc);
|
70119
|
-
delete this._doc[this.
|
70539
|
+
delete this._doc[this.$__schema.options.discriminatorKey];
|
70120
70540
|
initedPaths = Object.keys(options.priorDoc._doc || {}).
|
70121
|
-
filter(key => key !== this.
|
70541
|
+
filter(key => key !== this.$__schema.options.discriminatorKey);
|
70122
70542
|
}
|
70123
70543
|
if (parent != null) {
|
70124
70544
|
// If setting a nested path, should copy isNew from parent re: gh-7048
|
@@ -70134,7 +70554,7 @@ function Subdocument(value, fields, parent, skipId, options) {
|
|
70134
70554
|
if (!this.$__.activePaths.states.modify[key] &&
|
70135
70555
|
!this.$__.activePaths.states.default[key] &&
|
70136
70556
|
!this.$__.$setCalled.has(key)) {
|
70137
|
-
const schematype = this.
|
70557
|
+
const schematype = this.$__schema.path(key);
|
70138
70558
|
const def = schematype == null ? void 0 : schematype.getDefault(this);
|
70139
70559
|
if (def === void 0) {
|
70140
70560
|
delete this._doc[key];
|
@@ -70391,7 +70811,7 @@ function registerRemoveListener(sub) {
|
|
70391
70811
|
owner.on('remove', emitRemove);
|
70392
70812
|
}
|
70393
70813
|
|
70394
|
-
},{"../document":194,"../helpers/immediate":
|
70814
|
+
},{"../document":194,"../helpers/immediate":233,"../helpers/promiseOrCallback":243,"../helpers/symbols":254,"../options":259}],309:[function(require,module,exports){
|
70395
70815
|
(function (process){(function (){
|
70396
70816
|
'use strict';
|
70397
70817
|
|
@@ -70407,11 +70827,13 @@ const Decimal = require('./types/decimal128');
|
|
70407
70827
|
const ObjectId = require('./types/objectid');
|
70408
70828
|
const PopulateOptions = require('./options/PopulateOptions');
|
70409
70829
|
const clone = require('./helpers/clone');
|
70830
|
+
const immediate = require('./helpers/immediate');
|
70410
70831
|
const isObject = require('./helpers/isObject');
|
70411
70832
|
const isBsonType = require('./helpers/isBsonType');
|
70412
70833
|
const getFunctionName = require('./helpers/getFunctionName');
|
70413
70834
|
const isMongooseObject = require('./helpers/isMongooseObject');
|
70414
70835
|
const promiseOrCallback = require('./helpers/promiseOrCallback');
|
70836
|
+
const schemaMerge = require('./helpers/schema/merge');
|
70415
70837
|
const specialProperties = require('./helpers/specialProperties');
|
70416
70838
|
|
70417
70839
|
let Document;
|
@@ -70677,7 +71099,7 @@ exports.merge = function merge(to, from, options, path) {
|
|
70677
71099
|
continue;
|
70678
71100
|
} else if (from[key].instanceOfSchema) {
|
70679
71101
|
if (to[key].instanceOfSchema) {
|
70680
|
-
to[key]
|
71102
|
+
schemaMerge(to[key], from[key].clone(), options.isDiscriminatorSchemaMerge);
|
70681
71103
|
} else {
|
70682
71104
|
to[key] = from[key].clone();
|
70683
71105
|
}
|
@@ -70834,7 +71256,7 @@ exports.tick = function tick(callback) {
|
|
70834
71256
|
} catch (err) {
|
70835
71257
|
// only nextTick on err to get out of
|
70836
71258
|
// the event loop and avoid state corruption.
|
70837
|
-
|
71259
|
+
immediate(function() {
|
70838
71260
|
throw err;
|
70839
71261
|
});
|
70840
71262
|
}
|
@@ -71150,23 +71572,23 @@ exports.isArrayIndex = function(val) {
|
|
71150
71572
|
*/
|
71151
71573
|
|
71152
71574
|
exports.array.unique = function(arr) {
|
71153
|
-
const primitives =
|
71154
|
-
const ids =
|
71575
|
+
const primitives = new Set();
|
71576
|
+
const ids = new Set();
|
71155
71577
|
const ret = [];
|
71156
71578
|
|
71157
71579
|
for (const item of arr) {
|
71158
71580
|
if (typeof item === 'number' || typeof item === 'string' || item == null) {
|
71159
|
-
if (primitives
|
71581
|
+
if (primitives.has(item)) {
|
71160
71582
|
continue;
|
71161
71583
|
}
|
71162
71584
|
ret.push(item);
|
71163
|
-
primitives
|
71585
|
+
primitives.add(item);
|
71164
71586
|
} else if (item instanceof ObjectId) {
|
71165
|
-
if (ids
|
71587
|
+
if (ids.has(item.toString())) {
|
71166
71588
|
continue;
|
71167
71589
|
}
|
71168
71590
|
ret.push(item);
|
71169
|
-
ids
|
71591
|
+
ids.add(item.toString());
|
71170
71592
|
} else {
|
71171
71593
|
ret.push(item);
|
71172
71594
|
}
|
@@ -71316,8 +71738,23 @@ exports.getOption = function(name) {
|
|
71316
71738
|
|
71317
71739
|
exports.noop = function() {};
|
71318
71740
|
|
71741
|
+
exports.errorToPOJO = function errorToPOJO(error) {
|
71742
|
+
const isError = error instanceof Error;
|
71743
|
+
if (!isError) {
|
71744
|
+
throw new Error('`error` must be `instanceof Error`.');
|
71745
|
+
}
|
71746
|
+
|
71747
|
+
const ret = {};
|
71748
|
+
for (const properyName of Object.getOwnPropertyNames(error)) {
|
71749
|
+
ret[properyName] = error[properyName];
|
71750
|
+
}
|
71751
|
+
return ret;
|
71752
|
+
};
|
71753
|
+
|
71754
|
+
exports.nodeMajorVersion = parseInt(process.versions.node.split('.')[0], 10);
|
71755
|
+
|
71319
71756
|
}).call(this)}).call(this,require('_process'))
|
71320
|
-
},{"./document":194,"./helpers/clone":219,"./helpers/getFunctionName":
|
71757
|
+
},{"./document":194,"./helpers/clone":219,"./helpers/getFunctionName":232,"./helpers/immediate":233,"./helpers/isBsonType":234,"./helpers/isMongooseObject":235,"./helpers/isObject":236,"./helpers/promiseOrCallback":243,"./helpers/schema/merge":251,"./helpers/specialProperties":253,"./options/PopulateOptions":260,"./types/decimal128":302,"./types/objectid":307,"_process":327,"mpath":312,"ms":311,"safe-buffer":329,"sliced":330}],310:[function(require,module,exports){
|
71321
71758
|
'use strict';
|
71322
71759
|
|
71323
71760
|
const utils = require('./utils');
|
@@ -71495,7 +71932,7 @@ VirtualType.prototype.applySetters = function(value, doc) {
|
|
71495
71932
|
|
71496
71933
|
module.exports = VirtualType;
|
71497
71934
|
|
71498
|
-
},{"./utils":
|
71935
|
+
},{"./utils":309}],311:[function(require,module,exports){
|
71499
71936
|
/**
|
71500
71937
|
* Helpers.
|
71501
71938
|
*/
|
@@ -71659,12 +72096,12 @@ function plural(ms, msAbs, n, name) {
|
|
71659
72096
|
return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
|
71660
72097
|
}
|
71661
72098
|
|
71662
|
-
},{}],
|
72099
|
+
},{}],312:[function(require,module,exports){
|
71663
72100
|
'use strict';
|
71664
72101
|
|
71665
72102
|
module.exports = exports = require('./lib');
|
71666
72103
|
|
71667
|
-
},{"./lib":
|
72104
|
+
},{"./lib":313}],313:[function(require,module,exports){
|
71668
72105
|
/* eslint strict:off */
|
71669
72106
|
/* eslint no-var: off */
|
71670
72107
|
/* eslint no-redeclare: off */
|
@@ -71731,6 +72168,9 @@ exports.get = function(path, o, special, map) {
|
|
71731
72168
|
|
71732
72169
|
for (var i = 0; i < parts.length; ++i) {
|
71733
72170
|
part = parts[i];
|
72171
|
+
if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') {
|
72172
|
+
throw new TypeError('Each segment of path to `get()` must be a string or number, got ' + typeof parts[i]);
|
72173
|
+
}
|
71734
72174
|
|
71735
72175
|
if (Array.isArray(obj) && !/^\d+$/.test(part)) {
|
71736
72176
|
// reading a property from the array items
|
@@ -71779,6 +72219,9 @@ exports.has = function(path, o) {
|
|
71779
72219
|
var len = parts.length;
|
71780
72220
|
var cur = o;
|
71781
72221
|
for (var i = 0; i < len; ++i) {
|
72222
|
+
if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') {
|
72223
|
+
throw new TypeError('Each segment of path to `has()` must be a string or number, got ' + typeof parts[i]);
|
72224
|
+
}
|
71782
72225
|
if (cur == null || typeof cur !== 'object' || !(parts[i] in cur)) {
|
71783
72226
|
return false;
|
71784
72227
|
}
|
@@ -71810,6 +72253,9 @@ exports.unset = function(path, o) {
|
|
71810
72253
|
if (cur == null || typeof cur !== 'object' || !(parts[i] in cur)) {
|
71811
72254
|
return false;
|
71812
72255
|
}
|
72256
|
+
if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') {
|
72257
|
+
throw new TypeError('Each segment of path to `unset()` must be a string or number, got ' + typeof parts[i]);
|
72258
|
+
}
|
71813
72259
|
// Disallow any updates to __proto__ or special properties.
|
71814
72260
|
if (ignoreProperties.indexOf(parts[i]) !== -1) {
|
71815
72261
|
return false;
|
@@ -71860,6 +72306,9 @@ exports.set = function(path, val, o, special, map, _copying) {
|
|
71860
72306
|
if (null == o) return;
|
71861
72307
|
|
71862
72308
|
for (var i = 0; i < parts.length; ++i) {
|
72309
|
+
if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') {
|
72310
|
+
throw new TypeError('Each segment of path to `set()` must be a string or number, got ' + typeof parts[i]);
|
72311
|
+
}
|
71863
72312
|
// Silently ignore any updates to `__proto__`, these are potentially
|
71864
72313
|
// dangerous if using mpath with unsanitized data.
|
71865
72314
|
if (ignoreProperties.indexOf(parts[i]) !== -1) {
|
@@ -71979,7 +72428,7 @@ function _setArray(obj, val, part, lookup, special, map) {
|
|
71979
72428
|
function K(v) {
|
71980
72429
|
return v;
|
71981
72430
|
}
|
71982
|
-
},{"./stringToParts":
|
72431
|
+
},{"./stringToParts":314}],314:[function(require,module,exports){
|
71983
72432
|
'use strict';
|
71984
72433
|
|
71985
72434
|
module.exports = function stringToParts(str) {
|
@@ -72028,7 +72477,7 @@ module.exports = function stringToParts(str) {
|
|
72028
72477
|
|
72029
72478
|
return result;
|
72030
72479
|
};
|
72031
|
-
},{}],
|
72480
|
+
},{}],315:[function(require,module,exports){
|
72032
72481
|
'use strict';
|
72033
72482
|
|
72034
72483
|
/**
|
@@ -72076,7 +72525,7 @@ function notImplemented(method) {
|
|
72076
72525
|
};
|
72077
72526
|
}
|
72078
72527
|
|
72079
|
-
},{}],
|
72528
|
+
},{}],316:[function(require,module,exports){
|
72080
72529
|
'use strict';
|
72081
72530
|
|
72082
72531
|
var env = require('../env');
|
@@ -72091,7 +72540,7 @@ module.exports =
|
|
72091
72540
|
require('./collection');
|
72092
72541
|
|
72093
72542
|
|
72094
|
-
},{"../env":
|
72543
|
+
},{"../env":318,"./collection":315,"./node":317}],317:[function(require,module,exports){
|
72095
72544
|
'use strict';
|
72096
72545
|
|
72097
72546
|
/**
|
@@ -72244,7 +72693,7 @@ NodeCollection.prototype.findCursor = function(match, findOptions) {
|
|
72244
72693
|
|
72245
72694
|
module.exports = exports = NodeCollection;
|
72246
72695
|
|
72247
|
-
},{"../utils":
|
72696
|
+
},{"../utils":321,"./collection":315}],318:[function(require,module,exports){
|
72248
72697
|
(function (process,global,Buffer){(function (){
|
72249
72698
|
'use strict';
|
72250
72699
|
|
@@ -72270,7 +72719,7 @@ exports.type = exports.isNode ? 'node'
|
|
72270
72719
|
: 'unknown';
|
72271
72720
|
|
72272
72721
|
}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
|
72273
|
-
},{"_process":
|
72722
|
+
},{"_process":327,"buffer":129}],319:[function(require,module,exports){
|
72274
72723
|
'use strict';
|
72275
72724
|
|
72276
72725
|
/**
|
@@ -75524,7 +75973,7 @@ module.exports = exports = Query;
|
|
75524
75973
|
// TODO
|
75525
75974
|
// test utils
|
75526
75975
|
|
75527
|
-
},{"./collection":
|
75976
|
+
},{"./collection":316,"./collection/collection":315,"./env":318,"./permissions":320,"./utils":321,"assert":103,"bluebird":108,"debug":322,"sliced":330,"util":334}],320:[function(require,module,exports){
|
75528
75977
|
'use strict';
|
75529
75978
|
|
75530
75979
|
var denied = exports;
|
@@ -75614,7 +76063,7 @@ denied.count.maxScan =
|
|
75614
76063
|
denied.count.snapshot =
|
75615
76064
|
denied.count.tailable = true;
|
75616
76065
|
|
75617
|
-
},{}],
|
76066
|
+
},{}],321:[function(require,module,exports){
|
75618
76067
|
(function (process,setImmediate){(function (){
|
75619
76068
|
'use strict';
|
75620
76069
|
|
@@ -75788,6 +76237,9 @@ exports.mergeClone = function mergeClone(to, from) {
|
|
75788
76237
|
|
75789
76238
|
while (i--) {
|
75790
76239
|
key = keys[i];
|
76240
|
+
if (specialProperties.indexOf(key) !== -1) {
|
76241
|
+
continue;
|
76242
|
+
}
|
75791
76243
|
if ('undefined' === typeof to[key]) {
|
75792
76244
|
to[key] = clone(from[key]);
|
75793
76245
|
} else {
|
@@ -75978,7 +76430,7 @@ exports.isArgumentsObject = function(v) {
|
|
75978
76430
|
};
|
75979
76431
|
|
75980
76432
|
}).call(this)}).call(this,require('_process'),require("timers").setImmediate)
|
75981
|
-
},{"_process":
|
76433
|
+
},{"_process":327,"regexp-clone":328,"safe-buffer":324,"timers":331}],322:[function(require,module,exports){
|
75982
76434
|
(function (process){(function (){
|
75983
76435
|
/**
|
75984
76436
|
* This is the web browser implementation of `debug()`.
|
@@ -76177,7 +76629,7 @@ function localstorage() {
|
|
76177
76629
|
}
|
76178
76630
|
|
76179
76631
|
}).call(this)}).call(this,require('_process'))
|
76180
|
-
},{"./debug":
|
76632
|
+
},{"./debug":323,"_process":327}],323:[function(require,module,exports){
|
76181
76633
|
|
76182
76634
|
/**
|
76183
76635
|
* This is the common logic for both the Node.js and web browser
|
@@ -76404,7 +76856,7 @@ function coerce(val) {
|
|
76404
76856
|
return val;
|
76405
76857
|
}
|
76406
76858
|
|
76407
|
-
},{"ms":
|
76859
|
+
},{"ms":325}],324:[function(require,module,exports){
|
76408
76860
|
/* eslint-disable node/no-deprecated-api */
|
76409
76861
|
var buffer = require('buffer')
|
76410
76862
|
var Buffer = buffer.Buffer
|
@@ -76468,7 +76920,7 @@ SafeBuffer.allocUnsafeSlow = function (size) {
|
|
76468
76920
|
return buffer.SlowBuffer(size)
|
76469
76921
|
}
|
76470
76922
|
|
76471
|
-
},{"buffer":129}],
|
76923
|
+
},{"buffer":129}],325:[function(require,module,exports){
|
76472
76924
|
/**
|
76473
76925
|
* Helpers.
|
76474
76926
|
*/
|
@@ -76622,7 +77074,7 @@ function plural(ms, n, name) {
|
|
76622
77074
|
return Math.ceil(ms / n) + ' ' + name + 's';
|
76623
77075
|
}
|
76624
77076
|
|
76625
|
-
},{}],
|
77077
|
+
},{}],326:[function(require,module,exports){
|
76626
77078
|
/*
|
76627
77079
|
object-assign
|
76628
77080
|
(c) Sindre Sorhus
|
@@ -76714,7 +77166,7 @@ module.exports = shouldUseNative() ? Object.assign : function (target, source) {
|
|
76714
77166
|
return to;
|
76715
77167
|
};
|
76716
77168
|
|
76717
|
-
},{}],
|
77169
|
+
},{}],327:[function(require,module,exports){
|
76718
77170
|
// shim for using process in browser
|
76719
77171
|
var process = module.exports = {};
|
76720
77172
|
|
@@ -76900,7 +77352,7 @@ process.chdir = function (dir) {
|
|
76900
77352
|
};
|
76901
77353
|
process.umask = function() { return 0; };
|
76902
77354
|
|
76903
|
-
},{}],
|
77355
|
+
},{}],328:[function(require,module,exports){
|
76904
77356
|
|
76905
77357
|
const toString = Object.prototype.toString;
|
76906
77358
|
|
@@ -76929,7 +77381,7 @@ module.exports = exports = function (regexp) {
|
|
76929
77381
|
}
|
76930
77382
|
|
76931
77383
|
|
76932
|
-
},{}],
|
77384
|
+
},{}],329:[function(require,module,exports){
|
76933
77385
|
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
76934
77386
|
/* eslint-disable node/no-deprecated-api */
|
76935
77387
|
var buffer = require('buffer')
|
@@ -76996,7 +77448,7 @@ SafeBuffer.allocUnsafeSlow = function (size) {
|
|
76996
77448
|
return buffer.SlowBuffer(size)
|
76997
77449
|
}
|
76998
77450
|
|
76999
|
-
},{"buffer":129}],
|
77451
|
+
},{"buffer":129}],330:[function(require,module,exports){
|
77000
77452
|
|
77001
77453
|
/**
|
77002
77454
|
* An Array.prototype.slice.call(arguments) alternative
|
@@ -77031,7 +77483,7 @@ module.exports = function (args, slice, sliceEnd) {
|
|
77031
77483
|
}
|
77032
77484
|
|
77033
77485
|
|
77034
|
-
},{}],
|
77486
|
+
},{}],331:[function(require,module,exports){
|
77035
77487
|
(function (setImmediate,clearImmediate){(function (){
|
77036
77488
|
var nextTick = require('process/browser.js').nextTick;
|
77037
77489
|
var apply = Function.prototype.apply;
|
@@ -77110,10 +77562,10 @@ exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate :
|
|
77110
77562
|
delete immediateIds[id];
|
77111
77563
|
};
|
77112
77564
|
}).call(this)}).call(this,require("timers").setImmediate,require("timers").clearImmediate)
|
77113
|
-
},{"process/browser.js":
|
77565
|
+
},{"process/browser.js":327,"timers":331}],332:[function(require,module,exports){
|
77114
77566
|
arguments[4][104][0].apply(exports,arguments)
|
77115
|
-
},{"dup":104}],
|
77567
|
+
},{"dup":104}],333:[function(require,module,exports){
|
77116
77568
|
arguments[4][105][0].apply(exports,arguments)
|
77117
|
-
},{"dup":105}],
|
77569
|
+
},{"dup":105}],334:[function(require,module,exports){
|
77118
77570
|
arguments[4][106][0].apply(exports,arguments)
|
77119
|
-
},{"./support/isBuffer":
|
77571
|
+
},{"./support/isBuffer":333,"_process":327,"dup":106,"inherits":332}]},{},[75]);
|