camusdb 0.6.0 → 0.8.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.
- package/README.md +250 -0
- package/dist/client.d.ts +73 -39
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +158 -169
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +19 -0
- package/dist/config.js.map +1 -1
- package/dist/endpoint-pool.d.ts +8 -0
- package/dist/endpoint-pool.d.ts.map +1 -1
- package/dist/endpoint-pool.js +25 -0
- package/dist/endpoint-pool.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/node-stats.d.ts +113 -0
- package/dist/node-stats.d.ts.map +1 -0
- package/dist/node-stats.js +90 -0
- package/dist/node-stats.js.map +1 -0
- package/dist/options.d.ts +10 -0
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +1 -0
- package/dist/options.js.map +1 -1
- package/dist/pipeline.d.ts +136 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +375 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/prepared/auto-prepare.d.ts +51 -0
- package/dist/prepared/auto-prepare.d.ts.map +1 -0
- package/dist/prepared/auto-prepare.js +150 -0
- package/dist/prepared/auto-prepare.js.map +1 -0
- package/dist/prepared/policy.d.ts +7 -0
- package/dist/prepared/policy.d.ts.map +1 -1
- package/dist/prepared/policy.js +16 -0
- package/dist/prepared/policy.js.map +1 -1
- package/dist/query-stream.d.ts +9 -1
- package/dist/query-stream.d.ts.map +1 -1
- package/dist/query-stream.js +20 -2
- package/dist/query-stream.js.map +1 -1
- package/dist/retry.d.ts +8 -0
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +12 -1
- package/dist/retry.js.map +1 -1
- package/dist/sql-syntax.d.ts +6 -0
- package/dist/sql-syntax.d.ts.map +1 -1
- package/dist/sql-syntax.js +8 -0
- package/dist/sql-syntax.js.map +1 -1
- package/dist/statements.d.ts +14 -0
- package/dist/statements.d.ts.map +1 -1
- package/dist/statements.js +45 -3
- package/dist/statements.js.map +1 -1
- package/dist/telemetry.d.ts +199 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +423 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/transaction.d.ts +60 -5
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +124 -24
- package/dist/transaction.js.map +1 -1
- package/dist/transport/authenticating-transport.d.ts +9 -1
- package/dist/transport/authenticating-transport.d.ts.map +1 -1
- package/dist/transport/authenticating-transport.js +13 -0
- package/dist/transport/authenticating-transport.js.map +1 -1
- package/dist/transport/grpc/batch-frames.d.ts +23 -5
- package/dist/transport/grpc/batch-frames.d.ts.map +1 -1
- package/dist/transport/grpc/batch-frames.js +29 -8
- package/dist/transport/grpc/batch-frames.js.map +1 -1
- package/dist/transport/grpc/batcher.d.ts +69 -5
- package/dist/transport/grpc/batcher.d.ts.map +1 -1
- package/dist/transport/grpc/batcher.js +217 -10
- package/dist/transport/grpc/batcher.js.map +1 -1
- package/dist/transport/grpc/grpc-transport.d.ts +35 -1
- package/dist/transport/grpc/grpc-transport.d.ts.map +1 -1
- package/dist/transport/grpc/grpc-transport.js +193 -7
- package/dist/transport/grpc/grpc-transport.js.map +1 -1
- package/dist/transport/grpc/messages.d.ts +15 -0
- package/dist/transport/grpc/messages.d.ts.map +1 -1
- package/dist/transport/grpc/messages.js +9 -0
- package/dist/transport/grpc/messages.js.map +1 -1
- package/dist/transport/rest-transport.d.ts +9 -1
- package/dist/transport/rest-transport.d.ts.map +1 -1
- package/dist/transport/rest-transport.js +24 -0
- package/dist/transport/rest-transport.js.map +1 -1
- package/dist/transport/sequential-pipeline.d.ts +21 -0
- package/dist/transport/sequential-pipeline.d.ts.map +1 -0
- package/dist/transport/sequential-pipeline.js +119 -0
- package/dist/transport/sequential-pipeline.js.map +1 -0
- package/dist/transport/transport.d.ts +94 -0
- package/dist/transport/transport.d.ts.map +1 -1
- package/dist/transport/transport.js +10 -0
- package/dist/transport/transport.js.map +1 -1
- package/package.json +10 -4
- package/proto/camus_sql.proto +114 -0
package/dist/client.js
CHANGED
|
@@ -11,16 +11,19 @@ import { describeConfig, resolveConnectionString, resolveOptions } from './confi
|
|
|
11
11
|
import { CamusError } from './errors.js';
|
|
12
12
|
import { CamusErrorCode } from './error-codes.js';
|
|
13
13
|
import { withDefaults } from './options.js';
|
|
14
|
+
import { registerStatement, releaseEvicted, shouldPrepare } from './prepared/auto-prepare.js';
|
|
14
15
|
import { PrepareDecision } from './prepared/policy.js';
|
|
15
16
|
import { CamusQueryStream } from './query-stream.js';
|
|
16
17
|
import { CamusResultSet, RowMapper } from './result-set.js';
|
|
17
|
-
import { delay, isRetryable,
|
|
18
|
+
import { delay, isRetryable, retryLoop } from './retry.js';
|
|
18
19
|
import { selectNextValueStatement } from './sequence.js';
|
|
19
20
|
import { isValidDatabaseName } from './sql-syntax.js';
|
|
20
21
|
import { ClientRuntime } from './runtime.js';
|
|
21
22
|
import { ROUTING_ACCEPT_VERSION } from './routing/advice.js';
|
|
22
23
|
import { CamusRouteOpKind } from './routing/route-cache.js';
|
|
23
|
-
import {
|
|
24
|
+
import { BufferedRowSource } from './row-source.js';
|
|
25
|
+
import { callStatement, isCallStatement, isDdlStatement, isWriteReturning, isPreparableStatement, runsInOwnTransaction, } from './statements.js';
|
|
26
|
+
import { CamusRetryKind, operationName, recordRetry, startOperation, traced } from './telemetry.js';
|
|
24
27
|
import { CamusTransaction } from './transaction.js';
|
|
25
28
|
import { encodeParameters } from './values/encode.js';
|
|
26
29
|
/**
|
|
@@ -152,13 +155,21 @@ export class CamusClient {
|
|
|
152
155
|
* All the `RETURNING` rows arrive in one reply. On gRPC the server refuses a reply larger than
|
|
153
156
|
* 4 MiB with `CADB0550`, before the commit, so the statement stores nothing. Use `queryStream` for
|
|
154
157
|
* a large result, such as an `INSERT … SELECT … RETURNING` or an `UPDATE` of many rows.
|
|
158
|
+
*
|
|
159
|
+
* A `CALL` goes to the non-query route, because the server runs a procedure only there. The
|
|
160
|
+
* result has no rows, and `affectedRows` is the number of rows that the procedure's SQL changed.
|
|
155
161
|
*/
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
162
|
+
query(sql, parameters, options = {}) {
|
|
163
|
+
return traced(this.runtime, { operationName: operationName(sql), queryText: sql }, (operation) => this.runQuery(sql, parameters, options, operation));
|
|
164
|
+
}
|
|
165
|
+
async runQuery(sql, parameters, options, operation) {
|
|
166
|
+
if (isWriteReturning(sql) || isCallStatement(sql)) {
|
|
167
|
+
return this.queryNonQueryRoute(sql, parameters, options, operation);
|
|
168
|
+
}
|
|
159
169
|
const encoded = encodeParameters(parameters);
|
|
160
170
|
const transaction = options.transaction;
|
|
161
171
|
const route = await this.route(sql, CamusRouteOpKind.Query, transaction, options.signal);
|
|
172
|
+
operation?.setEndpoint(route.endpoint);
|
|
162
173
|
const request = await this.buildRequest(sql, encoded, route, transaction, options, {
|
|
163
174
|
negotiateRouting: route.router !== undefined,
|
|
164
175
|
});
|
|
@@ -230,8 +241,29 @@ export class CamusClient {
|
|
|
230
241
|
* the same streaming query endpoint. Use this method for a `RETURNING` result that is too large
|
|
231
242
|
* for `query`. The server sends no row before the commit, so a conflict never surfaces mid-read
|
|
232
243
|
* for it. The stream reports no written-row count, so count the rows as you read them.
|
|
244
|
+
*
|
|
245
|
+
* A `CALL` goes to the non-query route, because the server runs a procedure only there. The
|
|
246
|
+
* procedure runs before this returns. The stream has no rows, and `affectedRows` is the number of
|
|
247
|
+
* rows that the procedure's SQL changed.
|
|
233
248
|
*/
|
|
234
249
|
async queryStream(sql, parameters, options = {}) {
|
|
250
|
+
// The span ends with the stream: at the last row, at a failed read, or at `close`.
|
|
251
|
+
const operation = startOperation(this.runtime, { operationName: operationName(sql), queryText: sql });
|
|
252
|
+
try {
|
|
253
|
+
const open = () => this.openQueryStream(sql, parameters, options, operation);
|
|
254
|
+
return await (operation === undefined ? open() : operation.run(open));
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
operation?.fail(error);
|
|
258
|
+
throw error;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
async openQueryStream(sql, parameters, options, operation) {
|
|
262
|
+
if (isCallStatement(sql)) {
|
|
263
|
+
const result = await this.executeNonQueryCore(sql, parameters, options, false, operation);
|
|
264
|
+
const source = new BufferedRowSource(result.returning ?? CamusResultSet.EMPTY, result.affectedRows);
|
|
265
|
+
return new CamusQueryStream(source, this.decodeOptions(options), operation);
|
|
266
|
+
}
|
|
235
267
|
const encoded = encodeParameters(parameters);
|
|
236
268
|
const transaction = options.transaction;
|
|
237
269
|
const writeReturning = isWriteReturning(sql);
|
|
@@ -239,6 +271,7 @@ export class CamusClient {
|
|
|
239
271
|
// trailer carries no routing metadata, so nothing is negotiated or learned. A write with
|
|
240
272
|
// RETURNING reuses the route learned for the write, which is where the rows live.
|
|
241
273
|
const route = await this.route(sql, writeReturning ? CamusRouteOpKind.NonQuery : CamusRouteOpKind.Query, transaction, options.signal);
|
|
274
|
+
operation?.setEndpoint(route.endpoint);
|
|
242
275
|
const request = await this.buildRequest(sql, encoded, route, transaction, options, {
|
|
243
276
|
negotiateRouting: false,
|
|
244
277
|
// A read runs in a read-only snapshot with no locking mode, but an autocommit write on the
|
|
@@ -248,7 +281,7 @@ export class CamusClient {
|
|
|
248
281
|
: undefined,
|
|
249
282
|
});
|
|
250
283
|
const source = await this.runtime.transport.executeQueryStream(request);
|
|
251
|
-
return new CamusQueryStream(source, this.decodeOptions(options));
|
|
284
|
+
return new CamusQueryStream(source, this.decodeOptions(options), operation);
|
|
252
285
|
}
|
|
253
286
|
/**
|
|
254
287
|
* Runs an `INSERT`, `UPDATE`, or `DELETE` and reports how many rows it changed.
|
|
@@ -273,6 +306,27 @@ export class CamusClient {
|
|
|
273
306
|
}
|
|
274
307
|
return this.executeNonQuery(sql, parameters, options);
|
|
275
308
|
}
|
|
309
|
+
/**
|
|
310
|
+
* Runs a procedure that a C# extension on the server defines, and reports how many rows the
|
|
311
|
+
* procedure's SQL changed.
|
|
312
|
+
*
|
|
313
|
+
* ```ts
|
|
314
|
+
* const { affectedRows } = await client.call('transfer', { from: 'alice', to: 'bob', amount: 30 });
|
|
315
|
+
* // runs CALL transfer(@from, @to, @amount)
|
|
316
|
+
* ```
|
|
317
|
+
*
|
|
318
|
+
* It sends `CALL procedure(@a, @b, ...)` with the parameters in the order of the object's keys,
|
|
319
|
+
* because a procedure takes its arguments by position. A procedure has no output parameters and
|
|
320
|
+
* no return value. The same statement as text also runs through `execute`, `query`, and
|
|
321
|
+
* `queryStream`. A `CALL` is not prepared, and it runs inside `options.transaction` when one is
|
|
322
|
+
* given.
|
|
323
|
+
*
|
|
324
|
+
* @throws {TypeError} when `procedure` is not a plain identifier: a letter or `_`, then letters,
|
|
325
|
+
* digits, or `_`. The driver sends nothing.
|
|
326
|
+
*/
|
|
327
|
+
async call(procedure, parameters, options = {}) {
|
|
328
|
+
return this.executeNonQuery(callStatement(procedure, parameters), parameters, options);
|
|
329
|
+
}
|
|
276
330
|
/**
|
|
277
331
|
* Runs a schema statement: `CREATE TABLE`, `ALTER TABLE`, `DROP INDEX`, a view definition, and
|
|
278
332
|
* so on.
|
|
@@ -281,7 +335,10 @@ export class CamusClient {
|
|
|
281
335
|
* a rollback cannot undo, so the server refuses it rather than promise a rollback it cannot
|
|
282
336
|
* deliver, and the driver refuses it before the round trip.
|
|
283
337
|
*/
|
|
284
|
-
|
|
338
|
+
executeDdl(sql, options = {}) {
|
|
339
|
+
return traced(this.runtime, { operationName: operationName(sql), queryText: sql }, (operation) => this.runDdl(sql, options, operation));
|
|
340
|
+
}
|
|
341
|
+
async runDdl(sql, options, operation) {
|
|
285
342
|
const transaction = options.transaction;
|
|
286
343
|
if (transaction !== undefined && runsInOwnTransaction(sql)) {
|
|
287
344
|
throw new CamusError(CamusErrorCode.StatementNotAllowedInTransaction, 'TRUNCATE runs in its own internal transaction and is refused inside an explicit one. It ' +
|
|
@@ -291,6 +348,7 @@ export class CamusClient {
|
|
|
291
348
|
const endpoint = transaction !== undefined
|
|
292
349
|
? await transaction.ensureStarted(undefined, options.signal)
|
|
293
350
|
: this.runtime.nextEndpoint();
|
|
351
|
+
operation?.setEndpoint(endpoint);
|
|
294
352
|
return this.runtime.transport.executeDdl({
|
|
295
353
|
endpoint,
|
|
296
354
|
database: this.runtime.database,
|
|
@@ -319,27 +377,66 @@ export class CamusClient {
|
|
|
319
377
|
* It performs exactly what `INSERT INTO` performs, and takes the same authorization, endpoint
|
|
320
378
|
* health, and error translation. Use it to avoid building statement text for a hot write path.
|
|
321
379
|
*/
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
endpoint
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
380
|
+
insert(table, values, options = {}) {
|
|
381
|
+
return traced(this.runtime, { operationName: 'INSERT', collection: table }, async (operation) => {
|
|
382
|
+
const transaction = options.transaction;
|
|
383
|
+
const endpoint = transaction !== undefined
|
|
384
|
+
? await transaction.ensureStarted(undefined, options.signal)
|
|
385
|
+
: this.runtime.nextEndpoint();
|
|
386
|
+
operation?.setEndpoint(endpoint);
|
|
387
|
+
return this.runtime.transport.insert({
|
|
388
|
+
endpoint,
|
|
389
|
+
database: this.runtime.database,
|
|
390
|
+
table,
|
|
391
|
+
values: encodeUnprefixed(values),
|
|
392
|
+
timeoutSeconds: options.timeoutSeconds ?? this.runtime.timeoutSeconds,
|
|
393
|
+
...(transaction === undefined
|
|
394
|
+
? {}
|
|
395
|
+
: {
|
|
396
|
+
txnIdPT: transaction.txnIdPT,
|
|
397
|
+
txnIdCounter: transaction.txnIdCounter,
|
|
398
|
+
streamSlot: transaction.streamSlot,
|
|
399
|
+
}),
|
|
400
|
+
signal: options.signal,
|
|
401
|
+
});
|
|
341
402
|
});
|
|
342
403
|
}
|
|
404
|
+
/** The endpoints that this client is configured with, in configuration order. */
|
|
405
|
+
get endpoints() {
|
|
406
|
+
return this.runtime.pool.members;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* The disk, CPU, and memory of one node. See `CamusNodeStats` for every field.
|
|
410
|
+
*
|
|
411
|
+
* ```ts
|
|
412
|
+
* const stats = await client.nodeStats();
|
|
413
|
+
* const data = stats.dataVolume!;
|
|
414
|
+
*
|
|
415
|
+
* console.log(`${data.availableBytes} bytes free of ${data.totalBytes}`);
|
|
416
|
+
*
|
|
417
|
+
* for (const endpoint of client.endpoints) {
|
|
418
|
+
* const node = await client.nodeStats(endpoint);
|
|
419
|
+
* console.log(`${node.address}: ${node.cpu.processCpuPercent}% CPU`);
|
|
420
|
+
* }
|
|
421
|
+
* ```
|
|
422
|
+
*
|
|
423
|
+
* Without `endpoint`, it asks the next node in the rotation. Each node answers only for itself.
|
|
424
|
+
* An `endpoint` must be one of `endpoints`, so the client's credentials go only to the addresses
|
|
425
|
+
* it was configured with.
|
|
426
|
+
*
|
|
427
|
+
* It is server-level, not scoped to this client's database, and it works over REST
|
|
428
|
+
* (`GET /v1/admin/stats`) and gRPC (`GetNodeStats`). With authentication on, the account needs
|
|
429
|
+
* the superuser attribute or the `MONITOR` privilege (`GRANT MONITOR ON *.* TO <user>`). Any
|
|
430
|
+
* other account gets `CADB0517`.
|
|
431
|
+
*
|
|
432
|
+
* @throws {TypeError} when `endpoint` is not one of `endpoints`.
|
|
433
|
+
*/
|
|
434
|
+
nodeStats(endpoint, options = {}) {
|
|
435
|
+
if (endpoint !== undefined && !this.runtime.pool.members.includes(endpoint)) {
|
|
436
|
+
throw new TypeError(`'${endpoint}' is not one of this client's endpoints.`);
|
|
437
|
+
}
|
|
438
|
+
return this.runtime.transport.getNodeStats(endpoint ?? this.runtime.nextEndpoint(), options.timeoutSeconds ?? this.runtime.timeoutSeconds, options.signal);
|
|
439
|
+
}
|
|
343
440
|
/** Reports whether the server answers. */
|
|
344
441
|
ping(options = {}) {
|
|
345
442
|
return this.runtime.transport.ping(this.runtime.nextEndpoint(), options.timeoutSeconds ?? this.runtime.timeoutSeconds, options.signal);
|
|
@@ -362,14 +459,20 @@ export class CamusClient {
|
|
|
362
459
|
*
|
|
363
460
|
* With `await using`, a transaction that is left without a commit is rolled back as the block
|
|
364
461
|
* unwinds.
|
|
462
|
+
*
|
|
463
|
+
* With `deferBegin`, or with learned routing on, `BEGIN` is not sent here. The first statement,
|
|
464
|
+
* or the first `CamusPipeline` send, sends it.
|
|
365
465
|
*/
|
|
366
466
|
async beginTransaction(options = {}, signal) {
|
|
367
467
|
const effective = this.resolveTransactionOptions(options);
|
|
368
468
|
const router = this.runtime.router;
|
|
369
|
-
if (router === undefined) {
|
|
469
|
+
if (router === undefined && effective.deferBegin !== true) {
|
|
370
470
|
// Routing off: begin here, on the rotation, right now.
|
|
371
471
|
const endpoint = this.runtime.nextEndpoint();
|
|
372
|
-
const result = await
|
|
472
|
+
const result = await traced(this.runtime, { operationName: 'BEGIN' }, (operation) => {
|
|
473
|
+
operation?.setEndpoint(endpoint);
|
|
474
|
+
return this.runtime.transport.startTransaction(endpoint, this.runtime.database, effective, this.runtime.timeoutSeconds, signal);
|
|
475
|
+
});
|
|
373
476
|
return new CamusTransaction(this.runtime, effective, {
|
|
374
477
|
txnIdPT: result.txnIdPT,
|
|
375
478
|
txnIdCounter: result.txnIdCounter,
|
|
@@ -380,7 +483,7 @@ export class CamusClient {
|
|
|
380
483
|
const deferred = new CamusTransaction(this.runtime, effective);
|
|
381
484
|
// An explicit affinity begins the transaction here, on the named statement's learned endpoint,
|
|
382
485
|
// falling back to rotation when nothing is learned. Without one, the first statement chooses.
|
|
383
|
-
if (effective.affinity !== undefined) {
|
|
486
|
+
if (router !== undefined && effective.affinity !== undefined) {
|
|
384
487
|
const learned = router.selectEndpoint(this.runtime.database, effective.affinity, CamusRouteOpKind.Query);
|
|
385
488
|
await deferred.ensureStarted(learned.endpoint, signal);
|
|
386
489
|
}
|
|
@@ -403,6 +506,9 @@ export class CamusClient {
|
|
|
403
506
|
* an exponential back-off. So the function must be safe to run more than once — it must not send
|
|
404
507
|
* an email, charge a card, or mutate state outside the database on a path that could repeat.
|
|
405
508
|
*
|
|
509
|
+
* The work can commit the transaction itself with `CamusPipeline.commit`. The transaction is
|
|
510
|
+
* then not committed a second time.
|
|
511
|
+
*
|
|
406
512
|
* A commit that reports an unresolved outcome is **not** retried this way. That case is resolved
|
|
407
513
|
* inside `CamusTransaction`, by re-issuing the same commit on the same handle, because replaying
|
|
408
514
|
* the work could apply an already-durable commit twice.
|
|
@@ -412,7 +518,7 @@ export class CamusClient {
|
|
|
412
518
|
maxAttempts: options.maxAttempts ?? 5,
|
|
413
519
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
414
520
|
};
|
|
415
|
-
return
|
|
521
|
+
return retryLoop(async () => {
|
|
416
522
|
const transaction = await this.beginTransaction(options.transactionOptions ?? {}, options.signal);
|
|
417
523
|
let result;
|
|
418
524
|
try {
|
|
@@ -424,10 +530,12 @@ export class CamusClient {
|
|
|
424
530
|
}
|
|
425
531
|
// A commit that lost a conflict leaves nothing to roll back, and one whose outcome was
|
|
426
532
|
// unknown was already resolved inside `commit`. Either way the transaction is over, and the
|
|
427
|
-
// retry loop above decides whether to run the whole unit of work again.
|
|
428
|
-
|
|
533
|
+
// retry loop above decides whether to run the whole unit of work again. A pipeline that
|
|
534
|
+
// committed the transaction inside the work already did this step.
|
|
535
|
+
if (!transaction.isCommittedByPipeline)
|
|
536
|
+
await transaction.commit(options.signal);
|
|
429
537
|
return result;
|
|
430
|
-
}, retryOptions);
|
|
538
|
+
}, retryOptions, CamusRetryKind.Transaction);
|
|
431
539
|
}
|
|
432
540
|
// ─── Prepared statements ──────────────────────────────────────────────────
|
|
433
541
|
/**
|
|
@@ -453,9 +561,9 @@ export class CamusClient {
|
|
|
453
561
|
: this.runtime.nextEndpoint();
|
|
454
562
|
const { decision, evicted } = policy.pin(database, sql);
|
|
455
563
|
if (decision === PrepareDecision.Register) {
|
|
456
|
-
await this.
|
|
564
|
+
await registerStatement(this.runtime, endpoint, database, sql, options);
|
|
457
565
|
}
|
|
458
|
-
this.
|
|
566
|
+
releaseEvicted(this.runtime, endpoint, evicted);
|
|
459
567
|
}
|
|
460
568
|
/** Whether a statement is currently kept prepared for this client's database. */
|
|
461
569
|
isPrepared(sql) {
|
|
@@ -626,13 +734,18 @@ export class CamusClient {
|
|
|
626
734
|
* Runs a write and reports its count only. `discardReturningRows` has no effect on a statement
|
|
627
735
|
* without `RETURNING`, so this sets it on every statement and does not parse the SQL for the clause.
|
|
628
736
|
*/
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
737
|
+
executeNonQuery(sql, parameters, options) {
|
|
738
|
+
return traced(this.runtime, { operationName: operationName(sql), queryText: sql }, async (operation) => {
|
|
739
|
+
const result = await this.executeNonQueryCore(sql, parameters, options, true, operation);
|
|
740
|
+
return { affectedRows: result.affectedRows, routingAdvice: result.routing };
|
|
741
|
+
});
|
|
632
742
|
}
|
|
633
|
-
/**
|
|
634
|
-
|
|
635
|
-
|
|
743
|
+
/**
|
|
744
|
+
* Runs a write with `RETURNING`, or a `CALL`, on the non-query route and maps the rows it sent
|
|
745
|
+
* back. A `CALL` sends back none.
|
|
746
|
+
*/
|
|
747
|
+
async queryNonQueryRoute(sql, parameters, options, operation) {
|
|
748
|
+
const result = await this.executeNonQueryCore(sql, parameters, options, false, operation);
|
|
636
749
|
// The server decides the shape. A reply without `columns` has nothing to map, but it still
|
|
637
750
|
// reports the count.
|
|
638
751
|
const resultSet = result.returning ?? CamusResultSet.EMPTY;
|
|
@@ -649,10 +762,11 @@ export class CamusClient {
|
|
|
649
762
|
* Runs a write on the non-query route. The endpoint, the negotiation flag, and the learning after
|
|
650
763
|
* a success follow the same routing rules as the query path.
|
|
651
764
|
*/
|
|
652
|
-
async executeNonQueryCore(sql, parameters, options, discardReturningRows) {
|
|
765
|
+
async executeNonQueryCore(sql, parameters, options, discardReturningRows, operation) {
|
|
653
766
|
const encoded = encodeParameters(parameters);
|
|
654
767
|
const transaction = options.transaction;
|
|
655
768
|
const route = await this.route(sql, CamusRouteOpKind.NonQuery, transaction, options.signal);
|
|
769
|
+
operation?.setEndpoint(route.endpoint);
|
|
656
770
|
const request = await this.buildRequest(sql, encoded, route, transaction, options, {
|
|
657
771
|
negotiateRouting: route.router !== undefined,
|
|
658
772
|
autocommitOptions: transaction === undefined ? this.resolveTransactionOptions(options.transactionOptions) : undefined,
|
|
@@ -711,7 +825,7 @@ export class CamusClient {
|
|
|
711
825
|
sql,
|
|
712
826
|
parameters,
|
|
713
827
|
timeoutSeconds: options.timeoutSeconds ?? this.runtime.timeoutSeconds,
|
|
714
|
-
prepared: await this.
|
|
828
|
+
prepared: await shouldPrepare(this.runtime, sql, route.endpoint, options),
|
|
715
829
|
routingAcceptVersion: extra.negotiateRouting ? ROUTING_ACCEPT_VERSION : 0,
|
|
716
830
|
...(extra.discardReturningRows === true ? { discardReturningRows: true } : {}),
|
|
717
831
|
...(transaction === undefined
|
|
@@ -726,88 +840,6 @@ export class CamusClient {
|
|
|
726
840
|
signal: options.signal,
|
|
727
841
|
};
|
|
728
842
|
}
|
|
729
|
-
/**
|
|
730
|
-
* Whether this execution should name a prepared statement instead of carrying its SQL,
|
|
731
|
-
* registering it first when this is the execution that tips it over the threshold.
|
|
732
|
-
*
|
|
733
|
-
* The registration is awaited rather than started in the background, because the whole point is
|
|
734
|
-
* that this execution and the ones after it are cheap. Firing it off and running inline anyway
|
|
735
|
-
* would leave a busy statement racing its own warm-up. It costs one extra round trip, once per
|
|
736
|
-
* statement per endpoint.
|
|
737
|
-
*
|
|
738
|
-
* The caller passes the endpoint it already resolved. A REST handle is node-local and the pool
|
|
739
|
-
* rotates, so registering against a freshly drawn endpoint would routinely prepare on one node
|
|
740
|
-
* and execute on another — correct, because the transport re-registers where it lands, but a
|
|
741
|
-
* wasted round trip every single time.
|
|
742
|
-
*/
|
|
743
|
-
async shouldPrepare(sql, endpoint, options) {
|
|
744
|
-
const policy = this.runtime.preparedStatements;
|
|
745
|
-
if (policy.isDisabled || !isPreparableStatement(sql))
|
|
746
|
-
return false;
|
|
747
|
-
const { decision, evicted } = policy.decide(this.runtime.database, sql);
|
|
748
|
-
this.release(endpoint, evicted);
|
|
749
|
-
switch (decision) {
|
|
750
|
-
case PrepareDecision.Yes:
|
|
751
|
-
return true;
|
|
752
|
-
case PrepareDecision.Register:
|
|
753
|
-
return this.register(endpoint, this.runtime.database, sql, options);
|
|
754
|
-
default:
|
|
755
|
-
return false;
|
|
756
|
-
}
|
|
757
|
-
}
|
|
758
|
-
/**
|
|
759
|
-
* Registers a statement and records what happened, reporting whether it may now run prepared.
|
|
760
|
-
*
|
|
761
|
-
* A registration failure never reaches the caller: preparing is an optimization, and the
|
|
762
|
-
* statement runs inline exactly as it would have if the driver had not tried. What the failure
|
|
763
|
-
* does decide is whether to ask again. A refusal specific to this statement stops asking for that
|
|
764
|
-
* statement; anything that says the node has no prepared-statement support at all stops asking
|
|
765
|
-
* for every statement, because one round trip per distinct SQL to relearn that is worse than not
|
|
766
|
-
* trying. A failure that never reached a verdict — a timeout, an unreachable node — drops the
|
|
767
|
-
* entry instead, so one network blip does not cost this statement its registration for the life
|
|
768
|
-
* of the process.
|
|
769
|
-
*/
|
|
770
|
-
async register(endpoint, database, sql, options) {
|
|
771
|
-
const policy = this.runtime.preparedStatements;
|
|
772
|
-
try {
|
|
773
|
-
await this.runtime.transport.prepare(endpoint, database, sql, options.timeoutSeconds ?? this.runtime.timeoutSeconds, options.signal);
|
|
774
|
-
policy.markPrepared(database, sql);
|
|
775
|
-
return true;
|
|
776
|
-
}
|
|
777
|
-
catch (error) {
|
|
778
|
-
// The caller's own cancellation is not a verdict on the statement, but the entry must not be
|
|
779
|
-
// left mid-registration, or it would never be reconsidered.
|
|
780
|
-
if (options.signal?.aborted === true) {
|
|
781
|
-
policy.forget(database, sql);
|
|
782
|
-
throw error;
|
|
783
|
-
}
|
|
784
|
-
// The statement is about to run inline and will report any real problem itself. The only
|
|
785
|
-
// decision left here is whether asking again is worth a round trip.
|
|
786
|
-
if (CamusError.is(error) && isUnsupported(error)) {
|
|
787
|
-
policy.markRefused(database, sql);
|
|
788
|
-
policy.disable();
|
|
789
|
-
return false;
|
|
790
|
-
}
|
|
791
|
-
if (declinesStatement(error))
|
|
792
|
-
policy.markRefused(database, sql);
|
|
793
|
-
else
|
|
794
|
-
policy.forget(database, sql);
|
|
795
|
-
return false;
|
|
796
|
-
}
|
|
797
|
-
}
|
|
798
|
-
/**
|
|
799
|
-
* Releases a statement the policy evicted, so the server stops holding a handle this client has
|
|
800
|
-
* stopped using.
|
|
801
|
-
*
|
|
802
|
-
* It is best effort and off the caller's path: it is bookkeeping, not part of the statement being
|
|
803
|
-
* run. It takes the endpoint the caller already resolved rather than drawing a new one, which
|
|
804
|
-
* would rotate the pool as a side effect of housekeeping.
|
|
805
|
-
*/
|
|
806
|
-
release(endpoint, evicted) {
|
|
807
|
-
if (evicted === undefined)
|
|
808
|
-
return;
|
|
809
|
-
void this.runtime.transport.closePrepared(endpoint, evicted.database, evicted.sql).catch(() => undefined);
|
|
810
|
-
}
|
|
811
843
|
/**
|
|
812
844
|
* The effective options for a transaction or an autocommit statement: the caller's explicit knobs
|
|
813
845
|
* win, then this client's defaults, then the server default for any knob still unset.
|
|
@@ -827,6 +859,7 @@ export class CamusClient {
|
|
|
827
859
|
catch (error) {
|
|
828
860
|
if (attempt >= maxAttempts || !isRetryable(error))
|
|
829
861
|
throw error;
|
|
862
|
+
recordRetry(CamusRetryKind.CreateDatabase, error, { database: this.runtime.database });
|
|
830
863
|
const base = Math.min(50 * 2 ** (attempt - 1), 800);
|
|
831
864
|
const jitter = base * 0.25 * (2 * Math.random() - 1);
|
|
832
865
|
await delay(Math.max(1, base + jitter), signal);
|
|
@@ -834,50 +867,6 @@ export class CamusClient {
|
|
|
834
867
|
}
|
|
835
868
|
}
|
|
836
869
|
}
|
|
837
|
-
/**
|
|
838
|
-
* The codes that say nothing about the statement itself.
|
|
839
|
-
*
|
|
840
|
-
* `Generic` covers a call that was sent and then lost, and every failure the driver could not
|
|
841
|
-
* classify. The rest name the connection or the principal. A statement that meets one of these is
|
|
842
|
-
* left reconsiderable: the next call site asks again.
|
|
843
|
-
*/
|
|
844
|
-
const UNINFORMATIVE_CODES = new Set([
|
|
845
|
-
CamusErrorCode.Generic,
|
|
846
|
-
CamusErrorCode.EndpointUnreachable,
|
|
847
|
-
CamusErrorCode.AuthenticationFailed,
|
|
848
|
-
CamusErrorCode.InsufficientPrivilege,
|
|
849
|
-
CamusErrorCode.TooManyAuthAttempts,
|
|
850
|
-
CamusErrorCode.InsecureTransport,
|
|
851
|
-
]);
|
|
852
|
-
/**
|
|
853
|
-
* True when the server gave a verdict on this statement, rather than the round trip failing.
|
|
854
|
-
*
|
|
855
|
-
* Only a verdict is terminal. A retryable condition, a transport failure, and an error the driver
|
|
856
|
-
* did not raise itself all leave the question open.
|
|
857
|
-
*/
|
|
858
|
-
function declinesStatement(error) {
|
|
859
|
-
if (!CamusError.is(error))
|
|
860
|
-
return false;
|
|
861
|
-
if (isRetryable(error))
|
|
862
|
-
return false;
|
|
863
|
-
return !UNINFORMATIVE_CODES.has(error.code);
|
|
864
|
-
}
|
|
865
|
-
/**
|
|
866
|
-
* True when a failure says the node does not implement prepared statements at all, rather than
|
|
867
|
-
* declining this particular statement.
|
|
868
|
-
*
|
|
869
|
-
* Both spellings surface under the generic code, because a server old enough not to have the
|
|
870
|
-
* feature is also too old to have a specific code for refusing it. A server that does have it
|
|
871
|
-
* declines an individual statement with a `CADB05xx` code instead.
|
|
872
|
-
*
|
|
873
|
-
* It is a heuristic, and it is only ever used to answer "is asking again worth a round trip?".
|
|
874
|
-
* Reading it wrong costs at most one wasted registration attempt per statement, never a failed
|
|
875
|
-
* statement.
|
|
876
|
-
*/
|
|
877
|
-
function isUnsupported(error) {
|
|
878
|
-
return (error.code === CamusErrorCode.Generic &&
|
|
879
|
-
(error.message.includes('404') || error.message.toLowerCase().includes('unimplemented')));
|
|
880
|
-
}
|
|
881
870
|
/**
|
|
882
871
|
* The typed row insert names columns as they are, with no `@` placeholder prefix, because it binds
|
|
883
872
|
* to column names rather than to placeholders.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA0EtD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,WAAW;IACL,OAAO,CAAgB;IAEhC,YAAY,CAAgC;IAEpD;;;;;;;OAOG;IACH,YAAY,OAAoC;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAC9B,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CACzF,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,oBAAoB,CAAC,gBAAwB;QAClD,OAAO,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED,uEAAuE;IACvE,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,2CAA2C;IAC3C,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,4CAA4C;IAC5C,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;IACzC,CAAC;IAED,0FAA0F;IAC1F,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,IAAI,OAAO;QACT,IAAI,CAAC,YAAY,KAAK,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,8EAA8E;IAC9E,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC;IACvD,CAAC;IAED,uFAAuF;IACvF,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,gEAAgE;IAChE,cAAc,CAAC,QAAgB;QAC7B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,OAAO,EACtB,0FAA0F;gBACxF,oBAAoB,CACvB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACnC,CAAC;IAED,wEAAwE;IACxE,QAAQ;QACN,OAAO,eAAe,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;IAC/D,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,KAAK,CAAC,KAAK,CACT,GAAW,EACX,UAAuB,EACvB,UAAsC,EAAE;QAExC,IAAI,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,mBAAmB,CAAI,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAExF,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAExC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAEzF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;YACjF,gBAAgB,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS;SAC7C,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAElE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEnG,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAExF,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,MAAM,CAAI,MAAM,CAAC,SAAS,CAAC;YACxC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;YACjC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ;YACnC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,aAAa,EAAE,MAAM,CAAC,OAAO;SAC9B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CACZ,GAAW,EACX,UAAuB,EACvB,UAAsC,EAAE;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAI,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,MAAM,CACV,GAAW,EACX,UAAuB,EACvB,UAAsC,EAAE;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAE1D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAI,GAAG,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAErE,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,CAAkB,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,CAAC,WAAW,CACf,GAAW,EACX,UAAuB,EACvB,UAAsC,EAAE;QAExC,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE7C,2FAA2F;QAC3F,yFAAyF;QACzF,kFAAkF;QAClF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAC5B,GAAG,EACH,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EACnE,WAAW,EACX,OAAO,CAAC,MAAM,CACf,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;YACjF,gBAAgB,EAAE,KAAK;YACvB,2FAA2F;YAC3F,4FAA4F;YAC5F,iBAAiB,EACf,cAAc,IAAI,WAAW,KAAK,SAAS;gBACzC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,kBAAkB,CAAC;gBAC5D,CAAC,CAAC,SAAS;SAChB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAExE,OAAO,IAAI,gBAAgB,CAAI,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,OAAO,CACX,GAAW,EACX,UAAuB,EACvB,UAAsC,EAAE;QAExC,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,UAAsC,EAAE;QACpE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAExC,IAAI,WAAW,KAAK,SAAS,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,gCAAgC,EAC/C,0FAA0F;gBACxF,0FAA0F;gBAC1F,uCAAuC,CAC1C,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GACZ,WAAW,KAAK,SAAS;YACvB,CAAC,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAElC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;YACvC,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,GAAG;YACH,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YACrE,QAAQ,EAAE,KAAK;YACf,oBAAoB,EAAE,CAAC;YACvB,GAAG,CAAC,WAAW,KAAK,SAAS;gBAC3B,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;gBACnF,CAAC,CAAC;oBACE,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,YAAY,EAAE,WAAW,CAAC,YAAY;oBACtC,UAAU,EAAE,WAAW,CAAC,UAAU;iBACnC,CAAC;YACN,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAAkB,EAAE,UAA4B,EAAE;QAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAExC,MAAM,QAAQ,GACZ,WAAW,KAAK,SAAS;YACvB,CAAC,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAElC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;YACnC,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,KAAK;YACL,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC;YAChC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YACrE,GAAG,CAAC,WAAW,KAAK,SAAS;gBAC3B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,YAAY,EAAE,WAAW,CAAC,YAAY;oBACtC,UAAU,EAAE,WAAW,CAAC,UAAU;iBACnC,CAAC;YACN,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,UAA6D,EAAE;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAChC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAC3B,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EACrD,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,gBAAgB,CACpB,UAAmC,EAAE,EACrC,MAAoB;QAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,uDAAuD;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAC1D,QAAQ,EACR,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,SAAS,EACT,IAAI,CAAC,OAAO,CAAC,cAAc,EAC3B,MAAM,CACP,CAAC;YAEF,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;gBACnD,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,QAAQ;gBACR,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE/D,+FAA+F;QAC/F,8FAA8F;QAC9F,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,SAAS,CAAC,QAAQ,EAClB,gBAAgB,CAAC,KAAK,CACvB,CAAC;YAEF,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,WAAW,CACf,IAAmD,EACnD,UAAiC,EAAE;QAEnC,MAAM,YAAY,GAAiB;YACjC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;YACrC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;SACpE,CAAC;QAEF,OAAO,SAAS,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAElG,IAAI,MAAS,CAAC;YAEd,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;gBACnC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,uFAAuF;YACvF,4FAA4F;YAC5F,wEAAwE;YACxE,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAEzC,OAAO,MAAM,CAAC;QAChB,CAAC,EAAE,YAAY,CAAC,CAAC;IACnB,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,UAA4B,EAAE;QACvD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;YAAE,OAAO;QAExC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAEvC,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,KAAK,SAAS;YAC/B,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC;YACpE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAElC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAExD,IAAI,QAAQ,KAAK,eAAe,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,iFAAiF;IACjF,UAAU,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChF,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAoB;QACxD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,MAAoB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;OASG;IACH,KAAK,CAAC,cAAc,CAClB,WAAmB,IAAI,CAAC,OAAO,CAAC,QAAQ,EACxC,UAA2D,EAAE;QAE7D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;QAEjD,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YACvC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CACzC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAC3B,QAAQ,EACR,WAAW,EACX,IAAI,CAAC,OAAO,CAAC,cAAc,EAC3B,OAAO,CAAC,MAAM,CACf,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yFAAyF;gBACzF,yFAAyF;gBACzF,kFAAkF;gBAClF,IAAI,WAAW,IAAI,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,qBAAqB,EAAE,CAAC;oBAC/F,OAAO;gBACT,CAAC;gBAED,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,6CAA6C;IAC7C,YAAY,CACV,WAAmB,IAAI,CAAC,OAAO,CAAC,QAAQ,EACxC,UAAoC,EAAE;QAEtC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CACxC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAC3B,QAAQ,EACR,IAAI,CAAC,OAAO,CAAC,cAAc,EAC3B,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAClB,UAAkB,EAClB,kBAA0B,EAC1B,UAA2D,EAAE;QAE7D,OAAO,IAAI,CAAC,kBAAkB,CAC5B,GAAG,EAAE,CACH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CACzC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAC3B,UAAU,EACV,kBAAkB,EAClB,OAAO,CAAC,WAAW,KAAK,IAAI,EAC5B,IAAI,CAAC,OAAO,CAAC,cAAc,EAC3B,OAAO,CAAC,MAAM,CACf,EACH,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,YAAY,CACV,WAAmB,IAAI,CAAC,OAAO,CAAC,QAAQ,EACxC,UAAoC,EAAE;QAEtC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CACxC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAC3B,QAAQ,EACR,IAAI,CAAC,OAAO,CAAC,cAAc,EAC3B,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,aAAa,CACX,WAAmB,IAAI,CAAC,OAAO,CAAC,QAAQ,EACxC,UAAoC,EAAE;QAEtC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CACzC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAC3B,QAAQ,EACR,IAAI,CAAC,OAAO,CAAC,cAAc,EAC3B,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,cAAc,CAClB,KAAa,EACb,UAA+E,EAAE;QAEjF,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,EAAE;YACzF,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAY,EAAE,UAA4B,EAAE;QAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE;YACzE,GAAG,OAAO;YACV,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,IAAI,uBAAuB,CAAC,CAAC;QACxF,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6EAA6E;IAE7E,+EAA+E;IAC/E,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,UAA4B,EAAE;QAC3D,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED,gGAAgG;IAChG,KAAK,CAAC,aAAa,CAAC,UAA4B,EAAE;QAChD,MAAM,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,6EAA6E;IAE7E;;;;;;OAMG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,6EAA6E;IAE7E;;;OAGG;IACK,KAAK,CAAC,eAAe,CAC3B,GAAW,EACX,UAAkC,EAClC,OAAmC;QAEnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9E,CAAC;IAED,2FAA2F;IACnF,KAAK,CAAC,mBAAmB,CAC/B,GAAW,EACX,UAAkC,EAClC,OAAmC;QAEnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAE/E,2FAA2F;QAC3F,qBAAqB;QACrB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,cAAc,CAAC,KAAK,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAEjF,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,MAAM,CAAI,SAAS,CAAC;YACjC,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,MAAM,CAAC,OAAO;SAC9B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,mBAAmB,CAC/B,GAAW,EACX,UAAkC,EAClC,OAAmC,EACnC,oBAA6B;QAE7B,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAExC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;YACjF,gBAAgB,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS;YAC5C,iBAAiB,EACf,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS;YACpG,oBAAoB;SACrB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAErE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEtG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACK,KAAK,CAAC,KAAK,CACjB,GAAW,EACX,IAAsB,EACtB,WAAyC,EACzC,MAA+B;QAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEnC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;oBACL,QAAQ,EAAE,MAAM,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC;oBAC5D,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,CAAC;iBACZ,CAAC;YACJ,CAAC;YAED,6FAA6F;YAC7F,2FAA2F;YAC3F,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEzE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QAClE,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACnF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAExE,OAAO;YACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACzD,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,GAAW,EACX,UAAwD,EACxD,KAAqE,EACrE,WAAyC,EACzC,OAAyB,EACzB,KAIC;QAED,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,GAAG;YACH,UAAU;YACV,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc;YACrE,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;YAChE,oBAAoB,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACzE,GAAG,CAAC,KAAK,CAAC,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,WAAW,KAAK,SAAS;gBAC3B,CAAC,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;oBACrC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE;gBAClD,CAAC,CAAC;oBACE,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,YAAY,EAAE,WAAW,CAAC,YAAY;oBACtC,UAAU,EAAE,WAAW,CAAC,UAAU;iBACnC,CAAC;YACN,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,KAAK,CAAC,aAAa,CAAC,GAAW,EAAE,QAAgB,EAAE,OAAyB;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAE/C,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEnE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAExE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEhC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,eAAe,CAAC,GAAG;gBACtB,OAAO,IAAI,CAAC;YAEd,KAAK,eAAe,CAAC,QAAQ;gBAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAEtE;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACK,KAAK,CAAC,QAAQ,CACpB,QAAgB,EAChB,QAAgB,EAChB,GAAW,EACX,OAAyB;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAE/C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAClC,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EACrD,OAAO,CAAC,MAAM,CACf,CAAC;YAEF,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6FAA6F;YAC7F,4DAA4D;YAC5D,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC7B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,yFAAyF;YACzF,oEAAoE;YACpE,IAAI,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAClC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,iBAAiB,CAAC,KAAK,CAAC;gBAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;;gBAC3D,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAElC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,OAAO,CAAC,QAAgB,EAAE,OAAqC;QACrE,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO;QAElC,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5G,CAAC;IAED;;;OAGG;IACK,yBAAyB,CAAC,SAA8C;QAC9E,OAAO,YAAY,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACtF,CAAC;IAEO,aAAa,CAAC,OAAyB;QAC7C,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtE,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,SAA2B,EAC3B,MAA+B;QAE/B,MAAM,WAAW,GAAG,CAAC,CAAC;QAEtB,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,OAAO,MAAM,SAAS,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;gBAE/D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBAErD,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAS;IAC1C,cAAc,CAAC,OAAO;IACtB,cAAc,CAAC,mBAAmB;IAClC,cAAc,CAAC,oBAAoB;IACnC,cAAc,CAAC,qBAAqB;IACpC,cAAc,CAAC,mBAAmB;IAClC,cAAc,CAAC,iBAAiB;CACjC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,WAAW,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAErC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CAAC,KAAiB;IACtC,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;QACrC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CACzF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,MAAkB;IAC1C,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAuB,CAAC;IAC3E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE/C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,WAA6B;IAC1D,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,6FAA6F;QAC7F,gDAAgD;IAClD,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -8,6 +8,13 @@ import type { CamusCredentials } from './auth/credentials.js';
|
|
|
8
8
|
import { CamusEndpointPool } from './endpoint-pool.js';
|
|
9
9
|
import type { CamusTransactionOptions } from './options.js';
|
|
10
10
|
import type { DecodeOptions, Int64Mode } from './values/decode.js';
|
|
11
|
+
/**
|
|
12
|
+
* The highest HTTP version that the REST calls ask for, as the .NET driver's `HttpVersion=` names
|
|
13
|
+
* it. Node's `fetch` sends HTTP/1.1 only, so `1.1` is the only value a client accepts. `2` and `3`
|
|
14
|
+
* are part of the type so that the refusal is a clear error at run time, and not a surprise in a
|
|
15
|
+
* connection string shared with a .NET service.
|
|
16
|
+
*/
|
|
17
|
+
export type CamusHttpVersion = '1.1' | '2' | '3';
|
|
11
18
|
/** The wire protocol a client speaks. */
|
|
12
19
|
export declare const CamusProtocol: {
|
|
13
20
|
/** The REST and JSON HTTP API. This is the default. */
|
|
@@ -123,6 +130,12 @@ export interface CamusClientOptions {
|
|
|
123
130
|
* server that announced it reads one. Default true.
|
|
124
131
|
*/
|
|
125
132
|
readonly requestFrames?: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* The highest HTTP version for the REST calls. Default `1.1`, which is the only version that
|
|
135
|
+
* Node's `fetch` sends. The key exists so that a .NET connection string reads the same here, and
|
|
136
|
+
* `2` and `3` are refused. See `CamusHttpVersion`.
|
|
137
|
+
*/
|
|
138
|
+
readonly httpVersion?: CamusHttpVersion;
|
|
126
139
|
/** The HTTP endpoint for the backup admin API. It is required when `protocol` is `grpc`. */
|
|
127
140
|
readonly backupEndpoint?: string;
|
|
128
141
|
/** The backup admin request timeout in seconds. Default 300. */
|
|
@@ -143,6 +156,11 @@ export interface CamusClientOptions {
|
|
|
143
156
|
readonly defaultTransactionOptions?: CamusTransactionOptions;
|
|
144
157
|
/** How an `int64` column reaches a caller. Default `auto`. */
|
|
145
158
|
readonly int64?: Int64Mode;
|
|
159
|
+
/**
|
|
160
|
+
* Whether the driver's spans carry the SQL text as `db.query.text`. Default false, because SQL
|
|
161
|
+
* text with literal values can contain sensitive data. Parameter values are never recorded.
|
|
162
|
+
*/
|
|
163
|
+
readonly traceQueryText?: boolean;
|
|
146
164
|
}
|
|
147
165
|
/** The settings a client actually runs on, after both input forms are resolved. */
|
|
148
166
|
export interface ResolvedConfig {
|
|
@@ -155,6 +173,8 @@ export interface ResolvedConfig {
|
|
|
155
173
|
readonly maxAutoPrepare: number;
|
|
156
174
|
readonly autoPrepareMinUsages: number;
|
|
157
175
|
readonly batch: GrpcBatchOptions;
|
|
176
|
+
/** Always `1.1`: a configuration that asks for more is refused when it is resolved. */
|
|
177
|
+
readonly httpVersion: '1.1';
|
|
158
178
|
readonly backupEndpoint: string | undefined;
|
|
159
179
|
readonly backupTimeoutSeconds: number;
|
|
160
180
|
readonly allowInsecureCredentials: boolean;
|
|
@@ -163,6 +183,8 @@ export interface ResolvedConfig {
|
|
|
163
183
|
readonly routingMaxHintAgeMs: number;
|
|
164
184
|
readonly defaultTransactionOptions: CamusTransactionOptions;
|
|
165
185
|
readonly decode: DecodeOptions;
|
|
186
|
+
/** Whether the driver's spans carry the SQL text. */
|
|
187
|
+
readonly traceQueryText: boolean;
|
|
166
188
|
/** The connection string as written, when the client was built from one. */
|
|
167
189
|
readonly connectionString: string | undefined;
|
|
168
190
|
}
|