@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.
Files changed (295) hide show
  1. package/LICENSE.md +22 -0
  2. package/README.md +397 -0
  3. package/SECURITY.md +1 -0
  4. package/eslint.config.mjs +198 -0
  5. package/index.js +64 -0
  6. package/lib/aggregate.js +1189 -0
  7. package/lib/cast/bigint.js +46 -0
  8. package/lib/cast/boolean.js +32 -0
  9. package/lib/cast/date.js +41 -0
  10. package/lib/cast/decimal128.js +39 -0
  11. package/lib/cast/double.js +50 -0
  12. package/lib/cast/int32.js +36 -0
  13. package/lib/cast/number.js +42 -0
  14. package/lib/cast/objectid.js +29 -0
  15. package/lib/cast/string.js +37 -0
  16. package/lib/cast/uuid.js +35 -0
  17. package/lib/cast.js +436 -0
  18. package/lib/collection.js +321 -0
  19. package/lib/connection.js +1855 -0
  20. package/lib/connectionState.js +26 -0
  21. package/lib/constants.js +73 -0
  22. package/lib/cursor/aggregationCursor.js +466 -0
  23. package/lib/cursor/changeStream.js +198 -0
  24. package/lib/cursor/queryCursor.js +622 -0
  25. package/lib/document.js +5521 -0
  26. package/lib/driver.js +15 -0
  27. package/lib/drivers/SPEC.md +4 -0
  28. package/lib/drivers/node-mongodb-native/bulkWriteResult.js +5 -0
  29. package/lib/drivers/node-mongodb-native/collection.js +393 -0
  30. package/lib/drivers/node-mongodb-native/connection.js +506 -0
  31. package/lib/drivers/node-mongodb-native/index.js +10 -0
  32. package/lib/error/browserMissingSchema.js +29 -0
  33. package/lib/error/bulkSaveIncompleteError.js +44 -0
  34. package/lib/error/bulkWriteError.js +41 -0
  35. package/lib/error/cast.js +158 -0
  36. package/lib/error/createCollectionsError.js +26 -0
  37. package/lib/error/divergentArray.js +40 -0
  38. package/lib/error/eachAsyncMultiError.js +41 -0
  39. package/lib/error/index.js +237 -0
  40. package/lib/error/invalidSchemaOption.js +32 -0
  41. package/lib/error/messages.js +47 -0
  42. package/lib/error/missingSchema.js +33 -0
  43. package/lib/error/mongooseError.js +13 -0
  44. package/lib/error/notFound.js +47 -0
  45. package/lib/error/objectExpected.js +31 -0
  46. package/lib/error/objectParameter.js +31 -0
  47. package/lib/error/overwriteModel.js +31 -0
  48. package/lib/error/parallelSave.js +33 -0
  49. package/lib/error/parallelValidate.js +33 -0
  50. package/lib/error/serverSelection.js +62 -0
  51. package/lib/error/setOptionError.js +103 -0
  52. package/lib/error/strict.js +35 -0
  53. package/lib/error/strictPopulate.js +31 -0
  54. package/lib/error/syncIndexes.js +30 -0
  55. package/lib/error/validation.js +97 -0
  56. package/lib/error/validator.js +100 -0
  57. package/lib/error/version.js +38 -0
  58. package/lib/helpers/aggregate/prepareDiscriminatorPipeline.js +39 -0
  59. package/lib/helpers/aggregate/stringifyFunctionOperators.js +50 -0
  60. package/lib/helpers/arrayDepth.js +33 -0
  61. package/lib/helpers/clone.js +204 -0
  62. package/lib/helpers/common.js +127 -0
  63. package/lib/helpers/createJSONSchemaTypeDefinition.js +24 -0
  64. package/lib/helpers/cursor/eachAsync.js +225 -0
  65. package/lib/helpers/discriminator/applyEmbeddedDiscriminators.js +36 -0
  66. package/lib/helpers/discriminator/areDiscriminatorValuesEqual.js +16 -0
  67. package/lib/helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection.js +12 -0
  68. package/lib/helpers/discriminator/getConstructor.js +29 -0
  69. package/lib/helpers/discriminator/getDiscriminatorByValue.js +28 -0
  70. package/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js +27 -0
  71. package/lib/helpers/discriminator/mergeDiscriminatorSchema.js +91 -0
  72. package/lib/helpers/document/applyDefaults.js +132 -0
  73. package/lib/helpers/document/applyTimestamps.js +106 -0
  74. package/lib/helpers/document/applyVirtuals.js +147 -0
  75. package/lib/helpers/document/cleanModifiedSubpaths.js +45 -0
  76. package/lib/helpers/document/compile.js +238 -0
  77. package/lib/helpers/document/getDeepestSubdocumentForPath.js +38 -0
  78. package/lib/helpers/document/getEmbeddedDiscriminatorPath.js +53 -0
  79. package/lib/helpers/document/handleSpreadDoc.js +35 -0
  80. package/lib/helpers/each.js +25 -0
  81. package/lib/helpers/error/combinePathErrors.js +22 -0
  82. package/lib/helpers/firstKey.js +8 -0
  83. package/lib/helpers/get.js +65 -0
  84. package/lib/helpers/getConstructorName.js +16 -0
  85. package/lib/helpers/getDefaultBulkwriteResult.js +18 -0
  86. package/lib/helpers/getFunctionName.js +10 -0
  87. package/lib/helpers/immediate.js +16 -0
  88. package/lib/helpers/indexes/applySchemaCollation.js +13 -0
  89. package/lib/helpers/indexes/decorateDiscriminatorIndexOptions.js +14 -0
  90. package/lib/helpers/indexes/getRelatedIndexes.js +63 -0
  91. package/lib/helpers/indexes/isDefaultIdIndex.js +18 -0
  92. package/lib/helpers/indexes/isIndexEqual.js +95 -0
  93. package/lib/helpers/indexes/isIndexSpecEqual.js +32 -0
  94. package/lib/helpers/indexes/isTextIndex.js +16 -0
  95. package/lib/helpers/indexes/isTimeseriesIndex.js +16 -0
  96. package/lib/helpers/isAsyncFunction.js +9 -0
  97. package/lib/helpers/isBsonType.js +15 -0
  98. package/lib/helpers/isMongooseObject.js +22 -0
  99. package/lib/helpers/isObject.js +16 -0
  100. package/lib/helpers/isPOJO.js +12 -0
  101. package/lib/helpers/isPromise.js +6 -0
  102. package/lib/helpers/isSimpleValidator.js +22 -0
  103. package/lib/helpers/minimize.js +41 -0
  104. package/lib/helpers/model/applyDefaultsToPOJO.js +52 -0
  105. package/lib/helpers/model/applyHooks.js +140 -0
  106. package/lib/helpers/model/applyMethods.js +70 -0
  107. package/lib/helpers/model/applyStaticHooks.js +33 -0
  108. package/lib/helpers/model/applyStatics.js +13 -0
  109. package/lib/helpers/model/castBulkWrite.js +316 -0
  110. package/lib/helpers/model/decorateBulkWriteResult.js +8 -0
  111. package/lib/helpers/model/discriminator.js +265 -0
  112. package/lib/helpers/model/pushNestedArrayPaths.js +15 -0
  113. package/lib/helpers/omitUndefined.js +20 -0
  114. package/lib/helpers/once.js +12 -0
  115. package/lib/helpers/parallelLimit.js +37 -0
  116. package/lib/helpers/path/parentPaths.js +18 -0
  117. package/lib/helpers/path/setDottedPath.js +33 -0
  118. package/lib/helpers/pluralize.js +95 -0
  119. package/lib/helpers/populate/assignRawDocsToIdStructure.js +129 -0
  120. package/lib/helpers/populate/assignVals.js +360 -0
  121. package/lib/helpers/populate/createPopulateQueryFilter.js +97 -0
  122. package/lib/helpers/populate/getModelsMapForPopulate.js +776 -0
  123. package/lib/helpers/populate/getSchemaTypes.js +228 -0
  124. package/lib/helpers/populate/getVirtual.js +103 -0
  125. package/lib/helpers/populate/leanPopulateMap.js +7 -0
  126. package/lib/helpers/populate/lookupLocalFields.js +40 -0
  127. package/lib/helpers/populate/markArraySubdocsPopulated.js +49 -0
  128. package/lib/helpers/populate/modelNamesFromRefPath.js +66 -0
  129. package/lib/helpers/populate/removeDeselectedForeignField.js +31 -0
  130. package/lib/helpers/populate/setPopulatedVirtualValue.js +33 -0
  131. package/lib/helpers/populate/skipPopulateValue.js +10 -0
  132. package/lib/helpers/populate/validateRef.js +19 -0
  133. package/lib/helpers/printJestWarning.js +21 -0
  134. package/lib/helpers/processConnectionOptions.js +65 -0
  135. package/lib/helpers/projection/applyProjection.js +83 -0
  136. package/lib/helpers/projection/hasIncludedChildren.js +41 -0
  137. package/lib/helpers/projection/isDefiningProjection.js +18 -0
  138. package/lib/helpers/projection/isExclusive.js +37 -0
  139. package/lib/helpers/projection/isInclusive.js +39 -0
  140. package/lib/helpers/projection/isNestedProjection.js +8 -0
  141. package/lib/helpers/projection/isPathExcluded.js +40 -0
  142. package/lib/helpers/projection/isPathSelectedInclusive.js +28 -0
  143. package/lib/helpers/projection/isSubpath.js +14 -0
  144. package/lib/helpers/projection/parseProjection.js +33 -0
  145. package/lib/helpers/query/applyGlobalOption.js +29 -0
  146. package/lib/helpers/query/cast$expr.js +287 -0
  147. package/lib/helpers/query/castFilterPath.js +54 -0
  148. package/lib/helpers/query/castUpdate.js +643 -0
  149. package/lib/helpers/query/getEmbeddedDiscriminatorPath.js +103 -0
  150. package/lib/helpers/query/handleImmutable.js +44 -0
  151. package/lib/helpers/query/handleReadPreferenceAliases.js +23 -0
  152. package/lib/helpers/query/hasDollarKeys.js +23 -0
  153. package/lib/helpers/query/isOperator.js +14 -0
  154. package/lib/helpers/query/sanitizeFilter.js +38 -0
  155. package/lib/helpers/query/sanitizeProjection.js +14 -0
  156. package/lib/helpers/query/selectPopulatedFields.js +62 -0
  157. package/lib/helpers/query/trusted.js +13 -0
  158. package/lib/helpers/query/validOps.js +3 -0
  159. package/lib/helpers/schema/addAutoId.js +7 -0
  160. package/lib/helpers/schema/applyBuiltinPlugins.js +12 -0
  161. package/lib/helpers/schema/applyPlugins.js +55 -0
  162. package/lib/helpers/schema/applyReadConcern.js +20 -0
  163. package/lib/helpers/schema/applyWriteConcern.js +39 -0
  164. package/lib/helpers/schema/cleanPositionalOperators.js +12 -0
  165. package/lib/helpers/schema/getIndexes.js +171 -0
  166. package/lib/helpers/schema/getKeysInSchemaOrder.js +28 -0
  167. package/lib/helpers/schema/getPath.js +43 -0
  168. package/lib/helpers/schema/getSubdocumentStrictValue.js +32 -0
  169. package/lib/helpers/schema/handleIdOption.js +20 -0
  170. package/lib/helpers/schema/handleTimestampOption.js +24 -0
  171. package/lib/helpers/schema/idGetter.js +34 -0
  172. package/lib/helpers/schema/merge.js +36 -0
  173. package/lib/helpers/schematype/handleImmutable.js +50 -0
  174. package/lib/helpers/setDefaultsOnInsert.js +158 -0
  175. package/lib/helpers/specialProperties.js +3 -0
  176. package/lib/helpers/symbols.js +20 -0
  177. package/lib/helpers/timers.js +3 -0
  178. package/lib/helpers/timestamps/setDocumentTimestamps.js +26 -0
  179. package/lib/helpers/timestamps/setupTimestamps.js +116 -0
  180. package/lib/helpers/topology/allServersUnknown.js +12 -0
  181. package/lib/helpers/topology/isAtlas.js +31 -0
  182. package/lib/helpers/topology/isSSLError.js +16 -0
  183. package/lib/helpers/update/applyTimestampsToChildren.js +193 -0
  184. package/lib/helpers/update/applyTimestampsToUpdate.js +131 -0
  185. package/lib/helpers/update/castArrayFilters.js +113 -0
  186. package/lib/helpers/update/decorateUpdateWithVersionKey.js +35 -0
  187. package/lib/helpers/update/modifiedPaths.js +33 -0
  188. package/lib/helpers/update/moveImmutableProperties.js +53 -0
  189. package/lib/helpers/update/removeUnusedArrayFilters.js +32 -0
  190. package/lib/helpers/update/updatedPathsByArrayFilter.js +27 -0
  191. package/lib/helpers/updateValidators.js +193 -0
  192. package/lib/index.js +17 -0
  193. package/lib/internal.js +46 -0
  194. package/lib/model.js +5010 -0
  195. package/lib/modifiedPathsSnapshot.js +9 -0
  196. package/lib/mongoose.js +1411 -0
  197. package/lib/options/populateOptions.js +36 -0
  198. package/lib/options/propertyOptions.js +8 -0
  199. package/lib/options/saveOptions.js +16 -0
  200. package/lib/options/schemaArrayOptions.js +78 -0
  201. package/lib/options/schemaBufferOptions.js +38 -0
  202. package/lib/options/schemaDateOptions.js +71 -0
  203. package/lib/options/schemaDocumentArrayOptions.js +68 -0
  204. package/lib/options/schemaMapOptions.js +43 -0
  205. package/lib/options/schemaNumberOptions.js +101 -0
  206. package/lib/options/schemaObjectIdOptions.js +64 -0
  207. package/lib/options/schemaStringOptions.js +138 -0
  208. package/lib/options/schemaSubdocumentOptions.js +66 -0
  209. package/lib/options/schemaTypeOptions.js +244 -0
  210. package/lib/options/schemaUnionOptions.js +32 -0
  211. package/lib/options/virtualOptions.js +164 -0
  212. package/lib/options.js +17 -0
  213. package/lib/plugins/index.js +6 -0
  214. package/lib/plugins/saveSubdocs.js +76 -0
  215. package/lib/plugins/sharding.js +84 -0
  216. package/lib/plugins/trackTransaction.js +84 -0
  217. package/lib/plugins/validateBeforeSave.js +41 -0
  218. package/lib/query.js +5673 -0
  219. package/lib/queryHelpers.js +387 -0
  220. package/lib/schema/array.js +699 -0
  221. package/lib/schema/bigint.js +282 -0
  222. package/lib/schema/boolean.js +332 -0
  223. package/lib/schema/buffer.js +343 -0
  224. package/lib/schema/date.js +467 -0
  225. package/lib/schema/decimal128.js +263 -0
  226. package/lib/schema/documentArray.js +656 -0
  227. package/lib/schema/documentArrayElement.js +137 -0
  228. package/lib/schema/double.js +246 -0
  229. package/lib/schema/index.js +32 -0
  230. package/lib/schema/int32.js +289 -0
  231. package/lib/schema/map.js +201 -0
  232. package/lib/schema/mixed.js +146 -0
  233. package/lib/schema/number.js +510 -0
  234. package/lib/schema/objectId.js +333 -0
  235. package/lib/schema/operators/bitwise.js +38 -0
  236. package/lib/schema/operators/exists.js +12 -0
  237. package/lib/schema/operators/geospatial.js +107 -0
  238. package/lib/schema/operators/helpers.js +32 -0
  239. package/lib/schema/operators/text.js +39 -0
  240. package/lib/schema/operators/type.js +20 -0
  241. package/lib/schema/string.js +733 -0
  242. package/lib/schema/subdocument.js +436 -0
  243. package/lib/schema/symbols.js +5 -0
  244. package/lib/schema/union.js +113 -0
  245. package/lib/schema/uuid.js +305 -0
  246. package/lib/schema.js +3226 -0
  247. package/lib/schemaType.js +1835 -0
  248. package/lib/stateMachine.js +232 -0
  249. package/lib/types/array/index.js +119 -0
  250. package/lib/types/array/isMongooseArray.js +5 -0
  251. package/lib/types/array/methods/index.js +1095 -0
  252. package/lib/types/arraySubdocument.js +207 -0
  253. package/lib/types/buffer.js +294 -0
  254. package/lib/types/decimal128.js +13 -0
  255. package/lib/types/documentArray/index.js +113 -0
  256. package/lib/types/documentArray/isMongooseDocumentArray.js +5 -0
  257. package/lib/types/documentArray/methods/index.js +415 -0
  258. package/lib/types/double.js +13 -0
  259. package/lib/types/index.js +23 -0
  260. package/lib/types/map.js +419 -0
  261. package/lib/types/objectid.js +41 -0
  262. package/lib/types/subdocument.js +464 -0
  263. package/lib/types/uuid.js +13 -0
  264. package/lib/utils.js +1054 -0
  265. package/lib/validOptions.js +42 -0
  266. package/lib/virtualType.js +204 -0
  267. package/package.json +148 -0
  268. package/types/aggregate.d.ts +180 -0
  269. package/types/augmentations.d.ts +9 -0
  270. package/types/callback.d.ts +8 -0
  271. package/types/collection.d.ts +49 -0
  272. package/types/connection.d.ts +297 -0
  273. package/types/cursor.d.ts +67 -0
  274. package/types/document.d.ts +374 -0
  275. package/types/error.d.ts +143 -0
  276. package/types/expressions.d.ts +3053 -0
  277. package/types/helpers.d.ts +32 -0
  278. package/types/index.d.ts +1056 -0
  279. package/types/indexes.d.ts +97 -0
  280. package/types/inferhydrateddoctype.d.ts +115 -0
  281. package/types/inferrawdoctype.d.ts +135 -0
  282. package/types/inferschematype.d.ts +337 -0
  283. package/types/middlewares.d.ts +59 -0
  284. package/types/models.d.ts +1306 -0
  285. package/types/mongooseoptions.d.ts +228 -0
  286. package/types/pipelinestage.d.ts +333 -0
  287. package/types/populate.d.ts +53 -0
  288. package/types/query.d.ts +934 -0
  289. package/types/schemaoptions.d.ts +282 -0
  290. package/types/schematypes.d.ts +654 -0
  291. package/types/session.d.ts +32 -0
  292. package/types/types.d.ts +109 -0
  293. package/types/utility.d.ts +175 -0
  294. package/types/validation.d.ts +39 -0
  295. 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,8 @@
1
+ 'use strict';
2
+
3
+ module.exports = Object.freeze({
4
+ enumerable: true,
5
+ configurable: true,
6
+ writable: true,
7
+ value: void 0
8
+ });
@@ -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;