@depup/mongodb 7.1.0-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 (396) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +33 -0
  3. package/etc/prepare.js +12 -0
  4. package/lib/admin.js +136 -0
  5. package/lib/admin.js.map +1 -0
  6. package/lib/bson.js +85 -0
  7. package/lib/bson.js.map +1 -0
  8. package/lib/bulk/common.js +835 -0
  9. package/lib/bulk/common.js.map +1 -0
  10. package/lib/bulk/ordered.js +67 -0
  11. package/lib/bulk/ordered.js.map +1 -0
  12. package/lib/bulk/unordered.js +92 -0
  13. package/lib/bulk/unordered.js.map +1 -0
  14. package/lib/change_stream.js +513 -0
  15. package/lib/change_stream.js.map +1 -0
  16. package/lib/client-side-encryption/auto_encrypter.js +272 -0
  17. package/lib/client-side-encryption/auto_encrypter.js.map +1 -0
  18. package/lib/client-side-encryption/client_encryption.js +609 -0
  19. package/lib/client-side-encryption/client_encryption.js.map +1 -0
  20. package/lib/client-side-encryption/errors.js +138 -0
  21. package/lib/client-side-encryption/errors.js.map +1 -0
  22. package/lib/client-side-encryption/mongocryptd_manager.js +85 -0
  23. package/lib/client-side-encryption/mongocryptd_manager.js.map +1 -0
  24. package/lib/client-side-encryption/providers/aws.js +23 -0
  25. package/lib/client-side-encryption/providers/aws.js.map +1 -0
  26. package/lib/client-side-encryption/providers/azure.js +132 -0
  27. package/lib/client-side-encryption/providers/azure.js.map +1 -0
  28. package/lib/client-side-encryption/providers/gcp.js +16 -0
  29. package/lib/client-side-encryption/providers/gcp.js.map +1 -0
  30. package/lib/client-side-encryption/providers/index.js +43 -0
  31. package/lib/client-side-encryption/providers/index.js.map +1 -0
  32. package/lib/client-side-encryption/state_machine.js +427 -0
  33. package/lib/client-side-encryption/state_machine.js.map +1 -0
  34. package/lib/cmap/auth/auth_provider.js +51 -0
  35. package/lib/cmap/auth/auth_provider.js.map +1 -0
  36. package/lib/cmap/auth/aws4.js +161 -0
  37. package/lib/cmap/auth/aws4.js.map +1 -0
  38. package/lib/cmap/auth/aws_temporary_credentials.js +103 -0
  39. package/lib/cmap/auth/aws_temporary_credentials.js.map +1 -0
  40. package/lib/cmap/auth/gssapi.js +155 -0
  41. package/lib/cmap/auth/gssapi.js.map +1 -0
  42. package/lib/cmap/auth/mongo_credentials.js +169 -0
  43. package/lib/cmap/auth/mongo_credentials.js.map +1 -0
  44. package/lib/cmap/auth/mongodb_aws.js +128 -0
  45. package/lib/cmap/auth/mongodb_aws.js.map +1 -0
  46. package/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +84 -0
  47. package/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js.map +1 -0
  48. package/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +62 -0
  49. package/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js.map +1 -0
  50. package/lib/cmap/auth/mongodb_oidc/callback_workflow.js +141 -0
  51. package/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map +1 -0
  52. package/lib/cmap/auth/mongodb_oidc/command_builders.js +44 -0
  53. package/lib/cmap/auth/mongodb_oidc/command_builders.js.map +1 -0
  54. package/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +39 -0
  55. package/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js.map +1 -0
  56. package/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +122 -0
  57. package/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js.map +1 -0
  58. package/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +32 -0
  59. package/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js.map +1 -0
  60. package/lib/cmap/auth/mongodb_oidc/token_cache.js +52 -0
  61. package/lib/cmap/auth/mongodb_oidc/token_cache.js.map +1 -0
  62. package/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +23 -0
  63. package/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js.map +1 -0
  64. package/lib/cmap/auth/mongodb_oidc.js +73 -0
  65. package/lib/cmap/auth/mongodb_oidc.js.map +1 -0
  66. package/lib/cmap/auth/plain.js +26 -0
  67. package/lib/cmap/auth/plain.js.map +1 -0
  68. package/lib/cmap/auth/providers.js +22 -0
  69. package/lib/cmap/auth/providers.js.map +1 -0
  70. package/lib/cmap/auth/scram.js +254 -0
  71. package/lib/cmap/auth/scram.js.map +1 -0
  72. package/lib/cmap/auth/x509.js +36 -0
  73. package/lib/cmap/auth/x509.js.map +1 -0
  74. package/lib/cmap/command_monitoring_events.js +223 -0
  75. package/lib/cmap/command_monitoring_events.js.map +1 -0
  76. package/lib/cmap/commands.js +535 -0
  77. package/lib/cmap/commands.js.map +1 -0
  78. package/lib/cmap/connect.js +381 -0
  79. package/lib/cmap/connect.js.map +1 -0
  80. package/lib/cmap/connection.js +571 -0
  81. package/lib/cmap/connection.js.map +1 -0
  82. package/lib/cmap/connection_pool.js +558 -0
  83. package/lib/cmap/connection_pool.js.map +1 -0
  84. package/lib/cmap/connection_pool_events.js +190 -0
  85. package/lib/cmap/connection_pool_events.js.map +1 -0
  86. package/lib/cmap/errors.js +108 -0
  87. package/lib/cmap/errors.js.map +1 -0
  88. package/lib/cmap/handshake/client_metadata.js +242 -0
  89. package/lib/cmap/handshake/client_metadata.js.map +1 -0
  90. package/lib/cmap/metrics.js +62 -0
  91. package/lib/cmap/metrics.js.map +1 -0
  92. package/lib/cmap/stream_description.js +70 -0
  93. package/lib/cmap/stream_description.js.map +1 -0
  94. package/lib/cmap/wire_protocol/compression.js +178 -0
  95. package/lib/cmap/wire_protocol/compression.js.map +1 -0
  96. package/lib/cmap/wire_protocol/constants.js +21 -0
  97. package/lib/cmap/wire_protocol/constants.js.map +1 -0
  98. package/lib/cmap/wire_protocol/on_data.js +111 -0
  99. package/lib/cmap/wire_protocol/on_data.js.map +1 -0
  100. package/lib/cmap/wire_protocol/on_demand/document.js +222 -0
  101. package/lib/cmap/wire_protocol/on_demand/document.js.map +1 -0
  102. package/lib/cmap/wire_protocol/responses.js +315 -0
  103. package/lib/cmap/wire_protocol/responses.js.map +1 -0
  104. package/lib/cmap/wire_protocol/shared.js +35 -0
  105. package/lib/cmap/wire_protocol/shared.js.map +1 -0
  106. package/lib/collection.js +751 -0
  107. package/lib/collection.js.map +1 -0
  108. package/lib/connection_string.js +1090 -0
  109. package/lib/connection_string.js.map +1 -0
  110. package/lib/constants.js +170 -0
  111. package/lib/constants.js.map +1 -0
  112. package/lib/cursor/abstract_cursor.js +924 -0
  113. package/lib/cursor/abstract_cursor.js.map +1 -0
  114. package/lib/cursor/aggregation_cursor.js +164 -0
  115. package/lib/cursor/aggregation_cursor.js.map +1 -0
  116. package/lib/cursor/change_stream_cursor.js +104 -0
  117. package/lib/cursor/change_stream_cursor.js.map +1 -0
  118. package/lib/cursor/client_bulk_write_cursor.js +52 -0
  119. package/lib/cursor/client_bulk_write_cursor.js.map +1 -0
  120. package/lib/cursor/explainable_cursor.js +36 -0
  121. package/lib/cursor/explainable_cursor.js.map +1 -0
  122. package/lib/cursor/find_cursor.js +399 -0
  123. package/lib/cursor/find_cursor.js.map +1 -0
  124. package/lib/cursor/list_collections_cursor.js +34 -0
  125. package/lib/cursor/list_collections_cursor.js.map +1 -0
  126. package/lib/cursor/list_indexes_cursor.js +32 -0
  127. package/lib/cursor/list_indexes_cursor.js.map +1 -0
  128. package/lib/cursor/list_search_indexes_cursor.js +14 -0
  129. package/lib/cursor/list_search_indexes_cursor.js.map +1 -0
  130. package/lib/cursor/run_command_cursor.js +94 -0
  131. package/lib/cursor/run_command_cursor.js.map +1 -0
  132. package/lib/db.js +419 -0
  133. package/lib/db.js.map +1 -0
  134. package/lib/deps.js +112 -0
  135. package/lib/deps.js.map +1 -0
  136. package/lib/encrypter.js +106 -0
  137. package/lib/encrypter.js.map +1 -0
  138. package/lib/error.js +1380 -0
  139. package/lib/error.js.map +1 -0
  140. package/lib/explain.js +59 -0
  141. package/lib/explain.js.map +1 -0
  142. package/lib/gridfs/download.js +305 -0
  143. package/lib/gridfs/download.js.map +1 -0
  144. package/lib/gridfs/index.js +164 -0
  145. package/lib/gridfs/index.js.map +1 -0
  146. package/lib/gridfs/upload.js +358 -0
  147. package/lib/gridfs/upload.js.map +1 -0
  148. package/lib/index.js +193 -0
  149. package/lib/index.js.map +1 -0
  150. package/lib/mongo_client.js +557 -0
  151. package/lib/mongo_client.js.map +1 -0
  152. package/lib/mongo_client_auth_providers.js +80 -0
  153. package/lib/mongo_client_auth_providers.js.map +1 -0
  154. package/lib/mongo_logger.js +655 -0
  155. package/lib/mongo_logger.js.map +1 -0
  156. package/lib/mongo_types.js +56 -0
  157. package/lib/mongo_types.js.map +1 -0
  158. package/lib/operations/aggregate.js +90 -0
  159. package/lib/operations/aggregate.js.map +1 -0
  160. package/lib/operations/client_bulk_write/client_bulk_write.js +51 -0
  161. package/lib/operations/client_bulk_write/client_bulk_write.js.map +1 -0
  162. package/lib/operations/client_bulk_write/command_builder.js +340 -0
  163. package/lib/operations/client_bulk_write/command_builder.js.map +1 -0
  164. package/lib/operations/client_bulk_write/common.js +3 -0
  165. package/lib/operations/client_bulk_write/common.js.map +1 -0
  166. package/lib/operations/client_bulk_write/executor.js +120 -0
  167. package/lib/operations/client_bulk_write/executor.js.map +1 -0
  168. package/lib/operations/client_bulk_write/results_merger.js +204 -0
  169. package/lib/operations/client_bulk_write/results_merger.js.map +1 -0
  170. package/lib/operations/command.js +83 -0
  171. package/lib/operations/command.js.map +1 -0
  172. package/lib/operations/count.js +45 -0
  173. package/lib/operations/count.js.map +1 -0
  174. package/lib/operations/create_collection.js +109 -0
  175. package/lib/operations/create_collection.js.map +1 -0
  176. package/lib/operations/delete.js +125 -0
  177. package/lib/operations/delete.js.map +1 -0
  178. package/lib/operations/distinct.js +61 -0
  179. package/lib/operations/distinct.js.map +1 -0
  180. package/lib/operations/drop.js +93 -0
  181. package/lib/operations/drop.js.map +1 -0
  182. package/lib/operations/end_sessions.js +34 -0
  183. package/lib/operations/end_sessions.js.map +1 -0
  184. package/lib/operations/estimated_document_count.js +41 -0
  185. package/lib/operations/estimated_document_count.js.map +1 -0
  186. package/lib/operations/execute_operation.js +239 -0
  187. package/lib/operations/execute_operation.js.map +1 -0
  188. package/lib/operations/find.js +148 -0
  189. package/lib/operations/find.js.map +1 -0
  190. package/lib/operations/find_and_modify.js +158 -0
  191. package/lib/operations/find_and_modify.js.map +1 -0
  192. package/lib/operations/get_more.js +62 -0
  193. package/lib/operations/get_more.js.map +1 -0
  194. package/lib/operations/indexes.js +186 -0
  195. package/lib/operations/indexes.js.map +1 -0
  196. package/lib/operations/insert.js +70 -0
  197. package/lib/operations/insert.js.map +1 -0
  198. package/lib/operations/kill_cursors.js +43 -0
  199. package/lib/operations/kill_cursors.js.map +1 -0
  200. package/lib/operations/list_collections.js +53 -0
  201. package/lib/operations/list_collections.js.map +1 -0
  202. package/lib/operations/list_databases.js +40 -0
  203. package/lib/operations/list_databases.js.map +1 -0
  204. package/lib/operations/operation.js +102 -0
  205. package/lib/operations/operation.js.map +1 -0
  206. package/lib/operations/profiling_level.js +43 -0
  207. package/lib/operations/profiling_level.js.map +1 -0
  208. package/lib/operations/remove_user.js +27 -0
  209. package/lib/operations/remove_user.js.map +1 -0
  210. package/lib/operations/rename.js +38 -0
  211. package/lib/operations/rename.js.map +1 -0
  212. package/lib/operations/run_command.js +47 -0
  213. package/lib/operations/run_command.js.map +1 -0
  214. package/lib/operations/search_indexes/create.js +33 -0
  215. package/lib/operations/search_indexes/create.js.map +1 -0
  216. package/lib/operations/search_indexes/drop.js +43 -0
  217. package/lib/operations/search_indexes/drop.js.map +1 -0
  218. package/lib/operations/search_indexes/update.js +35 -0
  219. package/lib/operations/search_indexes/update.js.map +1 -0
  220. package/lib/operations/set_profiling_level.js +53 -0
  221. package/lib/operations/set_profiling_level.js.map +1 -0
  222. package/lib/operations/stats.js +27 -0
  223. package/lib/operations/stats.js.map +1 -0
  224. package/lib/operations/update.js +188 -0
  225. package/lib/operations/update.js.map +1 -0
  226. package/lib/operations/validate_collection.js +37 -0
  227. package/lib/operations/validate_collection.js.map +1 -0
  228. package/lib/read_concern.js +73 -0
  229. package/lib/read_concern.js.map +1 -0
  230. package/lib/read_preference.js +191 -0
  231. package/lib/read_preference.js.map +1 -0
  232. package/lib/sdam/common.js +49 -0
  233. package/lib/sdam/common.js.map +1 -0
  234. package/lib/sdam/events.js +146 -0
  235. package/lib/sdam/events.js.map +1 -0
  236. package/lib/sdam/monitor.js +544 -0
  237. package/lib/sdam/monitor.js.map +1 -0
  238. package/lib/sdam/server.js +404 -0
  239. package/lib/sdam/server.js.map +1 -0
  240. package/lib/sdam/server_description.js +204 -0
  241. package/lib/sdam/server_description.js.map +1 -0
  242. package/lib/sdam/server_selection.js +294 -0
  243. package/lib/sdam/server_selection.js.map +1 -0
  244. package/lib/sdam/server_selection_events.js +85 -0
  245. package/lib/sdam/server_selection_events.js.map +1 -0
  246. package/lib/sdam/srv_polling.js +108 -0
  247. package/lib/sdam/srv_polling.js.map +1 -0
  248. package/lib/sdam/topology.js +652 -0
  249. package/lib/sdam/topology.js.map +1 -0
  250. package/lib/sdam/topology_description.js +383 -0
  251. package/lib/sdam/topology_description.js.map +1 -0
  252. package/lib/sessions.js +892 -0
  253. package/lib/sessions.js.map +1 -0
  254. package/lib/sort.js +103 -0
  255. package/lib/sort.js.map +1 -0
  256. package/lib/timeout.js +296 -0
  257. package/lib/timeout.js.map +1 -0
  258. package/lib/transactions.js +135 -0
  259. package/lib/transactions.js.map +1 -0
  260. package/lib/utils.js +1163 -0
  261. package/lib/utils.js.map +1 -0
  262. package/lib/write_concern.js +100 -0
  263. package/lib/write_concern.js.map +1 -0
  264. package/mongodb.d.ts +9018 -0
  265. package/package.json +197 -0
  266. package/src/admin.ts +173 -0
  267. package/src/bson.ts +149 -0
  268. package/src/bulk/common.ts +1251 -0
  269. package/src/bulk/ordered.ts +83 -0
  270. package/src/bulk/unordered.ts +115 -0
  271. package/src/change_stream.ts +1160 -0
  272. package/src/client-side-encryption/auto_encrypter.ts +469 -0
  273. package/src/client-side-encryption/client_encryption.ts +1150 -0
  274. package/src/client-side-encryption/errors.ts +144 -0
  275. package/src/client-side-encryption/mongocryptd_manager.ts +100 -0
  276. package/src/client-side-encryption/providers/aws.ts +33 -0
  277. package/src/client-side-encryption/providers/azure.ts +181 -0
  278. package/src/client-side-encryption/providers/gcp.ts +16 -0
  279. package/src/client-side-encryption/providers/index.ts +207 -0
  280. package/src/client-side-encryption/state_machine.ts +651 -0
  281. package/src/cmap/auth/auth_provider.ts +77 -0
  282. package/src/cmap/auth/aws4.ts +207 -0
  283. package/src/cmap/auth/aws_temporary_credentials.ts +129 -0
  284. package/src/cmap/auth/gssapi.ts +203 -0
  285. package/src/cmap/auth/mongo_credentials.ts +292 -0
  286. package/src/cmap/auth/mongodb_aws.ts +179 -0
  287. package/src/cmap/auth/mongodb_oidc/automated_callback_workflow.ts +88 -0
  288. package/src/cmap/auth/mongodb_oidc/azure_machine_workflow.ts +73 -0
  289. package/src/cmap/auth/mongodb_oidc/callback_workflow.ts +188 -0
  290. package/src/cmap/auth/mongodb_oidc/command_builders.ts +53 -0
  291. package/src/cmap/auth/mongodb_oidc/gcp_machine_workflow.ts +46 -0
  292. package/src/cmap/auth/mongodb_oidc/human_callback_workflow.ts +141 -0
  293. package/src/cmap/auth/mongodb_oidc/k8s_machine_workflow.ts +31 -0
  294. package/src/cmap/auth/mongodb_oidc/token_cache.ts +62 -0
  295. package/src/cmap/auth/mongodb_oidc/token_machine_workflow.ts +22 -0
  296. package/src/cmap/auth/mongodb_oidc.ts +185 -0
  297. package/src/cmap/auth/plain.ts +25 -0
  298. package/src/cmap/auth/providers.ts +22 -0
  299. package/src/cmap/auth/scram.ts +344 -0
  300. package/src/cmap/auth/x509.ts +43 -0
  301. package/src/cmap/command_monitoring_events.ts +316 -0
  302. package/src/cmap/commands.ts +788 -0
  303. package/src/cmap/connect.ts +518 -0
  304. package/src/cmap/connection.ts +931 -0
  305. package/src/cmap/connection_pool.ts +831 -0
  306. package/src/cmap/connection_pool_events.ts +300 -0
  307. package/src/cmap/errors.ts +119 -0
  308. package/src/cmap/handshake/client_metadata.ts +353 -0
  309. package/src/cmap/metrics.ts +58 -0
  310. package/src/cmap/stream_description.ts +96 -0
  311. package/src/cmap/wire_protocol/compression.ts +211 -0
  312. package/src/cmap/wire_protocol/constants.ts +17 -0
  313. package/src/cmap/wire_protocol/on_data.ts +139 -0
  314. package/src/cmap/wire_protocol/on_demand/document.ts +358 -0
  315. package/src/cmap/wire_protocol/responses.ts +393 -0
  316. package/src/cmap/wire_protocol/shared.ts +48 -0
  317. package/src/collection.ts +1314 -0
  318. package/src/connection_string.ts +1297 -0
  319. package/src/constants.ts +176 -0
  320. package/src/cursor/abstract_cursor.ts +1247 -0
  321. package/src/cursor/aggregation_cursor.ts +245 -0
  322. package/src/cursor/change_stream_cursor.ts +171 -0
  323. package/src/cursor/client_bulk_write_cursor.ts +83 -0
  324. package/src/cursor/explainable_cursor.ts +51 -0
  325. package/src/cursor/find_cursor.ts +497 -0
  326. package/src/cursor/list_collections_cursor.ts +50 -0
  327. package/src/cursor/list_indexes_cursor.ts +37 -0
  328. package/src/cursor/list_search_indexes_cursor.ts +20 -0
  329. package/src/cursor/run_command_cursor.ts +178 -0
  330. package/src/db.ts +621 -0
  331. package/src/deps.ts +227 -0
  332. package/src/encrypter.ts +127 -0
  333. package/src/error.ts +1567 -0
  334. package/src/explain.ts +124 -0
  335. package/src/gridfs/download.ts +483 -0
  336. package/src/gridfs/index.ts +264 -0
  337. package/src/gridfs/upload.ts +537 -0
  338. package/src/index.ts +633 -0
  339. package/src/mongo_client.ts +1155 -0
  340. package/src/mongo_client_auth_providers.ts +87 -0
  341. package/src/mongo_logger.ts +1081 -0
  342. package/src/mongo_types.ts +678 -0
  343. package/src/operations/aggregate.ts +153 -0
  344. package/src/operations/client_bulk_write/client_bulk_write.ts +72 -0
  345. package/src/operations/client_bulk_write/command_builder.ts +487 -0
  346. package/src/operations/client_bulk_write/common.ts +276 -0
  347. package/src/operations/client_bulk_write/executor.ts +149 -0
  348. package/src/operations/client_bulk_write/results_merger.ts +260 -0
  349. package/src/operations/command.ts +171 -0
  350. package/src/operations/count.ts +74 -0
  351. package/src/operations/create_collection.ts +218 -0
  352. package/src/operations/delete.ts +183 -0
  353. package/src/operations/distinct.ts +92 -0
  354. package/src/operations/drop.ts +130 -0
  355. package/src/operations/end_sessions.ts +44 -0
  356. package/src/operations/estimated_document_count.ts +61 -0
  357. package/src/operations/execute_operation.ts +319 -0
  358. package/src/operations/find.ts +254 -0
  359. package/src/operations/find_and_modify.ts +319 -0
  360. package/src/operations/get_more.ts +108 -0
  361. package/src/operations/indexes.ts +418 -0
  362. package/src/operations/insert.ts +108 -0
  363. package/src/operations/kill_cursors.ts +64 -0
  364. package/src/operations/list_collections.ts +108 -0
  365. package/src/operations/list_databases.ts +68 -0
  366. package/src/operations/operation.ts +181 -0
  367. package/src/operations/profiling_level.ts +46 -0
  368. package/src/operations/remove_user.ts +36 -0
  369. package/src/operations/rename.ts +60 -0
  370. package/src/operations/run_command.ts +79 -0
  371. package/src/operations/search_indexes/create.ts +56 -0
  372. package/src/operations/search_indexes/drop.ts +58 -0
  373. package/src/operations/search_indexes/update.ts +45 -0
  374. package/src/operations/set_profiling_level.ts +74 -0
  375. package/src/operations/stats.ts +37 -0
  376. package/src/operations/update.ts +318 -0
  377. package/src/operations/validate_collection.ts +50 -0
  378. package/src/read_concern.ts +88 -0
  379. package/src/read_preference.ts +256 -0
  380. package/src/sdam/common.ts +74 -0
  381. package/src/sdam/events.ts +219 -0
  382. package/src/sdam/monitor.ts +771 -0
  383. package/src/sdam/server.ts +595 -0
  384. package/src/sdam/server_description.ts +297 -0
  385. package/src/sdam/server_selection.ts +415 -0
  386. package/src/sdam/server_selection_events.ts +142 -0
  387. package/src/sdam/srv_polling.ts +146 -0
  388. package/src/sdam/topology.ts +1100 -0
  389. package/src/sdam/topology_description.ts +548 -0
  390. package/src/sessions.ts +1244 -0
  391. package/src/sort.ts +141 -0
  392. package/src/timeout.ts +405 -0
  393. package/src/transactions.ts +181 -0
  394. package/src/utils.ts +1434 -0
  395. package/src/write_concern.ts +183 -0
  396. package/tsconfig.json +46 -0
