cqm-models 3.1.1 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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]);
|