@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,228 @@
1
+ declare module 'mongoose' {
2
+ import stream = require('stream');
3
+
4
+ interface MongooseOptions {
5
+ /**
6
+ * Set to `true` to set `allowDiskUse` to true to all aggregation operations by default.
7
+ *
8
+ * @default false
9
+ */
10
+ allowDiskUse?: boolean;
11
+ /**
12
+ * Set to `false` to skip applying global plugins to child schemas.
13
+ *
14
+ * @default true
15
+ */
16
+ applyPluginsToChildSchemas?: boolean;
17
+
18
+ /**
19
+ * Set to `true` to apply global plugins to discriminator schemas.
20
+ * This typically isn't necessary because plugins are applied to the base schema and
21
+ * discriminators copy all middleware, methods, statics, and properties from the base schema.
22
+ *
23
+ * @default false
24
+ */
25
+ applyPluginsToDiscriminators?: boolean;
26
+
27
+ /**
28
+ * autoCreate is `true` by default unless readPreference is secondary or secondaryPreferred,
29
+ * which means Mongoose will attempt to create every model's underlying collection before
30
+ * creating indexes. If readPreference is secondary or secondaryPreferred, Mongoose will
31
+ * default to false for both autoCreate and autoIndex because both createCollection() and
32
+ * createIndex() will fail when connected to a secondary.
33
+ */
34
+ autoCreate?: boolean;
35
+
36
+ /**
37
+ * Set to `false` to disable automatic index creation for all models associated with this Mongoose instance.
38
+ *
39
+ * @default true
40
+ */
41
+ autoIndex?: boolean;
42
+
43
+ /**
44
+ * enable/disable mongoose's buffering mechanism for all connections and models.
45
+ *
46
+ * @default true
47
+ */
48
+ bufferCommands?: boolean;
49
+
50
+ /**
51
+ * If bufferCommands is on, this option sets the maximum amount of time Mongoose
52
+ * buffering will wait before throwing an error.
53
+ * If not specified, Mongoose will use 10000 (10 seconds).
54
+ *
55
+ * @default 10000
56
+ */
57
+ bufferTimeoutMS?: number;
58
+
59
+ /**
60
+ * Set to `true` to `clone()` all schemas before compiling into a model.
61
+ *
62
+ * @default false
63
+ */
64
+ cloneSchemas?: boolean;
65
+
66
+ /**
67
+ * Set to `false` to disable the creation of the initial default connection.
68
+ *
69
+ * @default true
70
+ */
71
+ createInitialConnection?: boolean;
72
+
73
+ /**
74
+ * If `true`, prints the operations mongoose sends to MongoDB to the console.
75
+ * If a writable stream is passed, it will log to that stream, without colorization.
76
+ * If a callback function is passed, it will receive the collection name, the method
77
+ * name, then all arguments passed to the method. For example, if you wanted to
78
+ * replicate the default logging, you could output from the callback
79
+ * `Mongoose: ${collectionName}.${methodName}(${methodArgs.join(', ')})`.
80
+ *
81
+ * @default false
82
+ */
83
+ debug?:
84
+ | boolean
85
+ | { color?: boolean; shell?: boolean; }
86
+ | stream.Writable
87
+ | ((collectionName: string, methodName: string, ...methodArgs: any[]) => void);
88
+
89
+ /**
90
+ * If `true`, adds a `id` virtual to all schemas unless overwritten on a per-schema basis.
91
+ * @defaultValue true
92
+ */
93
+ id?: boolean;
94
+
95
+ /**
96
+ * If `false`, it will change the `createdAt` field to be [`immutable: false`](https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-immutable)
97
+ * which means you can update the `createdAt`.
98
+ *
99
+ * @default true
100
+ */
101
+ 'timestamps.createdAt.immutable'?: boolean
102
+
103
+ /** If set, attaches [maxTimeMS](https://www.mongodb.com/docs/manual/reference/operator/meta/maxTimeMS/) to every query */
104
+ maxTimeMS?: number;
105
+
106
+ /**
107
+ * Mongoose adds a getter to MongoDB ObjectId's called `_id` that
108
+ * returns `this` for convenience with populate. Set this to false to remove the getter.
109
+ *
110
+ * @default true
111
+ */
112
+ objectIdGetter?: boolean;
113
+
114
+ /**
115
+ * Set to `true` to default to overwriting models with the same name when calling
116
+ * `mongoose.model()`, as opposed to throwing an `OverwriteModelError`.
117
+ *
118
+ * @default false
119
+ */
120
+ overwriteModels?: boolean;
121
+
122
+ /**
123
+ * If `false`, changes the default `returnOriginal` option to `findOneAndUpdate()`,
124
+ * `findByIdAndUpdate`, and `findOneAndReplace()` to false. This is equivalent to
125
+ * setting the `new` option to `true` for `findOneAndX()` calls by default. Read our
126
+ * `findOneAndUpdate()` [tutorial](https://mongoosejs.com/docs/tutorials/findoneandupdate.html)
127
+ * for more information.
128
+ *
129
+ * @default true
130
+ */
131
+ returnOriginal?: boolean;
132
+
133
+ /**
134
+ * Set to true to enable [update validators](
135
+ * https://mongoosejs.com/docs/validation.html#update-validators
136
+ * ) for all validators by default.
137
+ *
138
+ * @default false
139
+ */
140
+ runValidators?: boolean;
141
+
142
+ /**
143
+ * Sanitizes query filters against [query selector injection attacks](
144
+ * https://thecodebarbarian.com/2014/09/04/defending-against-query-selector-injection-attacks.html
145
+ * ) by wrapping any nested objects that have a property whose name starts with $ in a $eq.
146
+ */
147
+ sanitizeFilter?: boolean;
148
+
149
+ sanitizeProjection?: boolean;
150
+
151
+ /**
152
+ * Set to false to opt out of Mongoose adding all fields that you `populate()`
153
+ * to your `select()`. The schema-level option `selectPopulatedPaths` overwrites this one.
154
+ *
155
+ * @default true
156
+ */
157
+ selectPopulatedPaths?: boolean;
158
+
159
+ /**
160
+ * Mongoose also sets defaults on update() and findOneAndUpdate() when the upsert option is
161
+ * set by adding your schema's defaults to a MongoDB $setOnInsert operator. You can disable
162
+ * this behavior by setting the setDefaultsOnInsert option to false.
163
+ *
164
+ * @default true
165
+ */
166
+ setDefaultsOnInsert?: boolean;
167
+
168
+ /**
169
+ * Sets the default strict mode for schemas.
170
+ * May be `false`, `true`, or `'throw'`.
171
+ *
172
+ * @default true
173
+ */
174
+ strict?: boolean | 'throw';
175
+
176
+ /**
177
+ * Set to `false` to allow populating paths that aren't in the schema.
178
+ *
179
+ * @default true
180
+ */
181
+ strictPopulate?: boolean;
182
+
183
+ /**
184
+ * Sets the default [strictQuery](https://mongoosejs.com/docs/guide.html#strictQuery) mode for schemas.
185
+ * May be `false`, `true`, or `'throw'`.
186
+ *
187
+ * @default false
188
+ */
189
+ strictQuery?: boolean | 'throw';
190
+
191
+ /**
192
+ * Overwrites default objects to `toJSON()`, for determining how Mongoose
193
+ * documents get serialized by `JSON.stringify()`
194
+ *
195
+ * @default { transform: true, flattenDecimals: true }
196
+ */
197
+ toJSON?: ToObjectOptions;
198
+
199
+ /**
200
+ * Overwrites default objects to `toObject()`
201
+ *
202
+ * @default { transform: true, flattenDecimals: true }
203
+ */
204
+ toObject?: ToObjectOptions;
205
+
206
+ /**
207
+ * Set to true to make Mongoose use Node.js' built-in AsyncLocalStorage (Node >= 16.0.0)
208
+ * to set `session` option on all operations within a `connection.transaction(fn)` call
209
+ * by default. Defaults to false.
210
+ */
211
+ transactionAsyncLocalStorage?: boolean;
212
+
213
+ /**
214
+ * If `true`, convert any aliases in filter, projection, update, and distinct
215
+ * to their database property names. Defaults to false.
216
+ */
217
+ translateAliases?: boolean;
218
+
219
+ /**
220
+ * If `true`, allows passing update pipelines (arrays) to update operations by default
221
+ * without explicitly setting `updatePipeline: true` in each query. This is the global
222
+ * default for the `updatePipeline` query option.
223
+ *
224
+ * @default false
225
+ */
226
+ updatePipeline?: boolean;
227
+ }
228
+ }
@@ -0,0 +1,333 @@
1
+ declare module 'mongoose' {
2
+ /**
3
+ * [Stages reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/#aggregation-pipeline-stages)
4
+ */
5
+ export type PipelineStage =
6
+ | PipelineStage.AddFields
7
+ | PipelineStage.Bucket
8
+ | PipelineStage.BucketAuto
9
+ | PipelineStage.CollStats
10
+ | PipelineStage.Count
11
+ | PipelineStage.Densify
12
+ | PipelineStage.Documents
13
+ | PipelineStage.Facet
14
+ | PipelineStage.Fill
15
+ | PipelineStage.GeoNear
16
+ | PipelineStage.GraphLookup
17
+ | PipelineStage.Group
18
+ | PipelineStage.IndexStats
19
+ | PipelineStage.Limit
20
+ | PipelineStage.ListSessions
21
+ | PipelineStage.Lookup
22
+ | PipelineStage.Match
23
+ | PipelineStage.Merge
24
+ | PipelineStage.Out
25
+ | PipelineStage.PlanCacheStats
26
+ | PipelineStage.Project
27
+ | PipelineStage.Redact
28
+ | PipelineStage.ReplaceRoot
29
+ | PipelineStage.ReplaceWith
30
+ | PipelineStage.Sample
31
+ | PipelineStage.Search
32
+ | PipelineStage.SearchMeta
33
+ | PipelineStage.Set
34
+ | PipelineStage.SetWindowFields
35
+ | PipelineStage.Skip
36
+ | PipelineStage.Sort
37
+ | PipelineStage.SortByCount
38
+ | PipelineStage.UnionWith
39
+ | PipelineStage.Unset
40
+ | PipelineStage.Unwind
41
+ | PipelineStage.VectorSearch;
42
+
43
+ export namespace PipelineStage {
44
+ export interface AddFields {
45
+ /** [`$addFields` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/) */
46
+ $addFields: Record<string, AnyExpression>
47
+ }
48
+
49
+ export interface Bucket {
50
+ /** [`$bucket` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/) */
51
+ $bucket: {
52
+ groupBy: Expression;
53
+ boundaries: any[];
54
+ default?: any
55
+ output?: Record<string, AccumulatorOperator>
56
+ }
57
+ }
58
+
59
+ export interface BucketAuto {
60
+ /** [`$bucketAuto` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/) */
61
+ $bucketAuto: {
62
+ groupBy: Expression | Record<string, Expression>;
63
+ buckets: number;
64
+ output?: Record<string, AccumulatorOperator>;
65
+ granularity?: 'R5' | 'R10' | 'R20' | 'R40' | 'R80' | '1-2-5' | 'E6' | 'E12' | 'E24' | 'E48' | 'E96' | 'E192' | 'POWERSOF2';
66
+ }
67
+ }
68
+
69
+ export interface CollStats {
70
+ /** [`$collStats` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/) */
71
+ $collStats: {
72
+ latencyStats?: { histograms?: boolean };
73
+ storageStats?: { scale?: number };
74
+ count?: Record<string | number | symbol, never>;
75
+ queryExecStats?: Record<string | number | symbol, never>;
76
+ }
77
+ }
78
+
79
+ export interface Count {
80
+ /** [`$count` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/) */
81
+ $count: string;
82
+ }
83
+
84
+ export interface Densify{
85
+ /** [`$densify` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/) */
86
+ $densify: {
87
+ field: string,
88
+ partitionByFields?: string[],
89
+ range: {
90
+ step: number,
91
+ unit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year',
92
+ bounds: number[] | globalThis.Date[] | 'full' | 'partition'
93
+ }
94
+ }
95
+ }
96
+
97
+ export interface Documents {
98
+ /** [`$documents` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/) */
99
+ $documents: Record<string, Expression>[]
100
+ }
101
+
102
+ export interface Fill {
103
+ /** [`$fill` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/) */
104
+ $fill: {
105
+ partitionBy?: Expression,
106
+ partitionByFields?: string[],
107
+ sortBy?: Record<string, 1 | -1>,
108
+ output: Record<string, { value: Expression } | { method: 'linear' | 'locf' }>
109
+ }
110
+ }
111
+
112
+ export interface Facet {
113
+ /** [`$facet` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/) */
114
+ $facet: Record<string, FacetPipelineStage[]>;
115
+ }
116
+
117
+ export type FacetPipelineStage = Exclude<PipelineStage, PipelineStage.CollStats | PipelineStage.Facet | PipelineStage.GeoNear | PipelineStage.IndexStats | PipelineStage.Out | PipelineStage.Merge | PipelineStage.PlanCacheStats>;
118
+
119
+ export interface GeoNear {
120
+ /** [`$geoNear` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/) */
121
+ $geoNear: {
122
+ near: { type: 'Point'; coordinates: [number, number] } | [number, number];
123
+ distanceField: string;
124
+ distanceMultiplier?: number;
125
+ includeLocs?: string;
126
+ key?: string;
127
+ maxDistance?: number;
128
+ minDistance?: number;
129
+ query?: AnyObject;
130
+ spherical?: boolean;
131
+ /**
132
+ * Deprecated. Use only with MondoDB below 4.2 (removed in 4.2)
133
+ * @deprecated
134
+ */
135
+ num?: number;
136
+ }
137
+ }
138
+
139
+ export interface GraphLookup {
140
+ /** [`$graphLookup` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/) */
141
+ $graphLookup: {
142
+ from: string;
143
+ startWith: any
144
+ connectFromField: string;
145
+ connectToField: string;
146
+ as: string;
147
+ maxDepth?: number;
148
+ depthField?: string;
149
+ restrictSearchWithMatch?: AnyObject;
150
+ }
151
+ }
152
+
153
+ export interface Group {
154
+ /** [`$group` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/group) */
155
+ $group: { _id: any } | { [key: string]: AccumulatorOperator }
156
+ }
157
+
158
+ export interface IndexStats {
159
+ /** [`$indexStats` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/) */
160
+ $indexStats: Record<string | number | symbol, never>;
161
+ }
162
+
163
+ export interface Limit {
164
+ /** [`$limit` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/) */
165
+ $limit: number
166
+ }
167
+
168
+ export interface ListSessions {
169
+ /** [`$listSessions` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/) */
170
+ $listSessions: { users?: { user: string; db: string }[] } | { allUsers?: true }
171
+ }
172
+
173
+ export interface Lookup {
174
+ /** [`$lookup` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) */
175
+ $lookup: {
176
+ from: string
177
+ as: string
178
+ localField?: string
179
+ foreignField?: string
180
+ let?: Record<string, any>
181
+ pipeline?: Exclude<PipelineStage, PipelineStage.Merge | PipelineStage.Out>[]
182
+ }
183
+ }
184
+
185
+ export interface Match {
186
+ /** [`$match` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/) */
187
+ $match: QueryFilter<any>;
188
+ }
189
+
190
+ export interface Merge {
191
+ /** [`$merge` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/) */
192
+ $merge: {
193
+ into: string | { db: string; coll: string }
194
+ on?: string | string[]
195
+ let?: Record<string, Expression>
196
+ whenMatched?: 'replace' | 'keepExisting' | 'merge' | 'fail' | Extract<PipelineStage, PipelineStage.AddFields | PipelineStage.Set | PipelineStage.Project | PipelineStage.Unset | PipelineStage.ReplaceRoot | PipelineStage.ReplaceWith>[]
197
+ whenNotMatched?: 'insert' | 'discard' | 'fail'
198
+ }
199
+ }
200
+
201
+ export interface Out {
202
+ /** [`$out` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/) */
203
+ $out: string | { db: string; coll: string }
204
+ }
205
+
206
+ export interface PlanCacheStats {
207
+ /** [`$planCacheStats` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/) */
208
+ $planCacheStats: Record<string | number | symbol, never>
209
+ }
210
+
211
+ export interface Project {
212
+ /** [`$project` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/) */
213
+ $project: { [field: string]: AnyExpression | Expression | Project['$project'] }
214
+ }
215
+
216
+ export interface Redact {
217
+ /** [`$redact` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/) */
218
+ $redact: Expression;
219
+ }
220
+
221
+ export interface ReplaceRoot {
222
+ /** [`$replaceRoot` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/) */
223
+ $replaceRoot: { newRoot: AnyExpression }
224
+ }
225
+
226
+ export interface ReplaceWith {
227
+ /** [`$replaceWith` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/) */
228
+ $replaceWith: ObjectExpressionOperator | { [field: string]: Expression } | `$${string}`;
229
+ }
230
+
231
+ export interface Sample {
232
+ /** [`$sample` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/) */
233
+ $sample: { size: number }
234
+ }
235
+
236
+ export interface Search {
237
+ /** [`$search` reference](https://www.mongodb.com/docs/atlas/atlas-search/query-syntax/) */
238
+ $search: {
239
+ index?: string;
240
+ highlight?: {
241
+ /** [`highlightPath` reference](https://docs.atlas.mongodb.com/atlas-search/path-construction/#multiple-field-search) */
242
+ path: string | string[] | { value: string, multi: string };
243
+ maxCharsToExamine?: number;
244
+ maxNumPassages?: number;
245
+ };
246
+ [operator: string]: any;
247
+ }
248
+ }
249
+
250
+ export interface SearchMeta {
251
+ /** [`$searchMeta` reference](https://www.mongodb.com/docs/atlas/atlas-search/query-syntax/#mongodb-pipeline-pipe.-searchMeta) */
252
+ $searchMeta: {
253
+ index?: string;
254
+ highlight?: {
255
+ /** [`highlightPath` reference](https://docs.atlas.mongodb.com/atlas-search/path-construction/#multiple-field-search) */
256
+ path: string | string[] | { value: string, multi: string };
257
+ maxCharsToExamine?: number;
258
+ maxNumPassages?: number;
259
+ };
260
+ [operator: string]: any;
261
+ }
262
+ }
263
+
264
+ export interface Set {
265
+ /** [`$set` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/) */
266
+ $set: Record<string, AnyExpression | any>
267
+ }
268
+
269
+ export interface SetWindowFields {
270
+ /** [`$setWindowFields` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/) */
271
+ $setWindowFields: {
272
+ partitionBy?: any
273
+ sortBy?: Record<string, 1 | -1>
274
+ output: Record<
275
+ string,
276
+ WindowOperator & {
277
+ window?: {
278
+ documents?: [string | number, string | number]
279
+ range?: [string | number, string | number]
280
+ unit?: 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond'
281
+ }
282
+ }
283
+ >
284
+ }
285
+ }
286
+
287
+ export interface Skip {
288
+ /** [`$skip` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/) */
289
+ $skip: number
290
+ }
291
+
292
+ export interface Sort {
293
+ /** [`$sort` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/) */
294
+ $sort: Record<string, 1 | -1 | Expression.Meta>
295
+ }
296
+
297
+ export interface SortByCount {
298
+ /** [`$sortByCount` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/) */
299
+ $sortByCount: Expression;
300
+ }
301
+
302
+ export interface UnionWith {
303
+ /** [`$unionWith` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/) */
304
+ $unionWith:
305
+ | string
306
+ | { coll: string; pipeline?: Exclude<PipelineStage, PipelineStage.Out | PipelineStage.Merge>[] }
307
+ | { coll?: string; pipeline: Exclude<PipelineStage, PipelineStage.Out | PipelineStage.Merge>[] }
308
+ }
309
+
310
+ export interface Unset {
311
+ /** [`$unset` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/) */
312
+ $unset: string | string[]
313
+ }
314
+
315
+ export interface Unwind {
316
+ /** [`$unwind` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/) */
317
+ $unwind: string | { path: string; includeArrayIndex?: string; preserveNullAndEmptyArrays?: boolean }
318
+ }
319
+ export interface VectorSearch {
320
+ /** [`$vectorSearch` reference](https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/) */
321
+ $vectorSearch: {
322
+ exact?: boolean;
323
+ index: string,
324
+ path: string,
325
+ queryVector: number[],
326
+ numCandidates?: number,
327
+ limit: number,
328
+ filter?: Expression,
329
+ }
330
+ }
331
+
332
+ }
333
+ }
@@ -0,0 +1,53 @@
1
+ declare module 'mongoose' {
2
+
3
+ /**
4
+ * Reference another Model
5
+ */
6
+ type PopulatedDoc<
7
+ PopulatedType,
8
+ RawId extends RefType = (PopulatedType extends { _id?: RefType; } ? NonNullable<PopulatedType['_id']> : Types.ObjectId) | undefined
9
+ > = PopulatedType | RawId;
10
+
11
+ interface PopulateOptions {
12
+ /** space delimited path(s) to populate */
13
+ path: string;
14
+ /** fields to select */
15
+ select?: any;
16
+ /** query conditions to match */
17
+ match?: any;
18
+ /** optional model to use for population */
19
+ model?: string | Model<any>;
20
+ /** optional query options like sort, limit, etc */
21
+ options?: QueryOptions;
22
+ /** correct limit on populated array */
23
+ perDocumentLimit?: number;
24
+ /** optional boolean, set to `false` to allow populating paths that aren't in the schema */
25
+ strictPopulate?: boolean;
26
+ /** deep populate */
27
+ populate?: string | PopulateOptions | (string | PopulateOptions)[];
28
+ /**
29
+ * If true Mongoose will always set `path` to a document, or `null` if no document was found.
30
+ * If false Mongoose will always set `path` to an array, which will be empty if no documents are found.
31
+ * Inferred from schema by default.
32
+ */
33
+ justOne?: boolean;
34
+ /** transform function to call on every populated doc */
35
+ transform?: (doc: any, id: any) => any;
36
+ /** Overwrite the schema-level local field to populate on if this is a populated virtual. */
37
+ localField?: string;
38
+ /** Overwrite the schema-level foreign field to populate on if this is a populated virtual. */
39
+ foreignField?: string;
40
+ /** Set to `false` to prevent Mongoose from repopulating paths that are already populated */
41
+ forceRepopulate?: boolean;
42
+ /**
43
+ * Set to `true` to execute any populate queries one at a time, as opposed to in parallel.
44
+ * We recommend setting this option to `true` if using transactions, especially if also populating multiple paths or paths with multiple models.
45
+ * MongoDB server does **not** support multiple operations in parallel on a single transaction.
46
+ */
47
+ ordered?: boolean;
48
+ }
49
+
50
+ interface PopulateOption {
51
+ populate?: string | string[] | PopulateOptions | PopulateOptions[];
52
+ }
53
+ }