@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,282 @@
1
+ declare module 'mongoose' {
2
+ import mongodb = require('mongodb');
3
+
4
+ interface SchemaTimestampsConfig {
5
+ createdAt?: boolean | string;
6
+ updatedAt?: boolean | string;
7
+ currentTime?: () => (NativeDate | number);
8
+ }
9
+
10
+ type TypeKeyBaseType = string;
11
+
12
+ type DefaultTypeKey = 'type';
13
+ interface SchemaOptions<
14
+ DocType = unknown,
15
+ TInstanceMethods = {},
16
+ QueryHelpers = {},
17
+ TStaticMethods = {},
18
+ TVirtuals = {},
19
+ THydratedDocumentType = HydratedDocument<DocType, TVirtuals & TInstanceMethods, QueryHelpers>,
20
+ TModelType = Model<DocType, QueryHelpers, TInstanceMethods, TVirtuals, THydratedDocumentType>
21
+ > {
22
+ /**
23
+ * By default, Mongoose's init() function creates all the indexes defined in your model's schema by
24
+ * calling Model.createIndexes() after you successfully connect to MongoDB. If you want to disable
25
+ * automatic index builds, you can set autoIndex to false.
26
+ */
27
+ autoIndex?: boolean;
28
+ /**
29
+ * Similar to autoIndex, except for automatically creates any Atlas search indexes defined in your
30
+ * schema. Unlike autoIndex, this option defaults to false.
31
+ */
32
+ autoSearchIndex?: boolean;
33
+ /**
34
+ * If set to `true`, Mongoose will call Model.createCollection() to create the underlying collection
35
+ * in MongoDB if autoCreate is set to true. Calling createCollection() sets the collection's default
36
+ * collation based on the collation option and establishes the collection as a capped collection if
37
+ * you set the capped schema option.
38
+ */
39
+ autoCreate?: boolean;
40
+ /**
41
+ * By default, mongoose buffers commands when the connection goes down until the driver manages to reconnect.
42
+ * To disable buffering, set bufferCommands to false.
43
+ */
44
+ bufferCommands?: boolean;
45
+ /**
46
+ * If bufferCommands is on, this option sets the maximum amount of time Mongoose buffering will wait before
47
+ * throwing an error. If not specified, Mongoose will use 10000 (10 seconds).
48
+ */
49
+ bufferTimeoutMS?: number;
50
+ /**
51
+ * Mongoose supports MongoDBs capped collections. To specify the underlying MongoDB collection be capped, set
52
+ * the capped option to the maximum size of the collection in bytes.
53
+ */
54
+ capped?: boolean | number | { size?: number; max?: number; autoIndexId?: boolean; };
55
+ /** Sets a default collation for every query and aggregation. */
56
+ collation?: mongodb.CollationOptions;
57
+
58
+ /** Arbitrary options passed to `createCollection()` */
59
+ collectionOptions?: mongodb.CreateCollectionOptions;
60
+
61
+ /** Default lean options for queries */
62
+ lean?: boolean | LeanOptions;
63
+
64
+ /** The timeseries option to use when creating the model's collection. */
65
+ timeseries?: mongodb.TimeSeriesCollectionOptions;
66
+
67
+ /** The number of seconds after which a document in a timeseries collection expires. */
68
+ expireAfterSeconds?: number;
69
+
70
+ /** The time after which a document in a timeseries collection expires. */
71
+ expires?: number | string;
72
+
73
+ /**
74
+ * Mongoose by default produces a collection name by passing the model name to the utils.toCollectionName
75
+ * method. This method pluralizes the name. Set this option if you need a different name for your collection.
76
+ */
77
+ collection?: string;
78
+ /**
79
+ * When you define a [discriminator](/docs/discriminators.html), Mongoose adds a path to your
80
+ * schema that stores which discriminator a document is an instance of. By default, Mongoose
81
+ * adds an `__t` path, but you can set `discriminatorKey` to overwrite this default.
82
+ *
83
+ * @default '__t'
84
+ */
85
+ discriminatorKey?: string;
86
+
87
+ /**
88
+ * Option for nested Schemas.
89
+ *
90
+ * If true, skip building indexes on this schema's path.
91
+ *
92
+ * @default false
93
+ */
94
+ excludeIndexes?: boolean;
95
+ /**
96
+ * Mongoose assigns each of your schemas an id virtual getter by default which returns the document's _id field
97
+ * cast to a string, or in the case of ObjectIds, its hexString.
98
+ */
99
+ id?: boolean;
100
+ /**
101
+ * Mongoose assigns each of your schemas an _id field by default if one is not passed into the Schema
102
+ * constructor. The type assigned is an ObjectId to coincide with MongoDB's default behavior. If you
103
+ * don't want an _id added to your schema at all, you may disable it using this option.
104
+ */
105
+ _id?: boolean;
106
+ /**
107
+ * Mongoose will, by default, "minimize" schemas by removing empty objects. This behavior can be
108
+ * overridden by setting minimize option to false. It will then store empty objects.
109
+ */
110
+ minimize?: boolean;
111
+ /**
112
+ * Optimistic concurrency is a strategy to ensure the document you're updating didn't change between when you
113
+ * loaded it using find() or findOne(), and when you update it using save(). Set to `true` to enable
114
+ * optimistic concurrency for all fields. Set to a string array to enable optimistic concurrency only for
115
+ * the specified fields; note that this **replaces** the default array versioning behavior. Set to
116
+ * `{ exclude: string[] }` to enable optimistic concurrency for all fields except the specified ones;
117
+ * this also **replaces** the default array versioning.
118
+ */
119
+ optimisticConcurrency?: boolean | string[] | { exclude: string[] };
120
+ /**
121
+ * If `plugin()` called with tags, Mongoose will only apply plugins to schemas that have
122
+ * a matching tag in `pluginTags`
123
+ */
124
+ pluginTags?: string[];
125
+ /**
126
+ * Allows setting query#read options at the schema level, providing us a way to apply default ReadPreferences
127
+ * to all queries derived from a model.
128
+ */
129
+ read?: string;
130
+ /**
131
+ * Set a default readConcern for all queries at the schema level
132
+ */
133
+ readConcern?: { level: 'local' | 'available' | 'majority' | 'snapshot' | 'linearizable' }
134
+ /** Allows setting write concern at the schema level. */
135
+ writeConcern?: WriteConcern;
136
+ /** defaults to true. */
137
+ safe?: boolean | { w?: number | string; wtimeout?: number; j?: boolean };
138
+ /**
139
+ * The shardKey option is used when we have a sharded MongoDB architecture. Each sharded collection is
140
+ * given a shard key which must be present in all insert/update operations. We just need to set this
141
+ * schema option to the same shard key and we'll be all set.
142
+ */
143
+ shardKey?: Record<string, unknown>;
144
+ /**
145
+ * The strict option, (enabled by default), ensures that values passed to our model constructor that were not
146
+ * specified in our schema do not get saved to the db.
147
+ */
148
+ strict?: boolean | 'throw';
149
+ /**
150
+ * equal to `strict` by default, may be `false`, `true`, or `'throw'`. Sets the default
151
+ * [strictQuery](https://mongoosejs.com/docs/guide.html#strictQuery) mode for schemas.
152
+ */
153
+ strictQuery?: boolean | 'throw';
154
+ /** Exactly the same as the toObject option but only applies when the document's toJSON method is called. */
155
+ toJSON?: ToObjectOptions<DocType, THydratedDocumentType>;
156
+ /**
157
+ * Documents have a toObject method which converts the mongoose document into a plain JavaScript object.
158
+ * This method accepts a few options. Instead of applying these options on a per-document basis, we may
159
+ * declare the options at the schema level and have them applied to all of the schema's documents by
160
+ * default.
161
+ */
162
+ toObject?: ToObjectOptions<DocType, THydratedDocumentType>;
163
+ /**
164
+ * By default, if you have an object with key 'type' in your schema, mongoose will interpret it as a
165
+ * type declaration. However, for applications like geoJSON, the 'type' property is important. If you want to
166
+ * control which key mongoose uses to find type declarations, set the 'typeKey' schema option.
167
+ */
168
+ typeKey?: string;
169
+
170
+ /**
171
+ * By default, documents are automatically validated before they are saved to the database. This is to
172
+ * prevent saving an invalid document. If you want to handle validation manually, and be able to save
173
+ * objects which don't pass validation, you can set validateBeforeSave to false.
174
+ */
175
+ validateBeforeSave?: boolean;
176
+ /**
177
+ * By default, validation will run on modified and required paths before saving to the database.
178
+ * You can choose to have Mongoose only validate modified paths by setting validateModifiedOnly to true.
179
+ */
180
+ validateModifiedOnly?: boolean;
181
+ /**
182
+ * The versionKey is a property set on each document when first created by Mongoose. This keys value
183
+ * contains the internal revision of the document. The versionKey option is a string that represents
184
+ * the path to use for versioning. The default is '__v'.
185
+ *
186
+ * @default '__v'
187
+ */
188
+ versionKey?: string | false;
189
+ /**
190
+ * By default, Mongoose will automatically select() any populated paths for you, unless you explicitly exclude them.
191
+ *
192
+ * @default true
193
+ */
194
+ selectPopulatedPaths?: boolean;
195
+ /**
196
+ * skipVersioning allows excluding paths from versioning (i.e., the internal revision will not be
197
+ * incremented even if these paths are updated). DO NOT do this unless you know what you're doing.
198
+ * For subdocuments, include this on the parent document using the fully qualified path.
199
+ */
200
+ skipVersioning?: { [key: string]: boolean; };
201
+ /**
202
+ * Validation errors in a single nested schema are reported
203
+ * both on the child and on the parent schema.
204
+ * Set storeSubdocValidationError to false on the child schema
205
+ * to make Mongoose only report the parent error.
206
+ */
207
+ storeSubdocValidationError?: boolean;
208
+ /**
209
+ * The timestamps option tells mongoose to assign createdAt and updatedAt fields to your schema. The type
210
+ * assigned is Date. By default, the names of the fields are createdAt and updatedAt. Customize the
211
+ * field names by setting timestamps.createdAt and timestamps.updatedAt.
212
+ */
213
+ timestamps?: boolean | SchemaTimestampsConfig;
214
+
215
+ /**
216
+ * Using `save`, `isNew`, and other Mongoose reserved names as schema path names now triggers a warning, not an error.
217
+ * You can suppress the warning by setting { suppressReservedKeysWarning: true } schema options. Keep in mind that this
218
+ * can break plugins that rely on these reserved names.
219
+ */
220
+ suppressReservedKeysWarning?: boolean,
221
+
222
+ /**
223
+ * Model Statics methods.
224
+ */
225
+ statics?: IfEquals<
226
+ TStaticMethods,
227
+ {},
228
+ { [name: string]: (this: TModelType, ...args: any[]) => unknown },
229
+ AddThisParameter<TStaticMethods, TModelType>
230
+ >
231
+
232
+ /**
233
+ * Document instance methods.
234
+ */
235
+ methods?: IfEquals<
236
+ TInstanceMethods,
237
+ {},
238
+ Record<any, (this: THydratedDocumentType, ...args: any) => unknown>,
239
+ AddThisParameter<TInstanceMethods, THydratedDocumentType> & AnyObject
240
+ >
241
+
242
+ /**
243
+ * Query helper functions.
244
+ */
245
+ query?: IfEquals<
246
+ QueryHelpers,
247
+ {},
248
+ Record<any, <T extends QueryWithHelpers<unknown, THydratedDocumentType, QueryHelpers, DocType>>(this: T, ...args: any) => T>,
249
+ QueryHelpers
250
+ >
251
+
252
+ /**
253
+ * Set whether to cast non-array values to arrays.
254
+ * @default true
255
+ */
256
+ castNonArrays?: boolean;
257
+
258
+ /**
259
+ * Virtual paths.
260
+ */
261
+ virtuals?: SchemaOptionsVirtualsPropertyType<DocType, TVirtuals, TInstanceMethods>,
262
+
263
+ /**
264
+ * Set to `true` to default to overwriting models with the same name when calling `mongoose.model()`, as opposed to throwing an `OverwriteModelError`.
265
+ * @default false
266
+ */
267
+ overwriteModels?: boolean;
268
+
269
+ /**
270
+ * Required when the schema is encrypted.
271
+ */
272
+ encryptionType?: 'csfle' | 'queryableEncryption';
273
+ }
274
+
275
+ interface DefaultSchemaOptions {
276
+ typeKey: 'type';
277
+ id: true;
278
+ _id: true;
279
+ timestamps: false;
280
+ versionKey: '__v'
281
+ }
282
+ }