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/index.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
|
|
@@ -7027,8 +7027,8 @@ class Unit {
|
|
7027
7027
|
* concatenated string. Basically it checks to see if the string
|
7028
7028
|
* needs to be enclosed either in parentheses or square brackets.
|
7029
7029
|
*
|
7030
|
-
* The string is enclosed if it is not a number,
|
7031
|
-
*
|
7030
|
+
* The string is enclosed if it is not a number, is not already enclosed in a pair of
|
7031
|
+
* parentheses or square brackets, and includes a period, and asterisk,
|
7032
7032
|
* a slash or a blank space.
|
7033
7033
|
*
|
7034
7034
|
* @param str the string
|
@@ -7044,7 +7044,7 @@ class Unit {
|
|
7044
7044
|
if (intUtils_.isNumericString(str)) {
|
7045
7045
|
ret = str;
|
7046
7046
|
} else {
|
7047
|
-
if (str.charAt(0) === '(' || str.charAt(0) === '[') {
|
7047
|
+
if (str.charAt(0) === '(' && str.endsWith(')') || str.charAt(0) === '[' && str.endsWith(']')) {
|
7048
7048
|
ret = str;
|
7049
7049
|
} else if (/[./* ]/.test(str)) {
|
7050
7050
|
ret = startChar + str + endChar;
|
@@ -9926,7 +9926,7 @@ var objectKeys = Object.keys || function (obj) {
|
|
9926
9926
|
};
|
9927
9927
|
|
9928
9928
|
}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
9929
|
-
},{"object-assign":
|
9929
|
+
},{"object-assign":325,"util/":105}],103:[function(require,module,exports){
|
9930
9930
|
if (typeof Object.create === 'function') {
|
9931
9931
|
// implementation from standard node.js 'util' module
|
9932
9932
|
module.exports = function inherits(ctor, superCtor) {
|
@@ -10548,7 +10548,7 @@ function hasOwnProperty(obj, prop) {
|
|
10548
10548
|
}
|
10549
10549
|
|
10550
10550
|
}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
10551
|
-
},{"./support/isBuffer":104,"_process":
|
10551
|
+
},{"./support/isBuffer":104,"_process":326,"inherits":103}],106:[function(require,module,exports){
|
10552
10552
|
'use strict'
|
10553
10553
|
|
10554
10554
|
exports.byteLength = byteLength
|
@@ -16326,7 +16326,7 @@ module.exports = ret;
|
|
16326
16326
|
},{"./es5":13}]},{},[4])(4)
|
16327
16327
|
}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }
|
16328
16328
|
}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate)
|
16329
|
-
},{"_process":
|
16329
|
+
},{"_process":326,"timers":330}],108:[function(require,module,exports){
|
16330
16330
|
(function (global){(function (){
|
16331
16331
|
/**
|
16332
16332
|
* Module dependencies.
|
@@ -18260,6 +18260,11 @@ Long.prototype.toNumber = function() {
|
|
18260
18260
|
return this.high_ * Long.TWO_PWR_32_DBL_ + this.getLowBitsUnsigned();
|
18261
18261
|
};
|
18262
18262
|
|
18263
|
+
/** Converts the Long to a BigInt (arbitrary precision). */
|
18264
|
+
Long.prototype.toBigInt = function () {
|
18265
|
+
return BigInt(this.toString());
|
18266
|
+
}
|
18267
|
+
|
18263
18268
|
/**
|
18264
18269
|
* Return the JSON value.
|
18265
18270
|
*
|
@@ -18894,6 +18899,15 @@ Long.fromNumber = function(value) {
|
|
18894
18899
|
}
|
18895
18900
|
};
|
18896
18901
|
|
18902
|
+
/**
|
18903
|
+
* Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.
|
18904
|
+
* @param {bigint} value - The number in question
|
18905
|
+
* @returns {Long} The corresponding Long value
|
18906
|
+
*/
|
18907
|
+
Long.fromBigInt = function(value) {
|
18908
|
+
return Long.fromString(value.toString(10), 10);
|
18909
|
+
}
|
18910
|
+
|
18897
18911
|
/**
|
18898
18912
|
* 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.
|
18899
18913
|
*
|
@@ -19593,7 +19607,7 @@ module.exports.ObjectID = ObjectID;
|
|
19593
19607
|
module.exports.ObjectId = ObjectID;
|
19594
19608
|
|
19595
19609
|
}).call(this)}).call(this,require('_process'),require("buffer").Buffer)
|
19596
|
-
},{"./parser/utils":124,"_process":
|
19610
|
+
},{"./parser/utils":124,"_process":326,"buffer":128,"util":333}],121:[function(require,module,exports){
|
19597
19611
|
(function (Buffer){(function (){
|
19598
19612
|
'use strict';
|
19599
19613
|
|
@@ -21349,6 +21363,8 @@ var serializeInto = function serializeInto(
|
|
21349
21363
|
index = serializeString(buffer, key, value, index, true);
|
21350
21364
|
} else if (type === 'number') {
|
21351
21365
|
index = serializeNumber(buffer, key, value, index, true);
|
21366
|
+
} else if(type === 'bigint') {
|
21367
|
+
throw new TypeError('Unsupported type BigInt, please use Decimal128');
|
21352
21368
|
} else if (type === 'boolean') {
|
21353
21369
|
index = serializeBoolean(buffer, key, value, index, true);
|
21354
21370
|
} else if (value instanceof Date || isDate(value)) {
|
@@ -21460,6 +21476,8 @@ var serializeInto = function serializeInto(
|
|
21460
21476
|
index = serializeString(buffer, key, value, index);
|
21461
21477
|
} else if (type === 'number') {
|
21462
21478
|
index = serializeNumber(buffer, key, value, index);
|
21479
|
+
} else if(type === 'bigint') {
|
21480
|
+
throw new TypeError('Unsupported type BigInt, please use Decimal128');
|
21463
21481
|
} else if (type === 'boolean') {
|
21464
21482
|
index = serializeBoolean(buffer, key, value, index);
|
21465
21483
|
} else if (value instanceof Date || isDate(value)) {
|
@@ -21563,6 +21581,8 @@ var serializeInto = function serializeInto(
|
|
21563
21581
|
index = serializeString(buffer, key, value, index);
|
21564
21582
|
} else if (type === 'number') {
|
21565
21583
|
index = serializeNumber(buffer, key, value, index);
|
21584
|
+
} else if(type === 'bigint') {
|
21585
|
+
throw new TypeError('Unsupported type BigInt, please use Decimal128');
|
21566
21586
|
} else if (type === 'boolean') {
|
21567
21587
|
index = serializeBoolean(buffer, key, value, index);
|
21568
21588
|
} else if (value instanceof Date || isDate(value)) {
|
@@ -21949,7 +21969,7 @@ module.exports = Symbol;
|
|
21949
21969
|
module.exports.Symbol = Symbol;
|
21950
21970
|
|
21951
21971
|
}).call(this)}).call(this,require("buffer").Buffer)
|
21952
|
-
},{"buffer":128,"util":
|
21972
|
+
},{"buffer":128,"util":333}],127:[function(require,module,exports){
|
21953
21973
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
21954
21974
|
// you may not use this file except in compliance with the License.
|
21955
21975
|
// You may obtain a copy of the License at
|
@@ -40713,7 +40733,7 @@ function decorateNextFn(fn) {
|
|
40713
40733
|
module.exports = Kareem;
|
40714
40734
|
|
40715
40735
|
}).call(this)}).call(this,require('_process'))
|
40716
|
-
},{"_process":
|
40736
|
+
},{"_process":326}],182:[function(require,module,exports){
|
40717
40737
|
'use strict';
|
40718
40738
|
|
40719
40739
|
Object.defineProperty(exports, '__esModule', { value: true });
|
@@ -41430,13 +41450,13 @@ var monthsNarrow = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"];
|
|
41430
41450
|
function months(length) {
|
41431
41451
|
switch (length) {
|
41432
41452
|
case "narrow":
|
41433
|
-
return monthsNarrow;
|
41453
|
+
return [].concat(monthsNarrow);
|
41434
41454
|
|
41435
41455
|
case "short":
|
41436
|
-
return monthsShort;
|
41456
|
+
return [].concat(monthsShort);
|
41437
41457
|
|
41438
41458
|
case "long":
|
41439
|
-
return monthsLong;
|
41459
|
+
return [].concat(monthsLong);
|
41440
41460
|
|
41441
41461
|
case "numeric":
|
41442
41462
|
return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];
|
@@ -41454,13 +41474,13 @@ var weekdaysNarrow = ["M", "T", "W", "T", "F", "S", "S"];
|
|
41454
41474
|
function weekdays(length) {
|
41455
41475
|
switch (length) {
|
41456
41476
|
case "narrow":
|
41457
|
-
return weekdaysNarrow;
|
41477
|
+
return [].concat(weekdaysNarrow);
|
41458
41478
|
|
41459
41479
|
case "short":
|
41460
|
-
return weekdaysShort;
|
41480
|
+
return [].concat(weekdaysShort);
|
41461
41481
|
|
41462
41482
|
case "long":
|
41463
|
-
return weekdaysLong;
|
41483
|
+
return [].concat(weekdaysLong);
|
41464
41484
|
|
41465
41485
|
case "numeric":
|
41466
41486
|
return ["1", "2", "3", "4", "5", "6", "7"];
|
@@ -41476,13 +41496,13 @@ var erasNarrow = ["B", "A"];
|
|
41476
41496
|
function eras(length) {
|
41477
41497
|
switch (length) {
|
41478
41498
|
case "narrow":
|
41479
|
-
return erasNarrow;
|
41499
|
+
return [].concat(erasNarrow);
|
41480
41500
|
|
41481
41501
|
case "short":
|
41482
|
-
return erasShort;
|
41502
|
+
return [].concat(erasShort);
|
41483
41503
|
|
41484
41504
|
case "long":
|
41485
|
-
return erasLong;
|
41505
|
+
return [].concat(erasLong);
|
41486
41506
|
|
41487
41507
|
default:
|
41488
41508
|
return null;
|
@@ -42497,7 +42517,7 @@ var IANAZone = /*#__PURE__*/function (_Zone) {
|
|
42497
42517
|
|
42498
42518
|
IANAZone.parseGMTOffset = function parseGMTOffset(specifier) {
|
42499
42519
|
if (specifier) {
|
42500
|
-
var match = specifier.match(/^Etc\/GMT([+-]\d{1,2})$/i);
|
42520
|
+
var match = specifier.match(/^Etc\/GMT(0|[+-]\d{1,2})$/i);
|
42501
42521
|
|
42502
42522
|
if (match) {
|
42503
42523
|
return -60 * parseInt(match[1]);
|
@@ -42540,8 +42560,10 @@ var IANAZone = /*#__PURE__*/function (_Zone) {
|
|
42540
42560
|
;
|
42541
42561
|
|
42542
42562
|
_proto.offset = function offset(ts) {
|
42543
|
-
var date = new Date(ts)
|
42544
|
-
|
42563
|
+
var date = new Date(ts);
|
42564
|
+
if (isNaN(date)) return NaN;
|
42565
|
+
|
42566
|
+
var dtf = makeDTF(this.name),
|
42545
42567
|
_ref2 = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date),
|
42546
42568
|
year = _ref2[0],
|
42547
42569
|
month = _ref2[1],
|
@@ -43200,12 +43222,16 @@ var PolyDateFormatter = /*#__PURE__*/function () {
|
|
43200
43222
|
if (dt.zone.universal && this.hasIntl) {
|
43201
43223
|
// UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.
|
43202
43224
|
// That is why fixed-offset TZ is set to that unless it is:
|
43203
|
-
// 1.
|
43204
|
-
// 2.
|
43225
|
+
// 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.
|
43226
|
+
// 2. Unsupported by the browser:
|
43227
|
+
// - some do not support Etc/
|
43228
|
+
// - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata
|
43205
43229
|
var gmtOffset = -1 * (dt.offset / 60);
|
43230
|
+
var offsetZ = gmtOffset >= 0 ? "Etc/GMT+" + gmtOffset : "Etc/GMT" + gmtOffset;
|
43231
|
+
var isOffsetZoneSupported = IANAZone.isValidZone(offsetZ);
|
43206
43232
|
|
43207
|
-
if (
|
43208
|
-
z =
|
43233
|
+
if (dt.offset !== 0 && isOffsetZoneSupported) {
|
43234
|
+
z = offsetZ;
|
43209
43235
|
this.dt = dt;
|
43210
43236
|
} else {
|
43211
43237
|
// Not all fixed-offset zones like Etc/+4:30 are present in tzdata.
|
@@ -43742,9 +43768,14 @@ function extractISODuration(match) {
|
|
43742
43768
|
secondStr = match[7],
|
43743
43769
|
millisecondsStr = match[8];
|
43744
43770
|
var hasNegativePrefix = s[0] === "-";
|
43771
|
+
var negativeSeconds = secondStr && secondStr[0] === "-";
|
43772
|
+
|
43773
|
+
var maybeNegate = function maybeNegate(num, force) {
|
43774
|
+
if (force === void 0) {
|
43775
|
+
force = false;
|
43776
|
+
}
|
43745
43777
|
|
43746
|
-
|
43747
|
-
return num && hasNegativePrefix ? -num : num;
|
43778
|
+
return num !== undefined && (force || num && hasNegativePrefix) ? -num : num;
|
43748
43779
|
};
|
43749
43780
|
|
43750
43781
|
return [{
|
@@ -43754,8 +43785,8 @@ function extractISODuration(match) {
|
|
43754
43785
|
days: maybeNegate(parseInteger(dayStr)),
|
43755
43786
|
hours: maybeNegate(parseInteger(hourStr)),
|
43756
43787
|
minutes: maybeNegate(parseInteger(minuteStr)),
|
43757
|
-
seconds: maybeNegate(parseInteger(secondStr)),
|
43758
|
-
milliseconds: maybeNegate(parseMillis(millisecondsStr))
|
43788
|
+
seconds: maybeNegate(parseInteger(secondStr), secondStr === "-0"),
|
43789
|
+
milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds)
|
43759
43790
|
}];
|
43760
43791
|
} // These are a little braindead. EDT *should* tell us that we're in, say, America/New_York
|
43761
43792
|
// and not just that we're in -240 *right now*. But since I don't think these are used that often
|
@@ -43860,14 +43891,14 @@ var isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeEx
|
|
43860
43891
|
var isoTimeCombinedRegex = combineRegexes(isoTimeRegex);
|
43861
43892
|
var extractISOYmdTimeAndOffset = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset);
|
43862
43893
|
var extractISOWeekTimeAndOffset = combineExtractors(extractISOWeekData, extractISOTime, extractISOOffset);
|
43863
|
-
var
|
43894
|
+
var extractISOOrdinalDateAndTime = combineExtractors(extractISOOrdinalData, extractISOTime, extractISOOffset);
|
43864
43895
|
var extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset);
|
43865
43896
|
/**
|
43866
43897
|
* @private
|
43867
43898
|
*/
|
43868
43899
|
|
43869
43900
|
function parseISODate(s) {
|
43870
|
-
return parse(s, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex,
|
43901
|
+
return parse(s, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime], [isoTimeCombinedRegex, extractISOTimeAndOffset]);
|
43871
43902
|
}
|
43872
43903
|
function parseRFC2822Date(s) {
|
43873
43904
|
return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);
|
@@ -44095,7 +44126,7 @@ var Duration = /*#__PURE__*/function () {
|
|
44095
44126
|
}, opts));
|
44096
44127
|
}
|
44097
44128
|
/**
|
44098
|
-
* Create a Duration from a JavaScript object with keys like 'years' and 'hours.
|
44129
|
+
* Create a Duration from a JavaScript object with keys like 'years' and 'hours'.
|
44099
44130
|
* If this object is empty then a zero milliseconds duration is returned.
|
44100
44131
|
* @param {Object} obj - the object to create the DateTime from
|
44101
44132
|
* @param {number} obj.years
|
@@ -44487,9 +44518,9 @@ var Duration = /*#__PURE__*/function () {
|
|
44487
44518
|
/**
|
44488
44519
|
* Get the value of unit.
|
44489
44520
|
* @param {string} unit - a unit such as 'minute' or 'day'
|
44490
|
-
* @example Duration.fromObject({years: 2, days: 3}).years //=> 2
|
44491
|
-
* @example Duration.fromObject({years: 2, days: 3}).months //=> 0
|
44492
|
-
* @example Duration.fromObject({years: 2, days: 3}).days //=> 3
|
44521
|
+
* @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2
|
44522
|
+
* @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0
|
44523
|
+
* @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3
|
44493
44524
|
* @return {number}
|
44494
44525
|
*/
|
44495
44526
|
;
|
@@ -45195,15 +45226,18 @@ var Interval = /*#__PURE__*/function () {
|
|
45195
45226
|
}
|
45196
45227
|
|
45197
45228
|
var s = this.s,
|
45198
|
-
|
45229
|
+
idx = 1,
|
45199
45230
|
next;
|
45200
45231
|
var results = [];
|
45201
45232
|
|
45202
45233
|
while (s < this.e) {
|
45203
|
-
added =
|
45234
|
+
var added = this.start.plus(dur.mapUnits(function (x) {
|
45235
|
+
return x * idx;
|
45236
|
+
}));
|
45204
45237
|
next = +added > +this.e ? this.e : added;
|
45205
45238
|
results.push(Interval.fromDateTimes(s, next));
|
45206
45239
|
s = next;
|
45240
|
+
idx += 1;
|
45207
45241
|
}
|
45208
45242
|
|
45209
45243
|
return results;
|
@@ -45290,7 +45324,7 @@ var Interval = /*#__PURE__*/function () {
|
|
45290
45324
|
var s = this.s > other.s ? this.s : other.s,
|
45291
45325
|
e = this.e < other.e ? this.e : other.e;
|
45292
45326
|
|
45293
|
-
if (s
|
45327
|
+
if (s >= e) {
|
45294
45328
|
return null;
|
45295
45329
|
} else {
|
45296
45330
|
return Interval.fromDateTimes(s, e);
|
@@ -45615,6 +45649,7 @@ var Info = /*#__PURE__*/function () {
|
|
45615
45649
|
* @param {Object} opts - options
|
45616
45650
|
* @param {string} [opts.locale] - the locale code
|
45617
45651
|
* @param {string} [opts.numberingSystem=null] - the numbering system
|
45652
|
+
* @param {string} [opts.locObj=null] - an existing locale object to use
|
45618
45653
|
* @param {string} [opts.outputCalendar='gregory'] - the calendar
|
45619
45654
|
* @example Info.months()[0] //=> 'January'
|
45620
45655
|
* @example Info.months('short')[0] //=> 'Jan'
|
@@ -45636,10 +45671,12 @@ var Info = /*#__PURE__*/function () {
|
|
45636
45671
|
locale = _ref$locale === void 0 ? null : _ref$locale,
|
45637
45672
|
_ref$numberingSystem = _ref.numberingSystem,
|
45638
45673
|
numberingSystem = _ref$numberingSystem === void 0 ? null : _ref$numberingSystem,
|
45674
|
+
_ref$locObj = _ref.locObj,
|
45675
|
+
locObj = _ref$locObj === void 0 ? null : _ref$locObj,
|
45639
45676
|
_ref$outputCalendar = _ref.outputCalendar,
|
45640
45677
|
outputCalendar = _ref$outputCalendar === void 0 ? "gregory" : _ref$outputCalendar;
|
45641
45678
|
|
45642
|
-
return Locale.create(locale, numberingSystem, outputCalendar).months(length);
|
45679
|
+
return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);
|
45643
45680
|
}
|
45644
45681
|
/**
|
45645
45682
|
* Return an array of format month names.
|
@@ -45650,6 +45687,7 @@ var Info = /*#__PURE__*/function () {
|
|
45650
45687
|
* @param {Object} opts - options
|
45651
45688
|
* @param {string} [opts.locale] - the locale code
|
45652
45689
|
* @param {string} [opts.numberingSystem=null] - the numbering system
|
45690
|
+
* @param {string} [opts.locObj=null] - an existing locale object to use
|
45653
45691
|
* @param {string} [opts.outputCalendar='gregory'] - the calendar
|
45654
45692
|
* @return {[string]}
|
45655
45693
|
*/
|
@@ -45665,10 +45703,12 @@ var Info = /*#__PURE__*/function () {
|
|
45665
45703
|
locale = _ref2$locale === void 0 ? null : _ref2$locale,
|
45666
45704
|
_ref2$numberingSystem = _ref2.numberingSystem,
|
45667
45705
|
numberingSystem = _ref2$numberingSystem === void 0 ? null : _ref2$numberingSystem,
|
45706
|
+
_ref2$locObj = _ref2.locObj,
|
45707
|
+
locObj = _ref2$locObj === void 0 ? null : _ref2$locObj,
|
45668
45708
|
_ref2$outputCalendar = _ref2.outputCalendar,
|
45669
45709
|
outputCalendar = _ref2$outputCalendar === void 0 ? "gregory" : _ref2$outputCalendar;
|
45670
45710
|
|
45671
|
-
return Locale.create(locale, numberingSystem, outputCalendar).months(length, true);
|
45711
|
+
return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);
|
45672
45712
|
}
|
45673
45713
|
/**
|
45674
45714
|
* Return an array of standalone week names.
|
@@ -45677,6 +45717,7 @@ var Info = /*#__PURE__*/function () {
|
|
45677
45717
|
* @param {Object} opts - options
|
45678
45718
|
* @param {string} [opts.locale] - the locale code
|
45679
45719
|
* @param {string} [opts.numberingSystem=null] - the numbering system
|
45720
|
+
* @param {string} [opts.locObj=null] - an existing locale object to use
|
45680
45721
|
* @example Info.weekdays()[0] //=> 'Monday'
|
45681
45722
|
* @example Info.weekdays('short')[0] //=> 'Mon'
|
45682
45723
|
* @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'
|
@@ -45694,9 +45735,11 @@ var Info = /*#__PURE__*/function () {
|
|
45694
45735
|
_ref3$locale = _ref3.locale,
|
45695
45736
|
locale = _ref3$locale === void 0 ? null : _ref3$locale,
|
45696
45737
|
_ref3$numberingSystem = _ref3.numberingSystem,
|
45697
|
-
numberingSystem = _ref3$numberingSystem === void 0 ? null : _ref3$numberingSystem
|
45738
|
+
numberingSystem = _ref3$numberingSystem === void 0 ? null : _ref3$numberingSystem,
|
45739
|
+
_ref3$locObj = _ref3.locObj,
|
45740
|
+
locObj = _ref3$locObj === void 0 ? null : _ref3$locObj;
|
45698
45741
|
|
45699
|
-
return Locale.create(locale, numberingSystem, null).weekdays(length);
|
45742
|
+
return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);
|
45700
45743
|
}
|
45701
45744
|
/**
|
45702
45745
|
* Return an array of format week names.
|
@@ -45707,6 +45750,7 @@ var Info = /*#__PURE__*/function () {
|
|
45707
45750
|
* @param {Object} opts - options
|
45708
45751
|
* @param {string} [opts.locale=null] - the locale code
|
45709
45752
|
* @param {string} [opts.numberingSystem=null] - the numbering system
|
45753
|
+
* @param {string} [opts.locObj=null] - an existing locale object to use
|
45710
45754
|
* @return {[string]}
|
45711
45755
|
*/
|
45712
45756
|
;
|
@@ -45720,9 +45764,11 @@ var Info = /*#__PURE__*/function () {
|
|
45720
45764
|
_ref4$locale = _ref4.locale,
|
45721
45765
|
locale = _ref4$locale === void 0 ? null : _ref4$locale,
|
45722
45766
|
_ref4$numberingSystem = _ref4.numberingSystem,
|
45723
|
-
numberingSystem = _ref4$numberingSystem === void 0 ? null : _ref4$numberingSystem
|
45767
|
+
numberingSystem = _ref4$numberingSystem === void 0 ? null : _ref4$numberingSystem,
|
45768
|
+
_ref4$locObj = _ref4.locObj,
|
45769
|
+
locObj = _ref4$locObj === void 0 ? null : _ref4$locObj;
|
45724
45770
|
|
45725
|
-
return Locale.create(locale, numberingSystem, null).weekdays(length, true);
|
45771
|
+
return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);
|
45726
45772
|
}
|
45727
45773
|
/**
|
45728
45774
|
* Return an array of meridiems.
|
@@ -47013,7 +47059,7 @@ function diffRelative(start, end, opts) {
|
|
47013
47059
|
}
|
47014
47060
|
}
|
47015
47061
|
|
47016
|
-
return format(0, opts.units[opts.units.length - 1]);
|
47062
|
+
return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);
|
47017
47063
|
}
|
47018
47064
|
/**
|
47019
47065
|
* 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.
|
@@ -47140,7 +47186,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
47140
47186
|
|
47141
47187
|
DateTime.local = function local(year, month, day, hour, minute, second, millisecond) {
|
47142
47188
|
if (isUndefined(year)) {
|
47143
|
-
return
|
47189
|
+
return DateTime.now();
|
47144
47190
|
} else {
|
47145
47191
|
return quickDT({
|
47146
47192
|
year: year,
|
@@ -47408,8 +47454,8 @@ var DateTime = /*#__PURE__*/function () {
|
|
47408
47454
|
* @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
|
47409
47455
|
* @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one
|
47410
47456
|
* @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance
|
47411
|
-
* @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
|
47412
|
-
* @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance
|
47457
|
+
* @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance
|
47458
|
+
* @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance
|
47413
47459
|
* @example DateTime.fromISO('2016-05-25T09:08:34.123')
|
47414
47460
|
* @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')
|
47415
47461
|
* @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})
|
@@ -47784,7 +47830,21 @@ var DateTime = /*#__PURE__*/function () {
|
|
47784
47830
|
_proto.set = function set(values) {
|
47785
47831
|
if (!this.isValid) return this;
|
47786
47832
|
var normalized = normalizeObject(values, normalizeUnit, []),
|
47787
|
-
settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday)
|
47833
|
+
settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday),
|
47834
|
+
containsOrdinal = !isUndefined(normalized.ordinal),
|
47835
|
+
containsGregorYear = !isUndefined(normalized.year),
|
47836
|
+
containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),
|
47837
|
+
containsGregor = containsGregorYear || containsGregorMD,
|
47838
|
+
definiteWeekDef = normalized.weekYear || normalized.weekNumber;
|
47839
|
+
|
47840
|
+
if ((containsGregor || containsOrdinal) && definiteWeekDef) {
|
47841
|
+
throw new ConflictingSpecificationError("Can't mix weekYear/weekNumber units with year/month/day or ordinals");
|
47842
|
+
}
|
47843
|
+
|
47844
|
+
if (containsGregorMD && containsOrdinal) {
|
47845
|
+
throw new ConflictingSpecificationError("Can't mix ordinal dates with month/day");
|
47846
|
+
}
|
47847
|
+
|
47788
47848
|
var mixed;
|
47789
47849
|
|
47790
47850
|
if (settingWeekStuff) {
|
@@ -48368,7 +48428,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48368
48428
|
* @param {Object} options - options that affect the output
|
48369
48429
|
* @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.
|
48370
48430
|
* @param {string} [options.style="long"] - the style of units, must be "long", "short", or "narrow"
|
48371
|
-
* @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"
|
48431
|
+
* @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"
|
48372
48432
|
* @param {boolean} [options.round=true] - whether to round the numbers in the output.
|
48373
48433
|
* @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.
|
48374
48434
|
* @param {string} options.locale - override the locale of this DateTime
|
@@ -48392,9 +48452,18 @@ var DateTime = /*#__PURE__*/function () {
|
|
48392
48452
|
zone: this.zone
|
48393
48453
|
}),
|
48394
48454
|
padding = options.padding ? this < base ? -options.padding : options.padding : 0;
|
48455
|
+
var units = ["years", "months", "days", "hours", "minutes", "seconds"];
|
48456
|
+
var unit = options.unit;
|
48457
|
+
|
48458
|
+
if (Array.isArray(options.unit)) {
|
48459
|
+
units = options.unit;
|
48460
|
+
unit = undefined;
|
48461
|
+
}
|
48462
|
+
|
48395
48463
|
return diffRelative(base, this.plus(padding), Object.assign(options, {
|
48396
48464
|
numeric: "always",
|
48397
|
-
units:
|
48465
|
+
units: units,
|
48466
|
+
unit: unit
|
48398
48467
|
}));
|
48399
48468
|
}
|
48400
48469
|
/**
|
@@ -48681,7 +48750,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48681
48750
|
/**
|
48682
48751
|
* Get the week year
|
48683
48752
|
* @see https://en.wikipedia.org/wiki/ISO_week_date
|
48684
|
-
* @example DateTime.local(2014,
|
48753
|
+
* @example DateTime.local(2014, 12, 31).weekYear //=> 2015
|
48685
48754
|
* @type {number}
|
48686
48755
|
*/
|
48687
48756
|
|
@@ -48737,7 +48806,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48737
48806
|
key: "monthShort",
|
48738
48807
|
get: function get() {
|
48739
48808
|
return this.isValid ? Info.months("short", {
|
48740
|
-
|
48809
|
+
locObj: this.loc
|
48741
48810
|
})[this.month - 1] : null;
|
48742
48811
|
}
|
48743
48812
|
/**
|
@@ -48751,7 +48820,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48751
48820
|
key: "monthLong",
|
48752
48821
|
get: function get() {
|
48753
48822
|
return this.isValid ? Info.months("long", {
|
48754
|
-
|
48823
|
+
locObj: this.loc
|
48755
48824
|
})[this.month - 1] : null;
|
48756
48825
|
}
|
48757
48826
|
/**
|
@@ -48765,7 +48834,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48765
48834
|
key: "weekdayShort",
|
48766
48835
|
get: function get() {
|
48767
48836
|
return this.isValid ? Info.weekdays("short", {
|
48768
|
-
|
48837
|
+
locObj: this.loc
|
48769
48838
|
})[this.weekday - 1] : null;
|
48770
48839
|
}
|
48771
48840
|
/**
|
@@ -48779,7 +48848,7 @@ var DateTime = /*#__PURE__*/function () {
|
|
48779
48848
|
key: "weekdayLong",
|
48780
48849
|
get: function get() {
|
48781
48850
|
return this.isValid ? Info.weekdays("long", {
|
48782
|
-
|
48851
|
+
locObj: this.loc
|
48783
48852
|
})[this.weekday - 1] : null;
|
48784
48853
|
}
|
48785
48854
|
/**
|
@@ -49138,7 +49207,7 @@ function friendlyDateTime(dateTimeish) {
|
|
49138
49207
|
}
|
49139
49208
|
}
|
49140
49209
|
|
49141
|
-
var VERSION = "1.
|
49210
|
+
var VERSION = "1.28.0";
|
49142
49211
|
|
49143
49212
|
exports.DateTime = DateTime;
|
49144
49213
|
exports.Duration = Duration;
|
@@ -49235,11 +49304,14 @@ exports.Schema = require('./schema');
|
|
49235
49304
|
*
|
49236
49305
|
* ####Types:
|
49237
49306
|
*
|
49238
|
-
* - [
|
49239
|
-
* - [Buffer](#
|
49240
|
-
* - [
|
49241
|
-
* - [
|
49242
|
-
* - [
|
49307
|
+
* - [Array](/docs/schematypes.html#arrays)
|
49308
|
+
* - [Buffer](/docs/schematypes.html#buffers)
|
49309
|
+
* - [Embedded](/docs/schematypes.html#schemas)
|
49310
|
+
* - [DocumentArray](/docs/api/documentarraypath.html)
|
49311
|
+
* - [Decimal128](/docs/api.html#mongoose_Mongoose-Decimal128)
|
49312
|
+
* - [ObjectId](/docs/schematypes.html#objectids)
|
49313
|
+
* - [Map](/docs/schematypes.html#maps)
|
49314
|
+
* - [Subdocument](/docs/schematypes.html#schemas)
|
49243
49315
|
*
|
49244
49316
|
* Using this exposed access to the `ObjectId` type, we can construct ids on demand.
|
49245
49317
|
*
|
@@ -49322,7 +49394,7 @@ if (typeof window !== 'undefined') {
|
|
49322
49394
|
}
|
49323
49395
|
|
49324
49396
|
}).call(this)}).call(this,require("buffer").Buffer)
|
49325
|
-
},{"./document_provider.js":194,"./driver":195,"./drivers/browser":199,"./error/index":203,"./promise_provider":
|
49397
|
+
},{"./document_provider.js":194,"./driver":195,"./drivers/browser":199,"./error/index":203,"./promise_provider":273,"./schema":275,"./schematype.js":296,"./types":304,"./utils.js":308,"./virtualtype":309,"buffer":128}],185:[function(require,module,exports){
|
49326
49398
|
/*!
|
49327
49399
|
* Module dependencies.
|
49328
49400
|
*/
|
@@ -49424,7 +49496,7 @@ Document.$emitter = new EventEmitter();
|
|
49424
49496
|
Document.ValidationError = ValidationError;
|
49425
49497
|
module.exports = exports = Document;
|
49426
49498
|
|
49427
|
-
},{"./document":193,"./error/index":203,"./helpers/isObject":
|
49499
|
+
},{"./document":193,"./error/index":203,"./helpers/isObject":235,"./helpers/model/applyHooks":237,"./schema":275,"./types/objectid":306,"events":176}],186:[function(require,module,exports){
|
49428
49500
|
'use strict';
|
49429
49501
|
|
49430
49502
|
/*!
|
@@ -49436,6 +49508,7 @@ const StrictModeError = require('./error/strict');
|
|
49436
49508
|
const Types = require('./schema/index');
|
49437
49509
|
const castTextSearch = require('./schema/operators/text');
|
49438
49510
|
const get = require('./helpers/get');
|
49511
|
+
const getConstructorName = require('./helpers/getConstructorName');
|
49439
49512
|
const getSchemaDiscriminatorByValue = require('./helpers/discriminator/getSchemaDiscriminatorByValue');
|
49440
49513
|
const isOperator = require('./helpers/query/isOperator');
|
49441
49514
|
const util = require('util');
|
@@ -49694,7 +49767,7 @@ module.exports = function cast(schema, obj, options, context) {
|
|
49694
49767
|
}
|
49695
49768
|
} else if (val == null) {
|
49696
49769
|
continue;
|
49697
|
-
} else if (val
|
49770
|
+
} else if (getConstructorName(val) === 'Object') {
|
49698
49771
|
any$conditionals = Object.keys(val).some(isOperator);
|
49699
49772
|
|
49700
49773
|
if (!any$conditionals) {
|
@@ -49789,7 +49862,7 @@ function _cast(val, numbertype, context) {
|
|
49789
49862
|
}
|
49790
49863
|
}
|
49791
49864
|
}
|
49792
|
-
},{"./error/cast":201,"./error/strict":213,"./helpers/discriminator/getSchemaDiscriminatorByValue":
|
49865
|
+
},{"./error/cast":201,"./error/strict":213,"./helpers/discriminator/getSchemaDiscriminatorByValue":224,"./helpers/get":229,"./helpers/getConstructorName":230,"./helpers/isMongooseObject":234,"./helpers/isObject":235,"./helpers/query/isOperator":244,"./schema/index":283,"./schema/operators/text":292,"util":333}],187:[function(require,module,exports){
|
49793
49866
|
'use strict';
|
49794
49867
|
|
49795
49868
|
const CastError = require('../error/cast');
|
@@ -49904,7 +49977,7 @@ module.exports = function castDecimal128(value) {
|
|
49904
49977
|
assert.ok(false);
|
49905
49978
|
};
|
49906
49979
|
}).call(this)}).call(this,{"isBuffer":require("../../../is-buffer/index.js")})
|
49907
|
-
},{"../../../is-buffer/index.js":178,"../types/decimal128":
|
49980
|
+
},{"../../../is-buffer/index.js":178,"../types/decimal128":301,"assert":102}],190:[function(require,module,exports){
|
49908
49981
|
'use strict';
|
49909
49982
|
|
49910
49983
|
const assert = require('assert');
|
@@ -50019,7 +50092,7 @@ module.exports = function castString(value, path) {
|
|
50019
50092
|
};
|
50020
50093
|
|
50021
50094
|
},{"../error/cast":201}],193:[function(require,module,exports){
|
50022
|
-
(function (Buffer
|
50095
|
+
(function (Buffer){(function (){
|
50023
50096
|
'use strict';
|
50024
50097
|
|
50025
50098
|
/*!
|
@@ -50047,6 +50120,7 @@ const get = require('./helpers/get');
|
|
50047
50120
|
const getEmbeddedDiscriminatorPath = require('./helpers/document/getEmbeddedDiscriminatorPath');
|
50048
50121
|
const handleSpreadDoc = require('./helpers/document/handleSpreadDoc');
|
50049
50122
|
const idGetter = require('./plugins/idGetter');
|
50123
|
+
const immediate = require('./helpers/immediate');
|
50050
50124
|
const isDefiningProjection = require('./helpers/projection/isDefiningProjection');
|
50051
50125
|
const isExclusive = require('./helpers/projection/isExclusive');
|
50052
50126
|
const inspect = require('util').inspect;
|
@@ -50069,6 +50143,7 @@ const documentSchemaSymbol = require('./helpers/symbols').documentSchemaSymbol;
|
|
50069
50143
|
const getSymbol = require('./helpers/symbols').getSymbol;
|
50070
50144
|
const populateModelSymbol = require('./helpers/symbols').populateModelSymbol;
|
50071
50145
|
const scopeSymbol = require('./helpers/symbols').scopeSymbol;
|
50146
|
+
const schemaMixedSymbol = require('./schema/symbols').schemaMixedSymbol;
|
50072
50147
|
|
50073
50148
|
let DocumentArray;
|
50074
50149
|
let MongooseArray;
|
@@ -50098,9 +50173,8 @@ function Document(obj, fields, skipId, options) {
|
|
50098
50173
|
options = Object.assign({}, options);
|
50099
50174
|
const defaults = get(options, 'defaults', true);
|
50100
50175
|
options.defaults = defaults;
|
50101
|
-
|
50102
50176
|
// Support `browserDocument.js` syntax
|
50103
|
-
if (this
|
50177
|
+
if (this.$__schema == null) {
|
50104
50178
|
const _schema = utils.isObject(fields) && !fields.instanceOfSchema ?
|
50105
50179
|
new Schema(fields) :
|
50106
50180
|
fields;
|
@@ -50117,12 +50191,11 @@ function Document(obj, fields, skipId, options) {
|
|
50117
50191
|
this.$__.$options = options || {};
|
50118
50192
|
this.$locals = {};
|
50119
50193
|
this.$op = null;
|
50120
|
-
|
50121
50194
|
if (obj != null && typeof obj !== 'object') {
|
50122
50195
|
throw new ObjectParameterError(obj, 'obj', 'Document');
|
50123
50196
|
}
|
50124
50197
|
|
50125
|
-
const schema = this
|
50198
|
+
const schema = this.$__schema;
|
50126
50199
|
|
50127
50200
|
if (typeof fields === 'boolean' || fields === 'throw') {
|
50128
50201
|
this.$__.strictMode = fields;
|
@@ -50225,6 +50298,17 @@ for (const i in EventEmitter.prototype) {
|
|
50225
50298
|
Document[i] = EventEmitter.prototype[i];
|
50226
50299
|
}
|
50227
50300
|
|
50301
|
+
/**
|
50302
|
+
* The document's internal schema.
|
50303
|
+
*
|
50304
|
+
* @api private
|
50305
|
+
* @property schema
|
50306
|
+
* @memberOf Document
|
50307
|
+
* @instance
|
50308
|
+
*/
|
50309
|
+
|
50310
|
+
Document.prototype.$__schema;
|
50311
|
+
|
50228
50312
|
/**
|
50229
50313
|
* The document's schema.
|
50230
50314
|
*
|
@@ -50276,6 +50360,28 @@ Object.defineProperty(Document.prototype, '$locals', {
|
|
50276
50360
|
|
50277
50361
|
Document.prototype.isNew;
|
50278
50362
|
|
50363
|
+
/**
|
50364
|
+
* Set this property to add additional query filters when Mongoose saves this document and `isNew` is false.
|
50365
|
+
*
|
50366
|
+
* ####Example:
|
50367
|
+
*
|
50368
|
+
* // Make sure `save()` never updates a soft deleted document.
|
50369
|
+
* schema.pre('save', function() {
|
50370
|
+
* this.$where = { isDeleted: false };
|
50371
|
+
* });
|
50372
|
+
*
|
50373
|
+
* @api public
|
50374
|
+
* @property $where
|
50375
|
+
* @memberOf Document
|
50376
|
+
* @instance
|
50377
|
+
*/
|
50378
|
+
|
50379
|
+
Object.defineProperty(Document.prototype, '$where', {
|
50380
|
+
configurable: false,
|
50381
|
+
enumerable: false,
|
50382
|
+
writable: true
|
50383
|
+
});
|
50384
|
+
|
50279
50385
|
/**
|
50280
50386
|
* The string version of this documents _id.
|
50281
50387
|
*
|
@@ -50354,7 +50460,7 @@ function $__hasIncludedChildren(fields) {
|
|
50354
50460
|
*/
|
50355
50461
|
|
50356
50462
|
function $__applyDefaults(doc, fields, skipId, exclude, hasIncludedChildren, isBeforeSetters, pathsToSkip) {
|
50357
|
-
const paths = Object.keys(doc.
|
50463
|
+
const paths = Object.keys(doc.$__schema.paths);
|
50358
50464
|
const plen = paths.length;
|
50359
50465
|
|
50360
50466
|
for (let i = 0; i < plen; ++i) {
|
@@ -50366,12 +50472,11 @@ function $__applyDefaults(doc, fields, skipId, exclude, hasIncludedChildren, isB
|
|
50366
50472
|
continue;
|
50367
50473
|
}
|
50368
50474
|
|
50369
|
-
const type = doc.
|
50370
|
-
const path =
|
50475
|
+
const type = doc.$__schema.paths[p];
|
50476
|
+
const path = type.splitPath();
|
50371
50477
|
const len = path.length;
|
50372
50478
|
let included = false;
|
50373
50479
|
let doc_ = doc._doc;
|
50374
|
-
|
50375
50480
|
for (let j = 0; j < len; ++j) {
|
50376
50481
|
if (doc_ == null) {
|
50377
50482
|
break;
|
@@ -50480,7 +50585,7 @@ function $__applyDefaults(doc, fields, skipId, exclude, hasIncludedChildren, isB
|
|
50480
50585
|
Document.prototype.$__buildDoc = function(obj, fields, skipId, exclude, hasIncludedChildren) {
|
50481
50586
|
const doc = {};
|
50482
50587
|
|
50483
|
-
const paths = Object.keys(this.
|
50588
|
+
const paths = Object.keys(this.$__schema.paths).
|
50484
50589
|
// Don't build up any paths that are underneath a map, we don't know
|
50485
50590
|
// what the keys will be
|
50486
50591
|
filter(p => !p.includes('$*'));
|
@@ -50499,7 +50604,7 @@ Document.prototype.$__buildDoc = function(obj, fields, skipId, exclude, hasInclu
|
|
50499
50604
|
}
|
50500
50605
|
}
|
50501
50606
|
|
50502
|
-
const path = p.
|
50607
|
+
const path = this.$__schema.paths[p].splitPath();
|
50503
50608
|
const len = path.length;
|
50504
50609
|
const last = len - 1;
|
50505
50610
|
let curPath = '';
|
@@ -50600,6 +50705,7 @@ Document.prototype.$__init = function(doc, opts) {
|
|
50600
50705
|
}
|
50601
50706
|
child.$__.parent = this;
|
50602
50707
|
}
|
50708
|
+
item._childDocs = [];
|
50603
50709
|
}
|
50604
50710
|
}
|
50605
50711
|
|
@@ -50611,7 +50717,6 @@ Document.prototype.$__init = function(doc, opts) {
|
|
50611
50717
|
this.constructor.emit('init', this);
|
50612
50718
|
|
50613
50719
|
this.$__._id = this._id;
|
50614
|
-
|
50615
50720
|
return this;
|
50616
50721
|
};
|
50617
50722
|
|
@@ -50680,12 +50785,12 @@ function init(self, obj, doc, opts, prefix) {
|
|
50680
50785
|
function _init(index) {
|
50681
50786
|
i = keys[index];
|
50682
50787
|
path = prefix + i;
|
50683
|
-
schema = self.
|
50788
|
+
schema = self.$__schema.path(path);
|
50684
50789
|
|
50685
50790
|
// Should still work if not a model-level discriminator, but should not be
|
50686
50791
|
// necessary. This is *only* to catch the case where we queried using the
|
50687
50792
|
// base model and the discriminated model has a projection
|
50688
|
-
if (self
|
50793
|
+
if (self.$__schema.$isRootDiscriminator && !self.$__isSelected(path)) {
|
50689
50794
|
return;
|
50690
50795
|
}
|
50691
50796
|
|
@@ -50790,10 +50895,10 @@ Document.prototype.update = function update() {
|
|
50790
50895
|
|
50791
50896
|
Document.prototype.updateOne = function updateOne(doc, options, callback) {
|
50792
50897
|
const query = this.constructor.updateOne({ _id: this._id }, doc, options);
|
50793
|
-
query.
|
50898
|
+
query.pre(cb => {
|
50794
50899
|
this.constructor._middleware.execPre('updateOne', this, [this], cb);
|
50795
50900
|
});
|
50796
|
-
query.
|
50901
|
+
query.post(cb => {
|
50797
50902
|
this.constructor._middleware.execPost('updateOne', this, [this], {}, cb);
|
50798
50903
|
});
|
50799
50904
|
|
@@ -50815,7 +50920,7 @@ Document.prototype.updateOne = function updateOne(doc, options, callback) {
|
|
50815
50920
|
*
|
50816
50921
|
* ####Valid options:
|
50817
50922
|
*
|
50818
|
-
* - same as in [Model.replaceOne](#model_Model.replaceOne)
|
50923
|
+
* - same as in [Model.replaceOne](https://mongoosejs.com/docs/api/model.html#model_Model.replaceOne)
|
50819
50924
|
*
|
50820
50925
|
* @see Model.replaceOne #model_Model.replaceOne
|
50821
50926
|
* @param {Object} doc
|
@@ -50858,12 +50963,22 @@ Document.prototype.replaceOne = function replaceOne() {
|
|
50858
50963
|
|
50859
50964
|
Document.prototype.$session = function $session(session) {
|
50860
50965
|
if (arguments.length === 0) {
|
50966
|
+
if (this.$__.session != null && this.$__.session.hasEnded) {
|
50967
|
+
this.$__.session = null;
|
50968
|
+
return null;
|
50969
|
+
}
|
50861
50970
|
return this.$__.session;
|
50862
50971
|
}
|
50972
|
+
|
50973
|
+
if (session != null && session.hasEnded) {
|
50974
|
+
throw new MongooseError('Cannot set a document\'s session to a session that has ended. Make sure you haven\'t ' +
|
50975
|
+
'called `endSession()` on the session you are passing to `$session()`.');
|
50976
|
+
}
|
50977
|
+
|
50863
50978
|
this.$__.session = session;
|
50864
50979
|
|
50865
50980
|
if (!this.ownerDocument) {
|
50866
|
-
const subdocs = this.$
|
50981
|
+
const subdocs = this.$getAllSubdocs();
|
50867
50982
|
for (const child of subdocs) {
|
50868
50983
|
child.$session(session);
|
50869
50984
|
}
|
@@ -50893,10 +51008,10 @@ Document.prototype.overwrite = function overwrite(obj) {
|
|
50893
51008
|
continue;
|
50894
51009
|
}
|
50895
51010
|
// Explicitly skip version key
|
50896
|
-
if (this.
|
51011
|
+
if (this.$__schema.options.versionKey && key === this.$__schema.options.versionKey) {
|
50897
51012
|
continue;
|
50898
51013
|
}
|
50899
|
-
if (this.
|
51014
|
+
if (this.$__schema.options.discriminatorKey && key === this.$__schema.options.discriminatorKey) {
|
50900
51015
|
continue;
|
50901
51016
|
}
|
50902
51017
|
this.$set(key, obj[key]);
|
@@ -50920,7 +51035,6 @@ Document.prototype.overwrite = function overwrite(obj) {
|
|
50920
51035
|
*/
|
50921
51036
|
|
50922
51037
|
Document.prototype.$set = function $set(path, val, type, options) {
|
50923
|
-
|
50924
51038
|
if (utils.isPOJO(type)) {
|
50925
51039
|
options = type;
|
50926
51040
|
type = undefined;
|
@@ -50930,6 +51044,7 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
50930
51044
|
const merge = options.merge;
|
50931
51045
|
const adhoc = type && type !== true;
|
50932
51046
|
const constructing = type === true;
|
51047
|
+
const typeKey = this.$__schema.options.typeKey;
|
50933
51048
|
let adhocs;
|
50934
51049
|
let keys;
|
50935
51050
|
let i = 0;
|
@@ -50943,7 +51058,7 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
50943
51058
|
|
50944
51059
|
if (adhoc) {
|
50945
51060
|
adhocs = this.$__.adhocPaths || (this.$__.adhocPaths = {});
|
50946
|
-
adhocs[path] = this.
|
51061
|
+
adhocs[path] = this.$__schema.interpretAsType(path, type, this.$__schema.options);
|
50947
51062
|
}
|
50948
51063
|
|
50949
51064
|
if (path == null) {
|
@@ -50983,7 +51098,7 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
50983
51098
|
for (let i = 0; i < len; ++i) {
|
50984
51099
|
key = keys[i];
|
50985
51100
|
const pathName = prefix + key;
|
50986
|
-
pathtype = this.
|
51101
|
+
pathtype = this.$__schema.pathType(pathName);
|
50987
51102
|
|
50988
51103
|
// On initial set, delete any nested keys if we're going to overwrite
|
50989
51104
|
// them to ensure we keep the user's key order.
|
@@ -50996,6 +51111,9 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
50996
51111
|
delete this._doc[key];
|
50997
51112
|
// Make sure we set `{}` back even if we minimize re: gh-8565
|
50998
51113
|
options = Object.assign({}, options, { _skipMinimizeTopLevel: true });
|
51114
|
+
} else {
|
51115
|
+
// Make sure we set `{_skipMinimizeTopLevel: false}` if don't have overwrite: gh-10441
|
51116
|
+
options = Object.assign({}, options, { _skipMinimizeTopLevel: false });
|
50999
51117
|
}
|
51000
51118
|
|
51001
51119
|
const someCondition = typeof path[key] === 'object' &&
|
@@ -51006,9 +51124,9 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51006
51124
|
pathtype !== 'real' &&
|
51007
51125
|
pathtype !== 'adhocOrUndefined' &&
|
51008
51126
|
!(this.$__path(pathName) instanceof MixedSchema) &&
|
51009
|
-
!(this.
|
51010
|
-
this.
|
51011
|
-
this.
|
51127
|
+
!(this.$__schema.paths[pathName] &&
|
51128
|
+
this.$__schema.paths[pathName].options &&
|
51129
|
+
this.$__schema.paths[pathName].options.ref);
|
51012
51130
|
|
51013
51131
|
if (someCondition) {
|
51014
51132
|
this.$__.$setCalled.add(prefix + key);
|
@@ -51027,8 +51145,8 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51027
51145
|
if (pathtype === 'real' || pathtype === 'virtual') {
|
51028
51146
|
// Check for setting single embedded schema to document (gh-3535)
|
51029
51147
|
let p = path[key];
|
51030
|
-
if (this.
|
51031
|
-
this.
|
51148
|
+
if (this.$__schema.paths[pathName] &&
|
51149
|
+
this.$__schema.paths[pathName].$isSingleNested &&
|
51032
51150
|
path[key] instanceof Document) {
|
51033
51151
|
p = p.toObject({ virtuals: false, transform: false });
|
51034
51152
|
}
|
@@ -51053,7 +51171,7 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51053
51171
|
this.$__.$setCalled.add(path);
|
51054
51172
|
}
|
51055
51173
|
|
51056
|
-
let pathType = this.
|
51174
|
+
let pathType = this.$__schema.pathType(path);
|
51057
51175
|
if (pathType === 'adhocOrUndefined') {
|
51058
51176
|
pathType = getEmbeddedDiscriminatorPath(this, path, { typeOnly: true });
|
51059
51177
|
}
|
@@ -51104,8 +51222,8 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51104
51222
|
const parts = path.indexOf('.') === -1 ? [path] : path.split('.');
|
51105
51223
|
|
51106
51224
|
// Might need to change path for top-level alias
|
51107
|
-
if (typeof this.
|
51108
|
-
parts[0] = this.
|
51225
|
+
if (typeof this.$__schema.aliases[parts[0]] == 'string') {
|
51226
|
+
parts[0] = this.$__schema.aliases[parts[0]];
|
51109
51227
|
}
|
51110
51228
|
|
51111
51229
|
if (pathType === 'adhocOrUndefined' && strict) {
|
@@ -51116,12 +51234,12 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51116
51234
|
const subpath = parts.slice(0, i + 1).join('.');
|
51117
51235
|
|
51118
51236
|
// If path is underneath a virtual, bypass everything and just set it.
|
51119
|
-
if (i + 1 < parts.length && this.
|
51237
|
+
if (i + 1 < parts.length && this.$__schema.pathType(subpath) === 'virtual') {
|
51120
51238
|
mpath.set(path, val, this);
|
51121
51239
|
return this;
|
51122
51240
|
}
|
51123
51241
|
|
51124
|
-
schema = this.
|
51242
|
+
schema = this.$__schema.path(subpath);
|
51125
51243
|
if (schema == null) {
|
51126
51244
|
continue;
|
51127
51245
|
}
|
@@ -51145,7 +51263,7 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51145
51263
|
return this;
|
51146
51264
|
}
|
51147
51265
|
} else if (pathType === 'virtual') {
|
51148
|
-
schema = this.
|
51266
|
+
schema = this.$__schema.virtualpath(path);
|
51149
51267
|
schema.applySetters(val, this);
|
51150
51268
|
return this;
|
51151
51269
|
} else {
|
@@ -51265,25 +51383,20 @@ Document.prototype.$set = function $set(path, val, type, options) {
|
|
51265
51383
|
|
51266
51384
|
let popOpts;
|
51267
51385
|
if (schema.options &&
|
51268
|
-
Array.isArray(schema.options[
|
51269
|
-
schema.options[
|
51270
|
-
schema.options[
|
51271
|
-
_isManuallyPopulatedArray(val, schema.options[
|
51272
|
-
|
51273
|
-
|
51274
|
-
|
51275
|
-
val.map(function(v) { return v._id; }), popOpts);
|
51276
|
-
} else {
|
51277
|
-
popOpts = { [populateModelSymbol]: val[0].constructor };
|
51278
|
-
this.populated(path, val.map(function(v) { return v._id; }), popOpts);
|
51279
|
-
}
|
51386
|
+
Array.isArray(schema.options[typeKey]) &&
|
51387
|
+
schema.options[typeKey].length &&
|
51388
|
+
schema.options[typeKey][0].ref &&
|
51389
|
+
_isManuallyPopulatedArray(val, schema.options[typeKey][0].ref)) {
|
51390
|
+
popOpts = { [populateModelSymbol]: val[0].constructor };
|
51391
|
+
this.populated(path, val.map(function(v) { return v._id; }), popOpts);
|
51392
|
+
|
51280
51393
|
for (const doc of val) {
|
51281
51394
|
doc.$__.wasPopulated = true;
|
51282
51395
|
}
|
51283
51396
|
didPopulate = true;
|
51284
51397
|
}
|
51285
51398
|
|
51286
|
-
if (this.
|
51399
|
+
if (this.$__schema.singleNestedPaths[path] == null) {
|
51287
51400
|
// If this path is underneath a single nested schema, we'll call the setter
|
51288
51401
|
// later in `$__set()` because we don't take `_doc` when we iterate through
|
51289
51402
|
// a single nested doc. That's to make sure we get the correct context.
|
@@ -51442,7 +51555,7 @@ Document.prototype.$__shouldModify = function(pathToMark, path, constructing, pa
|
|
51442
51555
|
// Re: the note about gh-7196, `val` is the raw value without casting or
|
51443
51556
|
// setters if the full path is under a single nested subdoc because we don't
|
51444
51557
|
// want to double run setters. So don't set it as modified. See gh-7264.
|
51445
|
-
if (this.
|
51558
|
+
if (this.$__schema.singleNestedPaths[path] != null) {
|
51446
51559
|
return false;
|
51447
51560
|
}
|
51448
51561
|
|
@@ -51605,20 +51718,20 @@ Document.prototype.get = function(path, type, options) {
|
|
51605
51718
|
let adhoc;
|
51606
51719
|
options = options || {};
|
51607
51720
|
if (type) {
|
51608
|
-
adhoc = this.
|
51721
|
+
adhoc = this.$__schema.interpretAsType(path, type, this.$__schema.options);
|
51609
51722
|
}
|
51610
51723
|
|
51611
51724
|
let schema = this.$__path(path);
|
51612
51725
|
if (schema == null) {
|
51613
|
-
schema = this.
|
51726
|
+
schema = this.$__schema.virtualpath(path);
|
51614
51727
|
}
|
51615
51728
|
if (schema instanceof MixedSchema) {
|
51616
|
-
const virtual = this.
|
51729
|
+
const virtual = this.$__schema.virtualpath(path);
|
51617
51730
|
if (virtual != null) {
|
51618
51731
|
schema = virtual;
|
51619
51732
|
}
|
51620
51733
|
}
|
51621
|
-
const pieces = path.split('.');
|
51734
|
+
const pieces = path.indexOf('.') === -1 ? [path] : path.split('.');
|
51622
51735
|
let obj = this._doc;
|
51623
51736
|
|
51624
51737
|
if (schema instanceof VirtualType) {
|
@@ -51626,8 +51739,8 @@ Document.prototype.get = function(path, type, options) {
|
|
51626
51739
|
}
|
51627
51740
|
|
51628
51741
|
// Might need to change path for top-level alias
|
51629
|
-
if (typeof this.
|
51630
|
-
pieces[0] = this.
|
51742
|
+
if (typeof this.$__schema.aliases[pieces[0]] == 'string') {
|
51743
|
+
pieces[0] = this.$__schema.aliases[pieces[0]];
|
51631
51744
|
}
|
51632
51745
|
|
51633
51746
|
for (let i = 0, l = pieces.length; i < l; i++) {
|
@@ -51652,7 +51765,7 @@ Document.prototype.get = function(path, type, options) {
|
|
51652
51765
|
|
51653
51766
|
if (schema != null && options.getters !== false) {
|
51654
51767
|
obj = schema.applyGetters(obj, this);
|
51655
|
-
} else if (this.
|
51768
|
+
} else if (this.$__schema.nested[path] && options.virtuals) {
|
51656
51769
|
// Might need to apply virtuals if this is a nested path
|
51657
51770
|
return applyVirtuals(this, utils.clone(obj) || {}, { path: path });
|
51658
51771
|
}
|
@@ -51683,7 +51796,7 @@ Document.prototype.$__path = function(path) {
|
|
51683
51796
|
if (adhocType) {
|
51684
51797
|
return adhocType;
|
51685
51798
|
}
|
51686
|
-
return this.
|
51799
|
+
return this.$__schema.path(path);
|
51687
51800
|
};
|
51688
51801
|
|
51689
51802
|
/**
|
@@ -52218,6 +52331,7 @@ Document.prototype.isDirectSelected = function isDirectSelected(path) {
|
|
52218
52331
|
* @param {Array|String} [pathsToValidate] list of paths to validate. If set, Mongoose will validate only the modified paths that are in the given list.
|
52219
52332
|
* @param {Object} [options] internal options
|
52220
52333
|
* @param {Boolean} [options.validateModifiedOnly=false] if `true` mongoose validates only modified paths.
|
52334
|
+
* @param {Array|string} [options.pathsToSkip] list of paths to skip. If set, Mongoose will validate every modified path that is not in this list.
|
52221
52335
|
* @param {Function} [callback] optional callback called after validation completes, passing an error if one occurred
|
52222
52336
|
* @return {Promise} Promise
|
52223
52337
|
* @api public
|
@@ -52238,7 +52352,17 @@ Document.prototype.validate = function(pathsToValidate, options, callback) {
|
|
52238
52352
|
this.$__.validating = new ParallelValidateError(this, { parentStack: options && options.parentStack });
|
52239
52353
|
}
|
52240
52354
|
|
52241
|
-
if (
|
52355
|
+
if (arguments.length === 1) {
|
52356
|
+
if (typeof arguments[0] === 'object' && !Array.isArray(arguments[0])) {
|
52357
|
+
options = arguments[0];
|
52358
|
+
callback = null;
|
52359
|
+
pathsToValidate = null;
|
52360
|
+
} else if (typeof arguments[0] === 'function') {
|
52361
|
+
callback = arguments[0];
|
52362
|
+
options = null;
|
52363
|
+
pathsToValidate = null;
|
52364
|
+
}
|
52365
|
+
} else if (typeof pathsToValidate === 'function') {
|
52242
52366
|
callback = pathsToValidate;
|
52243
52367
|
options = null;
|
52244
52368
|
pathsToValidate = null;
|
@@ -52247,6 +52371,10 @@ Document.prototype.validate = function(pathsToValidate, options, callback) {
|
|
52247
52371
|
options = pathsToValidate;
|
52248
52372
|
pathsToValidate = null;
|
52249
52373
|
}
|
52374
|
+
if (options && typeof options.pathsToSkip === 'string') {
|
52375
|
+
const isOnePathOnly = options.pathsToSkip.indexOf(' ') === -1;
|
52376
|
+
options.pathsToSkip = isOnePathOnly ? [options.pathsToSkip] : options.pathsToSkip.split(' ');
|
52377
|
+
}
|
52250
52378
|
|
52251
52379
|
return promiseOrCallback(callback, cb => {
|
52252
52380
|
if (parallelValidate != null) {
|
@@ -52266,7 +52394,7 @@ Document.prototype.validate = function(pathsToValidate, options, callback) {
|
|
52266
52394
|
|
52267
52395
|
function _evaluateRequiredFunctions(doc) {
|
52268
52396
|
Object.keys(doc.$__.activePaths.states.require).forEach(path => {
|
52269
|
-
const p = doc.
|
52397
|
+
const p = doc.$__schema.path(path);
|
52270
52398
|
|
52271
52399
|
if (p != null && typeof p.originalRequiredValue === 'function') {
|
52272
52400
|
doc.$__.cachedRequired[path] = p.originalRequiredValue.call(doc, doc);
|
@@ -52299,7 +52427,7 @@ function _getPathsToValidate(doc) {
|
|
52299
52427
|
Object.keys(doc.$__.activePaths.states.default).forEach(addToPaths);
|
52300
52428
|
function addToPaths(p) { paths.add(p); }
|
52301
52429
|
|
52302
|
-
const subdocs = doc.$
|
52430
|
+
const subdocs = doc.$getAllSubdocs();
|
52303
52431
|
const modifiedPaths = doc.modifiedPaths();
|
52304
52432
|
for (const subdoc of subdocs) {
|
52305
52433
|
if (subdoc.$basePath) {
|
@@ -52326,7 +52454,7 @@ function _getPathsToValidate(doc) {
|
|
52326
52454
|
// gh-661: if a whole array is modified, make sure to run validation on all
|
52327
52455
|
// the children as well
|
52328
52456
|
for (const path of paths) {
|
52329
|
-
const _pathType = doc.
|
52457
|
+
const _pathType = doc.$__schema.path(path);
|
52330
52458
|
if (!_pathType ||
|
52331
52459
|
!_pathType.$isMongooseArray ||
|
52332
52460
|
// To avoid potential performance issues, skip doc arrays whose children
|
@@ -52355,12 +52483,12 @@ function _getPathsToValidate(doc) {
|
|
52355
52483
|
|
52356
52484
|
const flattenOptions = { skipArrays: true };
|
52357
52485
|
for (const pathToCheck of paths) {
|
52358
|
-
if (doc.
|
52486
|
+
if (doc.$__schema.nested[pathToCheck]) {
|
52359
52487
|
let _v = doc.$__getValue(pathToCheck);
|
52360
52488
|
if (isMongooseObject(_v)) {
|
52361
52489
|
_v = _v.toObject({ transform: false });
|
52362
52490
|
}
|
52363
|
-
const flat = flatten(_v, pathToCheck, flattenOptions, doc
|
52491
|
+
const flat = flatten(_v, pathToCheck, flattenOptions, doc.$__schema);
|
52364
52492
|
Object.keys(flat).forEach(addToPaths);
|
52365
52493
|
}
|
52366
52494
|
}
|
@@ -52369,11 +52497,11 @@ function _getPathsToValidate(doc) {
|
|
52369
52497
|
// Single nested paths (paths embedded under single nested subdocs) will
|
52370
52498
|
// be validated on their own when we call `validate()` on the subdoc itself.
|
52371
52499
|
// Re: gh-8468
|
52372
|
-
if (doc.
|
52500
|
+
if (doc.$__schema.singleNestedPaths.hasOwnProperty(path)) {
|
52373
52501
|
paths.delete(path);
|
52374
52502
|
continue;
|
52375
52503
|
}
|
52376
|
-
const _pathType = doc.
|
52504
|
+
const _pathType = doc.$__schema.path(path);
|
52377
52505
|
if (!_pathType || !_pathType.$isSchemaMap) {
|
52378
52506
|
continue;
|
52379
52507
|
}
|
@@ -52409,11 +52537,13 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52409
52537
|
(typeof options === 'object') &&
|
52410
52538
|
('validateModifiedOnly' in options);
|
52411
52539
|
|
52540
|
+
const pathsToSkip = get(options, 'pathsToSkip', null);
|
52541
|
+
|
52412
52542
|
let shouldValidateModifiedOnly;
|
52413
52543
|
if (hasValidateModifiedOnlyOption) {
|
52414
52544
|
shouldValidateModifiedOnly = !!options.validateModifiedOnly;
|
52415
52545
|
} else {
|
52416
|
-
shouldValidateModifiedOnly = this.
|
52546
|
+
shouldValidateModifiedOnly = this.$__schema.options.validateModifiedOnly;
|
52417
52547
|
}
|
52418
52548
|
|
52419
52549
|
const _this = this;
|
@@ -52458,14 +52588,19 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52458
52588
|
pathDetails[0].filter((path) => this.isModified(path)) :
|
52459
52589
|
pathDetails[0];
|
52460
52590
|
const skipSchemaValidators = pathDetails[1];
|
52591
|
+
if (typeof pathsToValidate === 'string') {
|
52592
|
+
pathsToValidate = pathsToValidate.split(' ');
|
52593
|
+
}
|
52461
52594
|
if (Array.isArray(pathsToValidate)) {
|
52462
52595
|
paths = _handlePathsToValidate(paths, pathsToValidate);
|
52596
|
+
} else if (pathsToSkip) {
|
52597
|
+
paths = _handlePathsToSkip(paths, pathsToSkip);
|
52463
52598
|
}
|
52464
52599
|
if (paths.length === 0) {
|
52465
|
-
return
|
52600
|
+
return immediate(function() {
|
52466
52601
|
const error = _complete();
|
52467
52602
|
if (error) {
|
52468
|
-
return _this.
|
52603
|
+
return _this.$__schema.s.hooks.execPost('validate:error', _this, [_this], { error: error }, function(error) {
|
52469
52604
|
callback(error);
|
52470
52605
|
});
|
52471
52606
|
}
|
@@ -52476,17 +52611,11 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52476
52611
|
const validated = {};
|
52477
52612
|
let total = 0;
|
52478
52613
|
|
52479
|
-
const
|
52480
|
-
|
52481
|
-
|
52482
|
-
return _this.schema.s.hooks.execPost('validate:error', _this, [_this], { error: error }, function(error) {
|
52483
|
-
callback(error);
|
52484
|
-
});
|
52485
|
-
}
|
52486
|
-
callback(null, _this);
|
52487
|
-
};
|
52614
|
+
for (const path of paths) {
|
52615
|
+
validatePath(path);
|
52616
|
+
}
|
52488
52617
|
|
52489
|
-
|
52618
|
+
function validatePath(path) {
|
52490
52619
|
if (path == null || validated[path]) {
|
52491
52620
|
return;
|
52492
52621
|
}
|
@@ -52494,8 +52623,8 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52494
52623
|
validated[path] = true;
|
52495
52624
|
total++;
|
52496
52625
|
|
52497
|
-
|
52498
|
-
const schemaType = _this.
|
52626
|
+
immediate(function() {
|
52627
|
+
const schemaType = _this.$__schema.path(path);
|
52499
52628
|
|
52500
52629
|
if (!schemaType) {
|
52501
52630
|
return --total || complete();
|
@@ -52507,6 +52636,11 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52507
52636
|
return;
|
52508
52637
|
}
|
52509
52638
|
|
52639
|
+
// If setting a path under a mixed path, avoid using the mixed path validator (gh-10141)
|
52640
|
+
if (schemaType[schemaMixedSymbol] != null && path !== schemaType.path) {
|
52641
|
+
return --total || complete();
|
52642
|
+
}
|
52643
|
+
|
52510
52644
|
let val = _this.$__getValue(path);
|
52511
52645
|
|
52512
52646
|
// If you `populate()` and get back a null value, required validators
|
@@ -52537,12 +52671,18 @@ Document.prototype.$__validate = function(pathsToValidate, options, callback) {
|
|
52537
52671
|
--total || complete();
|
52538
52672
|
}, scope, doValidateOptions);
|
52539
52673
|
});
|
52540
|
-
}
|
52674
|
+
}
|
52541
52675
|
|
52542
|
-
|
52543
|
-
|
52544
|
-
|
52676
|
+
function complete() {
|
52677
|
+
const error = _complete();
|
52678
|
+
if (error) {
|
52679
|
+
return _this.$__schema.s.hooks.execPost('validate:error', _this, [_this], { error: error }, function(error) {
|
52680
|
+
callback(error);
|
52681
|
+
});
|
52682
|
+
}
|
52683
|
+
callback(null, _this);
|
52545
52684
|
}
|
52685
|
+
|
52546
52686
|
};
|
52547
52687
|
|
52548
52688
|
/*!
|
@@ -52578,6 +52718,15 @@ function _handlePathsToValidate(paths, pathsToValidate) {
|
|
52578
52718
|
return ret;
|
52579
52719
|
}
|
52580
52720
|
|
52721
|
+
/*!
|
52722
|
+
* ignore
|
52723
|
+
*/
|
52724
|
+
function _handlePathsToSkip(paths, pathsToSkip) {
|
52725
|
+
pathsToSkip = new Set(pathsToSkip);
|
52726
|
+
paths = paths.filter(p => !pathsToSkip.has(p));
|
52727
|
+
return paths;
|
52728
|
+
}
|
52729
|
+
|
52581
52730
|
/**
|
52582
52731
|
* Executes registered validation rules (skipping asynchronous validators) for this document.
|
52583
52732
|
*
|
@@ -52597,6 +52746,7 @@ function _handlePathsToValidate(paths, pathsToValidate) {
|
|
52597
52746
|
* @param {Array|string} pathsToValidate only validate the given paths
|
52598
52747
|
* @param {Object} [options] options for validation
|
52599
52748
|
* @param {Boolean} [options.validateModifiedOnly=false] If `true`, Mongoose will only validate modified paths, as opposed to modified paths and `required` paths.
|
52749
|
+
* @param {Array|string} [options.pathsToSkip] list of paths to skip. If set, Mongoose will validate every modified path that is not in this list.
|
52600
52750
|
* @return {ValidationError|undefined} ValidationError if there are errors during validation, or undefined if there is no error.
|
52601
52751
|
* @api public
|
52602
52752
|
*/
|
@@ -52604,6 +52754,11 @@ function _handlePathsToValidate(paths, pathsToValidate) {
|
|
52604
52754
|
Document.prototype.validateSync = function(pathsToValidate, options) {
|
52605
52755
|
const _this = this;
|
52606
52756
|
|
52757
|
+
if (arguments.length === 1 && typeof arguments[0] === 'object' && !Array.isArray(arguments[0])) {
|
52758
|
+
options = arguments[0];
|
52759
|
+
pathsToValidate = null;
|
52760
|
+
}
|
52761
|
+
|
52607
52762
|
const hasValidateModifiedOnlyOption = options &&
|
52608
52763
|
(typeof options === 'object') &&
|
52609
52764
|
('validateModifiedOnly' in options);
|
@@ -52612,11 +52767,16 @@ Document.prototype.validateSync = function(pathsToValidate, options) {
|
|
52612
52767
|
if (hasValidateModifiedOnlyOption) {
|
52613
52768
|
shouldValidateModifiedOnly = !!options.validateModifiedOnly;
|
52614
52769
|
} else {
|
52615
|
-
shouldValidateModifiedOnly = this.
|
52770
|
+
shouldValidateModifiedOnly = this.$__schema.options.validateModifiedOnly;
|
52616
52771
|
}
|
52617
52772
|
|
52773
|
+
let pathsToSkip = options && options.pathsToSkip;
|
52774
|
+
|
52618
52775
|
if (typeof pathsToValidate === 'string') {
|
52619
|
-
|
52776
|
+
const isOnePathOnly = pathsToValidate.indexOf(' ') === -1;
|
52777
|
+
pathsToValidate = isOnePathOnly ? [pathsToValidate] : pathsToValidate.split(' ');
|
52778
|
+
} else if (typeof pathsToSkip === 'string' && pathsToSkip.indexOf(' ') !== -1) {
|
52779
|
+
pathsToSkip = pathsToSkip.split(' ');
|
52620
52780
|
}
|
52621
52781
|
|
52622
52782
|
// only validate required fields when necessary
|
@@ -52628,6 +52788,8 @@ Document.prototype.validateSync = function(pathsToValidate, options) {
|
|
52628
52788
|
|
52629
52789
|
if (Array.isArray(pathsToValidate)) {
|
52630
52790
|
paths = _handlePathsToValidate(paths, pathsToValidate);
|
52791
|
+
} else if (Array.isArray(pathsToSkip)) {
|
52792
|
+
paths = _handlePathsToSkip(paths, pathsToSkip);
|
52631
52793
|
}
|
52632
52794
|
const validating = {};
|
52633
52795
|
|
@@ -52638,7 +52800,7 @@ Document.prototype.validateSync = function(pathsToValidate, options) {
|
|
52638
52800
|
|
52639
52801
|
validating[path] = true;
|
52640
52802
|
|
52641
|
-
const p = _this.
|
52803
|
+
const p = _this.$__schema.path(path);
|
52642
52804
|
if (!p) {
|
52643
52805
|
return;
|
52644
52806
|
}
|
@@ -52911,7 +53073,13 @@ Document.prototype.$__reset = function reset() {
|
|
52911
53073
|
}).
|
52912
53074
|
forEach(function(doc) {
|
52913
53075
|
doc.$__reset();
|
52914
|
-
|
53076
|
+
if (doc.$__parent === _this) {
|
53077
|
+
_this.$__.activePaths.init(doc.$basePath);
|
53078
|
+
} else if (doc.$__parent != null && doc.$__parent.ownerDocument) {
|
53079
|
+
// If map path underneath subdocument, may end up with a case where
|
53080
|
+
// map path is modified but parent still needs to be reset. See gh-10295
|
53081
|
+
doc.$__parent.$__reset();
|
53082
|
+
}
|
52915
53083
|
});
|
52916
53084
|
|
52917
53085
|
// clear atomics
|
@@ -52938,7 +53106,7 @@ Document.prototype.$__reset = function reset() {
|
|
52938
53106
|
this.$__.validationError = undefined;
|
52939
53107
|
this.errors = undefined;
|
52940
53108
|
_this = this;
|
52941
|
-
this.
|
53109
|
+
this.$__schema.requiredPaths().forEach(function(path) {
|
52942
53110
|
_this.$__.activePaths.require(path);
|
52943
53111
|
});
|
52944
53112
|
|
@@ -52968,7 +53136,7 @@ Document.prototype.$__undoReset = function $__undoReset() {
|
|
52968
53136
|
}
|
52969
53137
|
}
|
52970
53138
|
|
52971
|
-
for (const subdoc of this.$
|
53139
|
+
for (const subdoc of this.$getAllSubdocs()) {
|
52972
53140
|
subdoc.$__undoReset();
|
52973
53141
|
}
|
52974
53142
|
};
|
@@ -52992,7 +53160,6 @@ Document.prototype.$__dirty = function() {
|
|
52992
53160
|
schema: _this.$__path(path)
|
52993
53161
|
};
|
52994
53162
|
});
|
52995
|
-
|
52996
53163
|
// gh-2558: if we had to set a default and the value is not undefined,
|
52997
53164
|
// we have to save as well
|
52998
53165
|
all = all.concat(this.$__.activePaths.map('default', function(path) {
|
@@ -53036,7 +53203,6 @@ Document.prototype.$__dirty = function() {
|
|
53036
53203
|
top.value[arrayAtomicsSymbol].$set = top.value;
|
53037
53204
|
}
|
53038
53205
|
});
|
53039
|
-
|
53040
53206
|
top = lastPath = null;
|
53041
53207
|
return minimal;
|
53042
53208
|
};
|
@@ -53059,8 +53225,10 @@ Document.prototype.$__setSchema = function(schema) {
|
|
53059
53225
|
for (const key of Object.keys(schema.virtuals)) {
|
53060
53226
|
schema.virtuals[key]._applyDefaultGetters();
|
53061
53227
|
}
|
53062
|
-
|
53063
|
-
|
53228
|
+
if (schema.path('schema') == null) {
|
53229
|
+
this.schema = schema;
|
53230
|
+
}
|
53231
|
+
this.$__schema = schema;
|
53064
53232
|
this[documentSchemaSymbol] = schema;
|
53065
53233
|
};
|
53066
53234
|
|
@@ -53096,21 +53264,25 @@ Document.prototype.$__getArrayPathsToValidate = function() {
|
|
53096
53264
|
/**
|
53097
53265
|
* Get all subdocs (by bfs)
|
53098
53266
|
*
|
53099
|
-
* @api
|
53100
|
-
* @method $
|
53267
|
+
* @api public
|
53268
|
+
* @method $getAllSubdocs
|
53101
53269
|
* @memberOf Document
|
53102
53270
|
* @instance
|
53103
53271
|
*/
|
53104
53272
|
|
53105
|
-
Document.prototype.$
|
53273
|
+
Document.prototype.$getAllSubdocs = function $getAllSubdocs() {
|
53106
53274
|
DocumentArray || (DocumentArray = require('./types/documentarray'));
|
53107
53275
|
Embedded = Embedded || require('./types/embedded');
|
53108
53276
|
|
53109
53277
|
function docReducer(doc, seed, path) {
|
53110
53278
|
let val = doc;
|
53279
|
+
let isNested = false;
|
53111
53280
|
if (path) {
|
53112
53281
|
if (doc instanceof Document && doc[documentSchemaSymbol].paths[path]) {
|
53113
53282
|
val = doc._doc[path];
|
53283
|
+
} else if (doc instanceof Document && doc[documentSchemaSymbol].nested[path]) {
|
53284
|
+
val = doc._doc[path];
|
53285
|
+
isNested = true;
|
53114
53286
|
} else {
|
53115
53287
|
val = doc[path];
|
53116
53288
|
}
|
@@ -53138,18 +53310,18 @@ Document.prototype.$__getAllSubdocs = function() {
|
|
53138
53310
|
seed.push(doc);
|
53139
53311
|
}
|
53140
53312
|
});
|
53141
|
-
} else if (
|
53142
|
-
|
53143
|
-
|
53144
|
-
}
|
53313
|
+
} else if (isNested && val != null) {
|
53314
|
+
for (const path of Object.keys(val)) {
|
53315
|
+
docReducer(val, seed, path);
|
53316
|
+
}
|
53145
53317
|
}
|
53146
53318
|
return seed;
|
53147
53319
|
}
|
53148
53320
|
|
53149
|
-
const
|
53150
|
-
const
|
53151
|
-
|
53152
|
-
}
|
53321
|
+
const subDocs = [];
|
53322
|
+
for (const path of Object.keys(this._doc)) {
|
53323
|
+
docReducer(this, subDocs, path);
|
53324
|
+
}
|
53153
53325
|
|
53154
53326
|
return subDocs;
|
53155
53327
|
};
|
@@ -53159,7 +53331,7 @@ Document.prototype.$__getAllSubdocs = function() {
|
|
53159
53331
|
*/
|
53160
53332
|
|
53161
53333
|
function applyQueue(doc) {
|
53162
|
-
const q = doc
|
53334
|
+
const q = doc.$__schema && doc.$__schema.callQueue;
|
53163
53335
|
if (!q.length) {
|
53164
53336
|
return;
|
53165
53337
|
}
|
@@ -53201,7 +53373,7 @@ Document.prototype.$toObject = function(options, json) {
|
|
53201
53373
|
|
53202
53374
|
const path = json ? 'toJSON' : 'toObject';
|
53203
53375
|
const baseOptions = get(this, 'constructor.base.options.' + path, {});
|
53204
|
-
const schemaOptions = get(this, '
|
53376
|
+
const schemaOptions = get(this, '$__schema.options', {});
|
53205
53377
|
// merge base default options with Schema's set default options if available.
|
53206
53378
|
// `clone` is necessary here because `utils.options` directly modifies the second input.
|
53207
53379
|
defaultOptions = utils.options(defaultOptions, clone(baseOptions));
|
@@ -53211,10 +53383,6 @@ Document.prototype.$toObject = function(options, json) {
|
|
53211
53383
|
options = utils.isPOJO(options) ? clone(options) : {};
|
53212
53384
|
options._calledWithOptions = options._calledWithOptions || clone(options);
|
53213
53385
|
|
53214
|
-
if (!('flattenMaps' in options)) {
|
53215
|
-
options.flattenMaps = defaultOptions.flattenMaps;
|
53216
|
-
}
|
53217
|
-
|
53218
53386
|
let _minimize;
|
53219
53387
|
if (options._calledWithOptions.minimize != null) {
|
53220
53388
|
_minimize = options.minimize;
|
@@ -53224,6 +53392,15 @@ Document.prototype.$toObject = function(options, json) {
|
|
53224
53392
|
_minimize = schemaOptions.minimize;
|
53225
53393
|
}
|
53226
53394
|
|
53395
|
+
let flattenMaps;
|
53396
|
+
if (options._calledWithOptions.flattenMaps != null) {
|
53397
|
+
flattenMaps = options.flattenMaps;
|
53398
|
+
} else if (defaultOptions.flattenMaps != null) {
|
53399
|
+
flattenMaps = defaultOptions.flattenMaps;
|
53400
|
+
} else {
|
53401
|
+
flattenMaps = schemaOptions.flattenMaps;
|
53402
|
+
}
|
53403
|
+
|
53227
53404
|
// The original options that will be passed to `clone()`. Important because
|
53228
53405
|
// `clone()` will recursively call `$toObject()` on embedded docs, so we
|
53229
53406
|
// need the original options the user passed in, plus `_isNested` and
|
@@ -53231,7 +53408,8 @@ Document.prototype.$toObject = function(options, json) {
|
|
53231
53408
|
const cloneOptions = Object.assign(utils.clone(options), {
|
53232
53409
|
_isNested: true,
|
53233
53410
|
json: json,
|
53234
|
-
minimize: _minimize
|
53411
|
+
minimize: _minimize,
|
53412
|
+
flattenMaps: flattenMaps
|
53235
53413
|
});
|
53236
53414
|
|
53237
53415
|
if (utils.hasUserDefinedProperty(options, 'getters')) {
|
@@ -53280,8 +53458,8 @@ Document.prototype.$toObject = function(options, json) {
|
|
53280
53458
|
applyVirtuals(this, ret, gettersOptions, options);
|
53281
53459
|
}
|
53282
53460
|
|
53283
|
-
if (options.versionKey === false && this.
|
53284
|
-
delete ret[this.
|
53461
|
+
if (options.versionKey === false && this.$__schema.options.versionKey) {
|
53462
|
+
delete ret[this.$__schema.options.versionKey];
|
53285
53463
|
}
|
53286
53464
|
|
53287
53465
|
let transform = options.transform;
|
@@ -53511,7 +53689,7 @@ function minimize(obj) {
|
|
53511
53689
|
*/
|
53512
53690
|
|
53513
53691
|
function applyVirtuals(self, json, options, toObjectOptions) {
|
53514
|
-
const schema = self
|
53692
|
+
const schema = self.$__schema;
|
53515
53693
|
const paths = Object.keys(schema.virtuals);
|
53516
53694
|
let i = paths.length;
|
53517
53695
|
const numPaths = i;
|
@@ -53521,6 +53699,19 @@ function applyVirtuals(self, json, options, toObjectOptions) {
|
|
53521
53699
|
let v;
|
53522
53700
|
const aliases = get(toObjectOptions, 'aliases', true);
|
53523
53701
|
|
53702
|
+
let virtualsToApply = null;
|
53703
|
+
if (Array.isArray(options.virtuals)) {
|
53704
|
+
virtualsToApply = new Set(options.virtuals);
|
53705
|
+
}
|
53706
|
+
else if (options.virtuals && options.virtuals.pathsToSkip) {
|
53707
|
+
virtualsToApply = new Set(paths);
|
53708
|
+
for (let i = 0; i < options.virtuals.pathsToSkip.length; i++) {
|
53709
|
+
if (virtualsToApply.has(options.virtuals.pathsToSkip[i])) {
|
53710
|
+
virtualsToApply.delete(options.virtuals.pathsToSkip[i]);
|
53711
|
+
}
|
53712
|
+
}
|
53713
|
+
}
|
53714
|
+
|
53524
53715
|
if (!cur) {
|
53525
53716
|
return json;
|
53526
53717
|
}
|
@@ -53529,6 +53720,10 @@ function applyVirtuals(self, json, options, toObjectOptions) {
|
|
53529
53720
|
for (i = 0; i < numPaths; ++i) {
|
53530
53721
|
path = paths[i];
|
53531
53722
|
|
53723
|
+
if (virtualsToApply != null && !virtualsToApply.has(path)) {
|
53724
|
+
continue;
|
53725
|
+
}
|
53726
|
+
|
53532
53727
|
// Allow skipping aliases with `toObject({ virtuals: true, aliases: false })`
|
53533
53728
|
if (!aliases && schema.aliases.hasOwnProperty(path)) {
|
53534
53729
|
continue;
|
@@ -53561,6 +53756,7 @@ function applyVirtuals(self, json, options, toObjectOptions) {
|
|
53561
53756
|
return json;
|
53562
53757
|
}
|
53563
53758
|
|
53759
|
+
|
53564
53760
|
/*!
|
53565
53761
|
* Applies virtuals properties to `json`.
|
53566
53762
|
*
|
@@ -53570,7 +53766,7 @@ function applyVirtuals(self, json, options, toObjectOptions) {
|
|
53570
53766
|
*/
|
53571
53767
|
|
53572
53768
|
function applyGetters(self, json, options) {
|
53573
|
-
const schema = self
|
53769
|
+
const schema = self.$__schema;
|
53574
53770
|
const paths = Object.keys(schema.paths);
|
53575
53771
|
let i = paths.length;
|
53576
53772
|
let path;
|
@@ -53625,7 +53821,7 @@ function applyGetters(self, json, options) {
|
|
53625
53821
|
*/
|
53626
53822
|
|
53627
53823
|
function applySchemaTypeTransforms(self, json) {
|
53628
|
-
const schema = self
|
53824
|
+
const schema = self.$__schema;
|
53629
53825
|
const paths = Object.keys(schema.paths || {});
|
53630
53826
|
const cur = self._doc;
|
53631
53827
|
|
@@ -53668,7 +53864,7 @@ function throwErrorIfPromise(path, transformedValue) {
|
|
53668
53864
|
*/
|
53669
53865
|
|
53670
53866
|
function omitDeselectedFields(self, json) {
|
53671
|
-
const schema = self
|
53867
|
+
const schema = self.$__schema;
|
53672
53868
|
const paths = Object.keys(schema.paths || {});
|
53673
53869
|
const cur = self._doc;
|
53674
53870
|
|
@@ -53923,6 +54119,34 @@ Document.prototype.populate = function populate() {
|
|
53923
54119
|
return this;
|
53924
54120
|
};
|
53925
54121
|
|
54122
|
+
/**
|
54123
|
+
* Gets all populated documents associated with this document.
|
54124
|
+
*
|
54125
|
+
* @api public
|
54126
|
+
* @return {Array<Document>} array of populated documents. Empty array if there are no populated documents associated with this document.
|
54127
|
+
* @memberOf Document
|
54128
|
+
* @instance
|
54129
|
+
*/
|
54130
|
+
Document.prototype.$getPopulatedDocs = function $getPopulatedDocs() {
|
54131
|
+
let keys = [];
|
54132
|
+
if (this.$__.populated != null) {
|
54133
|
+
keys = keys.concat(Object.keys(this.$__.populated));
|
54134
|
+
}
|
54135
|
+
if (this.$$populatedVirtuals != null) {
|
54136
|
+
keys = keys.concat(Object.keys(this.$$populatedVirtuals));
|
54137
|
+
}
|
54138
|
+
let result = [];
|
54139
|
+
for (const key of keys) {
|
54140
|
+
const value = this.get(key);
|
54141
|
+
if (Array.isArray(value)) {
|
54142
|
+
result = result.concat(value);
|
54143
|
+
} else if (value instanceof Document) {
|
54144
|
+
result.push(value);
|
54145
|
+
}
|
54146
|
+
}
|
54147
|
+
return result;
|
54148
|
+
};
|
54149
|
+
|
53926
54150
|
/**
|
53927
54151
|
* Explicitly executes population and returns a promise. Useful for promises integration.
|
53928
54152
|
*
|
@@ -53992,25 +54216,21 @@ Document.prototype.execPopulate = function(callback) {
|
|
53992
54216
|
|
53993
54217
|
Document.prototype.populated = function(path, val, options) {
|
53994
54218
|
// val and options are internal
|
53995
|
-
if (val
|
54219
|
+
if (val == null || val === true) {
|
53996
54220
|
if (!this.$__.populated) {
|
53997
54221
|
return undefined;
|
53998
54222
|
}
|
53999
|
-
|
54223
|
+
|
54224
|
+
// Map paths can be populated with either `path.$*` or just `path`
|
54225
|
+
const _path = path.endsWith('.$*') ? path.replace(/\.\$\*$/, '') : path;
|
54226
|
+
|
54227
|
+
const v = this.$__.populated[_path];
|
54000
54228
|
if (v) {
|
54001
|
-
return v.value;
|
54229
|
+
return val === true ? v : v.value;
|
54002
54230
|
}
|
54003
54231
|
return undefined;
|
54004
54232
|
}
|
54005
54233
|
|
54006
|
-
// internal
|
54007
|
-
if (val === true) {
|
54008
|
-
if (!this.$__.populated) {
|
54009
|
-
return undefined;
|
54010
|
-
}
|
54011
|
-
return this.$__.populated[path];
|
54012
|
-
}
|
54013
|
-
|
54014
54234
|
this.$__.populated || (this.$__.populated = {});
|
54015
54235
|
this.$__.populated[path] = { value: val, options: options };
|
54016
54236
|
|
@@ -54043,7 +54263,7 @@ Document.prototype.populated = function(path, val, options) {
|
|
54043
54263
|
* console.log(doc.author); // '5144cf8050f071d979c118a7'
|
54044
54264
|
* })
|
54045
54265
|
*
|
54046
|
-
* If the path was not
|
54266
|
+
* If the path was not provided, then all populated fields are returned to their unpopulated state.
|
54047
54267
|
*
|
54048
54268
|
* @param {String} path
|
54049
54269
|
* @return {Document} this
|
@@ -54078,7 +54298,7 @@ Document.prototype.depopulate = function(path) {
|
|
54078
54298
|
continue;
|
54079
54299
|
}
|
54080
54300
|
delete populated[key];
|
54081
|
-
|
54301
|
+
utils.setValue(key, populatedIds, this._doc);
|
54082
54302
|
}
|
54083
54303
|
return this;
|
54084
54304
|
}
|
@@ -54091,7 +54311,7 @@ Document.prototype.depopulate = function(path) {
|
|
54091
54311
|
delete this.$$populatedVirtuals[singlePath];
|
54092
54312
|
delete this._doc[singlePath];
|
54093
54313
|
} else if (populatedIds) {
|
54094
|
-
|
54314
|
+
utils.setValue(singlePath, populatedIds, this._doc);
|
54095
54315
|
}
|
54096
54316
|
}
|
54097
54317
|
return this;
|
@@ -54168,8 +54388,8 @@ Document.prototype.getChanges = function() {
|
|
54168
54388
|
Document.ValidationError = ValidationError;
|
54169
54389
|
module.exports = exports = Document;
|
54170
54390
|
|
54171
|
-
}).call(this)}).call(this,{"isBuffer":require("../../is-buffer/index.js")}
|
54172
|
-
},{"../../is-buffer/index.js":178,"./error/index":203,"./error/objectExpected":208,"./error/objectParameter":209,"./error/parallelValidate":212,"./error/strict":213,"./error/validation":214,"./error/validator":215,"./helpers/common":219,"./helpers/document/cleanModifiedSubpaths":
|
54391
|
+
}).call(this)}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
|
54392
|
+
},{"../../is-buffer/index.js":178,"./error/index":203,"./error/objectExpected":208,"./error/objectParameter":209,"./error/parallelValidate":212,"./error/strict":213,"./error/validation":214,"./error/validator":215,"./helpers/common":219,"./helpers/document/cleanModifiedSubpaths":225,"./helpers/document/compile":226,"./helpers/document/getEmbeddedDiscriminatorPath":227,"./helpers/document/handleSpreadDoc":228,"./helpers/get":229,"./helpers/immediate":232,"./helpers/isPromise":236,"./helpers/projection/isDefiningProjection":240,"./helpers/projection/isExclusive":241,"./helpers/promiseOrCallback":242,"./helpers/symbols":253,"./internal":257,"./options":258,"./plugins/idGetter":272,"./queryhelpers":274,"./schema":275,"./schema/mixed":285,"./schema/symbols":295,"./types/array":298,"./types/documentarray":302,"./types/embedded":303,"./utils":308,"./virtualtype":309,"events":176,"mpath":311,"util":333}],194:[function(require,module,exports){
|
54173
54393
|
'use strict';
|
54174
54394
|
|
54175
54395
|
/* eslint-env browser */
|
@@ -54263,6 +54483,9 @@ exports.Binary = require('./binary');
|
|
54263
54483
|
exports.Collection = function() {
|
54264
54484
|
throw new Error('Cannot create a collection from browser library');
|
54265
54485
|
};
|
54486
|
+
exports.getConnection = () => function() {
|
54487
|
+
throw new Error('Cannot create a connection from browser library');
|
54488
|
+
};
|
54266
54489
|
exports.Decimal128 = require('./decimal128');
|
54267
54490
|
exports.ObjectId = require('./objectid');
|
54268
54491
|
exports.ReadPreference = require('./ReadPreference');
|
@@ -54322,8 +54545,9 @@ class CastError extends MongooseError {
|
|
54322
54545
|
// If no args, assume we'll `init()` later.
|
54323
54546
|
if (arguments.length > 0) {
|
54324
54547
|
const stringValue = getStringValue(value);
|
54548
|
+
const valueType = getValueType(value);
|
54325
54549
|
const messageFormat = getMessageFormat(schemaType);
|
54326
|
-
const msg = formatMessage(null, type, stringValue, path, messageFormat);
|
54550
|
+
const msg = formatMessage(null, type, stringValue, path, messageFormat, valueType);
|
54327
54551
|
super(msg);
|
54328
54552
|
this.init(type, value, path, reason, schemaType);
|
54329
54553
|
} else {
|
@@ -54331,6 +54555,18 @@ class CastError extends MongooseError {
|
|
54331
54555
|
}
|
54332
54556
|
}
|
54333
54557
|
|
54558
|
+
toJSON() {
|
54559
|
+
return {
|
54560
|
+
stringValue: this.stringValue,
|
54561
|
+
valueType: this.valueType,
|
54562
|
+
kind: this.kind,
|
54563
|
+
value: this.value,
|
54564
|
+
path: this.path,
|
54565
|
+
reason: this.reason,
|
54566
|
+
name: this.name,
|
54567
|
+
message: this.message
|
54568
|
+
};
|
54569
|
+
}
|
54334
54570
|
/*!
|
54335
54571
|
* ignore
|
54336
54572
|
*/
|
@@ -54341,6 +54577,7 @@ class CastError extends MongooseError {
|
|
54341
54577
|
this.value = value;
|
54342
54578
|
this.path = path;
|
54343
54579
|
this.reason = reason;
|
54580
|
+
this.valueType = getValueType(value);
|
54344
54581
|
}
|
54345
54582
|
|
54346
54583
|
/*!
|
@@ -54355,6 +54592,7 @@ class CastError extends MongooseError {
|
|
54355
54592
|
this.path = other.path;
|
54356
54593
|
this.reason = other.reason;
|
54357
54594
|
this.message = other.message;
|
54595
|
+
this.valueType = other.valueType;
|
54358
54596
|
}
|
54359
54597
|
|
54360
54598
|
/*!
|
@@ -54363,7 +54601,7 @@ class CastError extends MongooseError {
|
|
54363
54601
|
setModel(model) {
|
54364
54602
|
this.model = model;
|
54365
54603
|
this.message = formatMessage(model, this.kind, this.stringValue, this.path,
|
54366
|
-
this.messageFormat);
|
54604
|
+
this.messageFormat, this.valueType);
|
54367
54605
|
}
|
54368
54606
|
}
|
54369
54607
|
|
@@ -54380,6 +54618,21 @@ function getStringValue(value) {
|
|
54380
54618
|
return stringValue;
|
54381
54619
|
}
|
54382
54620
|
|
54621
|
+
function getValueType(value) {
|
54622
|
+
if (value == null) {
|
54623
|
+
return '' + value;
|
54624
|
+
}
|
54625
|
+
|
54626
|
+
const t = typeof value;
|
54627
|
+
if (t !== 'object') {
|
54628
|
+
return t;
|
54629
|
+
}
|
54630
|
+
if (typeof value.constructor !== 'function') {
|
54631
|
+
return t;
|
54632
|
+
}
|
54633
|
+
return value.constructor.name;
|
54634
|
+
}
|
54635
|
+
|
54383
54636
|
function getMessageFormat(schemaType) {
|
54384
54637
|
const messageFormat = get(schemaType, 'options.cast', null);
|
54385
54638
|
if (typeof messageFormat === 'string') {
|
@@ -54391,7 +54644,7 @@ function getMessageFormat(schemaType) {
|
|
54391
54644
|
* ignore
|
54392
54645
|
*/
|
54393
54646
|
|
54394
|
-
function formatMessage(model, kind, stringValue, path, messageFormat) {
|
54647
|
+
function formatMessage(model, kind, stringValue, path, messageFormat, valueType) {
|
54395
54648
|
if (messageFormat != null) {
|
54396
54649
|
let ret = messageFormat.
|
54397
54650
|
replace('{KIND}', kind).
|
@@ -54403,12 +54656,12 @@ function formatMessage(model, kind, stringValue, path, messageFormat) {
|
|
54403
54656
|
|
54404
54657
|
return ret;
|
54405
54658
|
} else {
|
54659
|
+
const valueTypeMsg = valueType ? ' (type ' + valueType + ')' : '';
|
54406
54660
|
let ret = 'Cast to ' + kind + ' failed for value ' +
|
54407
|
-
stringValue + ' at path "' + path + '"';
|
54661
|
+
stringValue + valueTypeMsg + ' at path "' + path + '"';
|
54408
54662
|
if (model != null) {
|
54409
54663
|
ret += ' for model "' + model.modelName + '"';
|
54410
54664
|
}
|
54411
|
-
|
54412
54665
|
return ret;
|
54413
54666
|
}
|
54414
54667
|
}
|
@@ -54419,7 +54672,7 @@ function formatMessage(model, kind, stringValue, path, messageFormat) {
|
|
54419
54672
|
|
54420
54673
|
module.exports = CastError;
|
54421
54674
|
|
54422
|
-
},{"../helpers/get":
|
54675
|
+
},{"../helpers/get":229,"./mongooseError":206,"util":333}],202:[function(require,module,exports){
|
54423
54676
|
|
54424
54677
|
/*!
|
54425
54678
|
* Module dependencies.
|
@@ -54807,7 +55060,7 @@ Object.defineProperty(DocumentNotFoundError.prototype, 'name', {
|
|
54807
55060
|
|
54808
55061
|
module.exports = DocumentNotFoundError;
|
54809
55062
|
|
54810
|
-
},{"./":203,"util":
|
55063
|
+
},{"./":203,"util":333}],208:[function(require,module,exports){
|
54811
55064
|
/*!
|
54812
55065
|
* Module dependencies.
|
54813
55066
|
*/
|
@@ -55009,6 +55262,7 @@ module.exports = StrictModeError;
|
|
55009
55262
|
'use strict';
|
55010
55263
|
|
55011
55264
|
const MongooseError = require('./mongooseError');
|
55265
|
+
const getConstructorName = require('../helpers/getConstructorName');
|
55012
55266
|
const util = require('util');
|
55013
55267
|
|
55014
55268
|
class ValidationError extends MongooseError {
|
@@ -55021,7 +55275,7 @@ class ValidationError extends MongooseError {
|
|
55021
55275
|
*/
|
55022
55276
|
constructor(instance) {
|
55023
55277
|
let _message;
|
55024
|
-
if (instance
|
55278
|
+
if (getConstructorName(instance) === 'model') {
|
55025
55279
|
_message = instance.constructor.modelName + ' validation failed';
|
55026
55280
|
} else {
|
55027
55281
|
_message = 'Validation failed';
|
@@ -55114,7 +55368,7 @@ function _generateMessage(err) {
|
|
55114
55368
|
|
55115
55369
|
module.exports = ValidationError;
|
55116
55370
|
|
55117
|
-
},{"./mongooseError":206,"util":
|
55371
|
+
},{"../helpers/getConstructorName":230,"./mongooseError":206,"util":333}],215:[function(require,module,exports){
|
55118
55372
|
/*!
|
55119
55373
|
* Module dependencies.
|
55120
55374
|
*/
|
@@ -55260,6 +55514,9 @@ function arrayDepth(arr) {
|
|
55260
55514
|
if (arr.length === 0) {
|
55261
55515
|
return { min: 1, max: 1, containsNonArrayItem: false };
|
55262
55516
|
}
|
55517
|
+
if (arr.length === 1 && !Array.isArray(arr[0])) {
|
55518
|
+
return { min: 1, max: 1, containsNonArrayItem: false };
|
55519
|
+
}
|
55263
55520
|
|
55264
55521
|
const res = arrayDepth(arr[0]);
|
55265
55522
|
|
@@ -55423,7 +55680,7 @@ function cloneArray(arr, options) {
|
|
55423
55680
|
|
55424
55681
|
return ret;
|
55425
55682
|
}
|
55426
|
-
},{"../types/decimal128":
|
55683
|
+
},{"../types/decimal128":301,"../types/objectid":306,"../utils":308,"./getFunctionName":231,"./isBsonType":233,"./isMongooseObject":234,"./isObject":235,"./specialProperties":252,"./symbols":253,"regexp-clone":327}],219:[function(require,module,exports){
|
55427
55684
|
(function (Buffer){(function (){
|
55428
55685
|
'use strict';
|
55429
55686
|
|
@@ -55533,7 +55790,24 @@ function shouldFlatten(val) {
|
|
55533
55790
|
}
|
55534
55791
|
|
55535
55792
|
}).call(this)}).call(this,require("buffer").Buffer)
|
55536
|
-
},{"../driver":195,"../types/decimal128":
|
55793
|
+
},{"../driver":195,"../types/decimal128":301,"../types/objectid":306,"./isMongooseObject":234,"buffer":128}],220:[function(require,module,exports){
|
55794
|
+
'use strict';
|
55795
|
+
|
55796
|
+
const ObjectId = require('../../types/objectid');
|
55797
|
+
|
55798
|
+
module.exports = function areDiscriminatorValuesEqual(a, b) {
|
55799
|
+
if (typeof a === 'string' && typeof b === 'string') {
|
55800
|
+
return a === b;
|
55801
|
+
}
|
55802
|
+
if (typeof a === 'number' && typeof b === 'number') {
|
55803
|
+
return a === b;
|
55804
|
+
}
|
55805
|
+
if (a instanceof ObjectId && b instanceof ObjectId) {
|
55806
|
+
return a.toString() === b.toString();
|
55807
|
+
}
|
55808
|
+
return false;
|
55809
|
+
};
|
55810
|
+
},{"../../types/objectid":306}],221:[function(require,module,exports){
|
55537
55811
|
'use strict';
|
55538
55812
|
|
55539
55813
|
module.exports = function checkEmbeddedDiscriminatorKeyProjection(userProjection, path, schema, selected, addedPaths) {
|
@@ -55546,7 +55820,7 @@ module.exports = function checkEmbeddedDiscriminatorKeyProjection(userProjection
|
|
55546
55820
|
selected.splice(selected.indexOf(_discriminatorKey), 1);
|
55547
55821
|
}
|
55548
55822
|
};
|
55549
|
-
},{}],
|
55823
|
+
},{}],222:[function(require,module,exports){
|
55550
55824
|
'use strict';
|
55551
55825
|
|
55552
55826
|
const getDiscriminatorByValue = require('./getDiscriminatorByValue');
|
@@ -55563,7 +55837,7 @@ module.exports = function getConstructor(Constructor, value) {
|
|
55563
55837
|
if (Constructor.discriminators[value[discriminatorKey]]) {
|
55564
55838
|
Constructor = Constructor.discriminators[value[discriminatorKey]];
|
55565
55839
|
} else {
|
55566
|
-
const constructorByValue = getDiscriminatorByValue(Constructor, value[discriminatorKey]);
|
55840
|
+
const constructorByValue = getDiscriminatorByValue(Constructor.discriminators, value[discriminatorKey]);
|
55567
55841
|
if (constructorByValue) {
|
55568
55842
|
Constructor = constructorByValue;
|
55569
55843
|
}
|
@@ -55572,9 +55846,11 @@ module.exports = function getConstructor(Constructor, value) {
|
|
55572
55846
|
|
55573
55847
|
return Constructor;
|
55574
55848
|
};
|
55575
|
-
},{"./getDiscriminatorByValue":
|
55849
|
+
},{"./getDiscriminatorByValue":223}],223:[function(require,module,exports){
|
55576
55850
|
'use strict';
|
55577
55851
|
|
55852
|
+
const areDiscriminatorValuesEqual = require('./areDiscriminatorValuesEqual');
|
55853
|
+
|
55578
55854
|
/*!
|
55579
55855
|
* returns discriminator by discriminatorMapping.value
|
55580
55856
|
*
|
@@ -55582,27 +55858,27 @@ module.exports = function getConstructor(Constructor, value) {
|
|
55582
55858
|
* @param {string} value
|
55583
55859
|
*/
|
55584
55860
|
|
55585
|
-
module.exports = function getDiscriminatorByValue(
|
55586
|
-
|
55587
|
-
|
55588
|
-
return discriminator;
|
55861
|
+
module.exports = function getDiscriminatorByValue(discriminators, value) {
|
55862
|
+
if (discriminators == null) {
|
55863
|
+
return null;
|
55589
55864
|
}
|
55590
|
-
for (const name
|
55591
|
-
const it =
|
55865
|
+
for (const name of Object.keys(discriminators)) {
|
55866
|
+
const it = discriminators[name];
|
55592
55867
|
if (
|
55593
55868
|
it.schema &&
|
55594
55869
|
it.schema.discriminatorMapping &&
|
55595
|
-
it.schema.discriminatorMapping.value
|
55870
|
+
areDiscriminatorValuesEqual(it.schema.discriminatorMapping.value, value)
|
55596
55871
|
) {
|
55597
|
-
|
55598
|
-
break;
|
55872
|
+
return it;
|
55599
55873
|
}
|
55600
55874
|
}
|
55601
|
-
return
|
55875
|
+
return null;
|
55602
55876
|
};
|
55603
|
-
},{}],
|
55877
|
+
},{"./areDiscriminatorValuesEqual":220}],224:[function(require,module,exports){
|
55604
55878
|
'use strict';
|
55605
55879
|
|
55880
|
+
const areDiscriminatorValuesEqual = require('./areDiscriminatorValuesEqual');
|
55881
|
+
|
55606
55882
|
/*!
|
55607
55883
|
* returns discriminator by discriminatorMapping.value
|
55608
55884
|
*
|
@@ -55619,13 +55895,13 @@ module.exports = function getSchemaDiscriminatorByValue(schema, value) {
|
|
55619
55895
|
if (discriminatorSchema.discriminatorMapping == null) {
|
55620
55896
|
continue;
|
55621
55897
|
}
|
55622
|
-
if (discriminatorSchema.discriminatorMapping.value
|
55898
|
+
if (areDiscriminatorValuesEqual(discriminatorSchema.discriminatorMapping.value, value)) {
|
55623
55899
|
return discriminatorSchema;
|
55624
55900
|
}
|
55625
55901
|
}
|
55626
55902
|
return null;
|
55627
55903
|
};
|
55628
|
-
},{}],
|
55904
|
+
},{"./areDiscriminatorValuesEqual":220}],225:[function(require,module,exports){
|
55629
55905
|
'use strict';
|
55630
55906
|
|
55631
55907
|
/*!
|
@@ -55642,7 +55918,7 @@ module.exports = function cleanModifiedSubpaths(doc, path, options) {
|
|
55642
55918
|
}
|
55643
55919
|
for (const modifiedPath of Object.keys(doc.$__.activePaths.states.modify)) {
|
55644
55920
|
if (skipDocArrays) {
|
55645
|
-
const schemaType = doc.
|
55921
|
+
const schemaType = doc.$__schema.path(modifiedPath);
|
55646
55922
|
if (schemaType && schemaType.$isMongooseDocumentArray) {
|
55647
55923
|
continue;
|
55648
55924
|
}
|
@@ -55655,7 +55931,7 @@ module.exports = function cleanModifiedSubpaths(doc, path, options) {
|
|
55655
55931
|
return deleted;
|
55656
55932
|
};
|
55657
55933
|
|
55658
|
-
},{}],
|
55934
|
+
},{}],226:[function(require,module,exports){
|
55659
55935
|
'use strict';
|
55660
55936
|
|
55661
55937
|
const documentSchemaSymbol = require('../../helpers/symbols').documentSchemaSymbol;
|
@@ -55732,6 +56008,13 @@ function defineKey(prop, subprops, prototype, prefix, keys, options) {
|
|
55732
56008
|
value: prototype.schema
|
55733
56009
|
});
|
55734
56010
|
|
56011
|
+
Object.defineProperty(nested, '$__schema', {
|
56012
|
+
enumerable: false,
|
56013
|
+
configurable: true,
|
56014
|
+
writable: false,
|
56015
|
+
value: prototype.schema
|
56016
|
+
});
|
56017
|
+
|
55735
56018
|
Object.defineProperty(nested, documentSchemaSymbol, {
|
55736
56019
|
enumerable: false,
|
55737
56020
|
configurable: true,
|
@@ -55839,13 +56122,7 @@ function getOwnPropertyDescriptors(object) {
|
|
55839
56122
|
const result = {};
|
55840
56123
|
|
55841
56124
|
Object.getOwnPropertyNames(object).forEach(function(key) {
|
55842
|
-
|
55843
|
-
// Assume these are schema paths, ignore them re: #5470
|
55844
|
-
if (result[key].get) {
|
55845
|
-
delete result[key];
|
55846
|
-
return;
|
55847
|
-
}
|
55848
|
-
result[key].enumerable = [
|
56125
|
+
const skip = [
|
55849
56126
|
'isNew',
|
55850
56127
|
'$__',
|
55851
56128
|
'errors',
|
@@ -55856,12 +56133,18 @@ function getOwnPropertyDescriptors(object) {
|
|
55856
56133
|
'__index',
|
55857
56134
|
'$isDocumentArrayElement'
|
55858
56135
|
].indexOf(key) === -1;
|
56136
|
+
if (skip) {
|
56137
|
+
return;
|
56138
|
+
}
|
56139
|
+
|
56140
|
+
result[key] = Object.getOwnPropertyDescriptor(object, key);
|
56141
|
+
result[key].enumerable = false;
|
55859
56142
|
});
|
55860
56143
|
|
55861
56144
|
return result;
|
55862
56145
|
}
|
55863
56146
|
|
55864
|
-
},{"../../document":193,"../../helpers/get":
|
56147
|
+
},{"../../document":193,"../../helpers/get":229,"../../helpers/symbols":253,"../../options":258,"../../utils":308}],227:[function(require,module,exports){
|
55865
56148
|
'use strict';
|
55866
56149
|
|
55867
56150
|
const get = require('../get');
|
@@ -55906,7 +56189,7 @@ module.exports = function getEmbeddedDiscriminatorPath(doc, path, options) {
|
|
55906
56189
|
return typeOnly ? type : schema;
|
55907
56190
|
};
|
55908
56191
|
|
55909
|
-
},{"../get":
|
56192
|
+
},{"../get":229}],228:[function(require,module,exports){
|
55910
56193
|
'use strict';
|
55911
56194
|
|
55912
56195
|
const utils = require('../../utils');
|
@@ -55924,7 +56207,7 @@ module.exports = function handleSpreadDoc(v) {
|
|
55924
56207
|
|
55925
56208
|
return v;
|
55926
56209
|
};
|
55927
|
-
},{"../../utils":
|
56210
|
+
},{"../../utils":308}],229:[function(require,module,exports){
|
55928
56211
|
'use strict';
|
55929
56212
|
|
55930
56213
|
/*!
|
@@ -55933,7 +56216,30 @@ module.exports = function handleSpreadDoc(v) {
|
|
55933
56216
|
*/
|
55934
56217
|
|
55935
56218
|
module.exports = function get(obj, path, def) {
|
55936
|
-
|
56219
|
+
let parts;
|
56220
|
+
let isPathArray = false;
|
56221
|
+
if (typeof path === 'string') {
|
56222
|
+
if (path.indexOf('.') === -1) {
|
56223
|
+
const _v = getProperty(obj, path);
|
56224
|
+
if (_v == null) {
|
56225
|
+
return def;
|
56226
|
+
}
|
56227
|
+
return _v;
|
56228
|
+
}
|
56229
|
+
|
56230
|
+
parts = path.split('.');
|
56231
|
+
} else {
|
56232
|
+
isPathArray = true;
|
56233
|
+
parts = path;
|
56234
|
+
|
56235
|
+
if (parts.length === 1) {
|
56236
|
+
const _v = getProperty(obj, parts[0]);
|
56237
|
+
if (_v == null) {
|
56238
|
+
return def;
|
56239
|
+
}
|
56240
|
+
return _v;
|
56241
|
+
}
|
56242
|
+
}
|
55937
56243
|
let rest = path;
|
55938
56244
|
let cur = obj;
|
55939
56245
|
for (const part of parts) {
|
@@ -55943,13 +56249,15 @@ module.exports = function get(obj, path, def) {
|
|
55943
56249
|
|
55944
56250
|
// `lib/cast.js` depends on being able to get dotted paths in updates,
|
55945
56251
|
// like `{ $set: { 'a.b': 42 } }`
|
55946
|
-
if (cur[rest] != null) {
|
56252
|
+
if (!isPathArray && cur[rest] != null) {
|
55947
56253
|
return cur[rest];
|
55948
56254
|
}
|
55949
56255
|
|
55950
56256
|
cur = getProperty(cur, part);
|
55951
56257
|
|
55952
|
-
|
56258
|
+
if (!isPathArray) {
|
56259
|
+
rest = rest.substr(part.length + 1);
|
56260
|
+
}
|
55953
56261
|
}
|
55954
56262
|
|
55955
56263
|
return cur == null ? def : cur;
|
@@ -55964,7 +56272,23 @@ function getProperty(obj, prop) {
|
|
55964
56272
|
}
|
55965
56273
|
return obj[prop];
|
55966
56274
|
}
|
55967
|
-
},{}],
|
56275
|
+
},{}],230:[function(require,module,exports){
|
56276
|
+
'use strict';
|
56277
|
+
|
56278
|
+
/*!
|
56279
|
+
* If `val` is an object, returns constructor name, if possible. Otherwise returns undefined.
|
56280
|
+
*/
|
56281
|
+
|
56282
|
+
module.exports = function getConstructorName(val) {
|
56283
|
+
if (val == null) {
|
56284
|
+
return void 0;
|
56285
|
+
}
|
56286
|
+
if (typeof val.constructor !== 'function') {
|
56287
|
+
return void 0;
|
56288
|
+
}
|
56289
|
+
return val.constructor.name;
|
56290
|
+
};
|
56291
|
+
},{}],231:[function(require,module,exports){
|
55968
56292
|
'use strict';
|
55969
56293
|
|
55970
56294
|
module.exports = function(fn) {
|
@@ -55974,7 +56298,7 @@ module.exports = function(fn) {
|
|
55974
56298
|
return (fn.toString().trim().match(/^function\s*([^\s(]+)/) || [])[1];
|
55975
56299
|
};
|
55976
56300
|
|
55977
|
-
},{}],
|
56301
|
+
},{}],232:[function(require,module,exports){
|
55978
56302
|
(function (process){(function (){
|
55979
56303
|
/*!
|
55980
56304
|
* Centralize this so we can more easily work around issues with people
|
@@ -55985,12 +56309,14 @@ module.exports = function(fn) {
|
|
55985
56309
|
|
55986
56310
|
'use strict';
|
55987
56311
|
|
56312
|
+
const nextTick = process.nextTick.bind(process);
|
56313
|
+
|
55988
56314
|
module.exports = function immediate(cb) {
|
55989
|
-
return
|
56315
|
+
return nextTick(cb);
|
55990
56316
|
};
|
55991
56317
|
|
55992
56318
|
}).call(this)}).call(this,require('_process'))
|
55993
|
-
},{"_process":
|
56319
|
+
},{"_process":326}],233:[function(require,module,exports){
|
55994
56320
|
'use strict';
|
55995
56321
|
|
55996
56322
|
const get = require('./get');
|
@@ -56005,7 +56331,7 @@ function isBsonType(obj, typename) {
|
|
56005
56331
|
|
56006
56332
|
module.exports = isBsonType;
|
56007
56333
|
|
56008
|
-
},{"./get":
|
56334
|
+
},{"./get":229}],234:[function(require,module,exports){
|
56009
56335
|
'use strict';
|
56010
56336
|
|
56011
56337
|
/*!
|
@@ -56027,7 +56353,7 @@ module.exports = function(v) {
|
|
56027
56353
|
v.isMongooseBuffer || // Buffer
|
56028
56354
|
v.$isMongooseMap; // Map
|
56029
56355
|
};
|
56030
|
-
},{}],
|
56356
|
+
},{}],235:[function(require,module,exports){
|
56031
56357
|
(function (Buffer){(function (){
|
56032
56358
|
'use strict';
|
56033
56359
|
|
@@ -56046,14 +56372,14 @@ module.exports = function(arg) {
|
|
56046
56372
|
return Object.prototype.toString.call(arg) === '[object Object]';
|
56047
56373
|
};
|
56048
56374
|
}).call(this)}).call(this,{"isBuffer":require("../../../is-buffer/index.js")})
|
56049
|
-
},{"../../../is-buffer/index.js":178}],
|
56375
|
+
},{"../../../is-buffer/index.js":178}],236:[function(require,module,exports){
|
56050
56376
|
'use strict';
|
56051
56377
|
function isPromise(val) {
|
56052
56378
|
return !!val && (typeof val === 'object' || typeof val === 'function') && typeof val.then === 'function';
|
56053
56379
|
}
|
56054
56380
|
|
56055
56381
|
module.exports = isPromise;
|
56056
|
-
},{}],
|
56382
|
+
},{}],237:[function(require,module,exports){
|
56057
56383
|
'use strict';
|
56058
56384
|
|
56059
56385
|
const symbols = require('../../schema/symbols');
|
@@ -56192,7 +56518,7 @@ function applyHooks(model, schema, options) {
|
|
56192
56518
|
createWrapper(method, originalMethod, null, customMethodOptions);
|
56193
56519
|
}
|
56194
56520
|
}
|
56195
|
-
},{"../../schema/symbols":
|
56521
|
+
},{"../../schema/symbols":295,"../promiseOrCallback":242}],238:[function(require,module,exports){
|
56196
56522
|
'use strict';
|
56197
56523
|
|
56198
56524
|
const Mixed = require('../../schema/mixed');
|
@@ -56258,7 +56584,7 @@ module.exports = function discriminator(model, name, schema, tiedValue, applyPlu
|
|
56258
56584
|
}
|
56259
56585
|
|
56260
56586
|
let value = name;
|
56261
|
-
if (typeof tiedValue
|
56587
|
+
if ((typeof tiedValue === 'string' && tiedValue.length) || tiedValue != null) {
|
56262
56588
|
value = tiedValue;
|
56263
56589
|
}
|
56264
56590
|
|
@@ -56321,17 +56647,17 @@ module.exports = function discriminator(model, name, schema, tiedValue, applyPlu
|
|
56321
56647
|
default: value,
|
56322
56648
|
select: true,
|
56323
56649
|
set: function(newName) {
|
56324
|
-
if (newName === value) {
|
56650
|
+
if (newName === value || (Array.isArray(value) && utils.deepEqual(newName, value))) {
|
56325
56651
|
return value;
|
56326
56652
|
}
|
56327
56653
|
throw new Error('Can\'t set discriminator key "' + key + '"');
|
56328
56654
|
},
|
56329
56655
|
$skipDiscriminatorCheck: true
|
56330
56656
|
};
|
56331
|
-
obj[key][schema.options.typeKey] = existingPath ?
|
56332
|
-
existingPath.instance :
|
56333
|
-
String;
|
56657
|
+
obj[key][schema.options.typeKey] = existingPath ? existingPath.options[schema.options.typeKey] : String;
|
56334
56658
|
schema.add(obj);
|
56659
|
+
|
56660
|
+
|
56335
56661
|
schema.discriminatorMapping = { key: key, value: value, isRoot: false };
|
56336
56662
|
|
56337
56663
|
if (baseSchema.options.collection) {
|
@@ -56399,7 +56725,7 @@ module.exports = function discriminator(model, name, schema, tiedValue, applyPlu
|
|
56399
56725
|
return schema;
|
56400
56726
|
};
|
56401
56727
|
|
56402
|
-
},{"../../schema/mixed":
|
56728
|
+
},{"../../schema/mixed":285,"../../utils":308,"../document/compile":226,"../get":229}],239:[function(require,module,exports){
|
56403
56729
|
'use strict';
|
56404
56730
|
|
56405
56731
|
const MongooseError = require('../../error/mongooseError');
|
@@ -56419,7 +56745,7 @@ function validateRef(ref, path) {
|
|
56419
56745
|
throw new MongooseError('Invalid ref at path "' + path + '". Got ' +
|
56420
56746
|
util.inspect(ref, { depth: 0 }));
|
56421
56747
|
}
|
56422
|
-
},{"../../error/mongooseError":206,"util":
|
56748
|
+
},{"../../error/mongooseError":206,"util":333}],240:[function(require,module,exports){
|
56423
56749
|
'use strict';
|
56424
56750
|
|
56425
56751
|
/*!
|
@@ -56439,7 +56765,7 @@ module.exports = function isDefiningProjection(val) {
|
|
56439
56765
|
return true;
|
56440
56766
|
};
|
56441
56767
|
|
56442
|
-
},{}],
|
56768
|
+
},{}],241:[function(require,module,exports){
|
56443
56769
|
'use strict';
|
56444
56770
|
|
56445
56771
|
const isDefiningProjection = require('./isDefiningProjection');
|
@@ -56449,6 +56775,10 @@ const isDefiningProjection = require('./isDefiningProjection');
|
|
56449
56775
|
*/
|
56450
56776
|
|
56451
56777
|
module.exports = function isExclusive(projection) {
|
56778
|
+
if (projection == null) {
|
56779
|
+
return null;
|
56780
|
+
}
|
56781
|
+
|
56452
56782
|
const keys = Object.keys(projection);
|
56453
56783
|
let ki = keys.length;
|
56454
56784
|
let exclude = null;
|
@@ -56469,26 +56799,26 @@ module.exports = function isExclusive(projection) {
|
|
56469
56799
|
return exclude;
|
56470
56800
|
};
|
56471
56801
|
|
56472
|
-
},{"./isDefiningProjection":
|
56473
|
-
(function (process){(function (){
|
56802
|
+
},{"./isDefiningProjection":240}],242:[function(require,module,exports){
|
56474
56803
|
'use strict';
|
56475
56804
|
|
56476
56805
|
const PromiseProvider = require('../promise_provider');
|
56806
|
+
const immediate = require('./immediate');
|
56477
56807
|
|
56478
|
-
const emittedSymbol = Symbol
|
56808
|
+
const emittedSymbol = Symbol('mongoose:emitted');
|
56479
56809
|
|
56480
56810
|
module.exports = function promiseOrCallback(callback, fn, ee, Promise) {
|
56481
56811
|
if (typeof callback === 'function') {
|
56482
56812
|
return fn(function(error) {
|
56483
56813
|
if (error != null) {
|
56484
|
-
if (ee != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) {
|
56814
|
+
if (ee != null && ee.listeners != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) {
|
56485
56815
|
error[emittedSymbol] = true;
|
56486
56816
|
ee.emit('error', error);
|
56487
56817
|
}
|
56488
56818
|
try {
|
56489
56819
|
callback(error);
|
56490
56820
|
} catch (error) {
|
56491
|
-
return
|
56821
|
+
return immediate(() => {
|
56492
56822
|
throw error;
|
56493
56823
|
});
|
56494
56824
|
}
|
@@ -56503,7 +56833,7 @@ module.exports = function promiseOrCallback(callback, fn, ee, Promise) {
|
|
56503
56833
|
return new Promise((resolve, reject) => {
|
56504
56834
|
fn(function(error, res) {
|
56505
56835
|
if (error != null) {
|
56506
|
-
if (ee != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) {
|
56836
|
+
if (ee != null && ee.listeners != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) {
|
56507
56837
|
error[emittedSymbol] = true;
|
56508
56838
|
ee.emit('error', error);
|
56509
56839
|
}
|
@@ -56516,8 +56846,8 @@ module.exports = function promiseOrCallback(callback, fn, ee, Promise) {
|
|
56516
56846
|
});
|
56517
56847
|
});
|
56518
56848
|
};
|
56519
|
-
|
56520
|
-
},{"../promise_provider":
|
56849
|
+
|
56850
|
+
},{"../promise_provider":273,"./immediate":232}],243:[function(require,module,exports){
|
56521
56851
|
'use strict';
|
56522
56852
|
|
56523
56853
|
/*!
|
@@ -56611,7 +56941,7 @@ function _getContexts(hook) {
|
|
56611
56941
|
}
|
56612
56942
|
return ret;
|
56613
56943
|
}
|
56614
|
-
},{}],
|
56944
|
+
},{}],244:[function(require,module,exports){
|
56615
56945
|
'use strict';
|
56616
56946
|
|
56617
56947
|
const specialKeys = new Set([
|
@@ -56623,7 +56953,7 @@ const specialKeys = new Set([
|
|
56623
56953
|
module.exports = function isOperator(path) {
|
56624
56954
|
return path.startsWith('$') && !specialKeys.has(path);
|
56625
56955
|
};
|
56626
|
-
},{}],
|
56956
|
+
},{}],245:[function(require,module,exports){
|
56627
56957
|
'use strict';
|
56628
56958
|
|
56629
56959
|
module.exports = function addAutoId(schema) {
|
@@ -56631,7 +56961,7 @@ module.exports = function addAutoId(schema) {
|
|
56631
56961
|
_obj._id[schema.options.typeKey] = 'ObjectId';
|
56632
56962
|
schema.add(_obj);
|
56633
56963
|
};
|
56634
|
-
},{}],
|
56964
|
+
},{}],246:[function(require,module,exports){
|
56635
56965
|
'use strict';
|
56636
56966
|
|
56637
56967
|
/**
|
@@ -56644,7 +56974,7 @@ module.exports = function cleanPositionalOperators(path) {
|
|
56644
56974
|
replace(/\.\$(\[[^\]]*\])?(?=\.)/g, '.0').
|
56645
56975
|
replace(/\.\$(\[[^\]]*\])?$/g, '.0');
|
56646
56976
|
};
|
56647
|
-
},{}],
|
56977
|
+
},{}],247:[function(require,module,exports){
|
56648
56978
|
'use strict';
|
56649
56979
|
|
56650
56980
|
const get = require('../get');
|
@@ -56801,7 +57131,7 @@ module.exports = function getIndexes(schema) {
|
|
56801
57131
|
}
|
56802
57132
|
};
|
56803
57133
|
|
56804
|
-
},{"../get":
|
57134
|
+
},{"../get":229,"../isObject":235}],248:[function(require,module,exports){
|
56805
57135
|
'use strict';
|
56806
57136
|
|
56807
57137
|
const addAutoId = require('./addAutoId');
|
@@ -56822,7 +57152,7 @@ module.exports = function handleIdOption(schema, options) {
|
|
56822
57152
|
|
56823
57153
|
return schema;
|
56824
57154
|
};
|
56825
|
-
},{"./addAutoId":
|
57155
|
+
},{"./addAutoId":245}],249:[function(require,module,exports){
|
56826
57156
|
'use strict';
|
56827
57157
|
|
56828
57158
|
module.exports = handleTimestampOption;
|
@@ -56847,11 +57177,19 @@ function handleTimestampOption(arg, prop) {
|
|
56847
57177
|
}
|
56848
57178
|
return arg[prop];
|
56849
57179
|
}
|
56850
|
-
},{}],
|
57180
|
+
},{}],250:[function(require,module,exports){
|
56851
57181
|
'use strict';
|
56852
57182
|
|
56853
|
-
module.exports = function merge(s1, s2) {
|
56854
|
-
|
57183
|
+
module.exports = function merge(s1, s2, skipConflictingPaths) {
|
57184
|
+
const paths = Object.keys(s2.tree);
|
57185
|
+
const pathsToAdd = {};
|
57186
|
+
for (const key of paths) {
|
57187
|
+
if (skipConflictingPaths && (s1.paths[key] || s1.nested[key] || s1.singleNestedPaths[key])) {
|
57188
|
+
continue;
|
57189
|
+
}
|
57190
|
+
pathsToAdd[key] = s2.tree[key];
|
57191
|
+
}
|
57192
|
+
s1.add(pathsToAdd);
|
56855
57193
|
|
56856
57194
|
s1.callQueue = s1.callQueue.concat(s2.callQueue);
|
56857
57195
|
s1.method(s2.methods);
|
@@ -56868,7 +57206,7 @@ module.exports = function merge(s1, s2) {
|
|
56868
57206
|
s1.s.hooks.merge(s2.s.hooks, false);
|
56869
57207
|
};
|
56870
57208
|
|
56871
|
-
},{}],
|
57209
|
+
},{}],251:[function(require,module,exports){
|
56872
57210
|
'use strict';
|
56873
57211
|
|
56874
57212
|
const StrictModeError = require('../../error/strict');
|
@@ -56915,11 +57253,11 @@ function createImmutableSetter(path, immutable) {
|
|
56915
57253
|
};
|
56916
57254
|
}
|
56917
57255
|
|
56918
|
-
},{"../../error/strict":213}],
|
57256
|
+
},{"../../error/strict":213}],252:[function(require,module,exports){
|
56919
57257
|
'use strict';
|
56920
57258
|
|
56921
57259
|
module.exports = new Set(['__proto__', 'constructor', 'prototype']);
|
56922
|
-
},{}],
|
57260
|
+
},{}],253:[function(require,module,exports){
|
56923
57261
|
'use strict';
|
56924
57262
|
|
56925
57263
|
exports.arrayAtomicsSymbol = Symbol('mongoose#Array#_atomics');
|
@@ -56939,7 +57277,7 @@ exports.schemaTypeSymbol = Symbol('mongoose#schemaType');
|
|
56939
57277
|
exports.sessionNewDocuments = Symbol('mongoose:ClientSession#newDocuments');
|
56940
57278
|
exports.scopeSymbol = Symbol('mongoose#Document#scope');
|
56941
57279
|
exports.validatorErrorSymbol = Symbol('mongoose:validatorError');
|
56942
|
-
},{}],
|
57280
|
+
},{}],254:[function(require,module,exports){
|
56943
57281
|
'use strict';
|
56944
57282
|
|
56945
57283
|
const applyTimestampsToChildren = require('../update/applyTimestampsToChildren');
|
@@ -56993,7 +57331,7 @@ module.exports = function setupTimestamps(schema, timestamps) {
|
|
56993
57331
|
(this.ownerDocument ? this.ownerDocument() : this).constructor.base.now();
|
56994
57332
|
const auto_id = this._id && this._id.auto;
|
56995
57333
|
|
56996
|
-
if (!skipCreatedAt && createdAt && !this.get(createdAt) && this.$__isSelected(createdAt)) {
|
57334
|
+
if (!skipCreatedAt && this.isNew && createdAt && !this.get(createdAt) && this.$__isSelected(createdAt)) {
|
56997
57335
|
this.$set(createdAt, auto_id ? this._id.getTimestamp() : defaultTimestamp);
|
56998
57336
|
}
|
56999
57337
|
|
@@ -57051,7 +57389,7 @@ module.exports = function setupTimestamps(schema, timestamps) {
|
|
57051
57389
|
next();
|
57052
57390
|
}
|
57053
57391
|
};
|
57054
|
-
},{"../../schema/symbols":
|
57392
|
+
},{"../../schema/symbols":295,"../get":229,"../schema/handleTimestampOption":249,"../update/applyTimestampsToChildren":255,"../update/applyTimestampsToUpdate":256}],255:[function(require,module,exports){
|
57055
57393
|
'use strict';
|
57056
57394
|
|
57057
57395
|
const cleanPositionalOperators = require('../schema/cleanPositionalOperators');
|
@@ -57073,34 +57411,10 @@ function applyTimestampsToChildren(now, update, schema) {
|
|
57073
57411
|
|
57074
57412
|
if (hasDollarKey) {
|
57075
57413
|
if (update.$push) {
|
57076
|
-
|
57077
|
-
|
57078
|
-
|
57079
|
-
|
57080
|
-
$path.$isMongooseDocumentArray &&
|
57081
|
-
$path.schema.options.timestamps) {
|
57082
|
-
const timestamps = $path.schema.options.timestamps;
|
57083
|
-
const createdAt = handleTimestampOption(timestamps, 'createdAt');
|
57084
|
-
const updatedAt = handleTimestampOption(timestamps, 'updatedAt');
|
57085
|
-
if (update.$push[key].$each) {
|
57086
|
-
update.$push[key].$each.forEach(function(subdoc) {
|
57087
|
-
if (updatedAt != null) {
|
57088
|
-
subdoc[updatedAt] = now;
|
57089
|
-
}
|
57090
|
-
if (createdAt != null) {
|
57091
|
-
subdoc[createdAt] = now;
|
57092
|
-
}
|
57093
|
-
});
|
57094
|
-
} else {
|
57095
|
-
if (updatedAt != null) {
|
57096
|
-
update.$push[key][updatedAt] = now;
|
57097
|
-
}
|
57098
|
-
if (createdAt != null) {
|
57099
|
-
update.$push[key][createdAt] = now;
|
57100
|
-
}
|
57101
|
-
}
|
57102
|
-
}
|
57103
|
-
}
|
57414
|
+
_applyTimestampToUpdateOperator(update.$push);
|
57415
|
+
}
|
57416
|
+
if (update.$addToSet) {
|
57417
|
+
_applyTimestampToUpdateOperator(update.$addToSet);
|
57104
57418
|
}
|
57105
57419
|
if (update.$set != null) {
|
57106
57420
|
const keys = Object.keys(update.$set);
|
@@ -57108,12 +57422,49 @@ function applyTimestampsToChildren(now, update, schema) {
|
|
57108
57422
|
applyTimestampsToUpdateKey(schema, key, update.$set, now);
|
57109
57423
|
}
|
57110
57424
|
}
|
57425
|
+
if (update.$setOnInsert != null) {
|
57426
|
+
const keys = Object.keys(update.$setOnInsert);
|
57427
|
+
for (const key of keys) {
|
57428
|
+
applyTimestampsToUpdateKey(schema, key, update.$setOnInsert, now);
|
57429
|
+
}
|
57430
|
+
}
|
57111
57431
|
}
|
57112
57432
|
|
57113
57433
|
const updateKeys = Object.keys(update).filter(key => !key.startsWith('$'));
|
57114
57434
|
for (const key of updateKeys) {
|
57115
57435
|
applyTimestampsToUpdateKey(schema, key, update, now);
|
57116
57436
|
}
|
57437
|
+
|
57438
|
+
function _applyTimestampToUpdateOperator(op) {
|
57439
|
+
for (const key of Object.keys(op)) {
|
57440
|
+
const $path = schema.path(key.replace(/\.\$\./i, '.').replace(/.\$$/, ''));
|
57441
|
+
if (op[key] &&
|
57442
|
+
$path &&
|
57443
|
+
$path.$isMongooseDocumentArray &&
|
57444
|
+
$path.schema.options.timestamps) {
|
57445
|
+
const timestamps = $path.schema.options.timestamps;
|
57446
|
+
const createdAt = handleTimestampOption(timestamps, 'createdAt');
|
57447
|
+
const updatedAt = handleTimestampOption(timestamps, 'updatedAt');
|
57448
|
+
if (op[key].$each) {
|
57449
|
+
op[key].$each.forEach(function(subdoc) {
|
57450
|
+
if (updatedAt != null) {
|
57451
|
+
subdoc[updatedAt] = now;
|
57452
|
+
}
|
57453
|
+
if (createdAt != null) {
|
57454
|
+
subdoc[createdAt] = now;
|
57455
|
+
}
|
57456
|
+
});
|
57457
|
+
} else {
|
57458
|
+
if (updatedAt != null) {
|
57459
|
+
op[key][updatedAt] = now;
|
57460
|
+
}
|
57461
|
+
if (createdAt != null) {
|
57462
|
+
op[key][createdAt] = now;
|
57463
|
+
}
|
57464
|
+
}
|
57465
|
+
}
|
57466
|
+
}
|
57467
|
+
}
|
57117
57468
|
}
|
57118
57469
|
|
57119
57470
|
function applyTimestampsToDocumentArray(arr, schematype, now) {
|
@@ -57224,7 +57575,7 @@ function applyTimestampsToUpdateKey(schema, key, update, now) {
|
|
57224
57575
|
}
|
57225
57576
|
}
|
57226
57577
|
}
|
57227
|
-
},{"../schema/cleanPositionalOperators":
|
57578
|
+
},{"../schema/cleanPositionalOperators":246,"../schema/handleTimestampOption":249}],256:[function(require,module,exports){
|
57228
57579
|
'use strict';
|
57229
57580
|
|
57230
57581
|
/*!
|
@@ -57345,7 +57696,7 @@ function applyTimestampsToUpdate(now, createdAt, updatedAt, currentUpdate, optio
|
|
57345
57696
|
return updates;
|
57346
57697
|
}
|
57347
57698
|
|
57348
|
-
},{"../get":
|
57699
|
+
},{"../get":229}],257:[function(require,module,exports){
|
57349
57700
|
/*!
|
57350
57701
|
* Dependencies
|
57351
57702
|
*/
|
@@ -57385,7 +57736,7 @@ function InternalCache() {
|
|
57385
57736
|
this.fullPath = undefined;
|
57386
57737
|
}
|
57387
57738
|
|
57388
|
-
},{"./statemachine":
|
57739
|
+
},{"./statemachine":297}],258:[function(require,module,exports){
|
57389
57740
|
'use strict';
|
57390
57741
|
|
57391
57742
|
/*!
|
@@ -57398,10 +57749,11 @@ exports.internalToObjectOptions = {
|
|
57398
57749
|
getters: false,
|
57399
57750
|
_skipDepopulateTopLevel: true,
|
57400
57751
|
depopulate: true,
|
57401
|
-
flattenDecimals: false
|
57752
|
+
flattenDecimals: false,
|
57753
|
+
useProjection: false
|
57402
57754
|
};
|
57403
57755
|
|
57404
|
-
},{}],
|
57756
|
+
},{}],259:[function(require,module,exports){
|
57405
57757
|
'use strict';
|
57406
57758
|
|
57407
57759
|
const clone = require('../helpers/clone');
|
@@ -57438,7 +57790,7 @@ class PopulateOptions {
|
|
57438
57790
|
*/
|
57439
57791
|
|
57440
57792
|
module.exports = PopulateOptions;
|
57441
|
-
},{"../helpers/clone":218}],
|
57793
|
+
},{"../helpers/clone":218}],260:[function(require,module,exports){
|
57442
57794
|
'use strict';
|
57443
57795
|
|
57444
57796
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57491,14 +57843,14 @@ Object.defineProperty(SchemaArrayOptions.prototype, 'enum', opts);
|
|
57491
57843
|
* @instance
|
57492
57844
|
*/
|
57493
57845
|
|
57494
|
-
Object.defineProperty(SchemaArrayOptions.prototype, '
|
57846
|
+
Object.defineProperty(SchemaArrayOptions.prototype, 'of', opts);
|
57495
57847
|
|
57496
57848
|
/*!
|
57497
57849
|
* ignore
|
57498
57850
|
*/
|
57499
57851
|
|
57500
57852
|
module.exports = SchemaArrayOptions;
|
57501
|
-
},{"./SchemaTypeOptions":
|
57853
|
+
},{"./SchemaTypeOptions":269,"./propertyOptions":271}],261:[function(require,module,exports){
|
57502
57854
|
'use strict';
|
57503
57855
|
|
57504
57856
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57537,7 +57889,7 @@ Object.defineProperty(SchemaBufferOptions.prototype, 'subtype', opts);
|
|
57537
57889
|
*/
|
57538
57890
|
|
57539
57891
|
module.exports = SchemaBufferOptions;
|
57540
|
-
},{"./SchemaTypeOptions":
|
57892
|
+
},{"./SchemaTypeOptions":269,"./propertyOptions":271}],262:[function(require,module,exports){
|
57541
57893
|
'use strict';
|
57542
57894
|
|
57543
57895
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57602,7 +57954,7 @@ Object.defineProperty(SchemaDateOptions.prototype, 'expires', opts);
|
|
57602
57954
|
*/
|
57603
57955
|
|
57604
57956
|
module.exports = SchemaDateOptions;
|
57605
|
-
},{"./SchemaTypeOptions":
|
57957
|
+
},{"./SchemaTypeOptions":269,"./propertyOptions":271}],263:[function(require,module,exports){
|
57606
57958
|
'use strict';
|
57607
57959
|
|
57608
57960
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57671,7 +58023,7 @@ Object.defineProperty(SchemaDocumentArrayOptions.prototype, '_id', opts);
|
|
57671
58023
|
*/
|
57672
58024
|
|
57673
58025
|
module.exports = SchemaDocumentArrayOptions;
|
57674
|
-
},{"./SchemaTypeOptions":
|
58026
|
+
},{"./SchemaTypeOptions":269,"./propertyOptions":271}],264:[function(require,module,exports){
|
57675
58027
|
'use strict';
|
57676
58028
|
|
57677
58029
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57715,7 +58067,7 @@ const opts = require('./propertyOptions');
|
|
57715
58067
|
Object.defineProperty(SchemaMapOptions.prototype, 'of', opts);
|
57716
58068
|
|
57717
58069
|
module.exports = SchemaMapOptions;
|
57718
|
-
},{"./SchemaTypeOptions":
|
58070
|
+
},{"./SchemaTypeOptions":269,"./propertyOptions":271}],265:[function(require,module,exports){
|
57719
58071
|
'use strict';
|
57720
58072
|
|
57721
58073
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57815,7 +58167,7 @@ Object.defineProperty(SchemaNumberOptions.prototype, 'populate', opts);
|
|
57815
58167
|
*/
|
57816
58168
|
|
57817
58169
|
module.exports = SchemaNumberOptions;
|
57818
|
-
},{"./SchemaTypeOptions":
|
58170
|
+
},{"./SchemaTypeOptions":269,"./propertyOptions":271}],266:[function(require,module,exports){
|
57819
58171
|
'use strict';
|
57820
58172
|
|
57821
58173
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57879,7 +58231,7 @@ Object.defineProperty(SchemaObjectIdOptions.prototype, 'populate', opts);
|
|
57879
58231
|
*/
|
57880
58232
|
|
57881
58233
|
module.exports = SchemaObjectIdOptions;
|
57882
|
-
},{"./SchemaTypeOptions":
|
58234
|
+
},{"./SchemaTypeOptions":269,"./propertyOptions":271}],267:[function(require,module,exports){
|
57883
58235
|
'use strict';
|
57884
58236
|
|
57885
58237
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -57922,7 +58274,7 @@ const opts = require('./propertyOptions');
|
|
57922
58274
|
Object.defineProperty(SchemaSingleNestedOptions.prototype, '_id', opts);
|
57923
58275
|
|
57924
58276
|
module.exports = SchemaSingleNestedOptions;
|
57925
|
-
},{"./SchemaTypeOptions":
|
58277
|
+
},{"./SchemaTypeOptions":269,"./propertyOptions":271}],268:[function(require,module,exports){
|
57926
58278
|
'use strict';
|
57927
58279
|
|
57928
58280
|
const SchemaTypeOptions = require('./SchemaTypeOptions');
|
@@ -58062,7 +58414,7 @@ Object.defineProperty(SchemaStringOptions.prototype, 'populate', opts);
|
|
58062
58414
|
|
58063
58415
|
module.exports = SchemaStringOptions;
|
58064
58416
|
|
58065
|
-
},{"./SchemaTypeOptions":
|
58417
|
+
},{"./SchemaTypeOptions":269,"./propertyOptions":271}],269:[function(require,module,exports){
|
58066
58418
|
'use strict';
|
58067
58419
|
|
58068
58420
|
const clone = require('../helpers/clone');
|
@@ -58294,7 +58646,7 @@ Object.defineProperty(SchemaTypeOptions.prototype, 'text', opts);
|
|
58294
58646
|
Object.defineProperty(SchemaTypeOptions.prototype, 'transform', opts);
|
58295
58647
|
|
58296
58648
|
module.exports = SchemaTypeOptions;
|
58297
|
-
},{"../helpers/clone":218,"./propertyOptions":
|
58649
|
+
},{"../helpers/clone":218,"./propertyOptions":271}],270:[function(require,module,exports){
|
58298
58650
|
'use strict';
|
58299
58651
|
|
58300
58652
|
const opts = require('./propertyOptions');
|
@@ -58459,7 +58811,7 @@ Object.defineProperty(VirtualOptions.prototype, 'limit', opts);
|
|
58459
58811
|
Object.defineProperty(VirtualOptions.prototype, 'perDocumentLimit', opts);
|
58460
58812
|
|
58461
58813
|
module.exports = VirtualOptions;
|
58462
|
-
},{"./propertyOptions":
|
58814
|
+
},{"./propertyOptions":271}],271:[function(require,module,exports){
|
58463
58815
|
'use strict';
|
58464
58816
|
|
58465
58817
|
module.exports = Object.freeze({
|
@@ -58468,7 +58820,7 @@ module.exports = Object.freeze({
|
|
58468
58820
|
writable: true,
|
58469
58821
|
value: void 0
|
58470
58822
|
});
|
58471
|
-
},{}],
|
58823
|
+
},{}],272:[function(require,module,exports){
|
58472
58824
|
'use strict';
|
58473
58825
|
|
58474
58826
|
/*!
|
@@ -58498,7 +58850,7 @@ function idGetter() {
|
|
58498
58850
|
return null;
|
58499
58851
|
}
|
58500
58852
|
|
58501
|
-
},{}],
|
58853
|
+
},{}],273:[function(require,module,exports){
|
58502
58854
|
(function (global){(function (){
|
58503
58855
|
/*!
|
58504
58856
|
* ignore
|
@@ -58551,7 +58903,7 @@ store.set(global.Promise);
|
|
58551
58903
|
module.exports = store;
|
58552
58904
|
|
58553
58905
|
}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
58554
|
-
},{"assert":102,"mquery":
|
58906
|
+
},{"assert":102,"mquery":318}],274:[function(require,module,exports){
|
58555
58907
|
'use strict';
|
58556
58908
|
|
58557
58909
|
/*!
|
@@ -58585,6 +58937,10 @@ exports.preparePopulationOptions = function preparePopulationOptions(query, opti
|
|
58585
58937
|
forEach(makeLean(options.lean));
|
58586
58938
|
}
|
58587
58939
|
|
58940
|
+
pop.forEach(opts => {
|
58941
|
+
opts._localModel = query.model;
|
58942
|
+
});
|
58943
|
+
|
58588
58944
|
return pop;
|
58589
58945
|
};
|
58590
58946
|
|
@@ -58625,6 +58981,9 @@ exports.preparePopulationOptionsMQ = function preparePopulationOptionsMQ(query,
|
|
58625
58981
|
pop.forEach(p => {
|
58626
58982
|
p._queryProjection = projection;
|
58627
58983
|
});
|
58984
|
+
pop.forEach(opts => {
|
58985
|
+
opts._localModel = query.model;
|
58986
|
+
});
|
58628
58987
|
|
58629
58988
|
return pop;
|
58630
58989
|
};
|
@@ -58639,7 +58998,7 @@ exports.preparePopulationOptionsMQ = function preparePopulationOptionsMQ(query,
|
|
58639
58998
|
*
|
58640
58999
|
* @return {Document}
|
58641
59000
|
*/
|
58642
|
-
exports.createModel = function createModel(model, doc, fields, userProvidedFields) {
|
59001
|
+
exports.createModel = function createModel(model, doc, fields, userProvidedFields, options) {
|
58643
59002
|
model.hooks.execPreSync('createModel', doc);
|
58644
59003
|
const discriminatorMapping = model.schema ?
|
58645
59004
|
model.schema.discriminatorMapping :
|
@@ -58651,18 +59010,22 @@ exports.createModel = function createModel(model, doc, fields, userProvidedField
|
|
58651
59010
|
|
58652
59011
|
const value = doc[key];
|
58653
59012
|
if (key && value && model.discriminators) {
|
58654
|
-
const discriminator = model.discriminators[value] || getDiscriminatorByValue(model, value);
|
59013
|
+
const discriminator = model.discriminators[value] || getDiscriminatorByValue(model.discriminators, value);
|
58655
59014
|
if (discriminator) {
|
58656
59015
|
const _fields = clone(userProvidedFields);
|
58657
59016
|
exports.applyPaths(_fields, discriminator.schema);
|
58658
59017
|
return new discriminator(undefined, _fields, true);
|
58659
59018
|
}
|
58660
59019
|
}
|
58661
|
-
|
59020
|
+
if (typeof options === 'undefined') {
|
59021
|
+
options = {};
|
59022
|
+
options.defaults = true;
|
59023
|
+
}
|
58662
59024
|
return new model(undefined, fields, {
|
58663
59025
|
skipId: true,
|
58664
59026
|
isNew: false,
|
58665
|
-
willInit: true
|
59027
|
+
willInit: true,
|
59028
|
+
defaults: options.defaults
|
58666
59029
|
});
|
58667
59030
|
};
|
58668
59031
|
|
@@ -58753,7 +59116,11 @@ exports.applyPaths = function applyPaths(fields, schema) {
|
|
58753
59116
|
schema.eachPath(function(path, type) {
|
58754
59117
|
if (prefix) path = prefix + '.' + path;
|
58755
59118
|
|
58756
|
-
|
59119
|
+
let addedPath = analyzePath(path, type);
|
59120
|
+
// arrays
|
59121
|
+
if (addedPath == null && type.$isMongooseArray && !type.$isMongooseDocumentArray) {
|
59122
|
+
addedPath = analyzePath(path, type.caster);
|
59123
|
+
}
|
58757
59124
|
if (addedPath != null) {
|
58758
59125
|
addedPaths.push(addedPath);
|
58759
59126
|
}
|
@@ -58868,7 +59235,7 @@ exports.handleDeleteWriteOpResult = function handleDeleteWriteOpResult(callback)
|
|
58868
59235
|
};
|
58869
59236
|
};
|
58870
59237
|
|
58871
|
-
},{"./helpers/clone":218,"./helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection":
|
59238
|
+
},{"./helpers/clone":218,"./helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection":221,"./helpers/discriminator/getDiscriminatorByValue":223,"./helpers/get":229,"./helpers/projection/isDefiningProjection":240}],275:[function(require,module,exports){
|
58872
59239
|
(function (Buffer){(function (){
|
58873
59240
|
'use strict';
|
58874
59241
|
|
@@ -58886,6 +59253,7 @@ const VirtualType = require('./virtualtype');
|
|
58886
59253
|
const addAutoId = require('./helpers/schema/addAutoId');
|
58887
59254
|
const arrayParentSymbol = require('./helpers/symbols').arrayParentSymbol;
|
58888
59255
|
const get = require('./helpers/get');
|
59256
|
+
const getConstructorName = require('./helpers/getConstructorName');
|
58889
59257
|
const getIndexes = require('./helpers/schema/getIndexes');
|
58890
59258
|
const merge = require('./helpers/schema/merge');
|
58891
59259
|
const mpath = require('mpath');
|
@@ -58925,6 +59293,7 @@ let id = 0;
|
|
58925
59293
|
* - [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.
|
58926
59294
|
* - [capped](/docs/guide.html#capped): bool - defaults to false
|
58927
59295
|
* - [collection](/docs/guide.html#collection): string - no default
|
59296
|
+
* - [discriminatorKey](/docs/guide.html#discriminatorKey): string - defaults to `__t`
|
58928
59297
|
* - [id](/docs/guide.html#id): bool - defaults to true
|
58929
59298
|
* - [_id](/docs/guide.html#_id): bool - defaults to true
|
58930
59299
|
* - [minimize](/docs/guide.html#minimize): bool - controls [document#toObject](#document_Document-toObject) behavior when called manually - defaults to true
|
@@ -58985,6 +59354,7 @@ function Schema(obj, options) {
|
|
58985
59354
|
this.plugins = [];
|
58986
59355
|
// For internal debugging. Do not use this to try to save a schema in MDB.
|
58987
59356
|
this.$id = ++id;
|
59357
|
+
this.mapPaths = [];
|
58988
59358
|
|
58989
59359
|
this.s = {
|
58990
59360
|
hooks: new Kareem()
|
@@ -59191,6 +59561,7 @@ Schema.prototype.clone = function() {
|
|
59191
59561
|
s.$globalPluginsApplied = this.$globalPluginsApplied;
|
59192
59562
|
s.$isRootDiscriminator = this.$isRootDiscriminator;
|
59193
59563
|
s.$implicitlyCreated = this.$implicitlyCreated;
|
59564
|
+
s.mapPaths = [].concat(this.mapPaths);
|
59194
59565
|
|
59195
59566
|
if (this.discriminatorMapping != null) {
|
59196
59567
|
s.discriminatorMapping = Object.assign({}, this.discriminatorMapping);
|
@@ -59338,6 +59709,11 @@ Schema.prototype.add = function add(obj, prefix) {
|
|
59338
59709
|
}
|
59339
59710
|
|
59340
59711
|
prefix = prefix || '';
|
59712
|
+
// avoid prototype pollution
|
59713
|
+
if (prefix === '__proto__.' || prefix === 'constructor.' || prefix === 'prototype.') {
|
59714
|
+
return this;
|
59715
|
+
}
|
59716
|
+
|
59341
59717
|
const keys = Object.keys(obj);
|
59342
59718
|
|
59343
59719
|
for (const key of keys) {
|
@@ -59463,7 +59839,6 @@ reserved.isNew =
|
|
59463
59839
|
reserved.populated =
|
59464
59840
|
reserved.remove =
|
59465
59841
|
reserved.save =
|
59466
|
-
reserved.schema =
|
59467
59842
|
reserved.toObject =
|
59468
59843
|
reserved.validate = 1;
|
59469
59844
|
|
@@ -59560,8 +59935,13 @@ Schema.prototype.path = function(path, obj) {
|
|
59560
59935
|
!utils.hasUserDefinedProperty(obj.of, this.options.typeKey);
|
59561
59936
|
_mapType = isInlineSchema ? new Schema(obj.of) : obj.of;
|
59562
59937
|
}
|
59938
|
+
if (utils.hasUserDefinedProperty(obj, 'ref')) {
|
59939
|
+
_mapType = { type: _mapType, ref: obj.ref };
|
59940
|
+
}
|
59941
|
+
|
59563
59942
|
this.paths[mapPath] = this.interpretAsType(mapPath,
|
59564
59943
|
_mapType, this.options);
|
59944
|
+
this.mapPaths.push(this.paths[mapPath]);
|
59565
59945
|
schemaType.$__schemaType = this.paths[mapPath];
|
59566
59946
|
}
|
59567
59947
|
|
@@ -59638,19 +60018,25 @@ Schema.prototype.path = function(path, obj) {
|
|
59638
60018
|
|
59639
60019
|
if (schemaType.$isMongooseDocumentArray) {
|
59640
60020
|
for (const key of Object.keys(schemaType.schema.paths)) {
|
59641
|
-
|
59642
|
-
|
60021
|
+
const _schemaType = schemaType.schema.paths[key];
|
60022
|
+
this.subpaths[path + '.' + key] = _schemaType;
|
60023
|
+
if (typeof _schemaType === 'object' && _schemaType != null) {
|
60024
|
+
_schemaType.$isUnderneathDocArray = true;
|
60025
|
+
}
|
59643
60026
|
}
|
59644
60027
|
for (const key of Object.keys(schemaType.schema.subpaths)) {
|
59645
|
-
|
59646
|
-
|
60028
|
+
const _schemaType = schemaType.schema.subpaths[key];
|
60029
|
+
this.subpaths[path + '.' + key] = _schemaType;
|
60030
|
+
if (typeof _schemaType === 'object' && _schemaType != null) {
|
60031
|
+
_schemaType.$isUnderneathDocArray = true;
|
60032
|
+
}
|
59647
60033
|
}
|
59648
60034
|
for (const key of Object.keys(schemaType.schema.singleNestedPaths)) {
|
59649
|
-
|
59650
|
-
|
60035
|
+
const _schemaType = schemaType.schema.singleNestedPaths[key];
|
60036
|
+
this.subpaths[path + '.' + key] = _schemaType;
|
60037
|
+
if (typeof _schemaType === 'object' && _schemaType != null) {
|
60038
|
+
_schemaType.$isUnderneathDocArray = true;
|
59651
60039
|
}
|
59652
|
-
this.subpaths[path + '.' + key] = schemaType.schema.singleNestedPaths[key];
|
59653
|
-
schemaType.schema.singleNestedPaths[key].$isUnderneathDocArray = true;
|
59654
60040
|
}
|
59655
60041
|
}
|
59656
60042
|
|
@@ -59708,10 +60094,11 @@ function _pathToPositionalSyntax(path) {
|
|
59708
60094
|
*/
|
59709
60095
|
|
59710
60096
|
function getMapPath(schema, path) {
|
59711
|
-
|
59712
|
-
|
59713
|
-
|
59714
|
-
|
60097
|
+
if (schema.mapPaths.length === 0) {
|
60098
|
+
return null;
|
60099
|
+
}
|
60100
|
+
for (const val of schema.mapPaths) {
|
60101
|
+
const _path = val.path;
|
59715
60102
|
const re = new RegExp('^' + _path.replace(/\.\$\*/g, '\\.[^.]+') + '$');
|
59716
60103
|
if (re.test(path)) {
|
59717
60104
|
return schema.paths[_path];
|
@@ -59785,11 +60172,21 @@ Schema.prototype.interpretAsType = function(path, obj, options) {
|
|
59785
60172
|
: type[0];
|
59786
60173
|
|
59787
60174
|
if (cast && cast.instanceOfSchema) {
|
60175
|
+
if (!(cast instanceof Schema)) {
|
60176
|
+
throw new TypeError('Schema for array path `' + path +
|
60177
|
+
'` is from a different copy of the Mongoose module. Please make sure you\'re using the same version ' +
|
60178
|
+
'of Mongoose everywhere with `npm list mongoose`.');
|
60179
|
+
}
|
59788
60180
|
return new MongooseTypes.DocumentArray(path, cast, obj);
|
59789
60181
|
}
|
59790
60182
|
if (cast &&
|
59791
60183
|
cast[options.typeKey] &&
|
59792
60184
|
cast[options.typeKey].instanceOfSchema) {
|
60185
|
+
if (!(cast[options.typeKey] instanceof Schema)) {
|
60186
|
+
throw new TypeError('Schema for array path `' + path +
|
60187
|
+
'` is from a different copy of the Mongoose module. Please make sure you\'re using the same version ' +
|
60188
|
+
'of Mongoose everywhere with `npm list mongoose`.');
|
60189
|
+
}
|
59793
60190
|
return new MongooseTypes.DocumentArray(path, cast[options.typeKey], obj, cast);
|
59794
60191
|
}
|
59795
60192
|
|
@@ -59842,6 +60239,11 @@ Schema.prototype.interpretAsType = function(path, obj, options) {
|
|
59842
60239
|
? type
|
59843
60240
|
: type.schemaName || utils.getFunctionName(type);
|
59844
60241
|
|
60242
|
+
// For Jest 26+, see #10296
|
60243
|
+
if (name === 'ClockDate') {
|
60244
|
+
name = 'Date';
|
60245
|
+
}
|
60246
|
+
|
59845
60247
|
if (!MongooseTypes.hasOwnProperty(name)) {
|
59846
60248
|
throw new TypeError('Invalid schema configuration: ' +
|
59847
60249
|
`\`${name}\` is not a valid type within the array \`${path}\`.` +
|
@@ -59872,6 +60274,10 @@ Schema.prototype.interpretAsType = function(path, obj, options) {
|
|
59872
60274
|
if (name === 'ObjectID') {
|
59873
60275
|
name = 'ObjectId';
|
59874
60276
|
}
|
60277
|
+
// For Jest 26+, see #10296
|
60278
|
+
if (name === 'ClockDate') {
|
60279
|
+
name = 'Date';
|
60280
|
+
}
|
59875
60281
|
|
59876
60282
|
if (MongooseTypes[name] == null) {
|
59877
60283
|
throw new TypeError(`Invalid schema configuration: \`${name}\` is not ` +
|
@@ -60326,7 +60732,7 @@ Schema.prototype.plugin = function(fn, opts) {
|
|
60326
60732
|
* fizz.purr();
|
60327
60733
|
* fizz.scratch();
|
60328
60734
|
*
|
60329
|
-
* 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](
|
60735
|
+
* 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)
|
60330
60736
|
*
|
60331
60737
|
* @param {String|Object} method name
|
60332
60738
|
* @param {Function} [fn]
|
@@ -60388,7 +60794,7 @@ Schema.prototype.static = function(name, fn) {
|
|
60388
60794
|
*
|
60389
60795
|
* @param {Object} fields
|
60390
60796
|
* @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)
|
60391
|
-
* @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.
|
60797
|
+
* @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.
|
60392
60798
|
* @api public
|
60393
60799
|
*/
|
60394
60800
|
|
@@ -60509,8 +60915,8 @@ Object.defineProperty(Schema, 'indexTypes', {
|
|
60509
60915
|
});
|
60510
60916
|
|
60511
60917
|
/**
|
60512
|
-
* Returns a list of indexes that this schema declares, via `schema.index()`
|
60513
|
-
*
|
60918
|
+
* Returns a list of indexes that this schema declares, via `schema.index()` or by `index: true` in a path's options.
|
60919
|
+
* Indexes are expressed as an array `[spec, options]`.
|
60514
60920
|
*
|
60515
60921
|
* ####Example:
|
60516
60922
|
*
|
@@ -60523,6 +60929,17 @@ Object.defineProperty(Schema, 'indexTypes', {
|
|
60523
60929
|
* // [ { registeredAt: 1 }, { background: true } ] ]
|
60524
60930
|
* userSchema.indexes();
|
60525
60931
|
*
|
60932
|
+
* [Plugins](/docs/plugins.html) can use the return value of this function to modify a schema's indexes.
|
60933
|
+
* For example, the below plugin makes every index unique by default.
|
60934
|
+
*
|
60935
|
+
* function myPlugin(schema) {
|
60936
|
+
* for (const index of schema.indexes()) {
|
60937
|
+
* if (index[1].unique === undefined) {
|
60938
|
+
* index[1].unique = true;
|
60939
|
+
* }
|
60940
|
+
* }
|
60941
|
+
* }
|
60942
|
+
*
|
60526
60943
|
* @api public
|
60527
60944
|
* @return {Array} list of indexes defined in the schema
|
60528
60945
|
*/
|
@@ -60546,7 +60963,7 @@ Schema.prototype.indexes = function() {
|
|
60546
60963
|
*/
|
60547
60964
|
|
60548
60965
|
Schema.prototype.virtual = function(name, options) {
|
60549
|
-
if (name instanceof VirtualType || (name
|
60966
|
+
if (name instanceof VirtualType || getConstructorName(name) === 'VirtualType') {
|
60550
60967
|
return this.virtual(name.path, name.options);
|
60551
60968
|
}
|
60552
60969
|
|
@@ -60730,9 +61147,9 @@ function _deletePath(schema, name) {
|
|
60730
61147
|
/**
|
60731
61148
|
* 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),
|
60732
61149
|
* and [instance methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Class_body_and_method_definitions)
|
60733
|
-
* to schema [virtuals](
|
60734
|
-
* [statics](
|
60735
|
-
* [methods](
|
61150
|
+
* to schema [virtuals](/docs/guide.html#virtuals),
|
61151
|
+
* [statics](/docs/guide.html#statics), and
|
61152
|
+
* [methods](/docs/guide.html#methods).
|
60736
61153
|
*
|
60737
61154
|
* ####Example:
|
60738
61155
|
*
|
@@ -60777,12 +61194,12 @@ Schema.prototype.loadClass = function(model, virtualsOnly) {
|
|
60777
61194
|
// Add static methods
|
60778
61195
|
if (!virtualsOnly) {
|
60779
61196
|
Object.getOwnPropertyNames(model).forEach(function(name) {
|
60780
|
-
if (name.match(/^(length|name|prototype)$/)) {
|
61197
|
+
if (name.match(/^(length|name|prototype|constructor|__proto__)$/)) {
|
60781
61198
|
return;
|
60782
61199
|
}
|
60783
|
-
const
|
60784
|
-
if (
|
60785
|
-
this.static(name,
|
61200
|
+
const prop = Object.getOwnPropertyDescriptor(model, name);
|
61201
|
+
if (prop.hasOwnProperty('value')) {
|
61202
|
+
this.static(name, prop.value);
|
60786
61203
|
}
|
60787
61204
|
}, this);
|
60788
61205
|
}
|
@@ -60880,7 +61297,7 @@ Schema.prototype._getSchema = function(path) {
|
|
60880
61297
|
}
|
60881
61298
|
} else if (foundschema.$isSchemaMap) {
|
60882
61299
|
if (p + 1 >= parts.length) {
|
60883
|
-
return foundschema
|
61300
|
+
return foundschema;
|
60884
61301
|
}
|
60885
61302
|
const ret = search(parts.slice(p + 1), foundschema.$__schemaType.schema);
|
60886
61303
|
return ret;
|
@@ -60991,14 +61408,14 @@ module.exports = exports = Schema;
|
|
60991
61408
|
*
|
60992
61409
|
* ####Types:
|
60993
61410
|
*
|
60994
|
-
* - [String](#
|
60995
|
-
* - [Number](#
|
60996
|
-
* - [Boolean](#
|
60997
|
-
* - [Array](#
|
60998
|
-
* - [Buffer](#
|
60999
|
-
* - [Date](#
|
61000
|
-
* - [ObjectId](#
|
61001
|
-
* - [Mixed](#
|
61411
|
+
* - [String](/docs/schematypes.html#strings)
|
61412
|
+
* - [Number](/docs/schematypes.html#numbers)
|
61413
|
+
* - [Boolean](/docs/schematypes.html#booleans) | Bool
|
61414
|
+
* - [Array](/docs/schematypes.html#arrays)
|
61415
|
+
* - [Buffer](/docs/schematypes.html#buffers)
|
61416
|
+
* - [Date](/docs/schematypes.html#dates)
|
61417
|
+
* - [ObjectId](/docs/schematypes.html#objectids) | Oid
|
61418
|
+
* - [Mixed](/docs/schematypes.html#mixed)
|
61002
61419
|
*
|
61003
61420
|
* Using this exposed access to the `Mixed` SchemaType, we can use them in our schema.
|
61004
61421
|
*
|
@@ -61017,7 +61434,7 @@ Schema.Types = MongooseTypes = require('./schema/index');
|
|
61017
61434
|
exports.ObjectId = MongooseTypes.ObjectId;
|
61018
61435
|
|
61019
61436
|
}).call(this)}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
|
61020
|
-
},{"../../is-buffer/index.js":178,"./driver":195,"./error/mongooseError":206,"./helpers/get":
|
61437
|
+
},{"../../is-buffer/index.js":178,"./driver":195,"./error/mongooseError":206,"./helpers/get":229,"./helpers/getConstructorName":230,"./helpers/model/applyHooks":237,"./helpers/populate/validateRef":239,"./helpers/query/applyQueryMiddleware":243,"./helpers/schema/addAutoId":245,"./helpers/schema/getIndexes":247,"./helpers/schema/merge":250,"./helpers/symbols":253,"./helpers/timestamps/setupTimestamps":254,"./options/SchemaTypeOptions":269,"./options/VirtualOptions":270,"./schema/index":283,"./schematype":296,"./utils":308,"./virtualtype":309,"events":176,"kareem":181,"mpath":311,"util":333}],276:[function(require,module,exports){
|
61021
61438
|
'use strict';
|
61022
61439
|
|
61023
61440
|
/*!
|
@@ -61355,7 +61772,7 @@ SingleNestedPath.prototype.clone = function() {
|
|
61355
61772
|
return schematype;
|
61356
61773
|
};
|
61357
61774
|
|
61358
|
-
},{"../error/cast":201,"../error/objectExpected":208,"../helpers/discriminator/getConstructor":
|
61775
|
+
},{"../error/cast":201,"../error/objectExpected":208,"../helpers/discriminator/getConstructor":222,"../helpers/get":229,"../helpers/model/discriminator":238,"../helpers/schema/handleIdOption":248,"../options":258,"../options/SchemaSingleNestedOptions":267,"../schematype":296,"../types/subdocument":307,"./operators/exists":289,"./operators/geospatial":290,"./operators/helpers":291,"events":176}],277:[function(require,module,exports){
|
61359
61776
|
'use strict';
|
61360
61777
|
|
61361
61778
|
/*!
|
@@ -61383,6 +61800,7 @@ let MongooseArray;
|
|
61383
61800
|
let EmbeddedDoc;
|
61384
61801
|
|
61385
61802
|
const isNestedArraySymbol = Symbol('mongoose#isNestedArray');
|
61803
|
+
const emptyOpts = Object.freeze({});
|
61386
61804
|
|
61387
61805
|
/**
|
61388
61806
|
* Array SchemaType constructor
|
@@ -61418,6 +61836,10 @@ function SchemaArray(key, cast, options, schemaOptions) {
|
|
61418
61836
|
}
|
61419
61837
|
}
|
61420
61838
|
|
61839
|
+
if (options != null && options.ref != null && castOptions.ref == null) {
|
61840
|
+
castOptions.ref = options.ref;
|
61841
|
+
}
|
61842
|
+
|
61421
61843
|
if (cast === Object) {
|
61422
61844
|
cast = Mixed;
|
61423
61845
|
}
|
@@ -61439,16 +61861,16 @@ function SchemaArray(key, cast, options, schemaOptions) {
|
|
61439
61861
|
if (typeof caster === 'function' &&
|
61440
61862
|
!caster.$isArraySubdocument &&
|
61441
61863
|
!caster.$isSchemaMap) {
|
61442
|
-
this.caster
|
61864
|
+
const path = this.caster instanceof EmbeddedDoc ? null : key;
|
61865
|
+
this.caster = new caster(path, castOptions);
|
61443
61866
|
} else {
|
61444
61867
|
this.caster = caster;
|
61868
|
+
if (!(this.caster instanceof EmbeddedDoc)) {
|
61869
|
+
this.caster.path = key;
|
61870
|
+
}
|
61445
61871
|
}
|
61446
61872
|
|
61447
61873
|
this.$embeddedSchemaType = this.caster;
|
61448
|
-
|
61449
|
-
if (!(this.caster instanceof EmbeddedDoc)) {
|
61450
|
-
this.caster.path = key;
|
61451
|
-
}
|
61452
61874
|
}
|
61453
61875
|
|
61454
61876
|
this.$isMongooseArray = true;
|
@@ -61499,6 +61921,10 @@ SchemaArray.schemaName = 'Array';
|
|
61499
61921
|
|
61500
61922
|
SchemaArray.options = { castNonArrays: true };
|
61501
61923
|
|
61924
|
+
/*!
|
61925
|
+
* ignore
|
61926
|
+
*/
|
61927
|
+
|
61502
61928
|
SchemaArray.defaultOptions = {};
|
61503
61929
|
|
61504
61930
|
/**
|
@@ -61516,7 +61942,6 @@ SchemaArray.defaultOptions = {};
|
|
61516
61942
|
* @param {*} value - value for option
|
61517
61943
|
* @return {undefined}
|
61518
61944
|
* @function set
|
61519
|
-
* @static
|
61520
61945
|
* @api public
|
61521
61946
|
*/
|
61522
61947
|
SchemaArray.set = SchemaType.set;
|
@@ -61549,7 +61974,6 @@ SchemaArray._checkRequired = SchemaType.prototype.checkRequired;
|
|
61549
61974
|
* @param {Function} fn
|
61550
61975
|
* @return {Function}
|
61551
61976
|
* @function checkRequired
|
61552
|
-
* @static
|
61553
61977
|
* @api public
|
61554
61978
|
*/
|
61555
61979
|
|
@@ -61619,7 +62043,7 @@ SchemaArray.prototype.enum = function() {
|
|
61619
62043
|
*/
|
61620
62044
|
|
61621
62045
|
SchemaArray.prototype.applyGetters = function(value, scope) {
|
61622
|
-
if (scope != null && scope.populated(this.path)) {
|
62046
|
+
if (scope != null && scope.$__ != null && scope.populated(this.path)) {
|
61623
62047
|
// means the object id was populated
|
61624
62048
|
return value;
|
61625
62049
|
}
|
@@ -61635,14 +62059,14 @@ SchemaArray.prototype.applyGetters = function(value, scope) {
|
|
61635
62059
|
};
|
61636
62060
|
|
61637
62061
|
SchemaArray.prototype._applySetters = function(value, scope, init, priorVal) {
|
61638
|
-
if (this.casterConstructor
|
62062
|
+
if (this.casterConstructor.$isMongooseArray &&
|
61639
62063
|
SchemaArray.options.castNonArrays &&
|
61640
62064
|
!this[isNestedArraySymbol]) {
|
61641
62065
|
// Check nesting levels and wrap in array if necessary
|
61642
62066
|
let depth = 0;
|
61643
62067
|
let arr = this;
|
61644
62068
|
while (arr != null &&
|
61645
|
-
arr
|
62069
|
+
arr.$isMongooseArray &&
|
61646
62070
|
!arr.$isMongooseDocumentArray) {
|
61647
62071
|
++depth;
|
61648
62072
|
arr = arr.casterConstructor;
|
@@ -61679,7 +62103,8 @@ SchemaArray.prototype.cast = function(value, doc, init, prev, options) {
|
|
61679
62103
|
let l;
|
61680
62104
|
|
61681
62105
|
if (Array.isArray(value)) {
|
61682
|
-
|
62106
|
+
const len = value.length;
|
62107
|
+
if (!len && doc) {
|
61683
62108
|
const indexes = doc.schema.indexedPaths();
|
61684
62109
|
|
61685
62110
|
const arrayPath = this.path;
|
@@ -61704,39 +62129,35 @@ SchemaArray.prototype.cast = function(value, doc, init, prev, options) {
|
|
61704
62129
|
}
|
61705
62130
|
}
|
61706
62131
|
|
61707
|
-
|
61708
|
-
|
61709
|
-
|
61710
|
-
// We need to create a new array, otherwise change tracking will
|
61711
|
-
// update the old doc (gh-4449)
|
61712
|
-
value = MongooseArray(value, get(options, 'path', null) || this._arrayPath || this.path, doc, this);
|
61713
|
-
}
|
62132
|
+
options = options || emptyOpts;
|
62133
|
+
|
62134
|
+
value = MongooseArray(value, options.path || this._arrayPath || this.path, doc, this);
|
61714
62135
|
|
61715
|
-
|
61716
|
-
if (isPopulated && init) {
|
62136
|
+
if (init && doc != null && doc.$__ != null && doc.populated(this.path)) {
|
61717
62137
|
return value;
|
61718
62138
|
}
|
61719
62139
|
|
61720
62140
|
const caster = this.caster;
|
62141
|
+
const isMongooseArray = caster.$isMongooseArray;
|
62142
|
+
const isArrayOfNumbers = caster.instance === 'Number';
|
61721
62143
|
if (caster && this.casterConstructor !== Mixed) {
|
61722
62144
|
try {
|
61723
|
-
const len = value.length;
|
61724
62145
|
for (i = 0; i < len; i++) {
|
61725
62146
|
// Special case: number arrays disallow undefined.
|
61726
62147
|
// Re: gh-840
|
61727
62148
|
// See commit 1298fe92d2c790a90594bd08199e45a4a09162a6
|
61728
|
-
if (
|
62149
|
+
if (isArrayOfNumbers && value[i] === void 0) {
|
61729
62150
|
throw new MongooseError('Mongoose number arrays disallow storing undefined');
|
61730
62151
|
}
|
61731
62152
|
const opts = {};
|
61732
62153
|
// Perf: creating `arrayPath` is expensive for large arrays.
|
61733
62154
|
// We only need `arrayPath` if this is a nested array, so
|
61734
62155
|
// skip if possible.
|
61735
|
-
if (
|
61736
|
-
if (options
|
61737
|
-
opts.
|
61738
|
-
} else if (
|
61739
|
-
opts.
|
62156
|
+
if (isMongooseArray) {
|
62157
|
+
if (options.arrayPath != null) {
|
62158
|
+
opts.arrayPathIndex = i;
|
62159
|
+
} else if (caster._arrayParentPath != null) {
|
62160
|
+
opts.arrayPathIndex = i;
|
61740
62161
|
}
|
61741
62162
|
}
|
61742
62163
|
value[i] = caster.applySetters(value[i], doc, init, void 0, opts);
|
@@ -61762,12 +62183,50 @@ SchemaArray.prototype.cast = function(value, doc, init, prev, options) {
|
|
61762
62183
|
throw new CastError('Array', util.inspect(value), this.path, null, this);
|
61763
62184
|
};
|
61764
62185
|
|
62186
|
+
/*!
|
62187
|
+
* ignore
|
62188
|
+
*/
|
62189
|
+
|
62190
|
+
SchemaArray.prototype._castForPopulate = function _castForPopulate(value, doc) {
|
62191
|
+
// lazy load
|
62192
|
+
MongooseArray || (MongooseArray = require('../types').Array);
|
62193
|
+
|
62194
|
+
if (Array.isArray(value)) {
|
62195
|
+
let i;
|
62196
|
+
const len = value.length;
|
62197
|
+
|
62198
|
+
const caster = this.caster;
|
62199
|
+
if (caster && this.casterConstructor !== Mixed) {
|
62200
|
+
try {
|
62201
|
+
for (i = 0; i < len; i++) {
|
62202
|
+
const opts = {};
|
62203
|
+
// Perf: creating `arrayPath` is expensive for large arrays.
|
62204
|
+
// We only need `arrayPath` if this is a nested array, so
|
62205
|
+
// skip if possible.
|
62206
|
+
if (caster.$isMongooseArray && caster._arrayParentPath != null) {
|
62207
|
+
opts.arrayPathIndex = i;
|
62208
|
+
}
|
62209
|
+
|
62210
|
+
value[i] = caster.cast(value[i], doc, false, void 0, opts);
|
62211
|
+
}
|
62212
|
+
} catch (e) {
|
62213
|
+
// rethrow
|
62214
|
+
throw new CastError('[' + e.kind + ']', util.inspect(value), this.path + '.' + i, e, this);
|
62215
|
+
}
|
62216
|
+
}
|
62217
|
+
|
62218
|
+
return value;
|
62219
|
+
}
|
62220
|
+
|
62221
|
+
throw new CastError('Array', util.inspect(value), this.path, null, this);
|
62222
|
+
};
|
62223
|
+
|
61765
62224
|
/*!
|
61766
62225
|
* Ignore
|
61767
62226
|
*/
|
61768
62227
|
|
61769
62228
|
SchemaArray.prototype.discriminator = function(name, schema) {
|
61770
|
-
let arr = this;
|
62229
|
+
let arr = this;
|
61771
62230
|
while (arr.$isMongooseArray && !arr.$isMongooseDocumentArray) {
|
61772
62231
|
arr = arr.casterConstructor;
|
61773
62232
|
if (arr == null || typeof arr === 'function') {
|
@@ -61825,7 +62284,7 @@ SchemaArray.prototype.castForQuery = function($conditional, value) {
|
|
61825
62284
|
Constructor.discriminators[val[Constructor.schema.options.discriminatorKey]]) {
|
61826
62285
|
Constructor = Constructor.discriminators[val[Constructor.schema.options.discriminatorKey]];
|
61827
62286
|
} else {
|
61828
|
-
const constructorByValue = getDiscriminatorByValue(Constructor, val[Constructor.schema.options.discriminatorKey]);
|
62287
|
+
const constructorByValue = getDiscriminatorByValue(Constructor.discriminators, val[Constructor.schema.options.discriminatorKey]);
|
61829
62288
|
if (constructorByValue) {
|
61830
62289
|
Constructor = constructorByValue;
|
61831
62290
|
}
|
@@ -61966,7 +62425,7 @@ handle.$in = SchemaType.prototype.$conditionalHandlers.$in;
|
|
61966
62425
|
|
61967
62426
|
module.exports = SchemaArray;
|
61968
62427
|
|
61969
|
-
},{"../cast":186,"../error/mongooseError":206,"../helpers/arrayDepth":217,"../helpers/discriminator/getDiscriminatorByValue":
|
62428
|
+
},{"../cast":186,"../error/mongooseError":206,"../helpers/arrayDepth":217,"../helpers/discriminator/getDiscriminatorByValue":223,"../helpers/get":229,"../helpers/query/isOperator":244,"../options/SchemaArrayOptions":260,"../schematype":296,"../types":304,"../utils":308,"./index.js":283,"./mixed":285,"./operators/exists":289,"./operators/geospatial":290,"./operators/helpers":291,"./operators/type":293,"util":333}],278:[function(require,module,exports){
|
61970
62429
|
'use strict';
|
61971
62430
|
|
61972
62431
|
/*!
|
@@ -62238,7 +62697,7 @@ SchemaBoolean.prototype._castNullish = function _castNullish(v) {
|
|
62238
62697
|
|
62239
62698
|
module.exports = SchemaBoolean;
|
62240
62699
|
|
62241
|
-
},{"../cast/boolean":187,"../error/cast":201,"../schematype":
|
62700
|
+
},{"../cast/boolean":187,"../error/cast":201,"../schematype":296,"../utils":308}],279:[function(require,module,exports){
|
62242
62701
|
(function (Buffer){(function (){
|
62243
62702
|
/*!
|
62244
62703
|
* Module dependencies.
|
@@ -62252,11 +62711,8 @@ const SchemaType = require('../schematype');
|
|
62252
62711
|
const handleBitwiseOperator = require('./operators/bitwise');
|
62253
62712
|
const utils = require('../utils');
|
62254
62713
|
|
62255
|
-
const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
62256
|
-
|
62257
62714
|
const Binary = MongooseBuffer.Binary;
|
62258
62715
|
const CastError = SchemaType.CastError;
|
62259
|
-
let Document;
|
62260
62716
|
|
62261
62717
|
/**
|
62262
62718
|
* Buffer SchemaType constructor
|
@@ -62366,36 +62822,30 @@ SchemaBuffer.prototype.checkRequired = function(value, doc) {
|
|
62366
62822
|
SchemaBuffer.prototype.cast = function(value, doc, init) {
|
62367
62823
|
let ret;
|
62368
62824
|
if (SchemaType._isRef(this, value, doc, init)) {
|
62369
|
-
|
62370
|
-
|
62371
|
-
if (value === null || value === undefined) {
|
62825
|
+
if (value && value.isMongooseBuffer) {
|
62372
62826
|
return value;
|
62373
62827
|
}
|
62374
62828
|
|
62375
|
-
|
62376
|
-
|
62377
|
-
|
62378
|
-
|
62379
|
-
|
62829
|
+
if (Buffer.isBuffer(value)) {
|
62830
|
+
if (!value || !value.isMongooseBuffer) {
|
62831
|
+
value = new MongooseBuffer(value, [this.path, doc]);
|
62832
|
+
if (this.options.subtype != null) {
|
62833
|
+
value._subtype = this.options.subtype;
|
62834
|
+
}
|
62835
|
+
}
|
62380
62836
|
return value;
|
62381
62837
|
}
|
62382
62838
|
|
62383
|
-
|
62384
|
-
|
62385
|
-
|
62386
|
-
|
62387
|
-
|
62839
|
+
if (value instanceof Binary) {
|
62840
|
+
ret = new MongooseBuffer(value.value(true), [this.path, doc]);
|
62841
|
+
if (typeof value.sub_type !== 'number') {
|
62842
|
+
throw new CastError('Buffer', value, this.path, null, this);
|
62843
|
+
}
|
62844
|
+
ret._subtype = value.sub_type;
|
62845
|
+
return ret;
|
62388
62846
|
}
|
62389
62847
|
|
62390
|
-
|
62391
|
-
// path to a plain object; cast to the Model used in
|
62392
|
-
// the population query.
|
62393
|
-
const path = doc.$__fullPath(this.path);
|
62394
|
-
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
62395
|
-
const pop = owner.populated(path, true);
|
62396
|
-
ret = new pop.options[populateModelSymbol](value);
|
62397
|
-
ret.$__.wasPopulated = true;
|
62398
|
-
return ret;
|
62848
|
+
return this._castRef(value, doc, init);
|
62399
62849
|
}
|
62400
62850
|
|
62401
62851
|
// documents
|
@@ -62518,7 +62968,7 @@ SchemaBuffer.prototype.castForQuery = function($conditional, val) {
|
|
62518
62968
|
module.exports = SchemaBuffer;
|
62519
62969
|
|
62520
62970
|
}).call(this)}).call(this,{"isBuffer":require("../../../is-buffer/index.js")})
|
62521
|
-
},{"../../../is-buffer/index.js":178,"../
|
62971
|
+
},{"../../../is-buffer/index.js":178,"../options/SchemaBufferOptions":261,"../schematype":296,"../types/buffer":299,"../utils":308,"./operators/bitwise":288}],280:[function(require,module,exports){
|
62522
62972
|
/*!
|
62523
62973
|
* Module requirements.
|
62524
62974
|
*/
|
@@ -62529,6 +62979,7 @@ const MongooseError = require('../error/index');
|
|
62529
62979
|
const SchemaDateOptions = require('../options/SchemaDateOptions');
|
62530
62980
|
const SchemaType = require('../schematype');
|
62531
62981
|
const castDate = require('../cast/date');
|
62982
|
+
const getConstructorName = require('../helpers/getConstructorName');
|
62532
62983
|
const utils = require('../utils');
|
62533
62984
|
|
62534
62985
|
const CastError = SchemaType.CastError;
|
@@ -62668,7 +63119,7 @@ SchemaDate._defaultCaster = v => {
|
|
62668
63119
|
*/
|
62669
63120
|
|
62670
63121
|
SchemaDate.prototype.expires = function(when) {
|
62671
|
-
if (
|
63122
|
+
if (getConstructorName(this._index) !== 'Object') {
|
62672
63123
|
this._index = {};
|
62673
63124
|
}
|
62674
63125
|
|
@@ -62922,8 +63373,7 @@ SchemaDate.prototype.castForQuery = function($conditional, val) {
|
|
62922
63373
|
|
62923
63374
|
module.exports = SchemaDate;
|
62924
63375
|
|
62925
|
-
},{"../cast/date":188,"../error/index":203,"../options/SchemaDateOptions":
|
62926
|
-
(function (Buffer){(function (){
|
63376
|
+
},{"../cast/date":188,"../error/index":203,"../helpers/getConstructorName":230,"../options/SchemaDateOptions":262,"../schematype":296,"../utils":308}],281:[function(require,module,exports){
|
62927
63377
|
/*!
|
62928
63378
|
* Module dependencies.
|
62929
63379
|
*/
|
@@ -62936,10 +63386,6 @@ const Decimal128Type = require('../types/decimal128');
|
|
62936
63386
|
const castDecimal128 = require('../cast/decimal128');
|
62937
63387
|
const utils = require('../utils');
|
62938
63388
|
|
62939
|
-
const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
62940
|
-
|
62941
|
-
let Document;
|
62942
|
-
|
62943
63389
|
/**
|
62944
63390
|
* Decimal128 SchemaType constructor.
|
62945
63391
|
*
|
@@ -63094,44 +63540,11 @@ Decimal128.prototype.checkRequired = function checkRequired(value, doc) {
|
|
63094
63540
|
|
63095
63541
|
Decimal128.prototype.cast = function(value, doc, init) {
|
63096
63542
|
if (SchemaType._isRef(this, value, doc, init)) {
|
63097
|
-
// wait! we may need to cast this to a document
|
63098
|
-
|
63099
|
-
if (value === null || value === undefined) {
|
63100
|
-
return value;
|
63101
|
-
}
|
63102
|
-
|
63103
|
-
// lazy load
|
63104
|
-
Document || (Document = require('./../document'));
|
63105
|
-
|
63106
|
-
if (value instanceof Document) {
|
63107
|
-
value.$__.wasPopulated = true;
|
63108
|
-
return value;
|
63109
|
-
}
|
63110
|
-
|
63111
|
-
// setting a populated path
|
63112
63543
|
if (value instanceof Decimal128Type) {
|
63113
63544
|
return value;
|
63114
|
-
} else if (Buffer.isBuffer(value) || !utils.isObject(value)) {
|
63115
|
-
throw new CastError('Decimal128', value, this.path, null, this);
|
63116
|
-
}
|
63117
|
-
|
63118
|
-
// Handle the case where user directly sets a populated
|
63119
|
-
// path to a plain object; cast to the Model used in
|
63120
|
-
// the population query.
|
63121
|
-
const path = doc.$__fullPath(this.path);
|
63122
|
-
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
63123
|
-
const pop = owner.populated(path, true);
|
63124
|
-
let ret = value;
|
63125
|
-
if (!doc.$__.populated ||
|
63126
|
-
!doc.$__.populated[path] ||
|
63127
|
-
!doc.$__.populated[path].options ||
|
63128
|
-
!doc.$__.populated[path].options.options ||
|
63129
|
-
!doc.$__.populated[path].options.options.lean) {
|
63130
|
-
ret = new pop.options[populateModelSymbol](value);
|
63131
|
-
ret.$__.wasPopulated = true;
|
63132
63545
|
}
|
63133
63546
|
|
63134
|
-
return
|
63547
|
+
return this._castRef(value, doc, init);
|
63135
63548
|
}
|
63136
63549
|
|
63137
63550
|
let castDecimal128;
|
@@ -63172,8 +63585,7 @@ Decimal128.prototype.$conditionalHandlers =
|
|
63172
63585
|
|
63173
63586
|
module.exports = Decimal128;
|
63174
63587
|
|
63175
|
-
}
|
63176
|
-
},{"../../../is-buffer/index.js":178,"../cast/decimal128":189,"../helpers/symbols":251,"../schematype":294,"../types/decimal128":299,"../utils":306,"./../document":193}],280:[function(require,module,exports){
|
63588
|
+
},{"../cast/decimal128":189,"../schematype":296,"../types/decimal128":301,"../utils":308}],282:[function(require,module,exports){
|
63177
63589
|
'use strict';
|
63178
63590
|
|
63179
63591
|
/*!
|
@@ -63194,6 +63606,7 @@ const util = require('util');
|
|
63194
63606
|
const utils = require('../utils');
|
63195
63607
|
const getConstructor = require('../helpers/discriminator/getConstructor');
|
63196
63608
|
|
63609
|
+
const arrayAtomicsSymbol = require('../helpers/symbols').arrayAtomicsSymbol;
|
63197
63610
|
const arrayPathSymbol = require('../helpers/symbols').arrayPathSymbol;
|
63198
63611
|
const documentArrayParent = require('../helpers/symbols').documentArrayParent;
|
63199
63612
|
|
@@ -63577,8 +63990,12 @@ DocumentArrayPath.prototype.cast = function(value, doc, init, prev, options) {
|
|
63577
63990
|
value = new MongooseDocumentArray(value, this.path, doc);
|
63578
63991
|
}
|
63579
63992
|
|
63580
|
-
if (
|
63581
|
-
value[
|
63993
|
+
if (prev != null) {
|
63994
|
+
value[arrayAtomicsSymbol] = prev[arrayAtomicsSymbol] || {};
|
63995
|
+
}
|
63996
|
+
|
63997
|
+
if (options.arrayPathIndex != null) {
|
63998
|
+
value[arrayPathSymbol] = this.path + '.' + options.arrayPathIndex;
|
63582
63999
|
}
|
63583
64000
|
|
63584
64001
|
const len = value.length;
|
@@ -63738,7 +64155,7 @@ DocumentArrayPath.set = SchemaType.set;
|
|
63738
64155
|
|
63739
64156
|
module.exports = DocumentArrayPath;
|
63740
64157
|
|
63741
|
-
},{"../error/cast":201,"../error/validation":214,"../helpers/discriminator/getConstructor":
|
64158
|
+
},{"../error/cast":201,"../error/validation":214,"../helpers/discriminator/getConstructor":222,"../helpers/get":229,"../helpers/model/discriminator":238,"../helpers/schema/handleIdOption":248,"../helpers/symbols":253,"../options/SchemaDocumentArrayOptions":263,"../schematype":296,"../types/documentarray":302,"../types/embedded":303,"../utils":308,"./array":277,"events":176,"util":333}],283:[function(require,module,exports){
|
63742
64159
|
|
63743
64160
|
/*!
|
63744
64161
|
* Module exports.
|
@@ -63777,7 +64194,7 @@ exports.Object = exports.Mixed;
|
|
63777
64194
|
exports.Bool = exports.Boolean;
|
63778
64195
|
exports.ObjectID = exports.ObjectId;
|
63779
64196
|
|
63780
|
-
},{"./SingleNestedPath":
|
64197
|
+
},{"./SingleNestedPath":276,"./array":277,"./boolean":278,"./buffer":279,"./date":280,"./decimal128":281,"./documentarray":282,"./map":284,"./mixed":285,"./number":286,"./objectid":287,"./string":294}],284:[function(require,module,exports){
|
63781
64198
|
(function (global){(function (){
|
63782
64199
|
'use strict';
|
63783
64200
|
|
@@ -63857,7 +64274,7 @@ Map.defaultOptions = {};
|
|
63857
64274
|
module.exports = Map;
|
63858
64275
|
|
63859
64276
|
}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
63860
|
-
},{"../options/SchemaMapOptions":
|
64277
|
+
},{"../options/SchemaMapOptions":264,"../schematype":296,"../types/map":305}],285:[function(require,module,exports){
|
63861
64278
|
/*!
|
63862
64279
|
* Module dependencies.
|
63863
64280
|
*/
|
@@ -63867,6 +64284,7 @@ module.exports = Map;
|
|
63867
64284
|
const SchemaType = require('../schematype');
|
63868
64285
|
const symbols = require('./symbols');
|
63869
64286
|
const isObject = require('../helpers/isObject');
|
64287
|
+
const utils = require('../utils');
|
63870
64288
|
|
63871
64289
|
/**
|
63872
64290
|
* Mixed SchemaType constructor.
|
@@ -63963,6 +64381,9 @@ Mixed.set = SchemaType.set;
|
|
63963
64381
|
*/
|
63964
64382
|
|
63965
64383
|
Mixed.prototype.cast = function(val) {
|
64384
|
+
if (val instanceof Error) {
|
64385
|
+
return utils.errorToPOJO(val);
|
64386
|
+
}
|
63966
64387
|
return val;
|
63967
64388
|
};
|
63968
64389
|
|
@@ -63987,8 +64408,7 @@ Mixed.prototype.castForQuery = function($cond, val) {
|
|
63987
64408
|
|
63988
64409
|
module.exports = Mixed;
|
63989
64410
|
|
63990
|
-
},{"../helpers/isObject":
|
63991
|
-
(function (Buffer){(function (){
|
64411
|
+
},{"../helpers/isObject":235,"../schematype":296,"../utils":308,"./symbols":295}],286:[function(require,module,exports){
|
63992
64412
|
'use strict';
|
63993
64413
|
|
63994
64414
|
/*!
|
@@ -64002,10 +64422,7 @@ const castNumber = require('../cast/number');
|
|
64002
64422
|
const handleBitwiseOperator = require('./operators/bitwise');
|
64003
64423
|
const utils = require('../utils');
|
64004
64424
|
|
64005
|
-
const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
64006
|
-
|
64007
64425
|
const CastError = SchemaType.CastError;
|
64008
|
-
let Document;
|
64009
64426
|
|
64010
64427
|
/**
|
64011
64428
|
* Number SchemaType constructor.
|
@@ -64341,36 +64758,11 @@ SchemaNumber.prototype.enum = function(values, message) {
|
|
64341
64758
|
|
64342
64759
|
SchemaNumber.prototype.cast = function(value, doc, init) {
|
64343
64760
|
if (SchemaType._isRef(this, value, doc, init)) {
|
64344
|
-
// wait! we may need to cast this to a document
|
64345
|
-
|
64346
|
-
if (value === null || value === undefined) {
|
64347
|
-
return value;
|
64348
|
-
}
|
64349
|
-
|
64350
|
-
// lazy load
|
64351
|
-
Document || (Document = require('./../document'));
|
64352
|
-
|
64353
|
-
if (value instanceof Document) {
|
64354
|
-
value.$__.wasPopulated = true;
|
64355
|
-
return value;
|
64356
|
-
}
|
64357
|
-
|
64358
|
-
// setting a populated path
|
64359
64761
|
if (typeof value === 'number') {
|
64360
64762
|
return value;
|
64361
|
-
} else if (Buffer.isBuffer(value) || !utils.isObject(value)) {
|
64362
|
-
throw new CastError('Number', value, this.path, null, this);
|
64363
64763
|
}
|
64364
64764
|
|
64365
|
-
|
64366
|
-
// path to a plain object; cast to the Model used in
|
64367
|
-
// the population query.
|
64368
|
-
const path = doc.$__fullPath(this.path);
|
64369
|
-
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
64370
|
-
const pop = owner.populated(path, true);
|
64371
|
-
const ret = new pop.options[populateModelSymbol](value);
|
64372
|
-
ret.$__.wasPopulated = true;
|
64373
|
-
return ret;
|
64765
|
+
return this._castRef(value, doc, init);
|
64374
64766
|
}
|
64375
64767
|
|
64376
64768
|
const val = value && typeof value._id !== 'undefined' ?
|
@@ -64451,9 +64843,7 @@ SchemaNumber.prototype.castForQuery = function($conditional, val) {
|
|
64451
64843
|
|
64452
64844
|
module.exports = SchemaNumber;
|
64453
64845
|
|
64454
|
-
}
|
64455
|
-
},{"../../../is-buffer/index.js":178,"../cast/number":190,"../error/index":203,"../helpers/symbols":251,"../options/SchemaNumberOptions":263,"../schematype":294,"../utils":306,"./../document":193,"./operators/bitwise":286}],285:[function(require,module,exports){
|
64456
|
-
(function (Buffer){(function (){
|
64846
|
+
},{"../cast/number":190,"../error/index":203,"../options/SchemaNumberOptions":265,"../schematype":296,"../utils":308,"./operators/bitwise":288}],287:[function(require,module,exports){
|
64457
64847
|
/*!
|
64458
64848
|
* Module dependencies.
|
64459
64849
|
*/
|
@@ -64463,11 +64853,10 @@ module.exports = SchemaNumber;
|
|
64463
64853
|
const SchemaObjectIdOptions = require('../options/SchemaObjectIdOptions');
|
64464
64854
|
const SchemaType = require('../schematype');
|
64465
64855
|
const castObjectId = require('../cast/objectid');
|
64856
|
+
const getConstructorName = require('../helpers/getConstructorName');
|
64466
64857
|
const oid = require('../types/objectid');
|
64467
64858
|
const utils = require('../utils');
|
64468
64859
|
|
64469
|
-
const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
64470
|
-
|
64471
64860
|
const CastError = SchemaType.CastError;
|
64472
64861
|
let Document;
|
64473
64862
|
|
@@ -64681,45 +65070,13 @@ ObjectId.prototype.checkRequired = function checkRequired(value, doc) {
|
|
64681
65070
|
ObjectId.prototype.cast = function(value, doc, init) {
|
64682
65071
|
if (SchemaType._isRef(this, value, doc, init)) {
|
64683
65072
|
// wait! we may need to cast this to a document
|
64684
|
-
|
64685
|
-
if (value === null || value === undefined) {
|
64686
|
-
return value;
|
64687
|
-
}
|
64688
|
-
|
64689
|
-
// lazy load
|
64690
|
-
Document || (Document = require('./../document'));
|
64691
|
-
|
64692
|
-
if (value instanceof Document) {
|
64693
|
-
value.$__.wasPopulated = true;
|
64694
|
-
return value;
|
64695
|
-
}
|
64696
|
-
|
64697
|
-
// setting a populated path
|
64698
65073
|
if (value instanceof oid) {
|
64699
65074
|
return value;
|
64700
|
-
} else if ((value
|
65075
|
+
} else if ((getConstructorName(value) || '').toLowerCase() === 'objectid') {
|
64701
65076
|
return new oid(value.toHexString());
|
64702
|
-
} else if (Buffer.isBuffer(value) || !utils.isObject(value)) {
|
64703
|
-
throw new CastError('ObjectId', value, this.path, null, this);
|
64704
|
-
}
|
64705
|
-
|
64706
|
-
// Handle the case where user directly sets a populated
|
64707
|
-
// path to a plain object; cast to the Model used in
|
64708
|
-
// the population query.
|
64709
|
-
const path = doc.$__fullPath(this.path);
|
64710
|
-
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
64711
|
-
const pop = owner.populated(path, true);
|
64712
|
-
let ret = value;
|
64713
|
-
if (!doc.$__.populated ||
|
64714
|
-
!doc.$__.populated[path] ||
|
64715
|
-
!doc.$__.populated[path].options ||
|
64716
|
-
!doc.$__.populated[path].options.options ||
|
64717
|
-
!doc.$__.populated[path].options.options.lean) {
|
64718
|
-
ret = new pop.options[populateModelSymbol](value);
|
64719
|
-
ret.$__.wasPopulated = true;
|
64720
65077
|
}
|
64721
65078
|
|
64722
|
-
return
|
65079
|
+
return this._castRef(value, doc, init);
|
64723
65080
|
}
|
64724
65081
|
|
64725
65082
|
let castObjectId;
|
@@ -64786,8 +65143,7 @@ function resetId(v) {
|
|
64786
65143
|
|
64787
65144
|
module.exports = ObjectId;
|
64788
65145
|
|
64789
|
-
}
|
64790
|
-
},{"../../../is-buffer/index.js":178,"../cast/objectid":191,"../helpers/symbols":251,"../options/SchemaObjectIdOptions":264,"../schematype":294,"../types/objectid":304,"../utils":306,"./../document":193}],286:[function(require,module,exports){
|
65146
|
+
},{"../cast/objectid":191,"../helpers/getConstructorName":230,"../options/SchemaObjectIdOptions":266,"../schematype":296,"../types/objectid":306,"../utils":308,"./../document":193}],288:[function(require,module,exports){
|
64791
65147
|
(function (Buffer){(function (){
|
64792
65148
|
/*!
|
64793
65149
|
* Module requirements.
|
@@ -64829,7 +65185,7 @@ function _castNumber(path, num) {
|
|
64829
65185
|
module.exports = handleBitwiseOperator;
|
64830
65186
|
|
64831
65187
|
}).call(this)}).call(this,{"isBuffer":require("../../../../is-buffer/index.js")})
|
64832
|
-
},{"../../../../is-buffer/index.js":178,"../../error/cast":201}],
|
65188
|
+
},{"../../../../is-buffer/index.js":178,"../../error/cast":201}],289:[function(require,module,exports){
|
64833
65189
|
'use strict';
|
64834
65190
|
|
64835
65191
|
const castBoolean = require('../../cast/boolean');
|
@@ -64843,7 +65199,7 @@ module.exports = function(val) {
|
|
64843
65199
|
return castBoolean(val, path);
|
64844
65200
|
};
|
64845
65201
|
|
64846
|
-
},{"../../cast/boolean":187}],
|
65202
|
+
},{"../../cast/boolean":187}],290:[function(require,module,exports){
|
64847
65203
|
/*!
|
64848
65204
|
* Module requirements.
|
64849
65205
|
*/
|
@@ -64952,7 +65308,7 @@ function _castMinMaxDistance(self, val) {
|
|
64952
65308
|
}
|
64953
65309
|
}
|
64954
65310
|
|
64955
|
-
},{"../array":
|
65311
|
+
},{"../array":277,"./helpers":291}],291:[function(require,module,exports){
|
64956
65312
|
'use strict';
|
64957
65313
|
|
64958
65314
|
/*!
|
@@ -64986,7 +65342,7 @@ function castArraysOfNumbers(arr, self) {
|
|
64986
65342
|
});
|
64987
65343
|
}
|
64988
65344
|
|
64989
|
-
},{"../number":
|
65345
|
+
},{"../number":286}],292:[function(require,module,exports){
|
64990
65346
|
'use strict';
|
64991
65347
|
|
64992
65348
|
const CastError = require('../../error/cast');
|
@@ -65027,7 +65383,7 @@ module.exports = function(val, path) {
|
|
65027
65383
|
return val;
|
65028
65384
|
};
|
65029
65385
|
|
65030
|
-
},{"../../cast/boolean":187,"../../cast/string":192,"../../error/cast":201}],
|
65386
|
+
},{"../../cast/boolean":187,"../../cast/string":192,"../../error/cast":201}],293:[function(require,module,exports){
|
65031
65387
|
'use strict';
|
65032
65388
|
|
65033
65389
|
/*!
|
@@ -65049,8 +65405,7 @@ module.exports = function(val) {
|
|
65049
65405
|
return val;
|
65050
65406
|
};
|
65051
65407
|
|
65052
|
-
},{}],
|
65053
|
-
(function (Buffer){(function (){
|
65408
|
+
},{}],294:[function(require,module,exports){
|
65054
65409
|
'use strict';
|
65055
65410
|
|
65056
65411
|
/*!
|
@@ -65063,10 +65418,7 @@ const SchemaStringOptions = require('../options/SchemaStringOptions');
|
|
65063
65418
|
const castString = require('../cast/string');
|
65064
65419
|
const utils = require('../utils');
|
65065
65420
|
|
65066
|
-
const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
65067
|
-
|
65068
65421
|
const CastError = SchemaType.CastError;
|
65069
|
-
let Document;
|
65070
65422
|
|
65071
65423
|
/**
|
65072
65424
|
* String SchemaType constructor.
|
@@ -65637,36 +65989,11 @@ SchemaString.prototype.checkRequired = function checkRequired(value, doc) {
|
|
65637
65989
|
|
65638
65990
|
SchemaString.prototype.cast = function(value, doc, init) {
|
65639
65991
|
if (SchemaType._isRef(this, value, doc, init)) {
|
65640
|
-
// wait! we may need to cast this to a document
|
65641
|
-
|
65642
|
-
if (value === null || value === undefined) {
|
65643
|
-
return value;
|
65644
|
-
}
|
65645
|
-
|
65646
|
-
// lazy load
|
65647
|
-
Document || (Document = require('./../document'));
|
65648
|
-
|
65649
|
-
if (value instanceof Document) {
|
65650
|
-
value.$__.wasPopulated = true;
|
65651
|
-
return value;
|
65652
|
-
}
|
65653
|
-
|
65654
|
-
// setting a populated path
|
65655
65992
|
if (typeof value === 'string') {
|
65656
65993
|
return value;
|
65657
|
-
} else if (Buffer.isBuffer(value) || !utils.isObject(value)) {
|
65658
|
-
throw new CastError('string', value, this.path, null, this);
|
65659
65994
|
}
|
65660
65995
|
|
65661
|
-
|
65662
|
-
// path to a plain object; cast to the Model used in
|
65663
|
-
// the population query.
|
65664
|
-
const path = doc.$__fullPath(this.path);
|
65665
|
-
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
65666
|
-
const pop = owner.populated(path, true);
|
65667
|
-
const ret = new pop.options[populateModelSymbol](value);
|
65668
|
-
ret.$__.wasPopulated = true;
|
65669
|
-
return ret;
|
65996
|
+
return this._castRef(value, doc, init);
|
65670
65997
|
}
|
65671
65998
|
|
65672
65999
|
let castString;
|
@@ -65752,14 +66079,13 @@ SchemaString.prototype.castForQuery = function($conditional, val) {
|
|
65752
66079
|
|
65753
66080
|
module.exports = SchemaString;
|
65754
66081
|
|
65755
|
-
}
|
65756
|
-
},{"../../../is-buffer/index.js":178,"../cast/string":192,"../error/index":203,"../helpers/symbols":251,"../options/SchemaStringOptions":266,"../schematype":294,"../utils":306,"./../document":193}],293:[function(require,module,exports){
|
66082
|
+
},{"../cast/string":192,"../error/index":203,"../options/SchemaStringOptions":268,"../schematype":296,"../utils":308}],295:[function(require,module,exports){
|
65757
66083
|
'use strict';
|
65758
66084
|
|
65759
66085
|
exports.schemaMixedSymbol = Symbol.for('mongoose:schema_mixed');
|
65760
66086
|
|
65761
66087
|
exports.builtInMiddleware = Symbol.for('mongoose:built-in-middleware');
|
65762
|
-
},{}],
|
66088
|
+
},{}],296:[function(require,module,exports){
|
65763
66089
|
(function (Buffer){(function (){
|
65764
66090
|
'use strict';
|
65765
66091
|
|
@@ -65780,6 +66106,8 @@ const utils = require('./utils');
|
|
65780
66106
|
const validatorErrorSymbol = require('./helpers/symbols').validatorErrorSymbol;
|
65781
66107
|
const documentIsModified = require('./helpers/symbols').documentIsModified;
|
65782
66108
|
|
66109
|
+
const populateModelSymbol = require('./helpers/symbols').populateModelSymbol;
|
66110
|
+
|
65783
66111
|
const CastError = MongooseError.CastError;
|
65784
66112
|
const ValidatorError = MongooseError.ValidatorError;
|
65785
66113
|
|
@@ -65808,6 +66136,8 @@ function SchemaType(path, options, instance) {
|
|
65808
66136
|
[];
|
65809
66137
|
this.setters = [];
|
65810
66138
|
|
66139
|
+
this.splitPath();
|
66140
|
+
|
65811
66141
|
options = options || {};
|
65812
66142
|
const defaultOptions = this.constructor.defaultOptions || {};
|
65813
66143
|
const defaultOptionsKeys = Object.keys(defaultOptions);
|
@@ -65882,11 +66212,27 @@ function SchemaType(path, options, instance) {
|
|
65882
66212
|
}
|
65883
66213
|
|
65884
66214
|
/*!
|
65885
|
-
*
|
66215
|
+
* The class that Mongoose uses internally to instantiate this SchemaType's `options` property.
|
65886
66216
|
*/
|
65887
66217
|
|
65888
66218
|
SchemaType.prototype.OptionsConstructor = SchemaTypeOptions;
|
65889
66219
|
|
66220
|
+
/*!
|
66221
|
+
* ignore
|
66222
|
+
*/
|
66223
|
+
|
66224
|
+
SchemaType.prototype.splitPath = function() {
|
66225
|
+
if (this._presplitPath != null) {
|
66226
|
+
return this._presplitPath;
|
66227
|
+
}
|
66228
|
+
if (this.path == null) {
|
66229
|
+
return undefined;
|
66230
|
+
}
|
66231
|
+
|
66232
|
+
this._presplitPath = this.path.indexOf('.') === -1 ? [this.path] : this.path.split('.');
|
66233
|
+
return this._presplitPath;
|
66234
|
+
};
|
66235
|
+
|
65890
66236
|
/**
|
65891
66237
|
* Get/set the function used to cast arbitrary values to this type.
|
65892
66238
|
*
|
@@ -65953,6 +66299,19 @@ SchemaType.prototype.castFunction = function castFunction(caster) {
|
|
65953
66299
|
return this._castFunction;
|
65954
66300
|
};
|
65955
66301
|
|
66302
|
+
/**
|
66303
|
+
* The function that Mongoose calls to cast arbitrary values to this SchemaType.
|
66304
|
+
*
|
66305
|
+
* @param {Object} value value to cast
|
66306
|
+
* @param {Document} doc document that triggers the casting
|
66307
|
+
* @param {Boolean} init
|
66308
|
+
* @api public
|
66309
|
+
*/
|
66310
|
+
|
66311
|
+
SchemaType.prototype.cast = function cast() {
|
66312
|
+
throw new Error('Base SchemaType class does not implement a `cast()` function');
|
66313
|
+
};
|
66314
|
+
|
65956
66315
|
/**
|
65957
66316
|
* Sets a default option for this schema type.
|
65958
66317
|
*
|
@@ -66819,8 +67178,8 @@ SchemaType.prototype._applySetters = function(value, scope, init) {
|
|
66819
67178
|
}
|
66820
67179
|
const setters = this.setters;
|
66821
67180
|
|
66822
|
-
for (
|
66823
|
-
v =
|
67181
|
+
for (let i = setters.length - 1; i >= 0; i--) {
|
67182
|
+
v = setters[i].call(scope, v, this);
|
66824
67183
|
}
|
66825
67184
|
|
66826
67185
|
return v;
|
@@ -66845,7 +67204,6 @@ SchemaType.prototype._castNullish = function _castNullish(v) {
|
|
66845
67204
|
|
66846
67205
|
SchemaType.prototype.applySetters = function(value, scope, init, priorVal, options) {
|
66847
67206
|
let v = this._applySetters(value, scope, init, priorVal, options);
|
66848
|
-
|
66849
67207
|
if (v == null) {
|
66850
67208
|
return this._castNullish(v);
|
66851
67209
|
}
|
@@ -67177,11 +67535,54 @@ SchemaType._isRef = function(self, value, doc, init) {
|
|
67177
67535
|
) {
|
67178
67536
|
return true;
|
67179
67537
|
}
|
67538
|
+
|
67539
|
+
return init;
|
67180
67540
|
}
|
67181
67541
|
|
67182
67542
|
return false;
|
67183
67543
|
};
|
67184
67544
|
|
67545
|
+
/*!
|
67546
|
+
* ignore
|
67547
|
+
*/
|
67548
|
+
|
67549
|
+
SchemaType.prototype._castRef = function _castRef(value, doc, init) {
|
67550
|
+
if (value == null) {
|
67551
|
+
return value;
|
67552
|
+
}
|
67553
|
+
|
67554
|
+
if (value.$__ != null) {
|
67555
|
+
value.$__.wasPopulated = true;
|
67556
|
+
return value;
|
67557
|
+
}
|
67558
|
+
|
67559
|
+
// setting a populated path
|
67560
|
+
if (Buffer.isBuffer(value) || !utils.isObject(value)) {
|
67561
|
+
if (init) {
|
67562
|
+
return value;
|
67563
|
+
}
|
67564
|
+
throw new CastError(this.instance, value, this.path, null, this);
|
67565
|
+
}
|
67566
|
+
|
67567
|
+
// Handle the case where user directly sets a populated
|
67568
|
+
// path to a plain object; cast to the Model used in
|
67569
|
+
// the population query.
|
67570
|
+
const path = doc.$__fullPath(this.path);
|
67571
|
+
const owner = doc.ownerDocument ? doc.ownerDocument() : doc;
|
67572
|
+
const pop = owner.populated(path, true);
|
67573
|
+
let ret = value;
|
67574
|
+
if (!doc.$__.populated ||
|
67575
|
+
!doc.$__.populated[path] ||
|
67576
|
+
!doc.$__.populated[path].options ||
|
67577
|
+
!doc.$__.populated[path].options.options ||
|
67578
|
+
!doc.$__.populated[path].options.options.lean) {
|
67579
|
+
ret = new pop.options[populateModelSymbol](value);
|
67580
|
+
ret.$__.wasPopulated = true;
|
67581
|
+
}
|
67582
|
+
|
67583
|
+
return ret;
|
67584
|
+
};
|
67585
|
+
|
67185
67586
|
/*!
|
67186
67587
|
* ignore
|
67187
67588
|
*/
|
@@ -67360,7 +67761,7 @@ exports.CastError = CastError;
|
|
67360
67761
|
exports.ValidatorError = ValidatorError;
|
67361
67762
|
|
67362
67763
|
}).call(this)}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
|
67363
|
-
},{"../../is-buffer/index.js":178,"./error/index":203,"./helpers/get":
|
67764
|
+
},{"../../is-buffer/index.js":178,"./error/index":203,"./helpers/get":229,"./helpers/immediate":232,"./helpers/schematype/handleImmutable":251,"./helpers/symbols":253,"./options/SchemaTypeOptions":269,"./schema/operators/exists":289,"./schema/operators/type":293,"./utils":308,"util":333}],297:[function(require,module,exports){
|
67364
67765
|
|
67365
67766
|
/*!
|
67366
67767
|
* Module dependencies.
|
@@ -67542,7 +67943,7 @@ StateMachine.prototype.map = function map() {
|
|
67542
67943
|
return this.map.apply(this, arguments);
|
67543
67944
|
};
|
67544
67945
|
|
67545
|
-
},{"./utils":
|
67946
|
+
},{"./utils":308}],298:[function(require,module,exports){
|
67546
67947
|
/*!
|
67547
67948
|
* Module dependencies.
|
67548
67949
|
*/
|
@@ -67550,7 +67951,6 @@ StateMachine.prototype.map = function map() {
|
|
67550
67951
|
'use strict';
|
67551
67952
|
|
67552
67953
|
const CoreMongooseArray = require('./core_array');
|
67553
|
-
const Document = require('../document');
|
67554
67954
|
|
67555
67955
|
const arrayAtomicsSymbol = require('../helpers/symbols').arrayAtomicsSymbol;
|
67556
67956
|
const arrayParentSymbol = require('../helpers/symbols').arrayParentSymbol;
|
@@ -67575,28 +67975,44 @@ const _basePush = Array.prototype.push;
|
|
67575
67975
|
*/
|
67576
67976
|
|
67577
67977
|
function MongooseArray(values, path, doc, schematype) {
|
67578
|
-
|
67579
|
-
arr[arrayAtomicsSymbol] = {};
|
67978
|
+
let arr;
|
67580
67979
|
|
67581
67980
|
if (Array.isArray(values)) {
|
67582
67981
|
const len = values.length;
|
67583
|
-
|
67584
|
-
|
67982
|
+
|
67983
|
+
// Perf optimizations for small arrays: much faster to use `...` than `for` + `push`,
|
67984
|
+
// but large arrays may cause stack overflows. And for arrays of length 0/1, just
|
67985
|
+
// modifying the array is faster. Seems small, but adds up when you have a document
|
67986
|
+
// with thousands of nested arrays.
|
67987
|
+
if (len === 0) {
|
67988
|
+
arr = new CoreMongooseArray();
|
67989
|
+
} else if (len === 1) {
|
67990
|
+
arr = new CoreMongooseArray(1);
|
67991
|
+
arr[0] = values[0];
|
67992
|
+
} else if (len < 10000) {
|
67993
|
+
arr = new CoreMongooseArray();
|
67994
|
+
_basePush.apply(arr, values);
|
67995
|
+
} else {
|
67996
|
+
arr = new CoreMongooseArray();
|
67997
|
+
for (let i = 0; i < len; ++i) {
|
67998
|
+
_basePush.call(arr, values[i]);
|
67999
|
+
}
|
67585
68000
|
}
|
67586
68001
|
|
67587
68002
|
if (values[arrayAtomicsSymbol] != null) {
|
67588
68003
|
arr[arrayAtomicsSymbol] = values[arrayAtomicsSymbol];
|
67589
68004
|
}
|
68005
|
+
} else {
|
68006
|
+
arr = new CoreMongooseArray();
|
67590
68007
|
}
|
67591
68008
|
|
67592
68009
|
arr[arrayPathSymbol] = path;
|
67593
|
-
arr[arraySchemaSymbol] = void 0;
|
67594
68010
|
|
67595
68011
|
// Because doc comes from the context of another function, doc === global
|
67596
68012
|
// can happen if there was a null somewhere up the chain (see #3020)
|
67597
68013
|
// RB Jun 17, 2015 updated to check for presence of expected paths instead
|
67598
68014
|
// to make more proof against unusual node environments
|
67599
|
-
if (doc && doc
|
68015
|
+
if (doc != null && doc.$__ != null) {
|
67600
68016
|
arr[arrayParentSymbol] = doc;
|
67601
68017
|
arr[arraySchemaSymbol] = schematype || doc.schema.path(path);
|
67602
68018
|
}
|
@@ -67610,7 +68026,7 @@ function MongooseArray(values, path, doc, schematype) {
|
|
67610
68026
|
|
67611
68027
|
module.exports = exports = MongooseArray;
|
67612
68028
|
|
67613
|
-
},{"../
|
68029
|
+
},{"../helpers/symbols":253,"./core_array":300}],299:[function(require,module,exports){
|
67614
68030
|
/*!
|
67615
68031
|
* Module dependencies.
|
67616
68032
|
*/
|
@@ -67888,7 +68304,7 @@ MongooseBuffer.Binary = Binary;
|
|
67888
68304
|
|
67889
68305
|
module.exports = MongooseBuffer;
|
67890
68306
|
|
67891
|
-
},{"../driver":195,"../utils":
|
68307
|
+
},{"../driver":195,"../utils":308,"safe-buffer":328}],300:[function(require,module,exports){
|
67892
68308
|
(function (Buffer){(function (){
|
67893
68309
|
'use strict';
|
67894
68310
|
|
@@ -67986,7 +68402,7 @@ class CoreMongooseArray extends Array {
|
|
67986
68402
|
*/
|
67987
68403
|
|
67988
68404
|
$atomics() {
|
67989
|
-
return this[arrayAtomicsSymbol];
|
68405
|
+
return this[arrayAtomicsSymbol] || {};
|
67990
68406
|
}
|
67991
68407
|
|
67992
68408
|
/*!
|
@@ -68140,8 +68556,8 @@ class CoreMongooseArray extends Array {
|
|
68140
68556
|
|
68141
68557
|
// gh-2399
|
68142
68558
|
// we should cast model only when it's not a discriminator
|
68143
|
-
const isDisc = value
|
68144
|
-
value.
|
68559
|
+
const isDisc = value.$__schema && value.$__schema.discriminatorMapping &&
|
68560
|
+
value.$__schema.discriminatorMapping.key !== undefined;
|
68145
68561
|
if (!isDisc) {
|
68146
68562
|
value = new Model(value);
|
68147
68563
|
}
|
@@ -68220,6 +68636,8 @@ class CoreMongooseArray extends Array {
|
|
68220
68636
|
return this;
|
68221
68637
|
}
|
68222
68638
|
|
68639
|
+
this[arrayAtomicsSymbol] || (this[arrayAtomicsSymbol] = {});
|
68640
|
+
|
68223
68641
|
const atomics = this[arrayAtomicsSymbol];
|
68224
68642
|
|
68225
68643
|
// reset pop/shift after save
|
@@ -68860,7 +69278,7 @@ function _checkManualPopulation(arr, docs) {
|
|
68860
69278
|
module.exports = CoreMongooseArray;
|
68861
69279
|
|
68862
69280
|
}).call(this)}).call(this,{"isBuffer":require("../../../is-buffer/index.js")})
|
68863
|
-
},{"../../../is-buffer/index.js":178,"../document":193,"../error/mongooseError":206,"../helpers/document/cleanModifiedSubpaths":
|
69281
|
+
},{"../../../is-buffer/index.js":178,"../document":193,"../error/mongooseError":206,"../helpers/document/cleanModifiedSubpaths":225,"../helpers/get":229,"../helpers/symbols":253,"../options":258,"../utils":308,"./embedded":303,"./objectid":306,"util":333}],301:[function(require,module,exports){
|
68864
69282
|
/**
|
68865
69283
|
* ObjectId type constructor
|
68866
69284
|
*
|
@@ -68875,7 +69293,7 @@ module.exports = CoreMongooseArray;
|
|
68875
69293
|
|
68876
69294
|
module.exports = require('../driver').get().Decimal128;
|
68877
69295
|
|
68878
|
-
},{"../driver":195}],
|
69296
|
+
},{"../driver":195}],302:[function(require,module,exports){
|
68879
69297
|
(function (Buffer){(function (){
|
68880
69298
|
'use strict';
|
68881
69299
|
|
@@ -68975,7 +69393,7 @@ class CoreDocumentArray extends CoreMongooseArray {
|
|
68975
69393
|
Constructor.discriminators[value[Constructor.schema.options.discriminatorKey]]) {
|
68976
69394
|
Constructor = Constructor.discriminators[value[Constructor.schema.options.discriminatorKey]];
|
68977
69395
|
} else {
|
68978
|
-
const constructorByValue = getDiscriminatorByValue(Constructor, value[Constructor.schema.options.discriminatorKey]);
|
69396
|
+
const constructorByValue = getDiscriminatorByValue(Constructor.discriminators, value[Constructor.schema.options.discriminatorKey]);
|
68979
69397
|
if (constructorByValue) {
|
68980
69398
|
Constructor = constructorByValue;
|
68981
69399
|
}
|
@@ -69168,7 +69586,7 @@ class CoreDocumentArray extends CoreMongooseArray {
|
|
69168
69586
|
Constructor.discriminators[obj[Constructor.schema.options.discriminatorKey]]) {
|
69169
69587
|
Constructor = Constructor.discriminators[obj[Constructor.schema.options.discriminatorKey]];
|
69170
69588
|
} else {
|
69171
|
-
const constructorByValue = getDiscriminatorByValue(Constructor, obj[Constructor.schema.options.discriminatorKey]);
|
69589
|
+
const constructorByValue = getDiscriminatorByValue(Constructor.discriminators, obj[Constructor.schema.options.discriminatorKey]);
|
69172
69590
|
if (constructorByValue) {
|
69173
69591
|
Constructor = constructorByValue;
|
69174
69592
|
}
|
@@ -69327,7 +69745,7 @@ function MongooseDocumentArray(values, path, doc) {
|
|
69327
69745
|
module.exports = MongooseDocumentArray;
|
69328
69746
|
|
69329
69747
|
}).call(this)}).call(this,{"isBuffer":require("../../../is-buffer/index.js")})
|
69330
|
-
},{"../../../is-buffer/index.js":178,"../cast/objectid":191,"../document":193,"../helpers/discriminator/getDiscriminatorByValue":
|
69748
|
+
},{"../../../is-buffer/index.js":178,"../cast/objectid":191,"../document":193,"../helpers/discriminator/getDiscriminatorByValue":223,"../helpers/symbols":253,"../options":258,"../utils":308,"./core_array":300,"./objectid":306,"util":333}],303:[function(require,module,exports){
|
69331
69749
|
/* eslint no-func-assign: 1 */
|
69332
69750
|
|
69333
69751
|
/*!
|
@@ -69727,7 +70145,7 @@ EmbeddedDocument.prototype.ownerDocument = function() {
|
|
69727
70145
|
|
69728
70146
|
EmbeddedDocument.prototype.$__fullPath = function(path) {
|
69729
70147
|
if (!this.$__.fullPath) {
|
69730
|
-
let parent = this;
|
70148
|
+
let parent = this;
|
69731
70149
|
if (!parent[documentArrayParent]) {
|
69732
70150
|
return path;
|
69733
70151
|
}
|
@@ -69789,7 +70207,7 @@ EmbeddedDocument.prototype.parentArray = function() {
|
|
69789
70207
|
|
69790
70208
|
module.exports = EmbeddedDocument;
|
69791
70209
|
|
69792
|
-
},{"../document_provider":194,"../error/validation":214,"../helpers/get":
|
70210
|
+
},{"../document_provider":194,"../error/validation":214,"../helpers/get":229,"../helpers/immediate":232,"../helpers/promiseOrCallback":242,"../helpers/symbols":253,"../options":258,"events":176,"util":333}],304:[function(require,module,exports){
|
69793
70211
|
|
69794
70212
|
/*!
|
69795
70213
|
* Module exports.
|
@@ -69811,13 +70229,15 @@ exports.Map = require('./map');
|
|
69811
70229
|
|
69812
70230
|
exports.Subdocument = require('./subdocument');
|
69813
70231
|
|
69814
|
-
},{"./array":
|
70232
|
+
},{"./array":298,"./buffer":299,"./decimal128":301,"./documentarray":302,"./embedded":303,"./map":305,"./objectid":306,"./subdocument":307}],305:[function(require,module,exports){
|
69815
70233
|
'use strict';
|
69816
70234
|
|
69817
70235
|
const Mixed = require('../schema/mixed');
|
69818
70236
|
const ObjectId = require('./objectid');
|
70237
|
+
const clone = require('../helpers/clone');
|
69819
70238
|
const deepEqual = require('../utils').deepEqual;
|
69820
70239
|
const get = require('../helpers/get');
|
70240
|
+
const getConstructorName = require('../helpers/getConstructorName');
|
69821
70241
|
const handleSpreadDoc = require('../helpers/document/handleSpreadDoc');
|
69822
70242
|
const util = require('util');
|
69823
70243
|
const specialProperties = require('../helpers/specialProperties');
|
@@ -69830,7 +70250,7 @@ const populateModelSymbol = require('../helpers/symbols').populateModelSymbol;
|
|
69830
70250
|
|
69831
70251
|
class MongooseMap extends Map {
|
69832
70252
|
constructor(v, path, doc, schemaType) {
|
69833
|
-
if (v
|
70253
|
+
if (getConstructorName(v) === 'Object') {
|
69834
70254
|
v = Object.keys(v).reduce((arr, key) => arr.concat([[key, v[key]]]), []);
|
69835
70255
|
}
|
69836
70256
|
super(v);
|
@@ -69947,7 +70367,7 @@ class MongooseMap extends Map {
|
|
69947
70367
|
const ret = {};
|
69948
70368
|
const keys = this.keys();
|
69949
70369
|
for (const key of keys) {
|
69950
|
-
ret[key] = this.get(key);
|
70370
|
+
ret[key] = clone(this.get(key));
|
69951
70371
|
}
|
69952
70372
|
return ret;
|
69953
70373
|
}
|
@@ -70051,7 +70471,7 @@ function checkValidKey(key) {
|
|
70051
70471
|
|
70052
70472
|
module.exports = MongooseMap;
|
70053
70473
|
|
70054
|
-
},{"../helpers/document/handleSpreadDoc":
|
70474
|
+
},{"../helpers/clone":218,"../helpers/document/handleSpreadDoc":228,"../helpers/get":229,"../helpers/getConstructorName":230,"../helpers/specialProperties":252,"../helpers/symbols":253,"../schema/mixed":285,"../utils":308,"./objectid":306,"util":333}],306:[function(require,module,exports){
|
70055
70475
|
/**
|
70056
70476
|
* ObjectId type constructor
|
70057
70477
|
*
|
@@ -70083,7 +70503,7 @@ ObjectId.prototype[objectIdSymbol] = true;
|
|
70083
70503
|
|
70084
70504
|
module.exports = ObjectId;
|
70085
70505
|
|
70086
|
-
},{"../driver":195,"../helpers/symbols":
|
70506
|
+
},{"../driver":195,"../helpers/symbols":253}],307:[function(require,module,exports){
|
70087
70507
|
'use strict';
|
70088
70508
|
|
70089
70509
|
const Document = require('../document');
|
@@ -70111,9 +70531,9 @@ function Subdocument(value, fields, parent, skipId, options) {
|
|
70111
70531
|
let initedPaths = null;
|
70112
70532
|
if (hasPriorDoc) {
|
70113
70533
|
this._doc = Object.assign({}, options.priorDoc._doc);
|
70114
|
-
delete this._doc[this.
|
70534
|
+
delete this._doc[this.$__schema.options.discriminatorKey];
|
70115
70535
|
initedPaths = Object.keys(options.priorDoc._doc || {}).
|
70116
|
-
filter(key => key !== this.
|
70536
|
+
filter(key => key !== this.$__schema.options.discriminatorKey);
|
70117
70537
|
}
|
70118
70538
|
if (parent != null) {
|
70119
70539
|
// If setting a nested path, should copy isNew from parent re: gh-7048
|
@@ -70129,7 +70549,7 @@ function Subdocument(value, fields, parent, skipId, options) {
|
|
70129
70549
|
if (!this.$__.activePaths.states.modify[key] &&
|
70130
70550
|
!this.$__.activePaths.states.default[key] &&
|
70131
70551
|
!this.$__.$setCalled.has(key)) {
|
70132
|
-
const schematype = this.
|
70552
|
+
const schematype = this.$__schema.path(key);
|
70133
70553
|
const def = schematype == null ? void 0 : schematype.getDefault(this);
|
70134
70554
|
if (def === void 0) {
|
70135
70555
|
delete this._doc[key];
|
@@ -70386,7 +70806,7 @@ function registerRemoveListener(sub) {
|
|
70386
70806
|
owner.on('remove', emitRemove);
|
70387
70807
|
}
|
70388
70808
|
|
70389
|
-
},{"../document":193,"../helpers/immediate":
|
70809
|
+
},{"../document":193,"../helpers/immediate":232,"../helpers/promiseOrCallback":242,"../helpers/symbols":253,"../options":258}],308:[function(require,module,exports){
|
70390
70810
|
(function (process){(function (){
|
70391
70811
|
'use strict';
|
70392
70812
|
|
@@ -70402,11 +70822,13 @@ const Decimal = require('./types/decimal128');
|
|
70402
70822
|
const ObjectId = require('./types/objectid');
|
70403
70823
|
const PopulateOptions = require('./options/PopulateOptions');
|
70404
70824
|
const clone = require('./helpers/clone');
|
70825
|
+
const immediate = require('./helpers/immediate');
|
70405
70826
|
const isObject = require('./helpers/isObject');
|
70406
70827
|
const isBsonType = require('./helpers/isBsonType');
|
70407
70828
|
const getFunctionName = require('./helpers/getFunctionName');
|
70408
70829
|
const isMongooseObject = require('./helpers/isMongooseObject');
|
70409
70830
|
const promiseOrCallback = require('./helpers/promiseOrCallback');
|
70831
|
+
const schemaMerge = require('./helpers/schema/merge');
|
70410
70832
|
const specialProperties = require('./helpers/specialProperties');
|
70411
70833
|
|
70412
70834
|
let Document;
|
@@ -70672,7 +71094,7 @@ exports.merge = function merge(to, from, options, path) {
|
|
70672
71094
|
continue;
|
70673
71095
|
} else if (from[key].instanceOfSchema) {
|
70674
71096
|
if (to[key].instanceOfSchema) {
|
70675
|
-
to[key]
|
71097
|
+
schemaMerge(to[key], from[key].clone(), options.isDiscriminatorSchemaMerge);
|
70676
71098
|
} else {
|
70677
71099
|
to[key] = from[key].clone();
|
70678
71100
|
}
|
@@ -70829,7 +71251,7 @@ exports.tick = function tick(callback) {
|
|
70829
71251
|
} catch (err) {
|
70830
71252
|
// only nextTick on err to get out of
|
70831
71253
|
// the event loop and avoid state corruption.
|
70832
|
-
|
71254
|
+
immediate(function() {
|
70833
71255
|
throw err;
|
70834
71256
|
});
|
70835
71257
|
}
|
@@ -71145,23 +71567,23 @@ exports.isArrayIndex = function(val) {
|
|
71145
71567
|
*/
|
71146
71568
|
|
71147
71569
|
exports.array.unique = function(arr) {
|
71148
|
-
const primitives =
|
71149
|
-
const ids =
|
71570
|
+
const primitives = new Set();
|
71571
|
+
const ids = new Set();
|
71150
71572
|
const ret = [];
|
71151
71573
|
|
71152
71574
|
for (const item of arr) {
|
71153
71575
|
if (typeof item === 'number' || typeof item === 'string' || item == null) {
|
71154
|
-
if (primitives
|
71576
|
+
if (primitives.has(item)) {
|
71155
71577
|
continue;
|
71156
71578
|
}
|
71157
71579
|
ret.push(item);
|
71158
|
-
primitives
|
71580
|
+
primitives.add(item);
|
71159
71581
|
} else if (item instanceof ObjectId) {
|
71160
|
-
if (ids
|
71582
|
+
if (ids.has(item.toString())) {
|
71161
71583
|
continue;
|
71162
71584
|
}
|
71163
71585
|
ret.push(item);
|
71164
|
-
ids
|
71586
|
+
ids.add(item.toString());
|
71165
71587
|
} else {
|
71166
71588
|
ret.push(item);
|
71167
71589
|
}
|
@@ -71311,8 +71733,23 @@ exports.getOption = function(name) {
|
|
71311
71733
|
|
71312
71734
|
exports.noop = function() {};
|
71313
71735
|
|
71736
|
+
exports.errorToPOJO = function errorToPOJO(error) {
|
71737
|
+
const isError = error instanceof Error;
|
71738
|
+
if (!isError) {
|
71739
|
+
throw new Error('`error` must be `instanceof Error`.');
|
71740
|
+
}
|
71741
|
+
|
71742
|
+
const ret = {};
|
71743
|
+
for (const properyName of Object.getOwnPropertyNames(error)) {
|
71744
|
+
ret[properyName] = error[properyName];
|
71745
|
+
}
|
71746
|
+
return ret;
|
71747
|
+
};
|
71748
|
+
|
71749
|
+
exports.nodeMajorVersion = parseInt(process.versions.node.split('.')[0], 10);
|
71750
|
+
|
71314
71751
|
}).call(this)}).call(this,require('_process'))
|
71315
|
-
},{"./document":193,"./helpers/clone":218,"./helpers/getFunctionName":
|
71752
|
+
},{"./document":193,"./helpers/clone":218,"./helpers/getFunctionName":231,"./helpers/immediate":232,"./helpers/isBsonType":233,"./helpers/isMongooseObject":234,"./helpers/isObject":235,"./helpers/promiseOrCallback":242,"./helpers/schema/merge":250,"./helpers/specialProperties":252,"./options/PopulateOptions":259,"./types/decimal128":301,"./types/objectid":306,"_process":326,"mpath":311,"ms":310,"safe-buffer":328,"sliced":329}],309:[function(require,module,exports){
|
71316
71753
|
'use strict';
|
71317
71754
|
|
71318
71755
|
const utils = require('./utils');
|
@@ -71490,7 +71927,7 @@ VirtualType.prototype.applySetters = function(value, doc) {
|
|
71490
71927
|
|
71491
71928
|
module.exports = VirtualType;
|
71492
71929
|
|
71493
|
-
},{"./utils":
|
71930
|
+
},{"./utils":308}],310:[function(require,module,exports){
|
71494
71931
|
/**
|
71495
71932
|
* Helpers.
|
71496
71933
|
*/
|
@@ -71654,12 +72091,12 @@ function plural(ms, msAbs, n, name) {
|
|
71654
72091
|
return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
|
71655
72092
|
}
|
71656
72093
|
|
71657
|
-
},{}],
|
72094
|
+
},{}],311:[function(require,module,exports){
|
71658
72095
|
'use strict';
|
71659
72096
|
|
71660
72097
|
module.exports = exports = require('./lib');
|
71661
72098
|
|
71662
|
-
},{"./lib":
|
72099
|
+
},{"./lib":312}],312:[function(require,module,exports){
|
71663
72100
|
/* eslint strict:off */
|
71664
72101
|
/* eslint no-var: off */
|
71665
72102
|
/* eslint no-redeclare: off */
|
@@ -71726,6 +72163,9 @@ exports.get = function(path, o, special, map) {
|
|
71726
72163
|
|
71727
72164
|
for (var i = 0; i < parts.length; ++i) {
|
71728
72165
|
part = parts[i];
|
72166
|
+
if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') {
|
72167
|
+
throw new TypeError('Each segment of path to `get()` must be a string or number, got ' + typeof parts[i]);
|
72168
|
+
}
|
71729
72169
|
|
71730
72170
|
if (Array.isArray(obj) && !/^\d+$/.test(part)) {
|
71731
72171
|
// reading a property from the array items
|
@@ -71774,6 +72214,9 @@ exports.has = function(path, o) {
|
|
71774
72214
|
var len = parts.length;
|
71775
72215
|
var cur = o;
|
71776
72216
|
for (var i = 0; i < len; ++i) {
|
72217
|
+
if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') {
|
72218
|
+
throw new TypeError('Each segment of path to `has()` must be a string or number, got ' + typeof parts[i]);
|
72219
|
+
}
|
71777
72220
|
if (cur == null || typeof cur !== 'object' || !(parts[i] in cur)) {
|
71778
72221
|
return false;
|
71779
72222
|
}
|
@@ -71805,6 +72248,9 @@ exports.unset = function(path, o) {
|
|
71805
72248
|
if (cur == null || typeof cur !== 'object' || !(parts[i] in cur)) {
|
71806
72249
|
return false;
|
71807
72250
|
}
|
72251
|
+
if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') {
|
72252
|
+
throw new TypeError('Each segment of path to `unset()` must be a string or number, got ' + typeof parts[i]);
|
72253
|
+
}
|
71808
72254
|
// Disallow any updates to __proto__ or special properties.
|
71809
72255
|
if (ignoreProperties.indexOf(parts[i]) !== -1) {
|
71810
72256
|
return false;
|
@@ -71855,6 +72301,9 @@ exports.set = function(path, val, o, special, map, _copying) {
|
|
71855
72301
|
if (null == o) return;
|
71856
72302
|
|
71857
72303
|
for (var i = 0; i < parts.length; ++i) {
|
72304
|
+
if (typeof parts[i] !== 'string' && typeof parts[i] !== 'number') {
|
72305
|
+
throw new TypeError('Each segment of path to `set()` must be a string or number, got ' + typeof parts[i]);
|
72306
|
+
}
|
71858
72307
|
// Silently ignore any updates to `__proto__`, these are potentially
|
71859
72308
|
// dangerous if using mpath with unsanitized data.
|
71860
72309
|
if (ignoreProperties.indexOf(parts[i]) !== -1) {
|
@@ -71974,7 +72423,7 @@ function _setArray(obj, val, part, lookup, special, map) {
|
|
71974
72423
|
function K(v) {
|
71975
72424
|
return v;
|
71976
72425
|
}
|
71977
|
-
},{"./stringToParts":
|
72426
|
+
},{"./stringToParts":313}],313:[function(require,module,exports){
|
71978
72427
|
'use strict';
|
71979
72428
|
|
71980
72429
|
module.exports = function stringToParts(str) {
|
@@ -72023,7 +72472,7 @@ module.exports = function stringToParts(str) {
|
|
72023
72472
|
|
72024
72473
|
return result;
|
72025
72474
|
};
|
72026
|
-
},{}],
|
72475
|
+
},{}],314:[function(require,module,exports){
|
72027
72476
|
'use strict';
|
72028
72477
|
|
72029
72478
|
/**
|
@@ -72071,7 +72520,7 @@ function notImplemented(method) {
|
|
72071
72520
|
};
|
72072
72521
|
}
|
72073
72522
|
|
72074
|
-
},{}],
|
72523
|
+
},{}],315:[function(require,module,exports){
|
72075
72524
|
'use strict';
|
72076
72525
|
|
72077
72526
|
var env = require('../env');
|
@@ -72086,7 +72535,7 @@ module.exports =
|
|
72086
72535
|
require('./collection');
|
72087
72536
|
|
72088
72537
|
|
72089
|
-
},{"../env":
|
72538
|
+
},{"../env":317,"./collection":314,"./node":316}],316:[function(require,module,exports){
|
72090
72539
|
'use strict';
|
72091
72540
|
|
72092
72541
|
/**
|
@@ -72239,7 +72688,7 @@ NodeCollection.prototype.findCursor = function(match, findOptions) {
|
|
72239
72688
|
|
72240
72689
|
module.exports = exports = NodeCollection;
|
72241
72690
|
|
72242
|
-
},{"../utils":
|
72691
|
+
},{"../utils":320,"./collection":314}],317:[function(require,module,exports){
|
72243
72692
|
(function (process,global,Buffer){(function (){
|
72244
72693
|
'use strict';
|
72245
72694
|
|
@@ -72265,7 +72714,7 @@ exports.type = exports.isNode ? 'node'
|
|
72265
72714
|
: 'unknown';
|
72266
72715
|
|
72267
72716
|
}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
|
72268
|
-
},{"_process":
|
72717
|
+
},{"_process":326,"buffer":128}],318:[function(require,module,exports){
|
72269
72718
|
'use strict';
|
72270
72719
|
|
72271
72720
|
/**
|
@@ -75519,7 +75968,7 @@ module.exports = exports = Query;
|
|
75519
75968
|
// TODO
|
75520
75969
|
// test utils
|
75521
75970
|
|
75522
|
-
},{"./collection":
|
75971
|
+
},{"./collection":315,"./collection/collection":314,"./env":317,"./permissions":319,"./utils":320,"assert":102,"bluebird":107,"debug":321,"sliced":329,"util":333}],319:[function(require,module,exports){
|
75523
75972
|
'use strict';
|
75524
75973
|
|
75525
75974
|
var denied = exports;
|
@@ -75609,7 +76058,7 @@ denied.count.maxScan =
|
|
75609
76058
|
denied.count.snapshot =
|
75610
76059
|
denied.count.tailable = true;
|
75611
76060
|
|
75612
|
-
},{}],
|
76061
|
+
},{}],320:[function(require,module,exports){
|
75613
76062
|
(function (process,setImmediate){(function (){
|
75614
76063
|
'use strict';
|
75615
76064
|
|
@@ -75783,6 +76232,9 @@ exports.mergeClone = function mergeClone(to, from) {
|
|
75783
76232
|
|
75784
76233
|
while (i--) {
|
75785
76234
|
key = keys[i];
|
76235
|
+
if (specialProperties.indexOf(key) !== -1) {
|
76236
|
+
continue;
|
76237
|
+
}
|
75786
76238
|
if ('undefined' === typeof to[key]) {
|
75787
76239
|
to[key] = clone(from[key]);
|
75788
76240
|
} else {
|
@@ -75973,7 +76425,7 @@ exports.isArgumentsObject = function(v) {
|
|
75973
76425
|
};
|
75974
76426
|
|
75975
76427
|
}).call(this)}).call(this,require('_process'),require("timers").setImmediate)
|
75976
|
-
},{"_process":
|
76428
|
+
},{"_process":326,"regexp-clone":327,"safe-buffer":323,"timers":330}],321:[function(require,module,exports){
|
75977
76429
|
(function (process){(function (){
|
75978
76430
|
/**
|
75979
76431
|
* This is the web browser implementation of `debug()`.
|
@@ -76172,7 +76624,7 @@ function localstorage() {
|
|
76172
76624
|
}
|
76173
76625
|
|
76174
76626
|
}).call(this)}).call(this,require('_process'))
|
76175
|
-
},{"./debug":
|
76627
|
+
},{"./debug":322,"_process":326}],322:[function(require,module,exports){
|
76176
76628
|
|
76177
76629
|
/**
|
76178
76630
|
* This is the common logic for both the Node.js and web browser
|
@@ -76399,7 +76851,7 @@ function coerce(val) {
|
|
76399
76851
|
return val;
|
76400
76852
|
}
|
76401
76853
|
|
76402
|
-
},{"ms":
|
76854
|
+
},{"ms":324}],323:[function(require,module,exports){
|
76403
76855
|
/* eslint-disable node/no-deprecated-api */
|
76404
76856
|
var buffer = require('buffer')
|
76405
76857
|
var Buffer = buffer.Buffer
|
@@ -76463,7 +76915,7 @@ SafeBuffer.allocUnsafeSlow = function (size) {
|
|
76463
76915
|
return buffer.SlowBuffer(size)
|
76464
76916
|
}
|
76465
76917
|
|
76466
|
-
},{"buffer":128}],
|
76918
|
+
},{"buffer":128}],324:[function(require,module,exports){
|
76467
76919
|
/**
|
76468
76920
|
* Helpers.
|
76469
76921
|
*/
|
@@ -76617,7 +77069,7 @@ function plural(ms, n, name) {
|
|
76617
77069
|
return Math.ceil(ms / n) + ' ' + name + 's';
|
76618
77070
|
}
|
76619
77071
|
|
76620
|
-
},{}],
|
77072
|
+
},{}],325:[function(require,module,exports){
|
76621
77073
|
/*
|
76622
77074
|
object-assign
|
76623
77075
|
(c) Sindre Sorhus
|
@@ -76709,7 +77161,7 @@ module.exports = shouldUseNative() ? Object.assign : function (target, source) {
|
|
76709
77161
|
return to;
|
76710
77162
|
};
|
76711
77163
|
|
76712
|
-
},{}],
|
77164
|
+
},{}],326:[function(require,module,exports){
|
76713
77165
|
// shim for using process in browser
|
76714
77166
|
var process = module.exports = {};
|
76715
77167
|
|
@@ -76895,7 +77347,7 @@ process.chdir = function (dir) {
|
|
76895
77347
|
};
|
76896
77348
|
process.umask = function() { return 0; };
|
76897
77349
|
|
76898
|
-
},{}],
|
77350
|
+
},{}],327:[function(require,module,exports){
|
76899
77351
|
|
76900
77352
|
const toString = Object.prototype.toString;
|
76901
77353
|
|
@@ -76924,7 +77376,7 @@ module.exports = exports = function (regexp) {
|
|
76924
77376
|
}
|
76925
77377
|
|
76926
77378
|
|
76927
|
-
},{}],
|
77379
|
+
},{}],328:[function(require,module,exports){
|
76928
77380
|
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
76929
77381
|
/* eslint-disable node/no-deprecated-api */
|
76930
77382
|
var buffer = require('buffer')
|
@@ -76991,7 +77443,7 @@ SafeBuffer.allocUnsafeSlow = function (size) {
|
|
76991
77443
|
return buffer.SlowBuffer(size)
|
76992
77444
|
}
|
76993
77445
|
|
76994
|
-
},{"buffer":128}],
|
77446
|
+
},{"buffer":128}],329:[function(require,module,exports){
|
76995
77447
|
|
76996
77448
|
/**
|
76997
77449
|
* An Array.prototype.slice.call(arguments) alternative
|
@@ -77026,7 +77478,7 @@ module.exports = function (args, slice, sliceEnd) {
|
|
77026
77478
|
}
|
77027
77479
|
|
77028
77480
|
|
77029
|
-
},{}],
|
77481
|
+
},{}],330:[function(require,module,exports){
|
77030
77482
|
(function (setImmediate,clearImmediate){(function (){
|
77031
77483
|
var nextTick = require('process/browser.js').nextTick;
|
77032
77484
|
var apply = Function.prototype.apply;
|
@@ -77105,10 +77557,10 @@ exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate :
|
|
77105
77557
|
delete immediateIds[id];
|
77106
77558
|
};
|
77107
77559
|
}).call(this)}).call(this,require("timers").setImmediate,require("timers").clearImmediate)
|
77108
|
-
},{"process/browser.js":
|
77560
|
+
},{"process/browser.js":326,"timers":330}],331:[function(require,module,exports){
|
77109
77561
|
arguments[4][103][0].apply(exports,arguments)
|
77110
|
-
},{"dup":103}],
|
77562
|
+
},{"dup":103}],332:[function(require,module,exports){
|
77111
77563
|
arguments[4][104][0].apply(exports,arguments)
|
77112
|
-
},{"dup":104}],
|
77564
|
+
},{"dup":104}],333:[function(require,module,exports){
|
77113
77565
|
arguments[4][105][0].apply(exports,arguments)
|
77114
|
-
},{"./support/isBuffer":
|
77566
|
+
},{"./support/isBuffer":332,"_process":326,"dup":105,"inherits":331}]},{},[87]);
|