mongodb 6.3.0 → 6.4.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 (221) hide show
  1. package/lib/bson.js +2 -1
  2. package/lib/bson.js.map +1 -1
  3. package/lib/bulk/common.js +14 -9
  4. package/lib/bulk/common.js.map +1 -1
  5. package/lib/change_stream.js +4 -2
  6. package/lib/change_stream.js.map +1 -1
  7. package/lib/client-side-encryption/state_machine.js +58 -52
  8. package/lib/client-side-encryption/state_machine.js.map +1 -1
  9. package/lib/cmap/auth/auth_provider.js +4 -0
  10. package/lib/cmap/auth/auth_provider.js.map +1 -1
  11. package/lib/cmap/auth/gssapi.js +1 -1
  12. package/lib/cmap/auth/gssapi.js.map +1 -1
  13. package/lib/cmap/auth/mongo_credentials.js.map +1 -1
  14. package/lib/cmap/auth/mongocr.js +2 -2
  15. package/lib/cmap/auth/mongocr.js.map +1 -1
  16. package/lib/cmap/auth/mongodb_aws.js +58 -55
  17. package/lib/cmap/auth/mongodb_aws.js.map +1 -1
  18. package/lib/cmap/auth/mongodb_oidc/callback_workflow.js +2 -2
  19. package/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map +1 -1
  20. package/lib/cmap/auth/mongodb_oidc/service_workflow.js +1 -1
  21. package/lib/cmap/auth/mongodb_oidc/service_workflow.js.map +1 -1
  22. package/lib/cmap/auth/plain.js +1 -1
  23. package/lib/cmap/auth/plain.js.map +1 -1
  24. package/lib/cmap/auth/scram.js +5 -7
  25. package/lib/cmap/auth/scram.js.map +1 -1
  26. package/lib/cmap/auth/x509.js +1 -1
  27. package/lib/cmap/auth/x509.js.map +1 -1
  28. package/lib/cmap/command_monitoring_events.js +6 -3
  29. package/lib/cmap/command_monitoring_events.js.map +1 -1
  30. package/lib/cmap/commands.js +2 -0
  31. package/lib/cmap/commands.js.map +1 -1
  32. package/lib/cmap/connect.js +88 -110
  33. package/lib/cmap/connect.js.map +1 -1
  34. package/lib/cmap/connection.js +280 -726
  35. package/lib/cmap/connection.js.map +1 -1
  36. package/lib/cmap/connection_pool.js +35 -95
  37. package/lib/cmap/connection_pool.js.map +1 -1
  38. package/lib/cmap/stream_description.js +19 -0
  39. package/lib/cmap/stream_description.js.map +1 -1
  40. package/lib/cmap/wire_protocol/compression.js.map +1 -1
  41. package/lib/cmap/wire_protocol/on_data.js +112 -0
  42. package/lib/cmap/wire_protocol/on_data.js.map +1 -0
  43. package/lib/collection.js +11 -3
  44. package/lib/collection.js.map +1 -1
  45. package/lib/connection_string.js +34 -2
  46. package/lib/connection_string.js.map +1 -1
  47. package/lib/constants.js +22 -2
  48. package/lib/constants.js.map +1 -1
  49. package/lib/cursor/abstract_cursor.js +5 -1
  50. package/lib/cursor/abstract_cursor.js.map +1 -1
  51. package/lib/error.js +7 -7
  52. package/lib/error.js.map +1 -1
  53. package/lib/index.js +9 -1
  54. package/lib/index.js.map +1 -1
  55. package/lib/mongo_client.js +8 -3
  56. package/lib/mongo_client.js.map +1 -1
  57. package/lib/mongo_client_auth_providers.js +55 -0
  58. package/lib/mongo_client_auth_providers.js.map +1 -0
  59. package/lib/mongo_logger.js +205 -27
  60. package/lib/mongo_logger.js.map +1 -1
  61. package/lib/mongo_types.js +26 -0
  62. package/lib/mongo_types.js.map +1 -1
  63. package/lib/operations/aggregate.js +3 -0
  64. package/lib/operations/aggregate.js.map +1 -1
  65. package/lib/operations/bulk_write.js +3 -0
  66. package/lib/operations/bulk_write.js.map +1 -1
  67. package/lib/operations/collections.js +3 -0
  68. package/lib/operations/collections.js.map +1 -1
  69. package/lib/operations/command.js +1 -1
  70. package/lib/operations/command.js.map +1 -1
  71. package/lib/operations/count.js +3 -0
  72. package/lib/operations/count.js.map +1 -1
  73. package/lib/operations/create_collection.js +3 -0
  74. package/lib/operations/create_collection.js.map +1 -1
  75. package/lib/operations/delete.js +3 -0
  76. package/lib/operations/delete.js.map +1 -1
  77. package/lib/operations/distinct.js +3 -0
  78. package/lib/operations/distinct.js.map +1 -1
  79. package/lib/operations/drop.js +6 -0
  80. package/lib/operations/drop.js.map +1 -1
  81. package/lib/operations/estimated_document_count.js +3 -0
  82. package/lib/operations/estimated_document_count.js.map +1 -1
  83. package/lib/operations/execute_operation.js +35 -9
  84. package/lib/operations/execute_operation.js.map +1 -1
  85. package/lib/operations/find.js +4 -1
  86. package/lib/operations/find.js.map +1 -1
  87. package/lib/operations/find_and_modify.js +5 -1
  88. package/lib/operations/find_and_modify.js.map +1 -1
  89. package/lib/operations/get_more.js +4 -1
  90. package/lib/operations/get_more.js.map +1 -1
  91. package/lib/operations/indexes.js +21 -0
  92. package/lib/operations/indexes.js.map +1 -1
  93. package/lib/operations/insert.js +6 -0
  94. package/lib/operations/insert.js.map +1 -1
  95. package/lib/operations/is_capped.js +3 -0
  96. package/lib/operations/is_capped.js.map +1 -1
  97. package/lib/operations/kill_cursors.js +4 -1
  98. package/lib/operations/kill_cursors.js.map +1 -1
  99. package/lib/operations/list_collections.js +3 -0
  100. package/lib/operations/list_collections.js.map +1 -1
  101. package/lib/operations/list_databases.js +3 -0
  102. package/lib/operations/list_databases.js.map +1 -1
  103. package/lib/operations/operation.js.map +1 -1
  104. package/lib/operations/options_operation.js +3 -0
  105. package/lib/operations/options_operation.js.map +1 -1
  106. package/lib/operations/profiling_level.js +3 -0
  107. package/lib/operations/profiling_level.js.map +1 -1
  108. package/lib/operations/remove_user.js +3 -0
  109. package/lib/operations/remove_user.js.map +1 -1
  110. package/lib/operations/rename.js +3 -0
  111. package/lib/operations/rename.js.map +1 -1
  112. package/lib/operations/run_command.js +8 -2
  113. package/lib/operations/run_command.js.map +1 -1
  114. package/lib/operations/search_indexes/create.js +4 -1
  115. package/lib/operations/search_indexes/create.js.map +1 -1
  116. package/lib/operations/search_indexes/drop.js +4 -1
  117. package/lib/operations/search_indexes/drop.js.map +1 -1
  118. package/lib/operations/search_indexes/update.js +4 -1
  119. package/lib/operations/search_indexes/update.js.map +1 -1
  120. package/lib/operations/set_profiling_level.js +3 -0
  121. package/lib/operations/set_profiling_level.js.map +1 -1
  122. package/lib/operations/stats.js +3 -0
  123. package/lib/operations/stats.js.map +1 -1
  124. package/lib/operations/update.js +3 -0
  125. package/lib/operations/update.js.map +1 -1
  126. package/lib/operations/validate_collection.js +3 -0
  127. package/lib/operations/validate_collection.js.map +1 -1
  128. package/lib/sdam/events.js +18 -0
  129. package/lib/sdam/events.js.map +1 -1
  130. package/lib/sdam/monitor.js +86 -71
  131. package/lib/sdam/monitor.js.map +1 -1
  132. package/lib/sdam/server.js +92 -98
  133. package/lib/sdam/server.js.map +1 -1
  134. package/lib/sdam/server_selection.js +13 -5
  135. package/lib/sdam/server_selection.js.map +1 -1
  136. package/lib/sdam/server_selection_events.js +85 -0
  137. package/lib/sdam/server_selection_events.js.map +1 -0
  138. package/lib/sdam/topology.js +61 -18
  139. package/lib/sdam/topology.js.map +1 -1
  140. package/lib/sessions.js +11 -9
  141. package/lib/sessions.js.map +1 -1
  142. package/lib/utils.js +25 -17
  143. package/lib/utils.js.map +1 -1
  144. package/mongodb.d.ts +131 -57
  145. package/package.json +28 -27
  146. package/src/bson.ts +2 -0
  147. package/src/bulk/common.ts +29 -22
  148. package/src/change_stream.ts +11 -5
  149. package/src/client-side-encryption/state_machine.ts +77 -62
  150. package/src/cmap/auth/auth_provider.ts +4 -0
  151. package/src/cmap/auth/gssapi.ts +1 -1
  152. package/src/cmap/auth/mongo_credentials.ts +2 -2
  153. package/src/cmap/auth/mongocr.ts +2 -6
  154. package/src/cmap/auth/mongodb_aws.ts +69 -64
  155. package/src/cmap/auth/mongodb_oidc/callback_workflow.ts +2 -2
  156. package/src/cmap/auth/mongodb_oidc/service_workflow.ts +1 -1
  157. package/src/cmap/auth/plain.ts +1 -1
  158. package/src/cmap/auth/scram.ts +7 -9
  159. package/src/cmap/auth/x509.ts +1 -5
  160. package/src/cmap/command_monitoring_events.ts +32 -4
  161. package/src/cmap/commands.ts +4 -0
  162. package/src/cmap/connect.ts +119 -159
  163. package/src/cmap/connection.ts +408 -961
  164. package/src/cmap/connection_pool.ts +93 -155
  165. package/src/cmap/stream_description.ts +21 -1
  166. package/src/cmap/wire_protocol/compression.ts +1 -2
  167. package/src/cmap/wire_protocol/on_data.ts +132 -0
  168. package/src/collection.ts +14 -6
  169. package/src/connection_string.ts +49 -3
  170. package/src/constants.ts +20 -0
  171. package/src/cursor/abstract_cursor.ts +7 -1
  172. package/src/error.ts +9 -9
  173. package/src/index.ts +33 -12
  174. package/src/mongo_client.ts +20 -7
  175. package/src/mongo_client_auth_providers.ts +54 -0
  176. package/src/mongo_logger.ts +376 -50
  177. package/src/mongo_types.ts +58 -3
  178. package/src/operations/aggregate.ts +4 -0
  179. package/src/operations/bulk_write.ts +4 -0
  180. package/src/operations/collections.ts +4 -0
  181. package/src/operations/command.ts +1 -1
  182. package/src/operations/count.ts +4 -0
  183. package/src/operations/create_collection.ts +4 -0
  184. package/src/operations/delete.ts +4 -0
  185. package/src/operations/distinct.ts +4 -0
  186. package/src/operations/drop.ts +8 -0
  187. package/src/operations/estimated_document_count.ts +4 -0
  188. package/src/operations/execute_operation.ts +28 -31
  189. package/src/operations/find.ts +5 -1
  190. package/src/operations/find_and_modify.ts +7 -5
  191. package/src/operations/get_more.ts +4 -1
  192. package/src/operations/indexes.ts +29 -0
  193. package/src/operations/insert.ts +8 -0
  194. package/src/operations/is_capped.ts +4 -0
  195. package/src/operations/kill_cursors.ts +5 -1
  196. package/src/operations/list_collections.ts +4 -0
  197. package/src/operations/list_databases.ts +4 -0
  198. package/src/operations/operation.ts +4 -0
  199. package/src/operations/options_operation.ts +3 -0
  200. package/src/operations/profiling_level.ts +4 -0
  201. package/src/operations/remove_user.ts +4 -0
  202. package/src/operations/rename.ts +4 -0
  203. package/src/operations/run_command.ts +10 -2
  204. package/src/operations/search_indexes/create.ts +5 -1
  205. package/src/operations/search_indexes/drop.ts +5 -1
  206. package/src/operations/search_indexes/update.ts +5 -1
  207. package/src/operations/set_profiling_level.ts +4 -0
  208. package/src/operations/stats.ts +4 -0
  209. package/src/operations/update.ts +4 -0
  210. package/src/operations/validate_collection.ts +4 -0
  211. package/src/sdam/events.ts +31 -3
  212. package/src/sdam/monitor.ts +119 -97
  213. package/src/sdam/server.ts +113 -152
  214. package/src/sdam/server_selection.ts +21 -13
  215. package/src/sdam/server_selection_events.ts +142 -0
  216. package/src/sdam/topology.ts +200 -46
  217. package/src/sessions.ts +33 -32
  218. package/src/utils.ts +28 -32
  219. package/lib/cmap/message_stream.js +0 -149
  220. package/lib/cmap/message_stream.js.map +0 -1
  221. package/src/cmap/message_stream.ts +0 -220
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LEGAL_TCP_SOCKET_OPTIONS = exports.LEGAL_TLS_SOCKET_OPTIONS = exports.prepareHandshakeDocument = exports.connect = exports.AUTH_PROVIDERS = void 0;
3
+ exports.makeSocket = exports.LEGAL_TCP_SOCKET_OPTIONS = exports.LEGAL_TLS_SOCKET_OPTIONS = exports.prepareHandshakeDocument = exports.performInitialHandshake = exports.makeConnection = exports.connect = void 0;
4
4
  const net = require("net");
