@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
+ 'use strict';
2
+
3
+ /*!
4
+ * Module dependencies.
5
+ */
6
+
7
+ const CastError = require('../error/cast');
8
+ const SchemaType = require('../schemaType');
9
+ const castBigInt = require('../cast/bigint');
10
+ const createJSONSchemaTypeDefinition = require('../helpers/createJSONSchemaTypeDefinition');
11
+
12
+ /**
13
+ * BigInt SchemaType constructor.
14
+ *
15
+ * @param {String} path
16
+ * @param {Object} options
17
+ * @param {Object} schemaOptions
18
+ * @param {Schema} parentSchema
19
+ * @inherits SchemaType
20
+ * @api public
21
+ */
22
+
23
+ function SchemaBigInt(path, options, _schemaOptions, parentSchema) {
24
+ SchemaType.call(this, path, options, 'BigInt', parentSchema);
25
+ }
26
+
27
+ /**
28
+ * This schema type's name, to defend against minifiers that mangle
29
+ * function names.
30
+ *
31
+ * @api public
32
+ */
33
+ SchemaBigInt.schemaName = 'BigInt';
34
+
35
+ SchemaBigInt.defaultOptions = {};
36
+
37
+ /*!
38
+ * Inherits from SchemaType.
39
+ */
40
+ SchemaBigInt.prototype = Object.create(SchemaType.prototype);
41
+ SchemaBigInt.prototype.constructor = SchemaBigInt;
42
+
43
+ /*!
44
+ * ignore
45
+ */
46
+
47
+ SchemaBigInt._cast = castBigInt;
48
+
49
+ /**
50
+ * Sets a default option for all BigInt instances.
51
+ *
52
+ * #### Example:
53
+ *
54
+ * // Make all bigints required by default
55
+ * mongoose.Schema.Types.BigInt.set('required', true);
56
+ *
57
+ * @param {String} option The option you'd like to set the value for
58
+ * @param {Any} value value for option
59
+ * @return {undefined}
60
+ * @function set
61
+ * @static
62
+ * @api public
63
+ */
64
+
65
+ SchemaBigInt.set = SchemaType.set;
66
+
67
+ SchemaBigInt.setters = [];
68
+
69
+ /**
70
+ * Attaches a getter for all BigInt instances
71
+ *
72
+ * #### Example:
73
+ *
74
+ * // Convert bigints to numbers
75
+ * mongoose.Schema.Types.BigInt.get(v => v == null ? v : Number(v));
76
+ *
77
+ * @param {Function} getter
78
+ * @return {this}
79
+ * @function get
80
+ * @static
81
+ * @api public
82
+ */
83
+
84
+ SchemaBigInt.get = SchemaType.get;
85
+
86
+ /**
87
+ * Get/set the function used to cast arbitrary values to bigints.
88
+ *
89
+ * #### Example:
90
+ *
91
+ * // Make Mongoose cast empty string '' to false.
92
+ * const original = mongoose.Schema.Types.BigInt.cast();
93
+ * mongoose.Schema.Types.BigInt.cast(v => {
94
+ * if (v === '') {
95
+ * return false;
96
+ * }
97
+ * return original(v);
98
+ * });
99
+ *
100
+ * // Or disable casting entirely
101
+ * mongoose.Schema.Types.BigInt.cast(false);
102
+ *
103
+ * @param {Function} caster
104
+ * @return {Function}
105
+ * @function cast
106
+ * @static
107
+ * @api public
108
+ */
109
+
110
+ SchemaBigInt.cast = function cast(caster) {
111
+ if (arguments.length === 0) {
112
+ return this._cast;
113
+ }
114
+ if (caster === false) {
115
+ caster = this._defaultCaster;
116
+ }
117
+ this._cast = caster;
118
+
119
+ return this._cast;
120
+ };
121
+
122
+ /*!
123
+ * ignore
124
+ */
125
+
126
+ SchemaBigInt._checkRequired = v => v != null;
127
+
128
+ /**
129
+ * Override the function the required validator uses to check whether a value
130
+ * passes the `required` check.
131
+ *
132
+ * @param {Function} fn
133
+ * @return {Function}
134
+ * @function checkRequired
135
+ * @static
136
+ * @api public
137
+ */
138
+
139
+ SchemaBigInt.checkRequired = SchemaType.checkRequired;
140
+
141
+ /**
142
+ * Check if the given value satisfies a required validator.
143
+ *
144
+ * @param {Any} value
145
+ * @return {Boolean}
146
+ * @api public
147
+ */
148
+
149
+ SchemaBigInt.prototype.checkRequired = function(value) {
150
+ return this.constructor._checkRequired(value);
151
+ };
152
+
153
+ /**
154
+ * Casts to bigint
155
+ *
156
+ * @param {Object} value
157
+ * @param {Object} model this value is optional
158
+ * @api private
159
+ */
160
+
161
+ SchemaBigInt.prototype.cast = function(value) {
162
+ let castBigInt;
163
+ if (typeof this._castFunction === 'function') {
164
+ castBigInt = this._castFunction;
165
+ } else if (typeof this.constructor.cast === 'function') {
166
+ castBigInt = this.constructor.cast();
167
+ } else {
168
+ castBigInt = SchemaBigInt.cast();
169
+ }
170
+
171
+ try {
172
+ return castBigInt(value);
173
+ } catch (error) {
174
+ throw new CastError('BigInt', value, this.path, error, this);
175
+ }
176
+ };
177
+
178
+ /*!
179
+ * ignore
180
+ */
181
+
182
+ const $conditionalHandlers = {
183
+ ...SchemaType.prototype.$conditionalHandlers,
184
+ $gt: handleSingle,
185
+ $gte: handleSingle,
186
+ $lt: handleSingle,
187
+ $lte: handleSingle
188
+ };
189
+
190
+ /**
191
+ * Contains the handlers for different query operators for this schema type.
192
+ * For example, `$conditionalHandlers.$in` is the function Mongoose calls to cast `$in` filter operators.
193
+ *
194
+ * @property $conditionalHandlers
195
+ * @memberOf SchemaBigInt
196
+ * @instance
197
+ * @api public
198
+ */
199
+
200
+ Object.defineProperty(SchemaBigInt.prototype, '$conditionalHandlers', {
201
+ enumerable: false,
202
+ value: $conditionalHandlers
203
+ });
204
+
205
+ /*!
206
+ * ignore
207
+ */
208
+
209
+ function handleSingle(val, context) {
210
+ return this.castForQuery(null, val, context);
211
+ }
212
+
213
+ /**
214
+ * Casts contents for queries.
215
+ *
216
+ * @param {String} $conditional
217
+ * @param {any} val
218
+ * @api private
219
+ */
220
+
221
+ SchemaBigInt.prototype.castForQuery = function($conditional, val, context) {
222
+ let handler;
223
+ if ($conditional != null) {
224
+ handler = this.$conditionalHandlers[$conditional];
225
+
226
+ if (handler) {
227
+ return handler.call(this, val);
228
+ }
229
+
230
+ return this.applySetters(val, context);
231
+ }
232
+
233
+ try {
234
+ return this.applySetters(val, context);
235
+ } catch (err) {
236
+ if (err instanceof CastError && err.path === this.path && this.$fullPath != null) {
237
+ err.path = this.$fullPath;
238
+ }
239
+ throw err;
240
+ }
241
+ };
242
+
243
+ /**
244
+ *
245
+ * @api private
246
+ */
247
+
248
+ SchemaBigInt.prototype._castNullish = function _castNullish(v) {
249
+ if (typeof v === 'undefined') {
250
+ return v;
251
+ }
252
+ const castBigInt = typeof this.constructor.cast === 'function' ?
253
+ this.constructor.cast() :
254
+ SchemaBigInt.cast();
255
+ if (castBigInt == null) {
256
+ return v;
257
+ }
258
+ return v;
259
+ };
260
+
261
+ /**
262
+ * Returns this schema type's representation in a JSON schema.
263
+ *
264
+ * @param [options]
265
+ * @param [options.useBsonType=false] If true, return a representation with `bsonType` for use with MongoDB's `$jsonSchema`.
266
+ * @returns {Object} JSON schema properties
267
+ */
268
+
269
+ SchemaBigInt.prototype.toJSONSchema = function toJSONSchema(options) {
270
+ const isRequired = this.options.required && typeof this.options.required !== 'function';
271
+ return createJSONSchemaTypeDefinition('string', 'long', options?.useBsonType, isRequired);
272
+ };
273
+
274
+ SchemaBigInt.prototype.autoEncryptionType = function autoEncryptionType() {
275
+ return 'long';
276
+ };
277
+
278
+ /*!
279
+ * Module exports.
280
+ */
281
+
282
+ module.exports = SchemaBigInt;
@@ -0,0 +1,332 @@
1
+ 'use strict';
2
+
3
+ /*!
4
+ * Module dependencies.
5
+ */
6
+
7
+ const CastError = require('../error/cast');
8
+ const SchemaType = require('../schemaType');
9
+ const castBoolean = require('../cast/boolean');
10
+ const createJSONSchemaTypeDefinition = require('../helpers/createJSONSchemaTypeDefinition');
11
+
12
+ /**
13
+ * Boolean SchemaType constructor.
14
+ *
15
+ * @param {String} path
16
+ * @param {Object} options
17
+ * @param {Object} schemaOptions
18
+ * @param {Schema} parentSchema
19
+ * @inherits SchemaType
20
+ * @api public
21
+ */
22
+
23
+ function SchemaBoolean(path, options, _schemaOptions, parentSchema) {
24
+ SchemaType.call(this, path, options, 'Boolean', parentSchema);
25
+ }
26
+
27
+ /**
28
+ * This schema type's name, to defend against minifiers that mangle
29
+ * function names.
30
+ *
31
+ * @api public
32
+ */
33
+ SchemaBoolean.schemaName = 'Boolean';
34
+
35
+ SchemaBoolean.defaultOptions = {};
36
+
37
+ /*!
38
+ * Inherits from SchemaType.
39
+ */
40
+ SchemaBoolean.prototype = Object.create(SchemaType.prototype);
41
+ SchemaBoolean.prototype.constructor = SchemaBoolean;
42
+
43
+ /*!
44
+ * ignore
45
+ */
46
+
47
+ SchemaBoolean._cast = castBoolean;
48
+
49
+ /**
50
+ * Sets a default option for all Boolean instances.
51
+ *
52
+ * #### Example:
53
+ *
54
+ * // Make all booleans have `default` of false.
55
+ * mongoose.Schema.Types.Boolean.set('default', false);
56
+ *
57
+ * const Order = mongoose.model('Order', new Schema({ isPaid: Boolean }));
58
+ * new Order({ }).isPaid; // false
59
+ *
60
+ * @param {String} option The option you'd like to set the value for
61
+ * @param {Any} value value for option
62
+ * @return {undefined}
63
+ * @function set
64
+ * @static
65
+ * @api public
66
+ */
67
+
68
+ SchemaBoolean.set = SchemaType.set;
69
+
70
+ SchemaBoolean.setters = [];
71
+
72
+ /**
73
+ * Attaches a getter for all Boolean instances
74
+ *
75
+ * #### Example:
76
+ *
77
+ * mongoose.Schema.Types.Boolean.get(v => v === true ? 'yes' : 'no');
78
+ *
79
+ * const Order = mongoose.model('Order', new Schema({ isPaid: Boolean }));
80
+ * new Order({ isPaid: false }).isPaid; // 'no'
81
+ *
82
+ * @param {Function} getter
83
+ * @return {this}
84
+ * @function get
85
+ * @static
86
+ * @api public
87
+ */
88
+
89
+ SchemaBoolean.get = SchemaType.get;
90
+
91
+ /**
92
+ * Get/set the function used to cast arbitrary values to booleans.
93
+ *
94
+ * #### Example:
95
+ *
96
+ * // Make Mongoose cast empty string '' to false.
97
+ * const original = mongoose.Schema.Types.Boolean.cast();
98
+ * mongoose.Schema.Types.Boolean.cast(v => {
99
+ * if (v === '') {
100
+ * return false;
101
+ * }
102
+ * return original(v);
103
+ * });
104
+ *
105
+ * // Or disable casting entirely
106
+ * mongoose.Schema.Types.Boolean.cast(false);
107
+ *
108
+ * @param {Function} caster
109
+ * @return {Function}
110
+ * @function cast
111
+ * @static
112
+ * @api public
113
+ */
114
+
115
+ SchemaBoolean.cast = function cast(caster) {
116
+ if (arguments.length === 0) {
117
+ return this._cast;
118
+ }
119
+ if (caster === false) {
120
+ caster = this._defaultCaster;
121
+ }
122
+ this._cast = caster;
123
+
124
+ return this._cast;
125
+ };
126
+
127
+ /*!
128
+ * ignore
129
+ */
130
+
131
+ SchemaBoolean._defaultCaster = v => {
132
+ if (v != null && typeof v !== 'boolean') {
133
+ throw new Error();
134
+ }
135
+ return v;
136
+ };
137
+
138
+ /*!
139
+ * ignore
140
+ */
141
+
142
+ SchemaBoolean._checkRequired = v => v === true || v === false;
143
+
144
+ /**
145
+ * Override the function the required validator uses to check whether a boolean
146
+ * passes the `required` check.
147
+ *
148
+ * @param {Function} fn
149
+ * @return {Function}
150
+ * @function checkRequired
151
+ * @static
152
+ * @api public
153
+ */
154
+
155
+ SchemaBoolean.checkRequired = SchemaType.checkRequired;
156
+
157
+ /**
158
+ * Check if the given value satisfies a required validator. For a boolean
159
+ * to satisfy a required validator, it must be strictly equal to true or to
160
+ * false.
161
+ *
162
+ * @param {Any} value
163
+ * @return {Boolean}
164
+ * @api public
165
+ */
166
+
167
+ SchemaBoolean.prototype.checkRequired = function(value) {
168
+ return this.constructor._checkRequired(value);
169
+ };
170
+
171
+ /**
172
+ * Configure which values get casted to `true`.
173
+ *
174
+ * #### Example:
175
+ *
176
+ * const M = mongoose.model('Test', new Schema({ b: Boolean }));
177
+ * new M({ b: 'affirmative' }).b; // undefined
178
+ * mongoose.Schema.Types.Boolean.convertToTrue.add('affirmative');
179
+ * new M({ b: 'affirmative' }).b; // true
180
+ *
181
+ * @property convertToTrue
182
+ * @static
183
+ * @memberOf SchemaBoolean
184
+ * @type {Set}
185
+ * @api public
186
+ */
187
+
188
+ Object.defineProperty(SchemaBoolean, 'convertToTrue', {
189
+ get: () => castBoolean.convertToTrue,
190
+ set: v => { castBoolean.convertToTrue = v; }
191
+ });
192
+
193
+ /**
194
+ * Configure which values get casted to `false`.
195
+ *
196
+ * #### Example:
197
+ *
198
+ * const M = mongoose.model('Test', new Schema({ b: Boolean }));
199
+ * new M({ b: 'nay' }).b; // undefined
200
+ * mongoose.Schema.Types.Boolean.convertToFalse.add('nay');
201
+ * new M({ b: 'nay' }).b; // false
202
+ *
203
+ * @property convertToFalse
204
+ * @static
205
+ * @memberOf SchemaBoolean
206
+ * @type {Set}
207
+ * @api public
208
+ */
209
+
210
+ Object.defineProperty(SchemaBoolean, 'convertToFalse', {
211
+ get: () => castBoolean.convertToFalse,
212
+ set: v => { castBoolean.convertToFalse = v; }
213
+ });
214
+
215
+ /**
216
+ * Casts to boolean
217
+ *
218
+ * @param {Object} value
219
+ * @param {Object} model this value is optional
220
+ * @api private
221
+ */
222
+
223
+ SchemaBoolean.prototype.cast = function(value) {
224
+ let castBoolean;
225
+ if (typeof this._castFunction === 'function') {
226
+ castBoolean = this._castFunction;
227
+ } else if (typeof this.constructor.cast === 'function') {
228
+ castBoolean = this.constructor.cast();
229
+ } else {
230
+ castBoolean = SchemaBoolean.cast();
231
+ }
232
+
233
+ try {
234
+ return castBoolean(value);
235
+ } catch (error) {
236
+ throw new CastError('Boolean', value, this.path, error, this);
237
+ }
238
+ };
239
+
240
+ const $conditionalHandlers = { ...SchemaType.prototype.$conditionalHandlers };
241
+
242
+ /**
243
+ * Contains the handlers for different query operators for this schema type.
244
+ * For example, `$conditionalHandlers.$in` is the function Mongoose calls to cast `$in` filter operators.
245
+ *
246
+ * @property $conditionalHandlers
247
+ * @memberOf SchemaBoolean
248
+ * @instance
249
+ * @api public
250
+ */
251
+
252
+ Object.defineProperty(SchemaBoolean.prototype, '$conditionalHandlers', {
253
+ enumerable: false,
254
+ value: $conditionalHandlers
255
+ });
256
+
257
+ /**
258
+ * Casts contents for queries.
259
+ *
260
+ * @param {String} $conditional
261
+ * @param {any} val
262
+ * @api private
263
+ */
264
+
265
+ SchemaBoolean.prototype.castForQuery = function($conditional, val, context) {
266
+ let handler;
267
+ if ($conditional != null) {
268
+ handler = this.$conditionalHandlers[$conditional];
269
+
270
+ if (handler) {
271
+ return handler.call(this, val);
272
+ }
273
+
274
+ return this.applySetters(val, context);
275
+ }
276
+
277
+ try {
278
+ return this.applySetters(val, context);
279
+ } catch (err) {
280
+ if (err instanceof CastError && err.path === this.path && this.$fullPath != null) {
281
+ err.path = this.$fullPath;
282
+ }
283
+ throw err;
284
+ }
285
+ };
286
+
287
+ /**
288
+ *
289
+ * @api private
290
+ */
291
+
292
+ SchemaBoolean.prototype._castNullish = function _castNullish(v) {
293
+ if (typeof v === 'undefined') {
294
+ return v;
295
+ }
296
+ const castBoolean = typeof this.constructor.cast === 'function' ?
297
+ this.constructor.cast() :
298
+ SchemaBoolean.cast();
299
+ if (castBoolean == null) {
300
+ return v;
301
+ }
302
+ if (castBoolean.convertToFalse instanceof Set && castBoolean.convertToFalse.has(v)) {
303
+ return false;
304
+ }
305
+ if (castBoolean.convertToTrue instanceof Set && castBoolean.convertToTrue.has(v)) {
306
+ return true;
307
+ }
308
+ return v;
309
+ };
310
+
311
+ /**
312
+ * Returns this schema type's representation in a JSON schema.
313
+ *
314
+ * @param [options]
315
+ * @param [options.useBsonType=false] If true, return a representation with `bsonType` for use with MongoDB's `$jsonSchema`.
316
+ * @returns {Object} JSON schema properties
317
+ */
318
+
319
+ SchemaBoolean.prototype.toJSONSchema = function toJSONSchema(options) {
320
+ const isRequired = this.options.required && typeof this.options.required !== 'function';
321
+ return createJSONSchemaTypeDefinition('boolean', 'bool', options?.useBsonType, isRequired);
322
+ };
323
+
324
+ SchemaBoolean.prototype.autoEncryptionType = function autoEncryptionType() {
325
+ return 'bool';
326
+ };
327
+
328
+ /*!
329
+ * Module exports.
330
+ */
331
+
332
+ module.exports = SchemaBoolean;