@depup/mongoose 9.1.3-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +22 -0
- package/README.md +397 -0
- package/SECURITY.md +1 -0
- package/eslint.config.mjs +198 -0
- package/index.js +64 -0
- package/lib/aggregate.js +1189 -0
- package/lib/cast/bigint.js +46 -0
- package/lib/cast/boolean.js +32 -0
- package/lib/cast/date.js +41 -0
- package/lib/cast/decimal128.js +39 -0
- package/lib/cast/double.js +50 -0
- package/lib/cast/int32.js +36 -0
- package/lib/cast/number.js +42 -0
- package/lib/cast/objectid.js +29 -0
- package/lib/cast/string.js +37 -0
- package/lib/cast/uuid.js +35 -0
- package/lib/cast.js +436 -0
- package/lib/collection.js +321 -0
- package/lib/connection.js +1855 -0
- package/lib/connectionState.js +26 -0
- package/lib/constants.js +73 -0
- package/lib/cursor/aggregationCursor.js +466 -0
- package/lib/cursor/changeStream.js +198 -0
- package/lib/cursor/queryCursor.js +622 -0
- package/lib/document.js +5521 -0
- package/lib/driver.js +15 -0
- package/lib/drivers/SPEC.md +4 -0
- package/lib/drivers/node-mongodb-native/bulkWriteResult.js +5 -0
- package/lib/drivers/node-mongodb-native/collection.js +393 -0
- package/lib/drivers/node-mongodb-native/connection.js +506 -0
- package/lib/drivers/node-mongodb-native/index.js +10 -0
- package/lib/error/browserMissingSchema.js +29 -0
- package/lib/error/bulkSaveIncompleteError.js +44 -0
- package/lib/error/bulkWriteError.js +41 -0
- package/lib/error/cast.js +158 -0
- package/lib/error/createCollectionsError.js +26 -0
- package/lib/error/divergentArray.js +40 -0
- package/lib/error/eachAsyncMultiError.js +41 -0
- package/lib/error/index.js +237 -0
- package/lib/error/invalidSchemaOption.js +32 -0
- package/lib/error/messages.js +47 -0
- package/lib/error/missingSchema.js +33 -0
- package/lib/error/mongooseError.js +13 -0
- package/lib/error/notFound.js +47 -0
- package/lib/error/objectExpected.js +31 -0
- package/lib/error/objectParameter.js +31 -0
- package/lib/error/overwriteModel.js +31 -0
- package/lib/error/parallelSave.js +33 -0
- package/lib/error/parallelValidate.js +33 -0
- package/lib/error/serverSelection.js +62 -0
- package/lib/error/setOptionError.js +103 -0
- package/lib/error/strict.js +35 -0
- package/lib/error/strictPopulate.js +31 -0
- package/lib/error/syncIndexes.js +30 -0
- package/lib/error/validation.js +97 -0
- package/lib/error/validator.js +100 -0
- package/lib/error/version.js +38 -0
- package/lib/helpers/aggregate/prepareDiscriminatorPipeline.js +39 -0
- package/lib/helpers/aggregate/stringifyFunctionOperators.js +50 -0
- package/lib/helpers/arrayDepth.js +33 -0
- package/lib/helpers/clone.js +204 -0
- package/lib/helpers/common.js +127 -0
- package/lib/helpers/createJSONSchemaTypeDefinition.js +24 -0
- package/lib/helpers/cursor/eachAsync.js +225 -0
- package/lib/helpers/discriminator/applyEmbeddedDiscriminators.js +36 -0
- package/lib/helpers/discriminator/areDiscriminatorValuesEqual.js +16 -0
- package/lib/helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection.js +12 -0
- package/lib/helpers/discriminator/getConstructor.js +29 -0
- package/lib/helpers/discriminator/getDiscriminatorByValue.js +28 -0
- package/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js +27 -0
- package/lib/helpers/discriminator/mergeDiscriminatorSchema.js +91 -0
- package/lib/helpers/document/applyDefaults.js +132 -0
- package/lib/helpers/document/applyTimestamps.js +106 -0
- package/lib/helpers/document/applyVirtuals.js +147 -0
- package/lib/helpers/document/cleanModifiedSubpaths.js +45 -0
- package/lib/helpers/document/compile.js +238 -0
- package/lib/helpers/document/getDeepestSubdocumentForPath.js +38 -0
- package/lib/helpers/document/getEmbeddedDiscriminatorPath.js +53 -0
- package/lib/helpers/document/handleSpreadDoc.js +35 -0
- package/lib/helpers/each.js +25 -0
- package/lib/helpers/error/combinePathErrors.js +22 -0
- package/lib/helpers/firstKey.js +8 -0
- package/lib/helpers/get.js +65 -0
- package/lib/helpers/getConstructorName.js +16 -0
- package/lib/helpers/getDefaultBulkwriteResult.js +18 -0
- package/lib/helpers/getFunctionName.js +10 -0
- package/lib/helpers/immediate.js +16 -0
- package/lib/helpers/indexes/applySchemaCollation.js +13 -0
- package/lib/helpers/indexes/decorateDiscriminatorIndexOptions.js +14 -0
- package/lib/helpers/indexes/getRelatedIndexes.js +63 -0
- package/lib/helpers/indexes/isDefaultIdIndex.js +18 -0
- package/lib/helpers/indexes/isIndexEqual.js +95 -0
- package/lib/helpers/indexes/isIndexSpecEqual.js +32 -0
- package/lib/helpers/indexes/isTextIndex.js +16 -0
- package/lib/helpers/indexes/isTimeseriesIndex.js +16 -0
- package/lib/helpers/isAsyncFunction.js +9 -0
- package/lib/helpers/isBsonType.js +15 -0
- package/lib/helpers/isMongooseObject.js +22 -0
- package/lib/helpers/isObject.js +16 -0
- package/lib/helpers/isPOJO.js +12 -0
- package/lib/helpers/isPromise.js +6 -0
- package/lib/helpers/isSimpleValidator.js +22 -0
- package/lib/helpers/minimize.js +41 -0
- package/lib/helpers/model/applyDefaultsToPOJO.js +52 -0
- package/lib/helpers/model/applyHooks.js +140 -0
- package/lib/helpers/model/applyMethods.js +70 -0
- package/lib/helpers/model/applyStaticHooks.js +33 -0
- package/lib/helpers/model/applyStatics.js +13 -0
- package/lib/helpers/model/castBulkWrite.js +316 -0
- package/lib/helpers/model/decorateBulkWriteResult.js +8 -0
- package/lib/helpers/model/discriminator.js +265 -0
- package/lib/helpers/model/pushNestedArrayPaths.js +15 -0
- package/lib/helpers/omitUndefined.js +20 -0
- package/lib/helpers/once.js +12 -0
- package/lib/helpers/parallelLimit.js +37 -0
- package/lib/helpers/path/parentPaths.js +18 -0
- package/lib/helpers/path/setDottedPath.js +33 -0
- package/lib/helpers/pluralize.js +95 -0
- package/lib/helpers/populate/assignRawDocsToIdStructure.js +129 -0
- package/lib/helpers/populate/assignVals.js +360 -0
- package/lib/helpers/populate/createPopulateQueryFilter.js +97 -0
- package/lib/helpers/populate/getModelsMapForPopulate.js +776 -0
- package/lib/helpers/populate/getSchemaTypes.js +228 -0
- package/lib/helpers/populate/getVirtual.js +103 -0
- package/lib/helpers/populate/leanPopulateMap.js +7 -0
- package/lib/helpers/populate/lookupLocalFields.js +40 -0
- package/lib/helpers/populate/markArraySubdocsPopulated.js +49 -0
- package/lib/helpers/populate/modelNamesFromRefPath.js +66 -0
- package/lib/helpers/populate/removeDeselectedForeignField.js +31 -0
- package/lib/helpers/populate/setPopulatedVirtualValue.js +33 -0
- package/lib/helpers/populate/skipPopulateValue.js +10 -0
- package/lib/helpers/populate/validateRef.js +19 -0
- package/lib/helpers/printJestWarning.js +21 -0
- package/lib/helpers/processConnectionOptions.js +65 -0
- package/lib/helpers/projection/applyProjection.js +83 -0
- package/lib/helpers/projection/hasIncludedChildren.js +41 -0
- package/lib/helpers/projection/isDefiningProjection.js +18 -0
- package/lib/helpers/projection/isExclusive.js +37 -0
- package/lib/helpers/projection/isInclusive.js +39 -0
- package/lib/helpers/projection/isNestedProjection.js +8 -0
- package/lib/helpers/projection/isPathExcluded.js +40 -0
- package/lib/helpers/projection/isPathSelectedInclusive.js +28 -0
- package/lib/helpers/projection/isSubpath.js +14 -0
- package/lib/helpers/projection/parseProjection.js +33 -0
- package/lib/helpers/query/applyGlobalOption.js +29 -0
- package/lib/helpers/query/cast$expr.js +287 -0
- package/lib/helpers/query/castFilterPath.js +54 -0
- package/lib/helpers/query/castUpdate.js +643 -0
- package/lib/helpers/query/getEmbeddedDiscriminatorPath.js +103 -0
- package/lib/helpers/query/handleImmutable.js +44 -0
- package/lib/helpers/query/handleReadPreferenceAliases.js +23 -0
- package/lib/helpers/query/hasDollarKeys.js +23 -0
- package/lib/helpers/query/isOperator.js +14 -0
- package/lib/helpers/query/sanitizeFilter.js +38 -0
- package/lib/helpers/query/sanitizeProjection.js +14 -0
- package/lib/helpers/query/selectPopulatedFields.js +62 -0
- package/lib/helpers/query/trusted.js +13 -0
- package/lib/helpers/query/validOps.js +3 -0
- package/lib/helpers/schema/addAutoId.js +7 -0
- package/lib/helpers/schema/applyBuiltinPlugins.js +12 -0
- package/lib/helpers/schema/applyPlugins.js +55 -0
- package/lib/helpers/schema/applyReadConcern.js +20 -0
- package/lib/helpers/schema/applyWriteConcern.js +39 -0
- package/lib/helpers/schema/cleanPositionalOperators.js +12 -0
- package/lib/helpers/schema/getIndexes.js +171 -0
- package/lib/helpers/schema/getKeysInSchemaOrder.js +28 -0
- package/lib/helpers/schema/getPath.js +43 -0
- package/lib/helpers/schema/getSubdocumentStrictValue.js +32 -0
- package/lib/helpers/schema/handleIdOption.js +20 -0
- package/lib/helpers/schema/handleTimestampOption.js +24 -0
- package/lib/helpers/schema/idGetter.js +34 -0
- package/lib/helpers/schema/merge.js +36 -0
- package/lib/helpers/schematype/handleImmutable.js +50 -0
- package/lib/helpers/setDefaultsOnInsert.js +158 -0
- package/lib/helpers/specialProperties.js +3 -0
- package/lib/helpers/symbols.js +20 -0
- package/lib/helpers/timers.js +3 -0
- package/lib/helpers/timestamps/setDocumentTimestamps.js +26 -0
- package/lib/helpers/timestamps/setupTimestamps.js +116 -0
- package/lib/helpers/topology/allServersUnknown.js +12 -0
- package/lib/helpers/topology/isAtlas.js +31 -0
- package/lib/helpers/topology/isSSLError.js +16 -0
- package/lib/helpers/update/applyTimestampsToChildren.js +193 -0
- package/lib/helpers/update/applyTimestampsToUpdate.js +131 -0
- package/lib/helpers/update/castArrayFilters.js +113 -0
- package/lib/helpers/update/decorateUpdateWithVersionKey.js +35 -0
- package/lib/helpers/update/modifiedPaths.js +33 -0
- package/lib/helpers/update/moveImmutableProperties.js +53 -0
- package/lib/helpers/update/removeUnusedArrayFilters.js +32 -0
- package/lib/helpers/update/updatedPathsByArrayFilter.js +27 -0
- package/lib/helpers/updateValidators.js +193 -0
- package/lib/index.js +17 -0
- package/lib/internal.js +46 -0
- package/lib/model.js +5010 -0
- package/lib/modifiedPathsSnapshot.js +9 -0
- package/lib/mongoose.js +1411 -0
- package/lib/options/populateOptions.js +36 -0
- package/lib/options/propertyOptions.js +8 -0
- package/lib/options/saveOptions.js +16 -0
- package/lib/options/schemaArrayOptions.js +78 -0
- package/lib/options/schemaBufferOptions.js +38 -0
- package/lib/options/schemaDateOptions.js +71 -0
- package/lib/options/schemaDocumentArrayOptions.js +68 -0
- package/lib/options/schemaMapOptions.js +43 -0
- package/lib/options/schemaNumberOptions.js +101 -0
- package/lib/options/schemaObjectIdOptions.js +64 -0
- package/lib/options/schemaStringOptions.js +138 -0
- package/lib/options/schemaSubdocumentOptions.js +66 -0
- package/lib/options/schemaTypeOptions.js +244 -0
- package/lib/options/schemaUnionOptions.js +32 -0
- package/lib/options/virtualOptions.js +164 -0
- package/lib/options.js +17 -0
- package/lib/plugins/index.js +6 -0
- package/lib/plugins/saveSubdocs.js +76 -0
- package/lib/plugins/sharding.js +84 -0
- package/lib/plugins/trackTransaction.js +84 -0
- package/lib/plugins/validateBeforeSave.js +41 -0
- package/lib/query.js +5673 -0
- package/lib/queryHelpers.js +387 -0
- package/lib/schema/array.js +699 -0
- package/lib/schema/bigint.js +282 -0
- package/lib/schema/boolean.js +332 -0
- package/lib/schema/buffer.js +343 -0
- package/lib/schema/date.js +467 -0
- package/lib/schema/decimal128.js +263 -0
- package/lib/schema/documentArray.js +656 -0
- package/lib/schema/documentArrayElement.js +137 -0
- package/lib/schema/double.js +246 -0
- package/lib/schema/index.js +32 -0
- package/lib/schema/int32.js +289 -0
- package/lib/schema/map.js +201 -0
- package/lib/schema/mixed.js +146 -0
- package/lib/schema/number.js +510 -0
- package/lib/schema/objectId.js +333 -0
- package/lib/schema/operators/bitwise.js +38 -0
- package/lib/schema/operators/exists.js +12 -0
- package/lib/schema/operators/geospatial.js +107 -0
- package/lib/schema/operators/helpers.js +32 -0
- package/lib/schema/operators/text.js +39 -0
- package/lib/schema/operators/type.js +20 -0
- package/lib/schema/string.js +733 -0
- package/lib/schema/subdocument.js +436 -0
- package/lib/schema/symbols.js +5 -0
- package/lib/schema/union.js +113 -0
- package/lib/schema/uuid.js +305 -0
- package/lib/schema.js +3226 -0
- package/lib/schemaType.js +1835 -0
- package/lib/stateMachine.js +232 -0
- package/lib/types/array/index.js +119 -0
- package/lib/types/array/isMongooseArray.js +5 -0
- package/lib/types/array/methods/index.js +1095 -0
- package/lib/types/arraySubdocument.js +207 -0
- package/lib/types/buffer.js +294 -0
- package/lib/types/decimal128.js +13 -0
- package/lib/types/documentArray/index.js +113 -0
- package/lib/types/documentArray/isMongooseDocumentArray.js +5 -0
- package/lib/types/documentArray/methods/index.js +415 -0
- package/lib/types/double.js +13 -0
- package/lib/types/index.js +23 -0
- package/lib/types/map.js +419 -0
- package/lib/types/objectid.js +41 -0
- package/lib/types/subdocument.js +464 -0
- package/lib/types/uuid.js +13 -0
- package/lib/utils.js +1054 -0
- package/lib/validOptions.js +42 -0
- package/lib/virtualType.js +204 -0
- package/package.json +148 -0
- package/types/aggregate.d.ts +180 -0
- package/types/augmentations.d.ts +9 -0
- package/types/callback.d.ts +8 -0
- package/types/collection.d.ts +49 -0
- package/types/connection.d.ts +297 -0
- package/types/cursor.d.ts +67 -0
- package/types/document.d.ts +374 -0
- package/types/error.d.ts +143 -0
- package/types/expressions.d.ts +3053 -0
- package/types/helpers.d.ts +32 -0
- package/types/index.d.ts +1056 -0
- package/types/indexes.d.ts +97 -0
- package/types/inferhydrateddoctype.d.ts +115 -0
- package/types/inferrawdoctype.d.ts +135 -0
- package/types/inferschematype.d.ts +337 -0
- package/types/middlewares.d.ts +59 -0
- package/types/models.d.ts +1306 -0
- package/types/mongooseoptions.d.ts +228 -0
- package/types/pipelinestage.d.ts +333 -0
- package/types/populate.d.ts +53 -0
- package/types/query.d.ts +934 -0
- package/types/schemaoptions.d.ts +282 -0
- package/types/schematypes.d.ts +654 -0
- package/types/session.d.ts +32 -0
- package/types/types.d.ts +109 -0
- package/types/utility.d.ts +175 -0
- package/types/validation.d.ts +39 -0
- package/types/virtuals.d.ts +14 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const clone = require('../helpers/clone');
|
|
4
|
+
|
|
5
|
+
class PopulateOptions {
|
|
6
|
+
constructor(obj) {
|
|
7
|
+
this._docs = {};
|
|
8
|
+
this._childDocs = [];
|
|
9
|
+
|
|
10
|
+
if (obj == null) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
obj = clone(obj);
|
|
14
|
+
Object.assign(this, obj);
|
|
15
|
+
if (typeof obj.subPopulate === 'object') {
|
|
16
|
+
this.populate = obj.subPopulate;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
if (obj.perDocumentLimit != null && obj.limit != null) {
|
|
21
|
+
throw new Error('Can not use `limit` and `perDocumentLimit` at the same time. Path: `' + obj.path + '`.');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The connection used to look up models by name. If not specified, Mongoose
|
|
28
|
+
* will default to using the connection associated with the model in
|
|
29
|
+
* `PopulateOptions#model`.
|
|
30
|
+
*
|
|
31
|
+
* @memberOf PopulateOptions
|
|
32
|
+
* @property {Connection} connection
|
|
33
|
+
* @api public
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
module.exports = PopulateOptions;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const clone = require('../helpers/clone');
|
|
4
|
+
|
|
5
|
+
class SaveOptions {
|
|
6
|
+
constructor(obj) {
|
|
7
|
+
if (obj == null) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
Object.assign(this, clone(obj));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
SaveOptions.prototype.__subdocs = null;
|
|
15
|
+
|
|
16
|
+
module.exports = SaveOptions;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const SchemaTypeOptions = require('./schemaTypeOptions');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The options defined on an Array schematype.
|
|
7
|
+
*
|
|
8
|
+
* #### Example:
|
|
9
|
+
*
|
|
10
|
+
* const schema = new Schema({ tags: [String] });
|
|
11
|
+
* schema.path('tags').options; // SchemaArrayOptions instance
|
|
12
|
+
*
|
|
13
|
+
* @api public
|
|
14
|
+
* @inherits SchemaTypeOptions
|
|
15
|
+
* @constructor SchemaArrayOptions
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
class SchemaArrayOptions extends SchemaTypeOptions {}
|
|
19
|
+
|
|
20
|
+
const opts = require('./propertyOptions');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* If this is an array of strings, an array of allowed values for this path.
|
|
24
|
+
* Throws an error if this array isn't an array of strings.
|
|
25
|
+
*
|
|
26
|
+
* @api public
|
|
27
|
+
* @property enum
|
|
28
|
+
* @memberOf SchemaArrayOptions
|
|
29
|
+
* @type {Array}
|
|
30
|
+
* @instance
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
Object.defineProperty(SchemaArrayOptions.prototype, 'enum', opts);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* If set, specifies the type of this array's values. Equivalent to setting
|
|
37
|
+
* `type` to an array whose first element is `of`.
|
|
38
|
+
*
|
|
39
|
+
* #### Example:
|
|
40
|
+
*
|
|
41
|
+
* // `arr` is an array of numbers.
|
|
42
|
+
* new Schema({ arr: [Number] });
|
|
43
|
+
* // Equivalent way to define `arr` as an array of numbers
|
|
44
|
+
* new Schema({ arr: { type: Array, of: Number } });
|
|
45
|
+
*
|
|
46
|
+
* @api public
|
|
47
|
+
* @property of
|
|
48
|
+
* @memberOf SchemaArrayOptions
|
|
49
|
+
* @type {Function|String}
|
|
50
|
+
* @instance
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
Object.defineProperty(SchemaArrayOptions.prototype, 'of', opts);
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* If set to `false`, will always deactivate casting non-array values to arrays.
|
|
57
|
+
* If set to `true`, will cast non-array values to arrays if `init` and `SchemaArray.options.castNonArrays` are also `true`
|
|
58
|
+
*
|
|
59
|
+
* #### Example:
|
|
60
|
+
*
|
|
61
|
+
* const Model = db.model('Test', new Schema({ x1: { castNonArrays: false, type: [String] } }));
|
|
62
|
+
* const doc = new Model({ x1: "some non-array value" });
|
|
63
|
+
* await doc.validate(); // Errors with "CastError"
|
|
64
|
+
*
|
|
65
|
+
* @api public
|
|
66
|
+
* @property castNonArrays
|
|
67
|
+
* @memberOf SchemaArrayOptions
|
|
68
|
+
* @type {Boolean}
|
|
69
|
+
* @instance
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
Object.defineProperty(SchemaArrayOptions.prototype, 'castNonArrays', opts);
|
|
73
|
+
|
|
74
|
+
/*!
|
|
75
|
+
* ignore
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
module.exports = SchemaArrayOptions;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const SchemaTypeOptions = require('./schemaTypeOptions');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The options defined on a Buffer schematype.
|
|
7
|
+
*
|
|
8
|
+
* #### Example:
|
|
9
|
+
*
|
|
10
|
+
* const schema = new Schema({ bitmap: Buffer });
|
|
11
|
+
* schema.path('bitmap').options; // SchemaBufferOptions instance
|
|
12
|
+
*
|
|
13
|
+
* @api public
|
|
14
|
+
* @inherits SchemaTypeOptions
|
|
15
|
+
* @constructor SchemaBufferOptions
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
class SchemaBufferOptions extends SchemaTypeOptions {}
|
|
19
|
+
|
|
20
|
+
const opts = require('./propertyOptions');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Set the default subtype for this buffer.
|
|
24
|
+
*
|
|
25
|
+
* @api public
|
|
26
|
+
* @property subtype
|
|
27
|
+
* @memberOf SchemaBufferOptions
|
|
28
|
+
* @type {Number}
|
|
29
|
+
* @instance
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
Object.defineProperty(SchemaBufferOptions.prototype, 'subtype', opts);
|
|
33
|
+
|
|
34
|
+
/*!
|
|
35
|
+
* ignore
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
module.exports = SchemaBufferOptions;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const SchemaTypeOptions = require('./schemaTypeOptions');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The options defined on a Date schematype.
|
|
7
|
+
*
|
|
8
|
+
* #### Example:
|
|
9
|
+
*
|
|
10
|
+
* const schema = new Schema({ startedAt: Date });
|
|
11
|
+
* schema.path('startedAt').options; // SchemaDateOptions instance
|
|
12
|
+
*
|
|
13
|
+
* @api public
|
|
14
|
+
* @inherits SchemaTypeOptions
|
|
15
|
+
* @constructor SchemaDateOptions
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
class SchemaDateOptions extends SchemaTypeOptions {}
|
|
19
|
+
|
|
20
|
+
const opts = require('./propertyOptions');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* If set, Mongoose adds a validator that checks that this path is after the
|
|
24
|
+
* given `min`.
|
|
25
|
+
*
|
|
26
|
+
* @api public
|
|
27
|
+
* @property min
|
|
28
|
+
* @memberOf SchemaDateOptions
|
|
29
|
+
* @type {Date}
|
|
30
|
+
* @instance
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
Object.defineProperty(SchemaDateOptions.prototype, 'min', opts);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* If set, Mongoose adds a validator that checks that this path is before the
|
|
37
|
+
* given `max`.
|
|
38
|
+
*
|
|
39
|
+
* @api public
|
|
40
|
+
* @property max
|
|
41
|
+
* @memberOf SchemaDateOptions
|
|
42
|
+
* @type {Date}
|
|
43
|
+
* @instance
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
Object.defineProperty(SchemaDateOptions.prototype, 'max', opts);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* If set, Mongoose creates a TTL index on this path.
|
|
50
|
+
*
|
|
51
|
+
* mongo TTL index `expireAfterSeconds` value will take 'expires' value expressed in seconds.
|
|
52
|
+
*
|
|
53
|
+
* #### Example:
|
|
54
|
+
*
|
|
55
|
+
* const schema = new Schema({ "expireAt": { type: Date, expires: 11 } });
|
|
56
|
+
* // if 'expireAt' is set, then document expires at expireAt + 11 seconds
|
|
57
|
+
*
|
|
58
|
+
* @api public
|
|
59
|
+
* @property expires
|
|
60
|
+
* @memberOf SchemaDateOptions
|
|
61
|
+
* @type {Date}
|
|
62
|
+
* @instance
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
Object.defineProperty(SchemaDateOptions.prototype, 'expires', opts);
|
|
66
|
+
|
|
67
|
+
/*!
|
|
68
|
+
* ignore
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
module.exports = SchemaDateOptions;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const SchemaTypeOptions = require('./schemaTypeOptions');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The options defined on an Document Array schematype.
|
|
7
|
+
*
|
|
8
|
+
* #### Example:
|
|
9
|
+
*
|
|
10
|
+
* const schema = new Schema({ users: [{ name: string }] });
|
|
11
|
+
* schema.path('users').options; // SchemaDocumentArrayOptions instance
|
|
12
|
+
*
|
|
13
|
+
* @api public
|
|
14
|
+
* @inherits SchemaTypeOptions
|
|
15
|
+
* @constructor SchemaDocumentOptions
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
class SchemaDocumentArrayOptions extends SchemaTypeOptions {}
|
|
19
|
+
|
|
20
|
+
const opts = require('./propertyOptions');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* If `true`, Mongoose will skip building any indexes defined in this array's schema.
|
|
24
|
+
* If not set, Mongoose will build all indexes defined in this array's schema.
|
|
25
|
+
*
|
|
26
|
+
* #### Example:
|
|
27
|
+
*
|
|
28
|
+
* const childSchema = Schema({ name: { type: String, index: true } });
|
|
29
|
+
* // If `excludeIndexes` is `true`, Mongoose will skip building an index
|
|
30
|
+
* // on `arr.name`. Otherwise, Mongoose will build an index on `arr.name`.
|
|
31
|
+
* const parentSchema = Schema({
|
|
32
|
+
* arr: { type: [childSchema], excludeIndexes: true }
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* @api public
|
|
36
|
+
* @property excludeIndexes
|
|
37
|
+
* @memberOf SchemaDocumentArrayOptions
|
|
38
|
+
* @type {Array}
|
|
39
|
+
* @instance
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
Object.defineProperty(SchemaDocumentArrayOptions.prototype, 'excludeIndexes', opts);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* If set, overwrites the child schema's `_id` option.
|
|
46
|
+
*
|
|
47
|
+
* #### Example:
|
|
48
|
+
*
|
|
49
|
+
* const childSchema = Schema({ name: String });
|
|
50
|
+
* const parentSchema = Schema({
|
|
51
|
+
* child: { type: childSchema, _id: false }
|
|
52
|
+
* });
|
|
53
|
+
* parentSchema.path('child').schema.options._id; // false
|
|
54
|
+
*
|
|
55
|
+
* @api public
|
|
56
|
+
* @property _id
|
|
57
|
+
* @memberOf SchemaDocumentArrayOptions
|
|
58
|
+
* @type {Array}
|
|
59
|
+
* @instance
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
Object.defineProperty(SchemaDocumentArrayOptions.prototype, '_id', opts);
|
|
63
|
+
|
|
64
|
+
/*!
|
|
65
|
+
* ignore
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
module.exports = SchemaDocumentArrayOptions;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const SchemaTypeOptions = require('./schemaTypeOptions');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The options defined on a Map schematype.
|
|
7
|
+
*
|
|
8
|
+
* #### Example:
|
|
9
|
+
*
|
|
10
|
+
* const schema = new Schema({ socialMediaHandles: { type: Map, of: String } });
|
|
11
|
+
* schema.path('socialMediaHandles').options; // SchemaMapOptions instance
|
|
12
|
+
*
|
|
13
|
+
* @api public
|
|
14
|
+
* @inherits SchemaTypeOptions
|
|
15
|
+
* @constructor SchemaMapOptions
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
class SchemaMapOptions extends SchemaTypeOptions {}
|
|
19
|
+
|
|
20
|
+
const opts = require('./propertyOptions');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* If set, specifies the type of this map's values. Mongoose will cast
|
|
24
|
+
* this map's values to the given type.
|
|
25
|
+
*
|
|
26
|
+
* If not set, Mongoose will not cast the map's values.
|
|
27
|
+
*
|
|
28
|
+
* #### Example:
|
|
29
|
+
*
|
|
30
|
+
* // Mongoose will cast `socialMediaHandles` values to strings
|
|
31
|
+
* const schema = new Schema({ socialMediaHandles: { type: Map, of: String } });
|
|
32
|
+
* schema.path('socialMediaHandles').options.of; // String
|
|
33
|
+
*
|
|
34
|
+
* @api public
|
|
35
|
+
* @property of
|
|
36
|
+
* @memberOf SchemaMapOptions
|
|
37
|
+
* @type {Function|string}
|
|
38
|
+
* @instance
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
Object.defineProperty(SchemaMapOptions.prototype, 'of', opts);
|
|
42
|
+
|
|
43
|
+
module.exports = SchemaMapOptions;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const SchemaTypeOptions = require('./schemaTypeOptions');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The options defined on a Number schematype.
|
|
7
|
+
*
|
|
8
|
+
* #### Example:
|
|
9
|
+
*
|
|
10
|
+
* const schema = new Schema({ count: Number });
|
|
11
|
+
* schema.path('count').options; // SchemaNumberOptions instance
|
|
12
|
+
*
|
|
13
|
+
* @api public
|
|
14
|
+
* @inherits SchemaTypeOptions
|
|
15
|
+
* @constructor SchemaNumberOptions
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
class SchemaNumberOptions extends SchemaTypeOptions {}
|
|
19
|
+
|
|
20
|
+
const opts = require('./propertyOptions');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* If set, Mongoose adds a validator that checks that this path is at least the
|
|
24
|
+
* given `min`.
|
|
25
|
+
*
|
|
26
|
+
* @api public
|
|
27
|
+
* @property min
|
|
28
|
+
* @memberOf SchemaNumberOptions
|
|
29
|
+
* @type {Number}
|
|
30
|
+
* @instance
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
Object.defineProperty(SchemaNumberOptions.prototype, 'min', opts);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* If set, Mongoose adds a validator that checks that this path is less than the
|
|
37
|
+
* given `max`.
|
|
38
|
+
*
|
|
39
|
+
* @api public
|
|
40
|
+
* @property max
|
|
41
|
+
* @memberOf SchemaNumberOptions
|
|
42
|
+
* @type {Number}
|
|
43
|
+
* @instance
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
Object.defineProperty(SchemaNumberOptions.prototype, 'max', opts);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* If set, Mongoose adds a validator that checks that this path is strictly
|
|
50
|
+
* equal to one of the given values.
|
|
51
|
+
*
|
|
52
|
+
* #### Example:
|
|
53
|
+
*
|
|
54
|
+
* const schema = new Schema({
|
|
55
|
+
* favoritePrime: {
|
|
56
|
+
* type: Number,
|
|
57
|
+
* enum: [3, 5, 7]
|
|
58
|
+
* }
|
|
59
|
+
* });
|
|
60
|
+
* schema.path('favoritePrime').options.enum; // [3, 5, 7]
|
|
61
|
+
*
|
|
62
|
+
* @api public
|
|
63
|
+
* @property enum
|
|
64
|
+
* @memberOf SchemaNumberOptions
|
|
65
|
+
* @type {Array}
|
|
66
|
+
* @instance
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
Object.defineProperty(SchemaNumberOptions.prototype, 'enum', opts);
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Sets default [populate options](https://mongoosejs.com/docs/populate.html#query-conditions).
|
|
73
|
+
*
|
|
74
|
+
* #### Example:
|
|
75
|
+
*
|
|
76
|
+
* const schema = new Schema({
|
|
77
|
+
* child: {
|
|
78
|
+
* type: Number,
|
|
79
|
+
* ref: 'Child',
|
|
80
|
+
* populate: { select: 'name' }
|
|
81
|
+
* }
|
|
82
|
+
* });
|
|
83
|
+
* const Parent = mongoose.model('Parent', schema);
|
|
84
|
+
*
|
|
85
|
+
* // Automatically adds `.select('name')`
|
|
86
|
+
* Parent.findOne().populate('child');
|
|
87
|
+
*
|
|
88
|
+
* @api public
|
|
89
|
+
* @property populate
|
|
90
|
+
* @memberOf SchemaNumberOptions
|
|
91
|
+
* @type {Object}
|
|
92
|
+
* @instance
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
Object.defineProperty(SchemaNumberOptions.prototype, 'populate', opts);
|
|
96
|
+
|
|
97
|
+
/*!
|
|
98
|
+
* ignore
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
module.exports = SchemaNumberOptions;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const SchemaTypeOptions = require('./schemaTypeOptions');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The options defined on an ObjectId schematype.
|
|
7
|
+
*
|
|
8
|
+
* #### Example:
|
|
9
|
+
*
|
|
10
|
+
* const schema = new Schema({ testId: mongoose.ObjectId });
|
|
11
|
+
* schema.path('testId').options; // SchemaObjectIdOptions instance
|
|
12
|
+
*
|
|
13
|
+
* @api public
|
|
14
|
+
* @inherits SchemaTypeOptions
|
|
15
|
+
* @constructor SchemaObjectIdOptions
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
class SchemaObjectIdOptions extends SchemaTypeOptions {}
|
|
19
|
+
|
|
20
|
+
const opts = require('./propertyOptions');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* If truthy, uses Mongoose's default built-in ObjectId path.
|
|
24
|
+
*
|
|
25
|
+
* @api public
|
|
26
|
+
* @property auto
|
|
27
|
+
* @memberOf SchemaObjectIdOptions
|
|
28
|
+
* @type {Boolean}
|
|
29
|
+
* @instance
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
Object.defineProperty(SchemaObjectIdOptions.prototype, 'auto', opts);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Sets default [populate options](https://mongoosejs.com/docs/populate.html#query-conditions).
|
|
36
|
+
*
|
|
37
|
+
* #### Example:
|
|
38
|
+
*
|
|
39
|
+
* const schema = new Schema({
|
|
40
|
+
* child: {
|
|
41
|
+
* type: 'ObjectId',
|
|
42
|
+
* ref: 'Child',
|
|
43
|
+
* populate: { select: 'name' }
|
|
44
|
+
* }
|
|
45
|
+
* });
|
|
46
|
+
* const Parent = mongoose.model('Parent', schema);
|
|
47
|
+
*
|
|
48
|
+
* // Automatically adds `.select('name')`
|
|
49
|
+
* Parent.findOne().populate('child');
|
|
50
|
+
*
|
|
51
|
+
* @api public
|
|
52
|
+
* @property populate
|
|
53
|
+
* @memberOf SchemaObjectIdOptions
|
|
54
|
+
* @type {Object}
|
|
55
|
+
* @instance
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
Object.defineProperty(SchemaObjectIdOptions.prototype, 'populate', opts);
|
|
59
|
+
|
|
60
|
+
/*!
|
|
61
|
+
* ignore
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
module.exports = SchemaObjectIdOptions;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const SchemaTypeOptions = require('./schemaTypeOptions');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The options defined on a string schematype.
|
|
7
|
+
*
|
|
8
|
+
* #### Example:
|
|
9
|
+
*
|
|
10
|
+
* const schema = new Schema({ name: String });
|
|
11
|
+
* schema.path('name').options; // SchemaStringOptions instance
|
|
12
|
+
*
|
|
13
|
+
* @api public
|
|
14
|
+
* @inherits SchemaTypeOptions
|
|
15
|
+
* @constructor SchemaStringOptions
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
class SchemaStringOptions extends SchemaTypeOptions {}
|
|
19
|
+
|
|
20
|
+
const opts = require('./propertyOptions');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Array of allowed values for this path
|
|
24
|
+
*
|
|
25
|
+
* @api public
|
|
26
|
+
* @property enum
|
|
27
|
+
* @memberOf SchemaStringOptions
|
|
28
|
+
* @type {Array}
|
|
29
|
+
* @instance
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
Object.defineProperty(SchemaStringOptions.prototype, 'enum', opts);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Attach a validator that succeeds if the data string matches the given regular
|
|
36
|
+
* expression, and fails otherwise.
|
|
37
|
+
*
|
|
38
|
+
* @api public
|
|
39
|
+
* @property match
|
|
40
|
+
* @memberOf SchemaStringOptions
|
|
41
|
+
* @type {RegExp}
|
|
42
|
+
* @instance
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
Object.defineProperty(SchemaStringOptions.prototype, 'match', opts);
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* If truthy, Mongoose will add a [custom setter](https://mongoosejs.com/docs/api/schematype.html#SchemaType.prototype.set()) that lowercases this string
|
|
49
|
+
* using JavaScript's built-in `String#toLowerCase()`.
|
|
50
|
+
*
|
|
51
|
+
* @api public
|
|
52
|
+
* @property lowercase
|
|
53
|
+
* @memberOf SchemaStringOptions
|
|
54
|
+
* @type {Boolean}
|
|
55
|
+
* @instance
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
Object.defineProperty(SchemaStringOptions.prototype, 'lowercase', opts);
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* If truthy, Mongoose will add a [custom setter](https://mongoosejs.com/docs/api/schematype.html#SchemaType.prototype.set()) that removes leading and trailing
|
|
62
|
+
* whitespace using [JavaScript's built-in `String#trim()`](https://masteringjs.io/tutorials/fundamentals/trim-string).
|
|
63
|
+
*
|
|
64
|
+
* @api public
|
|
65
|
+
* @property trim
|
|
66
|
+
* @memberOf SchemaStringOptions
|
|
67
|
+
* @type {Boolean}
|
|
68
|
+
* @instance
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
Object.defineProperty(SchemaStringOptions.prototype, 'trim', opts);
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* If truthy, Mongoose will add a custom setter that uppercases this string
|
|
75
|
+
* using JavaScript's built-in [`String#toUpperCase()`](https://masteringjs.io/tutorials/fundamentals/uppercase).
|
|
76
|
+
*
|
|
77
|
+
* @api public
|
|
78
|
+
* @property uppercase
|
|
79
|
+
* @memberOf SchemaStringOptions
|
|
80
|
+
* @type {Boolean}
|
|
81
|
+
* @instance
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
Object.defineProperty(SchemaStringOptions.prototype, 'uppercase', opts);
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* If set, Mongoose will add a custom validator that ensures the given
|
|
88
|
+
* string's `length` is at least the given number.
|
|
89
|
+
*
|
|
90
|
+
* Mongoose supports two different spellings for this option: `minLength` and `minlength`.
|
|
91
|
+
* `minLength` is the recommended way to specify this option, but Mongoose also supports
|
|
92
|
+
* `minlength` (lowercase "l").
|
|
93
|
+
*
|
|
94
|
+
* @api public
|
|
95
|
+
* @property minLength
|
|
96
|
+
* @memberOf SchemaStringOptions
|
|
97
|
+
* @type {Number}
|
|
98
|
+
* @instance
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
Object.defineProperty(SchemaStringOptions.prototype, 'minLength', opts);
|
|
102
|
+
Object.defineProperty(SchemaStringOptions.prototype, 'minlength', opts);
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* If set, Mongoose will add a custom validator that ensures the given
|
|
106
|
+
* string's `length` is at most the given number.
|
|
107
|
+
*
|
|
108
|
+
* Mongoose supports two different spellings for this option: `maxLength` and `maxlength`.
|
|
109
|
+
* `maxLength` is the recommended way to specify this option, but Mongoose also supports
|
|
110
|
+
* `maxlength` (lowercase "l").
|
|
111
|
+
*
|
|
112
|
+
* @api public
|
|
113
|
+
* @property maxLength
|
|
114
|
+
* @memberOf SchemaStringOptions
|
|
115
|
+
* @type {Number}
|
|
116
|
+
* @instance
|
|
117
|
+
*/
|
|
118
|
+
|
|
119
|
+
Object.defineProperty(SchemaStringOptions.prototype, 'maxLength', opts);
|
|
120
|
+
Object.defineProperty(SchemaStringOptions.prototype, 'maxlength', opts);
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Sets default [populate options](https://mongoosejs.com/docs/populate.html#query-conditions).
|
|
124
|
+
*
|
|
125
|
+
* @api public
|
|
126
|
+
* @property populate
|
|
127
|
+
* @memberOf SchemaStringOptions
|
|
128
|
+
* @type {Object}
|
|
129
|
+
* @instance
|
|
130
|
+
*/
|
|
131
|
+
|
|
132
|
+
Object.defineProperty(SchemaStringOptions.prototype, 'populate', opts);
|
|
133
|
+
|
|
134
|
+
/*!
|
|
135
|
+
* ignore
|
|
136
|
+
*/
|
|
137
|
+
|
|
138
|
+
module.exports = SchemaStringOptions;
|