@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
@@ -0,0 +1,68 @@
1
+ import { type Connection } from '..';
2
+ import type { Document } from '../bson';
3
+ import { MongoDBResponse } from '../cmap/wire_protocol/responses';
4
+ import type { Db } from '../db';
5
+ import type { ClientSession } from '../sessions';
6
+ import { maxWireVersion, MongoDBNamespace } from '../utils';
7
+ import { CommandOperation, type CommandOperationOptions } from './command';
8
+ import { Aspect, defineAspects } from './operation';
9
+
10
+ /** @public */
11
+ export interface ListDatabasesResult {
12
+ databases: ({ name: string; sizeOnDisk?: number; empty?: boolean } & Document)[];
13
+ totalSize?: number;
14
+ totalSizeMb?: number;
15
+ ok: 1 | 0;
16
+ }
17
+
18
+ /** @public */
19
+ export interface ListDatabasesOptions extends Omit<CommandOperationOptions, 'rawData'> {
20
+ /** A query predicate that determines which databases are listed */
21
+ filter?: Document;
22
+ /** A flag to indicate whether the command should return just the database names, or return both database names and size information */
23
+ nameOnly?: boolean;
24
+ /** A flag that determines which databases are returned based on the user privileges when access control is enabled */
25
+ authorizedDatabases?: boolean;
26
+ }
27
+
28
+ /** @internal */
29
+ export class ListDatabasesOperation extends CommandOperation<ListDatabasesResult> {
30
+ override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
31
+ override options: ListDatabasesOptions;
32
+
33
+ constructor(db: Db, options?: ListDatabasesOptions) {
34
+ super(db, options);
35
+ this.options = options ?? {};
36
+ this.ns = new MongoDBNamespace('admin', '$cmd');
37
+ }
38
+
39
+ override get commandName() {
40
+ return 'listDatabases' as const;
41
+ }
42
+
43
+ override buildCommandDocument(connection: Connection, _session?: ClientSession): Document {
44
+ const cmd: Document = { listDatabases: 1 };
45
+
46
+ if (typeof this.options.nameOnly === 'boolean') {
47
+ cmd.nameOnly = this.options.nameOnly;
48
+ }
49
+
50
+ if (this.options.filter) {
51
+ cmd.filter = this.options.filter;
52
+ }
53
+
54
+ if (typeof this.options.authorizedDatabases === 'boolean') {
55
+ cmd.authorizedDatabases = this.options.authorizedDatabases;
56
+ }
57
+
58
+ // we check for undefined specifically here to allow falsy values
59
+ // eslint-disable-next-line no-restricted-syntax
60
+ if (maxWireVersion(connection) >= 9 && this.options.comment !== undefined) {
61
+ cmd.comment = this.options.comment;
62
+ }
63
+
64
+ return cmd;
65
+ }
66
+ }
67
+
68
+ defineAspects(ListDatabasesOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE]);
@@ -0,0 +1,181 @@
1
+ import { type Connection, type MongoError } from '..';
2
+ import { type BSONSerializeOptions, type Document, resolveBSONOptions } from '../bson';
3
+ import { type MongoDBResponse } from '../cmap/wire_protocol/responses';
4
+ import { type Abortable } from '../mongo_types';
5
+ import { ReadPreference, type ReadPreferenceLike } from '../read_preference';
6
+ import type { Server, ServerCommandOptions } from '../sdam/server';
7
+ import type { ClientSession } from '../sessions';
8
+ import { type TimeoutContext } from '../timeout';
9
+ import type { MongoDBNamespace } from '../utils';
10
+
11
+ export const Aspect = {
12
+ READ_OPERATION: Symbol('READ_OPERATION'),
13
+ WRITE_OPERATION: Symbol('WRITE_OPERATION'),
14
+ RETRYABLE: Symbol('RETRYABLE'),
15
+ EXPLAINABLE: Symbol('EXPLAINABLE'),
16
+ SKIP_COLLATION: Symbol('SKIP_COLLATION'),
17
+ CURSOR_CREATING: Symbol('CURSOR_CREATING'),
18
+ MUST_SELECT_SAME_SERVER: Symbol('MUST_SELECT_SAME_SERVER'),
19
+ COMMAND_BATCHING: Symbol('COMMAND_BATCHING'),
20
+ SUPPORTS_RAW_DATA: Symbol('SUPPORTS_RAW_DATA')
21
+ } as const;
22
+
23
+ /** @public */
24
+ export type Hint = string | Document;
25
+
26
+ /** @public */
27
+ export interface OperationOptions extends BSONSerializeOptions {
28
+ /** Specify ClientSession for this command */
29
+ session?: ClientSession;
30
+ willRetryWrite?: boolean;
31
+
32
+ /** The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest). */
33
+ readPreference?: ReadPreferenceLike;
34
+
35
+ /** @internal Hints to `executeOperation` that this operation should not unpin on an ended transaction */
36
+ bypassPinningCheck?: boolean;
37
+
38
+ /** @internal Hint to `executeOperation` to omit maxTimeMS */
39
+ omitMaxTimeMS?: boolean;
40
+
41
+ /**
42
+ * @experimental
43
+ * Specifies the time an operation will run until it throws a timeout error
44
+ */
45
+ timeoutMS?: number;
46
+ }
47
+
48
+ /**
49
+ * This class acts as a parent class for any operation and is responsible for setting this.options,
50
+ * as well as setting and getting a session.
51
+ * Additionally, this class implements `hasAspect`, which determines whether an operation has
52
+ * a specific aspect.
53
+ * @internal
54
+ */
55
+ export abstract class AbstractOperation<TResult = any> {
56
+ ns!: MongoDBNamespace;
57
+ readPreference: ReadPreference;
58
+ server!: Server;
59
+ bypassPinningCheck: boolean;
60
+
61
+ // BSON serialization options
62
+ bsonOptions?: BSONSerializeOptions;
63
+
64
+ options: OperationOptions & Abortable;
65
+
66
+ /** Specifies the time an operation will run until it throws a timeout error. */
67
+ timeoutMS?: number;
68
+
69
+ private _session: ClientSession | undefined;
70
+
71
+ static aspects?: Set<symbol>;
72
+
73
+ constructor(options: OperationOptions & Abortable = {}) {
74
+ this.readPreference = this.hasAspect(Aspect.WRITE_OPERATION)
75
+ ? ReadPreference.primary
76
+ : (ReadPreference.fromOptions(options) ?? ReadPreference.primary);
77
+
78
+ // Pull the BSON serialize options from the already-resolved options
79
+ this.bsonOptions = resolveBSONOptions(options);
80
+
81
+ this._session = options.session != null ? options.session : undefined;
82
+
83
+ this.options = options;
84
+ this.bypassPinningCheck = !!options.bypassPinningCheck;
85
+ }
86
+
87
+ /** Must match the first key of the command object sent to the server.
88
+ Command name should be stateless (should not use 'this' keyword) */
89
+ abstract get commandName(): string;
90
+
91
+ hasAspect(aspect: symbol): boolean {
92
+ const ctor = this.constructor as { aspects?: Set<symbol> };
93
+ if (ctor.aspects == null) {
94
+ return false;
95
+ }
96
+
97
+ return ctor.aspects.has(aspect);
98
+ }
99
+
100
+ // Make sure the session is not writable from outside this class.
101
+ get session(): ClientSession | undefined {
102
+ return this._session;
103
+ }
104
+
105
+ set session(session: ClientSession) {
106
+ this._session = session;
107
+ }
108
+
109
+ clearSession() {
110
+ this._session = undefined;
111
+ }
112
+
113
+ resetBatch(): boolean {
114
+ return true;
115
+ }
116
+
117
+ get canRetryRead(): boolean {
118
+ return this.hasAspect(Aspect.RETRYABLE) && this.hasAspect(Aspect.READ_OPERATION);
119
+ }
120
+
121
+ get canRetryWrite(): boolean {
122
+ return this.hasAspect(Aspect.RETRYABLE) && this.hasAspect(Aspect.WRITE_OPERATION);
123
+ }
124
+ abstract SERVER_COMMAND_RESPONSE_TYPE: typeof MongoDBResponse;
125
+
126
+ /**
127
+ * Build a raw command document.
128
+ */
129
+ abstract buildCommand(connection: Connection, session?: ClientSession): Document;
130
+
131
+ /**
132
+ * Builds an instance of `ServerCommandOptions` to be used for operation execution.
133
+ */
134
+ abstract buildOptions(timeoutContext: TimeoutContext): ServerCommandOptions;
135
+
136
+ /**
137
+ * Given an instance of a MongoDBResponse, map the response to the correct result type. For
138
+ * example, a `CountOperation` might map the response as follows:
139
+ *
140
+ * ```typescript
141
+ * override handleOk(response: InstanceType<typeof this.SERVER_COMMAND_RESPONSE_TYPE>): TResult {
142
+ * return response.toObject(this.bsonOptions).n ?? 0;
143
+ * }
144
+ *
145
+ * // or, with type safety:
146
+ * override handleOk(response: InstanceType<typeof this.SERVER_COMMAND_RESPONSE_TYPE>): TResult {
147
+ * return response.getNumber('n') ?? 0;
148
+ * }
149
+ * ```
150
+ */
151
+ handleOk(response: InstanceType<typeof this.SERVER_COMMAND_RESPONSE_TYPE>): TResult {
152
+ return response.toObject(this.bsonOptions) as TResult;
153
+ }
154
+
155
+ /**
156
+ * Optional.
157
+ *
158
+ * If the operation performs error handling, such as wrapping, renaming the error, or squashing errors
159
+ * this method can be overridden.
160
+ */
161
+ handleError(error: MongoError): TResult | never {
162
+ throw error;
163
+ }
164
+ }
165
+
166
+ export function defineAspects(
167
+ operation: { aspects?: Set<symbol> },
168
+ aspects: symbol | symbol[] | Set<symbol>
169
+ ): Set<symbol> {
170
+ if (!Array.isArray(aspects) && !(aspects instanceof Set)) {
171
+ aspects = [aspects];
172
+ }
173
+
174
+ aspects = new Set(aspects);
175
+ Object.defineProperty(operation, 'aspects', {
176
+ value: aspects,
177
+ writable: false
178
+ });
179
+
180
+ return aspects;
181
+ }
@@ -0,0 +1,46 @@
1
+ import { BSONType, type Document } from '../bson';
2
+ import { type Connection } from '../cmap/connection';
3
+ import { MongoDBResponse } from '../cmap/wire_protocol/responses';
4
+ import type { Db } from '../db';
5
+ import { MongoUnexpectedServerResponseError } from '../error';
6
+ import { CommandOperation, type CommandOperationOptions } from './command';
7
+
8
+ /** @public */
9
+ export type ProfilingLevelOptions = Omit<CommandOperationOptions, 'rawData'>;
10
+
11
+ class ProfilingLevelResponse extends MongoDBResponse {
12
+ get was() {
13
+ return this.get('was', BSONType.int, true);
14
+ }
15
+ }
16
+
17
+ /** @internal */
18
+ export class ProfilingLevelOperation extends CommandOperation<string> {
19
+ override SERVER_COMMAND_RESPONSE_TYPE = ProfilingLevelResponse;
20
+ override options: ProfilingLevelOptions;
21
+
22
+ constructor(db: Db, options: ProfilingLevelOptions) {
23
+ super(db, options);
24
+ this.options = options;
25
+ }
26
+
27
+ override get commandName() {
28
+ return 'profile' as const;
29
+ }
30
+
31
+ override buildCommandDocument(_connection: Connection): Document {
32
+ return { profile: -1 };
33
+ }
34
+
35
+ override handleOk(response: InstanceType<typeof this.SERVER_COMMAND_RESPONSE_TYPE>): string {
36
+ if (response.ok === 1) {
37
+ const was = response.was;
38
+ if (was === 0) return 'off';
39
+ if (was === 1) return 'slow_only';
40
+ if (was === 2) return 'all';
41
+ throw new MongoUnexpectedServerResponseError(`Illegal profiling level value ${was}`);
42
+ } else {
43
+ throw new MongoUnexpectedServerResponseError('Error with profile command');
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,36 @@
1
+ import { type Document } from '../bson';
2
+ import { type Connection } from '../cmap/connection';
3
+ import { MongoDBResponse } from '../cmap/wire_protocol/responses';
4
+ import type { Db } from '../db';
5
+ import { CommandOperation, type CommandOperationOptions } from './command';
6
+ import { Aspect, defineAspects } from './operation';
7
+
8
+ /** @public */
9
+ export type RemoveUserOptions = Omit<CommandOperationOptions, 'rawData'>;
10
+
11
+ /** @internal */
12
+ export class RemoveUserOperation extends CommandOperation<boolean> {
13
+ override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
14
+ override options: RemoveUserOptions;
15
+ username: string;
16
+
17
+ constructor(db: Db, username: string, options: RemoveUserOptions) {
18
+ super(db, options);
19
+ this.options = options;
20
+ this.username = username;
21
+ }
22
+
23
+ override get commandName() {
24
+ return 'dropUser' as const;
25
+ }
26
+
27
+ override buildCommandDocument(_connection: Connection): Document {
28
+ return { dropUser: this.username };
29
+ }
30
+
31
+ override handleOk(_response: InstanceType<typeof this.SERVER_COMMAND_RESPONSE_TYPE>): boolean {
32
+ return true;
33
+ }
34
+ }
35
+
36
+ defineAspects(RemoveUserOperation, [Aspect.WRITE_OPERATION]);
@@ -0,0 +1,60 @@
1
+ import { type Connection } from '..';
2
+ import type { Document } from '../bson';
3
+ import { MongoDBResponse } from '../cmap/wire_protocol/responses';
4
+ import { Collection } from '../collection';
5
+ import type { ClientSession } from '../sessions';
6
+ import { MongoDBNamespace } from '../utils';
7
+ import { CommandOperation, type CommandOperationOptions } from './command';
8
+ import { Aspect, defineAspects } from './operation';
9
+
10
+ /** @public */
11
+ export interface RenameOptions extends Omit<CommandOperationOptions, 'rawData'> {
12
+ /** Drop the target name collection if it previously exists. */
13
+ dropTarget?: boolean;
14
+ /**
15
+ * @deprecated
16
+ *
17
+ * This option has been dead code since at least Node driver version 4.x. It will
18
+ * be removed in a future major release.
19
+ */
20
+ new_collection?: boolean;
21
+ }
22
+
23
+ /** @internal */
24
+ export class RenameOperation extends CommandOperation<Document> {
25
+ override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
26
+ collection: Collection;
27
+ newName: string;
28
+ override options: RenameOptions;
29
+
30
+ constructor(collection: Collection, newName: string, options: RenameOptions) {
31
+ super(collection, options);
32
+ this.collection = collection;
33
+ this.newName = newName;
34
+ this.options = options;
35
+ this.ns = new MongoDBNamespace('admin', '$cmd');
36
+ }
37
+
38
+ override get commandName(): string {
39
+ return 'renameCollection' as const;
40
+ }
41
+
42
+ override buildCommandDocument(_connection: Connection, _session?: ClientSession): Document {
43
+ const renameCollection = this.collection.namespace;
44
+ const to = this.collection.s.namespace.withCollection(this.newName).toString();
45
+ const dropTarget =
46
+ typeof this.options.dropTarget === 'boolean' ? this.options.dropTarget : false;
47
+
48
+ return {
49
+ renameCollection,
50
+ to,
51
+ dropTarget
52
+ };
53
+ }
54
+
55
+ override handleOk(_response: InstanceType<typeof this.SERVER_COMMAND_RESPONSE_TYPE>): Document {
56
+ return new Collection(this.collection.db, this.newName, this.collection.s.options);
57
+ }
58
+ }
59
+
60
+ defineAspects(RenameOperation, [Aspect.WRITE_OPERATION]);
@@ -0,0 +1,79 @@
1
+ import { type Abortable } from '..';
2
+ import type { BSONSerializeOptions, Document } from '../bson';
3
+ import { type Connection } from '../cmap/connection';
4
+ import { CursorResponse, MongoDBResponse } from '../cmap/wire_protocol/responses';
5
+ import { AbstractOperation } from '../operations/operation';
6
+ import type { ReadPreferenceLike } from '../read_preference';
7
+ import type { ServerCommandOptions } from '../sdam/server';
8
+ import type { ClientSession } from '../sessions';
9
+ import { type TimeoutContext } from '../timeout';
10
+ import { type MongoDBNamespace } from '../utils';
11
+
12
+ /** @public */
13
+ export type RunCommandOptions = {
14
+ /** Specify ClientSession for this command */
15
+ session?: ClientSession;
16
+ /** The read preference */
17
+ readPreference?: ReadPreferenceLike;
18
+ /**
19
+ * @experimental
20
+ * Specifies the time an operation will run until it throws a timeout error
21
+ */
22
+ timeoutMS?: number;
23
+ /** @internal */
24
+ omitMaxTimeMS?: boolean;
25
+
26
+ /**
27
+ * @internal Hints to `executeOperation` that this operation should not unpin on an ended transaction
28
+ * This is only used by the driver for transaction commands
29
+ */
30
+ bypassPinningCheck?: boolean;
31
+ } & BSONSerializeOptions &
32
+ Abortable;
33
+
34
+ /** @internal */
35
+ export class RunCommandOperation<T = Document> extends AbstractOperation<T> {
36
+ override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
37
+ command: Document;
38
+ override options: RunCommandOptions;
39
+
40
+ constructor(namespace: MongoDBNamespace, command: Document, options: RunCommandOptions) {
41
+ super(options);
42
+ this.command = command;
43
+ this.options = options;
44
+ this.ns = namespace.withCollection('$cmd');
45
+ }
46
+
47
+ override get commandName() {
48
+ return 'runCommand' as const;
49
+ }
50
+
51
+ override buildCommand(_connection: Connection, _session?: ClientSession): Document {
52
+ return this.command;
53
+ }
54
+
55
+ override buildOptions(timeoutContext: TimeoutContext): ServerCommandOptions {
56
+ return {
57
+ ...this.options,
58
+ session: this.session,
59
+ timeoutContext,
60
+ signal: this.options.signal,
61
+ readPreference: this.options.readPreference
62
+ };
63
+ }
64
+ }
65
+
66
+ /**
67
+ * @internal
68
+ *
69
+ * A specialized subclass of RunCommandOperation for cursor-creating commands.
70
+ */
71
+ export class RunCursorCommandOperation extends RunCommandOperation {
72
+ override SERVER_COMMAND_RESPONSE_TYPE = CursorResponse;
73
+
74
+ override handleOk(
75
+ response: InstanceType<typeof this.SERVER_COMMAND_RESPONSE_TYPE>
76
+ ): CursorResponse {
77
+ return response;
78
+ }
79
+ }
@@ -0,0 +1,56 @@
1
+ import { type Document } from '../../bson';
2
+ import { type Connection } from '../../cmap/connection';
3
+ import { MongoDBResponse } from '../../cmap/wire_protocol/responses';
4
+ import type { Collection } from '../../collection';
5
+ import type { ServerCommandOptions } from '../../sdam/server';
6
+ import type { ClientSession } from '../../sessions';
7
+ import { type TimeoutContext } from '../../timeout';
8
+ import { AbstractOperation } from '../operation';
9
+
10
+ /**
11
+ * @public
12
+ */
13
+ export interface SearchIndexDescription extends Document {
14
+ /** The name of the index. */
15
+ name?: string;
16
+
17
+ /** The index definition. */
18
+ definition: Document;
19
+
20
+ /** The type of the index. Currently `search` or `vectorSearch` are supported. */
21
+ type?: string;
22
+ }
23
+
24
+ /** @internal */
25
+ export class CreateSearchIndexesOperation extends AbstractOperation<Document> {
26
+ override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
27
+ private readonly collection: Collection;
28
+ private readonly descriptions: ReadonlyArray<SearchIndexDescription>;
29
+
30
+ constructor(collection: Collection, descriptions: ReadonlyArray<SearchIndexDescription>) {
31
+ super();
32
+ this.collection = collection;
33
+ this.descriptions = descriptions;
34
+ this.ns = collection.fullNamespace;
35
+ }
36
+
37
+ override get commandName() {
38
+ return 'createSearchIndexes' as const;
39
+ }
40
+
41
+ override buildCommand(_connection: Connection, _session?: ClientSession): Document {
42
+ const namespace = this.collection.fullNamespace;
43
+ return {
44
+ createSearchIndexes: namespace.collection,
45
+ indexes: this.descriptions
46
+ };
47
+ }
48
+
49
+ override handleOk(response: InstanceType<typeof this.SERVER_COMMAND_RESPONSE_TYPE>): string[] {
50
+ return super.handleOk(response).indexesCreated.map((val: { name: string }) => val.name);
51
+ }
52
+
53
+ override buildOptions(timeoutContext: TimeoutContext): ServerCommandOptions {
54
+ return { session: this.session, timeoutContext };
55
+ }
56
+ }
@@ -0,0 +1,58 @@
1
+ import { type Connection, type MongoError } from '../..';
2
+ import type { Document } from '../../bson';
3
+ import { MongoDBResponse } from '../../cmap/wire_protocol/responses';
4
+ import type { Collection } from '../../collection';
5
+ import { MONGODB_ERROR_CODES, MongoServerError } from '../../error';
6
+ import type { ServerCommandOptions } from '../../sdam/server';
7
+ import type { ClientSession } from '../../sessions';
8
+ import { type TimeoutContext } from '../../timeout';
9
+ import { AbstractOperation } from '../operation';
10
+
11
+ /** @internal */
12
+ export class DropSearchIndexOperation extends AbstractOperation<void> {
13
+ override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
14
+
15
+ private readonly collection: Collection;
16
+ private readonly name: string;
17
+
18
+ constructor(collection: Collection, name: string) {
19
+ super();
20
+ this.collection = collection;
21
+ this.name = name;
22
+ this.ns = collection.fullNamespace;
23
+ }
24
+
25
+ override get commandName() {
26
+ return 'dropSearchIndex' as const;
27
+ }
28
+
29
+ override buildCommand(_connection: Connection, _session?: ClientSession): Document {
30
+ const namespace = this.collection.fullNamespace;
31
+
32
+ const command: Document = {
33
+ dropSearchIndex: namespace.collection
34
+ };
35
+
36
+ if (typeof this.name === 'string') {
37
+ command.name = this.name;
38
+ }
39
+
40
+ return command;
41
+ }
42
+
43
+ override handleOk(_response: MongoDBResponse): void {
44
+ // do nothing
45
+ }
46
+
47
+ override buildOptions(timeoutContext: TimeoutContext): ServerCommandOptions {
48
+ return { session: this.session, timeoutContext };
49
+ }
50
+
51
+ override handleError(error: MongoError): void {
52
+ const isNamespaceNotFoundError =
53
+ error instanceof MongoServerError && error.code === MONGODB_ERROR_CODES.NamespaceNotFound;
54
+ if (!isNamespaceNotFoundError) {
55
+ throw error;
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,45 @@
1
+ import type { Document } from '../../bson';
2
+ import { type Connection } from '../../cmap/connection';
3
+ import { MongoDBResponse } from '../../cmap/wire_protocol/responses';
4
+ import type { Collection } from '../../collection';
5
+ import type { ServerCommandOptions } from '../../sdam/server';
6
+ import type { ClientSession } from '../../sessions';
7
+ import { type TimeoutContext } from '../../timeout';
8
+ import { AbstractOperation } from '../operation';
9
+
10
+ /** @internal */
11
+ export class UpdateSearchIndexOperation extends AbstractOperation<void> {
12
+ override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
13
+ private readonly collection: Collection;
14
+ private readonly name: string;
15
+ private readonly definition: Document;
16
+
17
+ constructor(collection: Collection, name: string, definition: Document) {
18
+ super();
19
+ this.collection = collection;
20
+ this.name = name;
21
+ this.definition = definition;
22
+ this.ns = collection.fullNamespace;
23
+ }
24
+
25
+ override get commandName() {
26
+ return 'updateSearchIndex' as const;
27
+ }
28
+
29
+ override buildCommand(_connection: Connection, _session?: ClientSession): Document {
30
+ const namespace = this.collection.fullNamespace;
31
+ return {
32
+ updateSearchIndex: namespace.collection,
33
+ name: this.name,
34
+ definition: this.definition
35
+ };
36
+ }
37
+
38
+ override handleOk(_response: MongoDBResponse): void {
39
+ // no response.
40
+ }
41
+
42
+ override buildOptions(timeoutContext: TimeoutContext): ServerCommandOptions {
43
+ return { session: this.session, timeoutContext };
44
+ }
45
+ }