5
5
  const tls = require("tls");
6
6
  const constants_1 = require("../constants");
@@ -8,44 +8,31 @@ const deps_1 = require("../deps");
8
8
  const error_1 = require("../error");
9
9
  const utils_1 = require("../utils");
10
10
  const auth_provider_1 = require("./auth/auth_provider");
11
- const gssapi_1 = require("./auth/gssapi");
12
- const mongocr_1 = require("./auth/mongocr");
13
- const mongodb_aws_1 = require("./auth/mongodb_aws");
14
- const mongodb_oidc_1 = require("./auth/mongodb_oidc");
15
- const plain_1 = require("./auth/plain");
16
11
  const providers_1 = require("./auth/providers");
17
- const scram_1 = require("./auth/scram");
18
- const x509_1 = require("./auth/x509");
19
12
  const connection_1 = require("./connection");
20
13
  const constants_2 = require("./wire_protocol/constants");
21
- /** @internal */
22
- exports.AUTH_PROVIDERS = new Map([
23
- [providers_1.AuthMechanism.MONGODB_AWS, new mongodb_aws_1.MongoDBAWS()],
24
- [providers_1.AuthMechanism.MONGODB_CR, new mongocr_1.MongoCR()],
25
- [providers_1.AuthMechanism.MONGODB_GSSAPI, new gssapi_1.GSSAPI()],
26
- [providers_1.AuthMechanism.MONGODB_OIDC, new mongodb_oidc_1.MongoDBOIDC()],
27
- [providers_1.AuthMechanism.MONGODB_PLAIN, new plain_1.Plain()],
28
- [providers_1.AuthMechanism.MONGODB_SCRAM_SHA1, new scram_1.ScramSHA1()],
29
- [providers_1.AuthMechanism.MONGODB_SCRAM_SHA256, new scram_1.ScramSHA256()],
30
- [providers_1.AuthMechanism.MONGODB_X509, new x509_1.X509()]
31
- ]);
32
- function connect(options, callback) {
33
- makeConnection({ ...options, existingSocket: undefined }, (err, socket) => {
34
- if (err || !socket) {
35
- return callback(err);
36
- }
37
- let ConnectionType = options.connectionType ?? connection_1.Connection;
38
- if (options.autoEncrypter) {
39
- ConnectionType = connection_1.CryptoConnection;
40
- }
41
- const connection = new ConnectionType(socket, options);
42
- performInitialHandshake(connection, options).then(() => callback(undefined, connection), error => {
43
- connection.destroy({ force: false });
44
- callback(error);
45
- });
46
- });
14
+ async function connect(options) {
15
+ let connection = null;
16
+ try {
17
+ const socket = await makeSocket(options);
18
+ connection = makeConnection(options, socket);
19
+ await performInitialHandshake(connection, options);
20
+ return connection;
21
+ }
22
+ catch (error) {
23
+ connection?.destroy({ force: false });
24
+ throw error;
25
+ }
47
26
  }
48
27
  exports.connect = connect;
28
+ function makeConnection(options, socket) {
29
+ let ConnectionType = options.connectionType ?? connection_1.Connection;
30
+ if (options.autoEncrypter) {
31
+ ConnectionType = connection_1.CryptoConnection;
32
+ }
33
+ return new ConnectionType(socket, options);
34
+ }
35
+ exports.makeConnection = makeConnection;
49
36
  function checkSupportedServer(hello, options) {
50
37
  const maxWireVersion = Number(hello.maxWireVersion);
51
38
  const minWireVersion = Number(hello.minWireVersion);
@@ -65,7 +52,7 @@ async function performInitialHandshake(conn, options) {
65
52
  const credentials = options.credentials;
66
53
  if (credentials) {
67
54
  if (!(credentials.mechanism === providers_1.AuthMechanism.MONGODB_DEFAULT) &&
68
- !exports.AUTH_PROVIDERS.get(credentials.mechanism)) {
55
+ !options.authProviders.getOrCreateProvider(credentials.mechanism)) {
69
56
  throw new error_1.MongoInvalidArgumentError(`AuthMechanism '${credentials.mechanism}' not supported`);
70
57
  }
71
58
  }
@@ -79,7 +66,7 @@ async function performInitialHandshake(conn, options) {
79
66
  handshakeOptions.socketTimeoutMS = options.connectTimeoutMS;
80
67
  }
81
68
  const start = new Date().getTime();
82
- const response = await conn.commandAsync((0, utils_1.ns)('admin.$cmd'), handshakeDoc, handshakeOptions);
69
+ const response = await conn.command((0, utils_1.ns)('admin.$cmd'), handshakeDoc, handshakeOptions);
83
70
  if (!('isWritablePrimary' in response)) {
84
71
  // Provide hello-style response document.
85
72
  response.isWritablePrimary = response[constants_1.LEGACY_HELLO_COMMAND];
@@ -106,7 +93,7 @@ async function performInitialHandshake(conn, options) {
106
93
  // store the response on auth context
107
94
  authContext.response = response;
108
95
  const resolvedCredentials = credentials.resolveAuthMechanism(response);
109
- const provider = exports.AUTH_PROVIDERS.get(resolvedCredentials.mechanism);
96
+ const provider = options.authProviders.getOrCreateProvider(resolvedCredentials.mechanism);
110
97
  if (!provider) {
111
98
  throw new error_1.MongoInvalidArgumentError(`No AuthProvider for ${resolvedCredentials.mechanism} defined.`);
112
99
  }
@@ -123,7 +110,11 @@ async function performInitialHandshake(conn, options) {
123
110
  throw error;
124
111
  }
125
112
  }
113
+ // Connection establishment is socket creation (tcp handshake, tls handshake, MongoDB handshake (saslStart, saslContinue))
114
+ // Once connection is established, command logging can log events (if enabled)
115
+ conn.established = true;
126
116
  }
117
+ exports.performInitialHandshake = performInitialHandshake;
127
118
  /**
128
119
  * @internal
129
120
  *
@@ -146,14 +137,14 @@ async function prepareHandshakeDocument(authContext) {
146
137
  if (credentials) {
147
138
  if (credentials.mechanism === providers_1.AuthMechanism.MONGODB_DEFAULT && credentials.username) {
148
139
  handshakeDoc.saslSupportedMechs = `${credentials.source}.${credentials.username}`;
149
- const provider = exports.AUTH_PROVIDERS.get(providers_1.AuthMechanism.MONGODB_SCRAM_SHA256);
140
+ const provider = authContext.options.authProviders.getOrCreateProvider(providers_1.AuthMechanism.MONGODB_SCRAM_SHA256);
150
141
  if (!provider) {
151
142
  // This auth mechanism is always present.
152
143
  throw new error_1.MongoInvalidArgumentError(`No AuthProvider for ${providers_1.AuthMechanism.MONGODB_SCRAM_SHA256} defined.`);
153
144
  }
154
145
  return provider.prepare(handshakeDoc, authContext);
155
146
  }
156
- const provider = exports.AUTH_PROVIDERS.get(credentials.mechanism);
147
+ const provider = authContext.options.authProviders.getOrCreateProvider(credentials.mechanism);
157
148
  if (!provider) {
158
149
  throw new error_1.MongoInvalidArgumentError(`No AuthProvider for ${credentials.mechanism} defined.`);
159
150
  }
@@ -232,27 +223,19 @@ function parseSslOptions(options) {
232
223
  }
233
224
  return result;
234
225
  }
235
- const SOCKET_ERROR_EVENT_LIST = ['error', 'close', 'timeout', 'parseError'];
236
- const SOCKET_ERROR_EVENTS = new Set(SOCKET_ERROR_EVENT_LIST);
237
- function makeConnection(options, _callback) {
226
+ async function makeSocket(options) {
238
227
  const useTLS = options.tls ?? false;
239
228
  const noDelay = options.noDelay ?? true;
240
229
  const connectTimeoutMS = options.connectTimeoutMS ?? 30000;
241
230
  const rejectUnauthorized = options.rejectUnauthorized ?? true;
242
231
  const existingSocket = options.existingSocket;
243
232
  let socket;
244
- const callback = function (err, ret) {
245
- if (err && socket) {
246
- socket.destroy();
247
- }
248
- _callback(err, ret);
249
- };
250
233
  if (options.proxyHost != null) {
251
234
  // Currently, only Socks5 is supported.
252
235
  return makeSocks5Connection({
253
236
  ...options,
254
237
  connectTimeoutMS // Should always be present for Socks5
255
- }, callback);
238
+ });
256
239
  }
257
240
  if (useTLS) {
258
241
  const tlsSocket = tls.connect(parseSslOptions(options));
@@ -273,44 +256,44 @@ function makeConnection(options, _callback) {
273
256
  socket.setKeepAlive(true, 300000);
274
257
  socket.setTimeout(connectTimeoutMS);
275
258
  socket.setNoDelay(noDelay);
276
- const connectEvent = useTLS ? 'secureConnect' : 'connect';
277
- let cancellationHandler;
278
- function errorHandler(eventName) {
279
- return (err) => {
280
- SOCKET_ERROR_EVENTS.forEach(event => socket.removeAllListeners(event));
281
- if (cancellationHandler && options.cancellationToken) {
282
- options.cancellationToken.removeListener('cancel', cancellationHandler);
283
- }
284
- socket.removeListener(connectEvent, connectHandler);
285
- callback(connectionFailureError(eventName, err));
286
- };
287
- }
288
- function connectHandler() {
289
- SOCKET_ERROR_EVENTS.forEach(event => socket.removeAllListeners(event));
290
- if (cancellationHandler && options.cancellationToken) {
291
- options.cancellationToken.removeListener('cancel', cancellationHandler);
292
- }
293
- if ('authorizationError' in socket) {
294
- if (socket.authorizationError && rejectUnauthorized) {
295
- // TODO(NODE-5192): wrap this with a MongoError subclass
296
- return callback(socket.authorizationError);
297
- }
259
+ let cancellationHandler = null;
260
+ const { promise: connectedSocket, resolve, reject } = (0, utils_1.promiseWithResolvers)();
261
+ if (existingSocket) {
262
+ resolve(socket);
263
+ }
264
+ else {
265
+ const connectEvent = useTLS ? 'secureConnect' : 'connect';
266
+ socket
267
+ .once(connectEvent, () => resolve(socket))
268
+ .once('error', error => reject(connectionFailureError('error', error)))
269
+ .once('timeout', () => reject(connectionFailureError('timeout')))
270
+ .once('close', () => reject(connectionFailureError('close')));
271
+ if (options.cancellationToken != null) {
272
+ cancellationHandler = () => reject(connectionFailureError('cancel'));
273
+ options.cancellationToken.once('cancel', cancellationHandler);
298
274
  }
299
- socket.setTimeout(0);
300
- callback(undefined, socket);
301
275
  }
302
- SOCKET_ERROR_EVENTS.forEach(event => socket.once(event, errorHandler(event)));
303
- if (options.cancellationToken) {
304
- cancellationHandler = errorHandler('cancel');
305
- options.cancellationToken.once('cancel', cancellationHandler);
276
+ try {
277
+ socket = await connectedSocket;
278
+ return socket;
306
279
  }
307
- if (existingSocket) {
308
- process.nextTick(connectHandler);
280
+ catch (error) {
281
+ socket.destroy();
282
+ if ('authorizationError' in socket && socket.authorizationError != null && rejectUnauthorized) {
283
+ // TODO(NODE-5192): wrap this with a MongoError subclass
284
+ throw socket.authorizationError;
285
+ }
286
+ throw error;
309
287
  }
310
- else {
311
- socket.once(connectEvent, connectHandler);
288
+ finally {
289
+ socket.setTimeout(0);
290
+ socket.removeAllListeners();
291
+ if (cancellationHandler != null) {
292
+ options.cancellationToken?.removeListener('cancel', cancellationHandler);
293
+ }
312
294
  }
313
295
  }
296
+ exports.makeSocket = makeSocket;
314
297
  let socks = null;
315
298
  function loadSocks() {
316
299
  if (socks == null) {
@@ -322,31 +305,24 @@ function loadSocks() {
322
305
  }
323
306
  return socks;
324
307
  }
325
- function makeSocks5Connection(options, callback) {
308
+ async function makeSocks5Connection(options) {
326
309
  const hostAddress = utils_1.HostAddress.fromHostPort(options.proxyHost ?? '', // proxyHost is guaranteed to set here
327
310
  options.proxyPort ?? 1080);
328
311
  // First, connect to the proxy server itself:
329
- makeConnection({
312
+ const rawSocket = await makeSocket({
330
313
  ...options,
331
314
  hostAddress,
332
315
  tls: false,
333
316
  proxyHost: undefined
334
- }, (err, rawSocket) => {
335
- if (err || !rawSocket) {
336
- return callback(err);
337
- }
338
- const destination = parseConnectOptions(options);
339
- if (typeof destination.host !== 'string' || typeof destination.port !== 'number') {
340
- return callback(new error_1.MongoInvalidArgumentError('Can only make Socks5 connections to TCP hosts'));
341
- }
342
- try {
343
- socks ??= loadSocks();
344
- }
345
- catch (error) {
346
- return callback(error);
347
- }
317
+ });
318
+ const destination = parseConnectOptions(options);
319
+ if (typeof destination.host !== 'string' || typeof destination.port !== 'number') {
320
+ throw new error_1.MongoInvalidArgumentError('Can only make Socks5 connections to TCP hosts');
321
+ }
322
+ socks ??= loadSocks();
323
+ try {
348
324
  // Then, establish the Socks5 proxy connection:
349
- socks.SocksClient.createConnection({
325
+ const { socket } = await socks.SocksClient.createConnection({
350
326
  existing_socket: rawSocket,
351
327
  timeout: options.connectTimeoutMS,
352
328
  command: 'connect',
@@ -362,21 +338,23 @@ function makeSocks5Connection(options, callback) {
362
338
  userId: options.proxyUsername || undefined,
363
339
  password: options.proxyPassword || undefined
364
340
  }
365
- }).then(({ socket }) => {
366
- // Finally, now treat the resulting duplex stream as the
367
- // socket over which we send and receive wire protocol messages:
368
- makeConnection({
369
- ...options,
370
- existingSocket: socket,
371
- proxyHost: undefined
372
- }, callback);
373
- }, error => callback(connectionFailureError('error', error)));
374
- });
341
+ });
342
+ // Finally, now treat the resulting duplex stream as the
343
+ // socket over which we send and receive wire protocol messages:
344
+ return await makeSocket({
345
+ ...options,
346
+ existingSocket: socket,
347
+ proxyHost: undefined
348
+ });
349
+ }
350
+ catch (error) {
351
+ throw connectionFailureError('error', error);
352
+ }
375
353
  }
376
- function connectionFailureError(type, err) {
354
+ function connectionFailureError(type, cause) {
377
355
  switch (type) {
378
356
  case 'error':
379
- return new error_1.MongoNetworkError(error_1.MongoError.buildErrorMessage(err), { cause: err });
357
+ return new error_1.MongoNetworkError(error_1.MongoError.buildErrorMessage(cause), { cause });
380
358
  case 'timeout':
381
359
  return new error_1.MongoNetworkTimeoutError('connection timed out');
382
360
  case 'close':
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/cmap/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/cmap/connect.ts"],"names":[],"mappings":";;;AACA,2BAA2B;AAE3B,2BAA2B;AAG3B,4CAAoD;AACpD,kCAAkD;AAClD,oCASkB;AAClB,oCAAiE;AACjE,wDAAmD;AACnD,gDAAiD;AACjD,6CAKsB;AAEtB,yDAKmC;AAK5B,KAAK,UAAU,OAAO,CAAC,OAA0B;IACtD,IAAI,UAAU,GAAsB,IAAI,CAAC;IACzC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,uBAAuB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC;KACnB;IAAC,OAAO,KAAK,EAAE;QACd,UAAU,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACtC,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAXD,0BAWC;AAED,SAAgB,cAAc,CAAC,OAA0B,EAAE,MAAc;IACvE,IAAI,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,uBAAU,CAAC;IAC1D,IAAI,OAAO,CAAC,aAAa,EAAE;QACzB,cAAc,GAAG,6BAAgB,CAAC;KACnC;IAED,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAPD,wCAOC;AAED,SAAS,oBAAoB,CAAC,KAAe,EAAE,OAA0B;IACvE,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACpD,MAAM,uBAAuB,GAC3B,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,sCAA0B,CAAC;IAChF,MAAM,sBAAsB,GAC1B,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,sCAA0B,CAAC;IAEhF,IAAI,uBAAuB,EAAE;QAC3B,IAAI,sBAAsB,EAAE;YAC1B,OAAO,IAAI,CAAC;SACb;QAED,MAAM,OAAO,GAAG,aAAa,OAAO,CAAC,WAAW,iCAAiC,IAAI,CAAC,SAAS,CAC7F,KAAK,CAAC,cAAc,CACrB,6DAA6D,sCAA0B,aAAa,wCAA4B,GAAG,CAAC;QACrI,OAAO,IAAI,+BAAuB,CAAC,OAAO,CAAC,CAAC;KAC7C;IAED,MAAM,OAAO,GAAG,aAAa,OAAO,CAAC,WAAW,iCAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAC1C,8DAA8D,sCAA0B,aAAa,wCAA4B,GAAG,CAAC;IACrI,OAAO,IAAI,+BAAuB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,IAAgB,EAChB,OAA0B;IAE1B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAExC,IAAI,WAAW,EAAE;QACf,IACE,CAAC,CAAC,WAAW,CAAC,SAAS,KAAK,yBAAa,CAAC,eAAe,CAAC;YAC1D,CAAC,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,SAAS,CAAC,EACjE;YACA,MAAM,IAAI,iCAAyB,CAAC,kBAAkB,WAAW,CAAC,SAAS,iBAAiB,CAAC,CAAC;SAC/F;KACF;IAED,MAAM,WAAW,GAAG,IAAI,2BAAW,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAE/B,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAEjE,8HAA8H;IAC9H,MAAM,gBAAgB,GAAmB,EAAE,GAAG,OAAO,EAAE,CAAC;IACxD,IAAI,OAAO,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE;QAChD,oGAAoG;QACpG,gBAAgB,CAAC,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;KAC7D;IAED,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAA,UAAE,EAAC,YAAY,CAAC,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAEtF,IAAI,CAAC,CAAC,mBAAmB,IAAI,QAAQ,CAAC,EAAE;QACtC,yCAAyC;QACzC,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,gCAAoB,CAAC,CAAC;KAC7D;IAED,IAAI,QAAQ,CAAC,OAAO,EAAE;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;IAED,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,kBAAkB,EAAE;QACtB,MAAM,kBAAkB,CAAC;KAC1B;IAED,IAAI,OAAO,CAAC,YAAY,EAAE;QACxB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YACvB,MAAM,IAAI,+BAAuB,CAC/B,yDAAyD;gBACvD,4CAA4C,CAC/C,CAAC;SACH;KACF;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,kDAAkD;IAClD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACtB,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;IAEhD,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,WAAW,EAAE;QACxC,qCAAqC;QACrC,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEhC,MAAM,mBAAmB,GAAG,WAAW,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,iCAAyB,CACjC,uBAAuB,mBAAmB,CAAC,SAAS,WAAW,CAChE,CAAC;SACH;QAED,IAAI;YACF,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAClC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,kBAAU,EAAE;gBAC/B,KAAK,CAAC,aAAa,CAAC,uBAAe,CAAC,cAAc,CAAC,CAAC;gBACpD,IAAI,IAAA,gCAAwB,EAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE;oBAC5D,KAAK,CAAC,aAAa,CAAC,uBAAe,CAAC,mBAAmB,CAAC,CAAC;iBAC1D;aACF;YACD,MAAM,KAAK,CAAC;SACb;KACF;IAED,0HAA0H;IAC1H,8EAA8E;IAC9E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,CAAC;AAvFD,0DAuFC;AAmBD;;;;GAIG;AACI,KAAK,UAAU,wBAAwB,CAC5C,WAAwB;IAExB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC;IAE7C,MAAM,YAAY,GAAsB;QACtC,CAAC,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAoB,CAAC,EAAE,CAAC;QACzF,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,OAAO,CAAC,QAAQ;QACxB,WAAW,EAAE,WAAW;KACzB,CAAC;IAEF,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE;QACjC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;KAClC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IAC5C,IAAI,WAAW,EAAE;QACf,IAAI,WAAW,CAAC,SAAS,KAAK,yBAAa,CAAC,eAAe,IAAI,WAAW,CAAC,QAAQ,EAAE;YACnF,YAAY,CAAC,kBAAkB,GAAG,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAElF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,mBAAmB,CACpE,yBAAa,CAAC,oBAAoB,CACnC,CAAC;YACF,IAAI,CAAC,QAAQ,EAAE;gBACb,yCAAyC;gBACzC,MAAM,IAAI,iCAAyB,CACjC,uBAAuB,yBAAa,CAAC,oBAAoB,WAAW,CACrE,CAAC;aACH;YACD,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;SACpD;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC9F,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,iCAAyB,CAAC,uBAAuB,WAAW,CAAC,SAAS,WAAW,CAAC,CAAC;SAC9F;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;KACpD;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAzCD,4DAyCC;AAED,cAAc;AACD,QAAA,wBAAwB,GAAG;IACtC,eAAe;IACf,IAAI;IACJ,MAAM;IACN,qBAAqB;IACrB,SAAS;IACT,KAAK;IACL,WAAW;IACX,KAAK;IACL,WAAW;IACX,YAAY;IACZ,KAAK;IACL,oBAAoB;IACpB,eAAe;IACf,gBAAgB;IAChB,YAAY;IACZ,SAAS;CACD,CAAC;AAEX,cAAc;AACD,QAAA,wBAAwB,GAAG;IACtC,QAAQ;IACR,OAAO;IACP,cAAc;IACd,WAAW;IACX,QAAQ;CACA,CAAC;AAEX,SAAS,mBAAmB,CAAC,OAA0B;IACrD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,iCAAyB,CAAC,kCAAkC,CAAC,CAAC;IAE1F,MAAM,MAAM,GAA2D,EAAE,CAAC;IAC1E,KAAK,MAAM,IAAI,IAAI,gCAAwB,EAAE;QAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;YACxB,MAAmB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;SAC5C;KACF;IAED,IAAI,OAAO,WAAW,CAAC,UAAU,KAAK,QAAQ,EAAE;QAC9C,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC;QACrC,OAAO,MAA+B,CAAC;KACxC;SAAM,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC/C,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QAC/B,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QAC/B,OAAO,MAA+B,CAAC;KACxC;SAAM;QACL,yDAAyD;QACzD,iEAAiE;QACjE,kBAAkB;QAClB,MAAM,IAAI,yBAAiB,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACtF;AACH,CAAC;AAID,SAAS,eAAe,CAAC,OAA8B;IACrD,MAAM,MAAM,GAAsB,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC/D,6BAA6B;IAC7B,KAAK,MAAM,IAAI,IAAI,gCAAwB,EAAE;QAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;YACxB,MAAmB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;SAC5C;KACF;IAED,IAAI,OAAO,CAAC,cAAc,EAAE;QAC1B,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;KACxC;IAED,oDAAoD;IACpD,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACtE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;KACjC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,OAA8B;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACxC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;IAC3D,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC;IAC9D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAE9C,IAAI,MAAc,CAAC;IAEnB,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE;QAC7B,uCAAuC;QACvC,OAAO,oBAAoB,CAAC;YAC1B,GAAG,OAAO;YACV,gBAAgB,CAAC,sCAAsC;SACxD,CAAC,CAAC;KACJ;IAED,IAAI,MAAM,EAAE;QACV,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,IAAI,OAAO,SAAS,CAAC,oBAAoB,KAAK,UAAU,EAAE;YACxD,SAAS,CAAC,oBAAoB,EAAE,CAAC;SAClC;QACD,MAAM,GAAG,SAAS,CAAC;KACpB;SAAM,IAAI,cAAc,EAAE;QACzB,4EAA4E;QAC5E,wEAAwE;QACxE,wCAAwC;QACxC,MAAM,GAAG,cAAc,CAAC;KACzB;SAAM;QACL,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;KAC7D;IAED,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACpC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAE3B,IAAI,mBAAmB,GAAkC,IAAI,CAAC;IAE9D,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,4BAAoB,GAAU,CAAC;IACrF,IAAI,cAAc,EAAE;QAClB,OAAO,CAAC,MAAM,CAAC,CAAC;KACjB;SAAM;QACL,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,MAAM;aACH,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACzC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;aACtE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;aAChE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEhE,IAAI,OAAO,CAAC,iBAAiB,IAAI,IAAI,EAAE;YACrC,mBAAmB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;SAC/D;KACF;IAED,IAAI;QACF,MAAM,GAAG,MAAM,eAAe,CAAC;QAC/B,OAAO,MAAM,CAAC;KACf;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,oBAAoB,IAAI,MAAM,IAAI,MAAM,CAAC,kBAAkB,IAAI,IAAI,IAAI,kBAAkB,EAAE;YAC7F,wDAAwD;YACxD,MAAM,MAAM,CAAC,kBAAkB,CAAC;SACjC;QACD,MAAM,KAAK,CAAC;KACb;YAAS;QACR,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC5B,IAAI,mBAAmB,IAAI,IAAI,EAAE;YAC/B,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;SAC1E;KACF;AACH,CAAC;AAxED,gCAwEC;AAED,IAAI,KAAK,GAAoB,IAAI,CAAC;AAClC,SAAS,SAAS;IAChB,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,MAAM,WAAW,GAAG,IAAA,eAAQ,GAAE,CAAC;QAC/B,IAAI,cAAc,IAAI,WAAW,EAAE;YACjC,MAAM,WAAW,CAAC,YAAY,CAAC;SAChC;QACD,KAAK,GAAG,WAAW,CAAC;KACrB;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,OAA8B;IAChE,MAAM,WAAW,GAAG,mBAAW,CAAC,YAAY,CAC1C,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,sCAAsC;IAC/D,OAAO,CAAC,SAAS,IAAI,IAAI,CAC1B,CAAC;IAEF,6CAA6C;IAC7C,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC;QACjC,GAAG,OAAO;QACV,WAAW;QACX,GAAG,EAAE,KAAK;QACV,SAAS,EAAE,SAAS;KACrB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAA0B,CAAC;IAC1E,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE;QAChF,MAAM,IAAI,iCAAyB,CAAC,+CAA+C,CAAC,CAAC;KACtF;IAED,KAAK,KAAK,SAAS,EAAE,CAAC;IAEtB,IAAI;QACF,+CAA+C;QAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;YAC1D,eAAe,EAAE,SAAS;YAC1B,OAAO,EAAE,OAAO,CAAC,gBAAgB;YACjC,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE;gBACX,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;aACvB;YACD,KAAK,EAAE;gBACL,4DAA4D;gBAC5D,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,OAAO,CAAC,aAAa,IAAI,SAAS;gBAC1C,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,SAAS;aAC7C;SACF,CAAC,CAAC;QAEH,wDAAwD;QACxD,gEAAgE;QAChE,OAAO,MAAM,UAAU,CAAC;YACtB,GAAG,OAAO;YACV,cAAc,EAAE,MAAM;YACtB,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAC9C;AACH,CAAC;AAID,SAAS,sBAAsB,CAC7B,IAA8C,EAC9C,KAAa;IAEb,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO;YACV,OAAO,IAAI,yBAAiB,CAAC,kBAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,KAAK,SAAS;YACZ,OAAO,IAAI,gCAAwB,CAAC,sBAAsB,CAAC,CAAC;QAC9D,KAAK,OAAO;YACV,OAAO,IAAI,yBAAiB,CAAC,mBAAmB,CAAC,CAAC;QACpD,KAAK,QAAQ;YACX,OAAO,IAAI,yBAAiB,CAAC,wCAAwC,CAAC,CAAC;QACzE;YACE,OAAO,IAAI,yBAAiB,CAAC,uBAAuB,CAAC,CAAC;KACzD;AACH,CAAC"}