package/src/deps.ts ADDED
@@ -0,0 +1,227 @@
1
+ import { type Stream } from './cmap/connect';
2
+ import { MongoMissingDependencyError } from './error';
3
+ import type { Callback } from './utils';
4
+
5
+ function makeErrorModule(error: any) {
6
+ const props = error ? { kModuleError: error } : {};
7
+ return new Proxy(props, {
8
+ get: (_: any, key: any) => {
9
+ if (key === 'kModuleError') {
10
+ return error;
11
+ }
12
+ throw error;
13
+ },
14
+ set: () => {
15
+ throw error;
16
+ }
17
+ });
18
+ }
19
+
20
+ export type Kerberos = typeof import('kerberos') | { kModuleError: MongoMissingDependencyError };
21
+
22
+ export function getKerberos(): Kerberos {
23
+ let kerberos: Kerberos;
24
+ try {
25
+ // Ensure you always wrap an optional require in the try block NODE-3199
26
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
27
+ kerberos = require('kerberos');
28
+ } catch (error) {
29
+ kerberos = makeErrorModule(
30
+ new MongoMissingDependencyError(
31
+ 'Optional module `kerberos` not found. Please install it to enable kerberos authentication',
32
+ { cause: error, dependencyName: 'kerberos' }
33
+ )
34
+ );
35
+ }
36
+ return kerberos;
37
+ }
38
+
39
+ export interface KerberosClient {
40
+ step(challenge: string): Promise<string>;
41
+ step(challenge: string, callback: Callback<string>): void;
42
+ wrap(challenge: string, options: { user: string }): Promise<string>;
43
+ wrap(challenge: string, options: { user: string }, callback: Callback<string>): void;
44
+ unwrap(challenge: string): Promise<string>;
45
+ unwrap(challenge: string, callback: Callback<string>): void;
46
+ }
47
+
48
+ type ZStandardLib = {
49
+ /**
50
+ * Compress using zstd.
51
+ * @param buf - Buffer to be compressed.
52
+ */
53
+ compress(buf: Buffer, level?: number): Promise<Buffer>;
54
+
55
+ /**
56
+ * Decompress using zstd.
57
+ */
58
+ decompress(buf: Buffer): Promise<Buffer>;
59
+ };
60
+
61
+ export type ZStandard = ZStandardLib | { kModuleError: MongoMissingDependencyError };
62
+
63
+ export function getZstdLibrary(): ZStandardLib | { kModuleError: MongoMissingDependencyError } {
64
+ let ZStandard: ZStandardLib | { kModuleError: MongoMissingDependencyError };
65
+ try {
66
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
67
+ ZStandard = require('@mongodb-js/zstd');
68
+ } catch (error) {
69
+ ZStandard = makeErrorModule(
70
+ new MongoMissingDependencyError(
71
+ 'Optional module `@mongodb-js/zstd` not found. Please install it to enable zstd compression',
72
+ { cause: error, dependencyName: 'zstd' }
73
+ )
74
+ );
75
+ }
76
+
77
+ return ZStandard;
78
+ }
79
+
80
+ /**
81
+ * @public
82
+ * Copy of the AwsCredentialIdentityProvider interface from [`smithy/types`](https://socket.dev/npm/package/\@smithy/types/files/1.1.1/dist-types/identity/awsCredentialIdentity.d.ts),
83
+ * the return type of the aws-sdk's `fromNodeProviderChain().provider()`.
84
+ */
85
+ export interface AWSCredentials {
86
+ accessKeyId: string;
87
+ secretAccessKey: string;
88
+ sessionToken?: string;
89
+ expiration?: Date;
90
+ }
91
+
92
+ type CredentialProvider = {
93
+ fromNodeProviderChain(
94
+ this: void,
95
+ options: { clientConfig: { region: string } }
96
+ ): () => Promise<AWSCredentials>;
97
+ fromNodeProviderChain(this: void): () => Promise<AWSCredentials>;
98
+ };
99
+
100
+ export function getAwsCredentialProvider():
101
+ | CredentialProvider
102
+ | { kModuleError: MongoMissingDependencyError } {
103
+ try {
104
+ // Ensure you always wrap an optional require in the try block NODE-3199
105
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
106
+ const credentialProvider = require('@aws-sdk/credential-providers');
107
+ return credentialProvider;
108
+ } catch (error) {
109
+ return makeErrorModule(
110
+ new MongoMissingDependencyError(
111
+ 'Optional module `@aws-sdk/credential-providers` not found.' +
112
+ ' Please install it to enable getting aws credentials via the official sdk.',
113
+ { cause: error, dependencyName: '@aws-sdk/credential-providers' }
114
+ )
115
+ );
116
+ }
117
+ }
118
+
119
+ /** @internal */
120
+ export type GcpMetadata =
121
+ | typeof import('gcp-metadata')
122
+ | { kModuleError: MongoMissingDependencyError };
123
+
124
+ export function getGcpMetadata(): GcpMetadata {
125
+ try {
126
+ // Ensure you always wrap an optional require in the try block NODE-3199
127
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
128
+ const credentialProvider = require('gcp-metadata');
129
+ return credentialProvider;
130
+ } catch (error) {
131
+ return makeErrorModule(
132
+ new MongoMissingDependencyError(
133
+ 'Optional module `gcp-metadata` not found.' +
134
+ ' Please install it to enable getting gcp credentials via the official sdk.',
135
+ { cause: error, dependencyName: 'gcp-metadata' }
136
+ )
137
+ );
138
+ }
139
+ }
140
+
141
+ /** @internal */
142
+ export type SnappyLib = {
143
+ /**
144
+ * In order to support both we must check the return value of the function
145
+ * @param buf - Buffer to be compressed
146
+ */
147
+ compress(buf: Buffer): Promise<Buffer>;
148
+
149
+ /**
150
+ * In order to support both we must check the return value of the function
151
+ * @param buf - Buffer to be compressed
152
+ */
153
+ uncompress(buf: Buffer, opt: { asBuffer: true }): Promise<Buffer>;
154
+ };
155
+
156
+ export function getSnappy(): SnappyLib | { kModuleError: MongoMissingDependencyError } {
157
+ try {
158
+ // Ensure you always wrap an optional require in the try block NODE-3199
159
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
160
+ const value = require('snappy');
161
+ return value;
162
+ } catch (error) {
163
+ const kModuleError = new MongoMissingDependencyError(
164
+ 'Optional module `snappy` not found. Please install it to enable snappy compression',
165
+ { cause: error, dependencyName: 'snappy' }
166
+ );
167
+ return { kModuleError };
168
+ }
169
+ }
170
+
171
+ export type SocksLib = {
172
+ SocksClient: {
173
+ createConnection(options: {
174
+ command: 'connect';
175
+ destination: { host: string; port: number };
176
+ proxy: {
177
+ /** host and port are ignored because we pass existing_socket */
178
+ host: 'iLoveJavaScript';
179
+ port: 0;
180
+ type: 5;
181
+ userId?: string;
182
+ password?: string;
183
+ };
184
+ timeout?: number;
185
+ /** We always create our own socket, and pass it to this API for proxy negotiation */
186
+ existing_socket: Stream;
187
+ }): Promise<{ socket: Stream }>;
188
+ };
189
+ };
190
+
191
+ export function getSocks(): SocksLib | { kModuleError: MongoMissingDependencyError } {
192
+ try {
193
+ // Ensure you always wrap an optional require in the try block NODE-3199
194
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
195
+ const value = require('socks');
196
+ return value;
197
+ } catch (error) {
198
+ const kModuleError = new MongoMissingDependencyError(
199
+ 'Optional module `socks` not found. Please install it to connections over a SOCKS5 proxy',
200
+ { cause: error, dependencyName: 'socks' }
201
+ );
202
+ return { kModuleError };
203
+ }
204
+ }
205
+
206
+ /** A utility function to get the instance of mongodb-client-encryption, if it exists. */
207
+ export function getMongoDBClientEncryption():
208
+ | typeof import('mongodb-client-encryption')
209
+ | { kModuleError: MongoMissingDependencyError } {
210
+ let mongodbClientEncryption = null;
211
+
212
+ try {
213
+ // NOTE(NODE-3199): Ensure you always wrap an optional require literally in the try block
214
+ // Cannot be moved to helper utility function, bundlers search and replace the actual require call
215
+ // in a way that makes this line throw at bundle time, not runtime, catching here will make bundling succeed
216
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
217
+ mongodbClientEncryption = require('mongodb-client-encryption');
218
+ } catch (error) {
219
+ const kModuleError = new MongoMissingDependencyError(
220
+ 'Optional module `mongodb-client-encryption` not found. Please install it to use auto encryption or ClientEncryption.',
221
+ { cause: error, dependencyName: 'mongodb-client-encryption' }
222
+ );
223
+ return { kModuleError };
224
+ }
225
+
226
+ return mongodbClientEncryption;
227
+ }
@@ -0,0 +1,127 @@
1
+ import { AutoEncrypter, type AutoEncryptionOptions } from './client-side-encryption/auto_encrypter';
2
+ import { MONGO_CLIENT_EVENTS } from './constants';
3
+ import { getMongoDBClientEncryption } from './deps';
4
+ import { MongoInvalidArgumentError, MongoMissingDependencyError } from './error';
5
+ import { MongoClient, type MongoClientOptions } from './mongo_client';
6
+
7
+ /** @internal */
8
+ export interface EncrypterOptions {
9
+ autoEncryption: AutoEncryptionOptions;
10
+ maxPoolSize?: number;
11
+ }
12
+
13
+ /** @internal */
14
+ export class Encrypter {
15
+ private internalClient: MongoClient | null;
16
+ bypassAutoEncryption: boolean;
17
+ needsConnecting: boolean;
18
+ autoEncrypter: AutoEncrypter;
19
+
20
+ constructor(client: MongoClient, uri: string, options: MongoClientOptions) {
21
+ if (typeof options.autoEncryption !== 'object') {
22
+ throw new MongoInvalidArgumentError('Option "autoEncryption" must be specified');
23
+ }
24
+ // initialize to null, if we call getInternalClient, we may set this it is important to not overwrite those function calls.
25
+ this.internalClient = null;
26
+
27
+ this.bypassAutoEncryption = !!options.autoEncryption.bypassAutoEncryption;
28
+ this.needsConnecting = false;
29
+
30
+ if (options.maxPoolSize === 0 && options.autoEncryption.keyVaultClient == null) {
31
+ options.autoEncryption.keyVaultClient = client;
32
+ } else if (options.autoEncryption.keyVaultClient == null) {
33
+ options.autoEncryption.keyVaultClient = this.getInternalClient(client, uri, options);
34
+ }
35
+
36
+ if (this.bypassAutoEncryption) {
37
+ options.autoEncryption.metadataClient = undefined;
38
+ } else if (options.maxPoolSize === 0) {
39
+ options.autoEncryption.metadataClient = client;
40
+ } else {
41
+ options.autoEncryption.metadataClient = this.getInternalClient(client, uri, options);
42
+ }
43
+
44
+ if (options.proxyHost) {
45
+ options.autoEncryption.proxyOptions = {
46
+ proxyHost: options.proxyHost,
47
+ proxyPort: options.proxyPort,
48
+ proxyUsername: options.proxyUsername,
49
+ proxyPassword: options.proxyPassword
50
+ };
51
+ }
52
+
53
+ this.autoEncrypter = new AutoEncrypter(client, options.autoEncryption);
54
+ }
55
+
56
+ getInternalClient(client: MongoClient, uri: string, options: MongoClientOptions): MongoClient {
57
+ let internalClient = this.internalClient;
58
+ if (internalClient == null) {
59
+ const clonedOptions: MongoClientOptions = {};
60
+
61
+ for (const key of [
62
+ ...Object.getOwnPropertyNames(options),
63
+ ...Object.getOwnPropertySymbols(options)
64
+ ] as string[]) {
65
+ if (['autoEncryption', 'minPoolSize', 'servers', 'caseTranslate', 'dbName'].includes(key))
66
+ continue;
67
+ Reflect.set(clonedOptions, key, Reflect.get(options, key));
68
+ }
69
+
70
+ clonedOptions.minPoolSize = 0;
71
+
72
+ internalClient = new MongoClient(uri, clonedOptions);
73
+ this.internalClient = internalClient;
74
+
75
+ for (const eventName of MONGO_CLIENT_EVENTS) {
76
+ for (const listener of client.listeners(eventName)) {
77
+ internalClient.on(eventName, listener);
78
+ }
79
+ }
80
+
81
+ client.on('newListener', (eventName, listener) => {
82
+ internalClient?.on(eventName, listener);
83
+ });
84
+
85
+ this.needsConnecting = true;
86
+ }
87
+ return internalClient;
88
+ }
89
+
90
+ async connectInternalClient(): Promise<void> {
91
+ const internalClient = this.internalClient;
92
+ if (this.needsConnecting && internalClient != null) {
93
+ this.needsConnecting = false;
94
+ await internalClient.connect();
95
+ }
96
+ }
97
+
98
+ async close(client: MongoClient): Promise<void> {
99
+ let error;
100
+ try {
101
+ await this.autoEncrypter.close();
102
+ } catch (autoEncrypterError) {
103
+ error = autoEncrypterError;
104
+ }
105
+ const internalClient = this.internalClient;
106
+ if (internalClient != null && client !== internalClient) {
107
+ return await internalClient.close();
108
+ }
109
+ if (error != null) {
110
+ throw error;
111
+ }
112
+ }
113
+
114
+ static checkForMongoCrypt(): void {
115
+ const mongodbClientEncryption = getMongoDBClientEncryption();
116
+ if ('kModuleError' in mongodbClientEncryption) {
117
+ throw new MongoMissingDependencyError(
118
+ 'Auto-encryption requested, but the module is not installed. ' +
119
+ 'Please add `mongodb-client-encryption` as a dependency of your project',
120
+ {
121
+ cause: mongodbClientEncryption['kModuleError'],
122
+ dependencyName: 'mongodb-client-encryption'
123
+ }
124
+ );
125
+ }
126
+ }
127
+ }