@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,297 @@
1
+ declare module 'mongoose' {
2
+ import mongodb = require('mongodb');
3
+ import events = require('events');
4
+
5
+ /** The Mongoose module's default connection. Equivalent to `mongoose.connections[0]`, see [`connections`](#mongoose_Mongoose-connections). */
6
+ const connection: Connection;
7
+
8
+ /** An array containing all connections associated with this Mongoose instance. */
9
+ const connections: Connection[];
10
+
11
+ /** Opens Mongoose's default connection to MongoDB, see [connections docs](https://mongoosejs.com/docs/connections.html) */
12
+ function connect(uri: string, options?: ConnectOptions): Promise<Mongoose>;
13
+
14
+ /** Creates a Connection instance. */
15
+ function createConnection(uri: string, options?: ConnectOptions): Connection;
16
+ function createConnection(): Connection;
17
+
18
+ function disconnect(): Promise<void>;
19
+
20
+ /**
21
+ * Connection ready state
22
+ *
23
+ * - 0 = disconnected
24
+ * - 1 = connected
25
+ * - 2 = connecting
26
+ * - 3 = disconnecting
27
+ * - 99 = uninitialized
28
+ */
29
+ enum ConnectionStates {
30
+ disconnected = 0,
31
+ connected = 1,
32
+ connecting = 2,
33
+ disconnecting = 3,
34
+ uninitialized = 99,
35
+ }
36
+
37
+ /** Expose connection states for user-land */
38
+ const STATES: typeof ConnectionStates;
39
+
40
+ interface ConnectOptions extends mongodb.MongoClientOptions {
41
+ /** Set to false to [disable buffering](http://mongoosejs.com/docs/faq.html#callback_never_executes) on all models associated with this connection. */
42
+ bufferCommands?: boolean;
43
+ /** The name of the database you want to use. If not provided, Mongoose uses the database name from connection string. */
44
+ dbName?: string;
45
+ /** username for authentication, equivalent to `options.auth.user`. Maintained for backwards compatibility. */
46
+ user?: string;
47
+ /** password for authentication, equivalent to `options.auth.password`. Maintained for backwards compatibility. */
48
+ pass?: string;
49
+ /** Set to false to disable automatic index creation for all models associated with this connection. */
50
+ autoIndex?: boolean;
51
+ /** Set to `false` to disable Mongoose automatically calling `createCollection()` on every model created on this connection. */
52
+ autoCreate?: boolean;
53
+ /**
54
+ * Sanitizes query filters against [query selector injection attacks](
55
+ * https://thecodebarbarian.com/2014/09/04/defending-against-query-selector-injection-attacks.html
56
+ * ) by wrapping any nested objects that have a property whose name starts with $ in a $eq.
57
+ */
58
+ sanitizeFilter?: boolean;
59
+ }
60
+
61
+ export type AnyConnectionBulkWriteModel<TSchema extends AnyObject> = Omit<mongodb.ClientInsertOneModel<TSchema>, 'namespace'>
62
+ | Omit<mongodb.ClientReplaceOneModel<TSchema>, 'namespace'>
63
+ | Omit<mongodb.ClientUpdateOneModel<TSchema>, 'namespace'>
64
+ | Omit<mongodb.ClientUpdateManyModel<TSchema>, 'namespace'>
65
+ | Omit<mongodb.ClientDeleteOneModel<TSchema>, 'namespace'>
66
+ | Omit<mongodb.ClientDeleteManyModel<TSchema>, 'namespace'>;
67
+
68
+ export type ConnectionBulkWriteModel<SchemaMap extends Record<string, AnyObject> = Record<string, AnyObject>> = {
69
+ [ModelName in keyof SchemaMap]: AnyConnectionBulkWriteModel<SchemaMap[ModelName]> & {
70
+ model: ModelName;
71
+ };
72
+ }[keyof SchemaMap];
73
+
74
+ class Connection extends events.EventEmitter implements SessionStarter {
75
+ /** Runs a [db-level aggregate()](https://www.mongodb.com/docs/manual/reference/method/db.aggregate/) on this connection's underlying `db` */
76
+ aggregate<ResultType = unknown>(pipeline?: PipelineStage[] | null, options?: AggregateOptions): Aggregate<Array<ResultType>>;
77
+
78
+ /** Returns a promise that resolves when this connection successfully connects to MongoDB */
79
+ asPromise(): Promise<this>;
80
+
81
+ /** The Mongoose instance this connection is associated with */
82
+ base: Mongoose;
83
+
84
+ bulkWrite<TSchemaMap extends Record<string, AnyObject>>(
85
+ ops: Array<ConnectionBulkWriteModel<TSchemaMap>>,
86
+ options: mongodb.ClientBulkWriteOptions & { ordered: false }
87
+ ): Promise<mongodb.ClientBulkWriteResult & { mongoose?: { validationErrors: Error[], results: Array<Error | mongodb.WriteError | null> } }>;
88
+ bulkWrite<TSchemaMap extends Record<string, AnyObject>>(
89
+ ops: Array<ConnectionBulkWriteModel<TSchemaMap>>,
90
+ options?: mongodb.ClientBulkWriteOptions
91
+ ): Promise<mongodb.ClientBulkWriteResult>;
92
+
93
+ /** Closes the connection */
94
+ close(force?: boolean): Promise<void>;
95
+
96
+ /** Closes and destroys the connection. Connection once destroyed cannot be reopened */
97
+ destroy(force?: boolean): Promise<void>;
98
+
99
+ /** Retrieves a collection, creating it if not cached. */
100
+ collection<T extends AnyObject = AnyObject>(name: string, options?: mongodb.CreateCollectionOptions): Collection<T>;
101
+
102
+ /** A hash of the collections associated with this connection */
103
+ readonly collections: { [index: string]: Collection };
104
+
105
+ /** A hash of the global options that are associated with this connection */
106
+ readonly config: any;
107
+
108
+ /** The mongodb.Db instance, set when the connection is opened */
109
+ readonly db: mongodb.Db | undefined;
110
+
111
+ /**
112
+ * Helper for `createCollection()`. Will explicitly create the given collection
113
+ * with specified options. Used to create [capped collections](https://www.mongodb.com/docs/manual/core/capped-collections/)
114
+ * and [views](https://www.mongodb.com/docs/manual/core/views/) from mongoose.
115
+ */
116
+ createCollection<T extends AnyObject = AnyObject>(name: string, options?: mongodb.CreateCollectionOptions): Promise<mongodb.Collection<T>>;
117
+
118
+ /**
119
+ * https://mongoosejs.com/docs/api/connection.html#Connection.prototype.createCollections()
120
+ */
121
+ createCollections(continueOnError?: boolean): Promise<Record<string, Error | mongodb.Collection<any>>>;
122
+
123
+ /**
124
+ * Removes the model named `name` from this connection, if it exists. You can
125
+ * use this function to clean up any models you created in your tests to
126
+ * prevent OverwriteModelErrors.
127
+ */
128
+ deleteModel(name: string | RegExp): this;
129
+
130
+ /**
131
+ * Helper for `dropCollection()`. Will delete the given collection, including
132
+ * all documents and indexes.
133
+ */
134
+ dropCollection(collection: string): Promise<void>;
135
+
136
+ /**
137
+ * Helper for `dropDatabase()`. Deletes the given database, including all
138
+ * collections, documents, and indexes.
139
+ */
140
+ dropDatabase(): Promise<void>;
141
+
142
+ /** Gets the value of the option `key`. */
143
+ get(key: string): any;
144
+
145
+ /**
146
+ * Returns the [MongoDB driver `MongoClient`](https://mongodb.github.io/node-mongodb-native/4.9/classes/MongoClient.html) instance
147
+ * that this connection uses to talk to MongoDB.
148
+ */
149
+ getClient(): mongodb.MongoClient;
150
+
151
+ /**
152
+ * The host name portion of the URI. If multiple hosts, such as a replica set,
153
+ * this will contain the first host name in the URI
154
+ */
155
+ readonly host: string;
156
+
157
+ /**
158
+ * A number identifier for this connection. Used for debugging when
159
+ * you have [multiple connections](/docs/connections.html#multiple_connections).
160
+ */
161
+ readonly id: number;
162
+
163
+ /**
164
+ * Helper for MongoDB Node driver's `listCollections()`.
165
+ * Returns an array of collection names.
166
+ */
167
+ listCollections(): Promise<Pick<mongodb.CollectionInfo, 'name' | 'type'>[]>;
168
+
169
+ /**
170
+ * Helper for MongoDB Node driver's `listDatabases()`.
171
+ * Returns an array of database names.
172
+ */
173
+ listDatabases(): Promise<mongodb.ListDatabasesResult>;
174
+
175
+ /**
176
+ * A [POJO](https://masteringjs.io/tutorials/fundamentals/pojo) containing
177
+ * a map from model names to models. Contains all models that have been
178
+ * added to this connection using [`Connection#model()`](/docs/api/connection.html#connection_Connection-model).
179
+ */
180
+ readonly models: Readonly<{ [index: string]: Model<any> }>;
181
+
182
+ /** Defines or retrieves a model. */
183
+ model<TSchema extends Schema = any>(
184
+ name: string,
185
+ schema?: TSchema,
186
+ collection?: string,
187
+ options?: CompileModelOptions
188
+ ): Model<
189
+ InferSchemaType<TSchema>,
190
+ ObtainSchemaGeneric<TSchema, 'TQueryHelpers'>,
191
+ ObtainSchemaGeneric<TSchema, 'TInstanceMethods'>,
192
+ ObtainSchemaGeneric<TSchema, 'TVirtuals'>,
193
+ // If first schema generic param is set, that means we have an explicit raw doc type,
194
+ // so user should also specify a hydrated doc type if the auto inferred one isn't correct.
195
+ IsItRecordAndNotAny<ObtainSchemaGeneric<TSchema, 'EnforcedDocType'>> extends true
196
+ ? ObtainSchemaGeneric<TSchema, 'THydratedDocumentType'>
197
+ : HydratedDocument<
198
+ InferSchemaType<TSchema>,
199
+ ObtainSchemaGeneric<TSchema, 'TVirtuals'> & ObtainSchemaGeneric<TSchema, 'TInstanceMethods'>,
200
+ ObtainSchemaGeneric<TSchema, 'TQueryHelpers'>,
201
+ ObtainSchemaGeneric<TSchema, 'TVirtuals'>,
202
+ InferSchemaType<TSchema>,
203
+ ObtainSchemaGeneric<TSchema, 'TSchemaOptions'>
204
+ >,
205
+ TSchema,
206
+ ObtainSchemaGeneric<TSchema, 'TLeanResultType'>
207
+ > & ObtainSchemaGeneric<TSchema, 'TStaticMethods'>;
208
+ model<T, U, TQueryHelpers = {}>(
209
+ name: string,
210
+ schema?: Schema<T, any, any, TQueryHelpers, any, any, any>,
211
+ collection?: string,
212
+ options?: CompileModelOptions
213
+ ): U;
214
+ model<T>(name: string, schema?: Schema<T, any, any>, collection?: string, options?: CompileModelOptions): Model<T>;
215
+
216
+ /** Returns an array of model names created on this connection. */
217
+ modelNames(): Array<string>;
218
+
219
+ /** The name of the database this connection points to. */
220
+ readonly name: string;
221
+
222
+ /** Opens the connection with a URI using `MongoClient.connect()`. */
223
+ openUri(uri: string, options?: ConnectOptions): Promise<Connection>;
224
+
225
+ /** The password specified in the URI */
226
+ readonly pass: string;
227
+
228
+ /**
229
+ * The port portion of the URI. If multiple hosts, such as a replica set,
230
+ * this will contain the port from the first host name in the URI.
231
+ */
232
+ readonly port: number;
233
+
234
+ /** Declares a plugin executed on all schemas you pass to `conn.model()` */
235
+ plugin<S extends Schema = Schema, O = AnyObject>(fn: (schema: S, opts?: any) => void, opts?: O): Connection;
236
+
237
+ /** The plugins that will be applied to all models created on this connection. */
238
+ plugins: Array<any>;
239
+
240
+ /**
241
+ * Connection ready state
242
+ *
243
+ * - 0 = disconnected
244
+ * - 1 = connected
245
+ * - 2 = connecting
246
+ * - 3 = disconnecting
247
+ * - 99 = uninitialized
248
+ */
249
+ readonly readyState: ConnectionStates;
250
+
251
+ /** Sets the value of the option `key`. */
252
+ set(key: string, value: any): any;
253
+
254
+ /**
255
+ * Set the [MongoDB driver `MongoClient`](https://mongodb.github.io/node-mongodb-native/4.9/classes/MongoClient.html) instance
256
+ * that this connection uses to talk to MongoDB. This is useful if you already have a MongoClient instance, and want to
257
+ * reuse it.
258
+ */
259
+ setClient(client: mongodb.MongoClient): this;
260
+
261
+ /**
262
+ * _Requires MongoDB >= 3.6.0._ Starts a [MongoDB session](https://www.mongodb.com/docs/manual/release-notes/3.6/#client-sessions)
263
+ * for benefits like causal consistency, [retryable writes](https://www.mongodb.com/docs/manual/core/retryable-writes/),
264
+ * and [transactions](http://thecodebarbarian.com/a-node-js-perspective-on-mongodb-4-transactions.html).
265
+ */
266
+ startSession(options?: ClientSessionOptions): Promise<ClientSession>;
267
+
268
+ /**
269
+ * Makes the indexes in MongoDB match the indexes defined in every model's
270
+ * schema. This function will drop any indexes that are not defined in
271
+ * the model's schema except the `_id` index, and build any indexes that
272
+ * are in your schema but not in MongoDB.
273
+ */
274
+ syncIndexes(options?: SyncIndexesOptions): Promise<ConnectionSyncIndexesResult>;
275
+
276
+ /**
277
+ * _Requires MongoDB >= 3.6.0._ Executes the wrapped async function
278
+ * in a transaction. Mongoose will commit the transaction if the
279
+ * async function executes successfully and attempt to retry if
280
+ * there was a retryable error.
281
+ */
282
+ transaction<ReturnType = unknown>(fn: (session: mongodb.ClientSession) => Promise<ReturnType>, options?: mongodb.TransactionOptions): Promise<ReturnType>;
283
+
284
+ /** Switches to a different database using the same connection pool. */
285
+ useDb(name: string, options?: { useCache?: boolean }): Connection;
286
+
287
+ /** The username specified in the URI */
288
+ readonly user: string;
289
+
290
+ /** Watches the entire underlying database for changes. Similar to [`Model.watch()`](/docs/api/model.html#model_Model-watch). */
291
+ watch<ResultType extends mongodb.Document = any>(pipeline?: Array<any>, options?: mongodb.ChangeStreamOptions): mongodb.ChangeStream<ResultType>;
292
+
293
+ withSession<T = any>(executor: (session: ClientSession) => Promise<T>): Promise<T>;
294
+ }
295
+
296
+ export class BaseConnection extends Connection {}
297
+ }
@@ -0,0 +1,67 @@
1
+ declare module 'mongoose' {
2
+
3
+ import stream = require('stream');
4
+
5
+ type CursorFlag = 'tailable' | 'oplogReplay' | 'noCursorTimeout' | 'awaitData' | 'partial';
6
+
7
+ interface EachAsyncOptions {
8
+ parallel?: number;
9
+ batchSize?: number;
10
+ continueOnError?: boolean;
11
+ signal?: AbortSignal;
12
+ }
13
+
14
+ class Cursor<DocType = any, Options = never, NextResultType = DocType | null> extends stream.Readable {
15
+ [Symbol.asyncIterator](): Cursor<IteratorResult<DocType>, Options, IteratorResult<DocType>>;
16
+
17
+ [Symbol.asyncDispose](): Promise<void>;
18
+
19
+ /**
20
+ * Adds a [cursor flag](https://mongodb.github.io/node-mongodb-native/4.9/classes/FindCursor.html#addCursorFlag).
21
+ * Useful for setting the `noCursorTimeout` and `tailable` flags.
22
+ */
23
+ addCursorFlag(flag: CursorFlag, value: boolean): this;
24
+
25
+ /**
26
+ * Marks this cursor as closed. Will stop streaming and subsequent calls to
27
+ * `next()` will error.
28
+ */
29
+ close(): Promise<void>;
30
+
31
+ /**
32
+ * Destroy this cursor, closing the underlying cursor. Will stop streaming
33
+ * and subsequent calls to `next()` will error.
34
+ */
35
+ destroy(): this;
36
+
37
+ /**
38
+ * Rewind this cursor to its uninitialized state. Any options that are present on the cursor will
39
+ * remain in effect. Iterating this cursor will cause new queries to be sent to the server, even
40
+ * if the resultant data has already been retrieved by this cursor.
41
+ */
42
+ rewind(): this;
43
+
44
+ /**
45
+ * Execute `fn` for every document(s) in the cursor. If batchSize is provided
46
+ * `fn` will be executed for each batch of documents. If `fn` returns a promise,
47
+ * will wait for the promise to resolve before iterating on to the next one.
48
+ * Returns a promise that resolves when done.
49
+ */
50
+ eachAsync(fn: (doc: DocType[], i: number) => any, options: EachAsyncOptions & { batchSize: number }): Promise<void>;
51
+ eachAsync(fn: (doc: DocType, i: number) => any, options?: EachAsyncOptions): Promise<void>;
52
+
53
+ /**
54
+ * Registers a transform function which subsequently maps documents retrieved
55
+ * via the streams interface or `.next()`
56
+ */
57
+ map<ResultType>(fn: (res: DocType) => ResultType): Cursor<ResultType, Options>;
58
+
59
+ /**
60
+ * Get the next document from this cursor. Will return `null` when there are
61
+ * no documents left.
62
+ */
63
+ next(): Promise<NextResultType>;
64
+
65
+ options: Options;
66
+ }
67
+ }