camusdb 0.6.0 → 0.7.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 (87) hide show
  1. package/README.md +193 -0
  2. package/dist/client.d.ts +42 -37
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +117 -166
  5. package/dist/client.js.map +1 -1
  6. package/dist/config.d.ts +22 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +19 -0
  9. package/dist/config.js.map +1 -1
  10. package/dist/endpoint-pool.d.ts +8 -0
  11. package/dist/endpoint-pool.d.ts.map +1 -1
  12. package/dist/endpoint-pool.js +25 -0
  13. package/dist/endpoint-pool.js.map +1 -1
  14. package/dist/index.d.ts +6 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +4 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/node-stats.d.ts +113 -0
  19. package/dist/node-stats.d.ts.map +1 -0
  20. package/dist/node-stats.js +90 -0
  21. package/dist/node-stats.js.map +1 -0
  22. package/dist/options.d.ts +10 -0
  23. package/dist/options.d.ts.map +1 -1
  24. package/dist/options.js +1 -0
  25. package/dist/options.js.map +1 -1
  26. package/dist/pipeline.d.ts +126 -0
  27. package/dist/pipeline.d.ts.map +1 -0
  28. package/dist/pipeline.js +363 -0
  29. package/dist/pipeline.js.map +1 -0
  30. package/dist/prepared/auto-prepare.d.ts +51 -0
  31. package/dist/prepared/auto-prepare.d.ts.map +1 -0
  32. package/dist/prepared/auto-prepare.js +150 -0
  33. package/dist/prepared/auto-prepare.js.map +1 -0
  34. package/dist/prepared/policy.d.ts +7 -0
  35. package/dist/prepared/policy.d.ts.map +1 -1
  36. package/dist/prepared/policy.js +16 -0
  37. package/dist/prepared/policy.js.map +1 -1
  38. package/dist/query-stream.d.ts +4 -1
  39. package/dist/query-stream.d.ts.map +1 -1
  40. package/dist/query-stream.js +13 -2
  41. package/dist/query-stream.js.map +1 -1
  42. package/dist/retry.d.ts +8 -0
  43. package/dist/retry.d.ts.map +1 -1
  44. package/dist/retry.js +12 -1
  45. package/dist/retry.js.map +1 -1
  46. package/dist/telemetry.d.ts +199 -0
  47. package/dist/telemetry.d.ts.map +1 -0
  48. package/dist/telemetry.js +422 -0
  49. package/dist/telemetry.js.map +1 -0
  50. package/dist/transaction.d.ts +60 -5
  51. package/dist/transaction.d.ts.map +1 -1
  52. package/dist/transaction.js +124 -24
  53. package/dist/transaction.js.map +1 -1
  54. package/dist/transport/authenticating-transport.d.ts +9 -1
  55. package/dist/transport/authenticating-transport.d.ts.map +1 -1
  56. package/dist/transport/authenticating-transport.js +13 -0
  57. package/dist/transport/authenticating-transport.js.map +1 -1
  58. package/dist/transport/grpc/batch-frames.d.ts +23 -5
  59. package/dist/transport/grpc/batch-frames.d.ts.map +1 -1
  60. package/dist/transport/grpc/batch-frames.js +29 -8
  61. package/dist/transport/grpc/batch-frames.js.map +1 -1
  62. package/dist/transport/grpc/batcher.d.ts +69 -5
  63. package/dist/transport/grpc/batcher.d.ts.map +1 -1
  64. package/dist/transport/grpc/batcher.js +217 -10
  65. package/dist/transport/grpc/batcher.js.map +1 -1
  66. package/dist/transport/grpc/grpc-transport.d.ts +35 -1
  67. package/dist/transport/grpc/grpc-transport.d.ts.map +1 -1
  68. package/dist/transport/grpc/grpc-transport.js +193 -7
  69. package/dist/transport/grpc/grpc-transport.js.map +1 -1
  70. package/dist/transport/grpc/messages.d.ts +15 -0
  71. package/dist/transport/grpc/messages.d.ts.map +1 -1
  72. package/dist/transport/grpc/messages.js +9 -0
  73. package/dist/transport/grpc/messages.js.map +1 -1
  74. package/dist/transport/rest-transport.d.ts +9 -1
  75. package/dist/transport/rest-transport.d.ts.map +1 -1
  76. package/dist/transport/rest-transport.js +24 -0
  77. package/dist/transport/rest-transport.js.map +1 -1
  78. package/dist/transport/sequential-pipeline.d.ts +21 -0
  79. package/dist/transport/sequential-pipeline.d.ts.map +1 -0
  80. package/dist/transport/sequential-pipeline.js +119 -0
  81. package/dist/transport/sequential-pipeline.js.map +1 -0
  82. package/dist/transport/transport.d.ts +94 -0
  83. package/dist/transport/transport.d.ts.map +1 -1
  84. package/dist/transport/transport.js +10 -0
  85. package/dist/transport/transport.js.map +1 -1
  86. package/package.json +10 -4
  87. package/proto/camus_sql.proto +114 -0
@@ -0,0 +1,150 @@
1
+ /**
2
+ * This file is part of CamusDB
3
+ *
4
+ * For the full copyright and license information, please view the LICENSE.txt
5
+ * file that was distributed with this source code.
6
+ */
7
+ import { CamusError } from '../errors.js';
8
+ import { CamusErrorCode } from '../error-codes.js';
9
+ import { isRetryable } from '../retry.js';
10
+ import { isPreparableStatement } from '../statements.js';
11
+ import { PreparedResult, recordPreparedEviction, recordPreparedLookup, recordPreparedRegistration, } from '../telemetry.js';
12
+ import { PrepareDecision } from './policy.js';
13
+ /**
14
+ * Whether this execution should name a prepared statement instead of carrying its SQL,
15
+ * registering it first when this is the execution that tips it over the threshold.
16
+ *
17
+ * The registration is awaited rather than started in the background, because the whole point is
18
+ * that this execution and the ones after it are cheap. Firing it off and running inline anyway
19
+ * would leave a busy statement racing its own warm-up. It costs one extra round trip, once per
20
+ * statement per endpoint.
21
+ *
22
+ * The caller passes the endpoint it already resolved. A REST handle is node-local and the pool
23
+ * rotates, so registering against a freshly drawn endpoint would routinely prepare on one node
24
+ * and execute on another — correct, because the transport re-registers where it lands, but a
25
+ * wasted round trip every single time.
26
+ */
27
+ export async function shouldPrepare(runtime, sql, endpoint, options) {
28
+ const policy = runtime.preparedStatements;
29
+ if (policy.isDisabled || !isPreparableStatement(sql))
30
+ return false;
31
+ const { decision, evicted } = policy.decide(runtime.database, sql);
32
+ releaseEvicted(runtime, endpoint, evicted);
33
+ switch (decision) {
34
+ case PrepareDecision.Yes:
35
+ recordPreparedLookup(runtime.database, PreparedResult.Hit);
36
+ return true;
37
+ case PrepareDecision.Register: {
38
+ const registered = await registerStatement(runtime, endpoint, runtime.database, sql, options);
39
+ recordPreparedLookup(runtime.database, registered ? PreparedResult.Registered : PreparedResult.Miss);
40
+ return registered;
41
+ }
42
+ default:
43
+ recordPreparedLookup(runtime.database, PreparedResult.Miss);
44
+ return false;
45
+ }
46
+ }
47
+ /**
48
+ * Registers a statement and records what happened, reporting whether it may now run prepared.
49
+ *
50
+ * A registration failure never reaches the caller: preparing is an optimization, and the
51
+ * statement runs inline exactly as it would have if the driver had not tried. What the failure
52
+ * does decide is whether to ask again. A refusal specific to this statement stops asking for that
53
+ * statement; anything that says the node has no prepared-statement support at all stops asking
54
+ * for every statement, because one round trip per distinct SQL to relearn that is worse than not
55
+ * trying. A failure that never reached a verdict — a timeout, an unreachable node — drops the
56
+ * entry instead, so one network blip does not cost this statement its registration for the life
57
+ * of the process.
58
+ */
59
+ export async function registerStatement(runtime, endpoint, database, sql, options) {
60
+ const policy = runtime.preparedStatements;
61
+ try {
62
+ await runtime.transport.prepare(endpoint, database, sql, options.timeoutSeconds ?? runtime.timeoutSeconds, options.signal);
63
+ policy.markPrepared(database, sql);
64
+ recordPreparedRegistration(database, PreparedResult.Success);
65
+ return true;
66
+ }
67
+ catch (error) {
68
+ // The caller's own cancellation is not a verdict on the statement, but the entry must not be
69
+ // left mid-registration, or it would never be reconsidered.
70
+ if (options.signal?.aborted === true) {
71
+ policy.forget(database, sql);
72
+ throw error;
73
+ }
74
+ // The statement is about to run inline and will report any real problem itself. The only
75
+ // decision left here is whether asking again is worth a round trip.
76
+ if (CamusError.is(error) && isUnsupported(error)) {
77
+ policy.markRefused(database, sql);
78
+ policy.disable();
79
+ recordPreparedRegistration(database, PreparedResult.Unsupported, error);
80
+ return false;
81
+ }
82
+ if (declinesStatement(error)) {
83
+ policy.markRefused(database, sql);
84
+ recordPreparedRegistration(database, PreparedResult.Refused, error);
85
+ }
86
+ else {
87
+ policy.forget(database, sql);
88
+ }
89
+ return false;
90
+ }
91
+ }
92
+ /**
93
+ * Releases a statement the policy evicted, so the server stops holding a handle this client has
94
+ * stopped using.
95
+ *
96
+ * It is best effort and off the caller's path: it is bookkeeping, not part of the statement being
97
+ * run. It takes the endpoint the caller already resolved rather than drawing a new one, which
98
+ * would rotate the pool as a side effect of housekeeping.
99
+ */
100
+ export function releaseEvicted(runtime, endpoint, evicted) {
101
+ if (evicted === undefined)
102
+ return;
103
+ recordPreparedEviction(evicted.database);
104
+ void runtime.transport.closePrepared(endpoint, evicted.database, evicted.sql).catch(() => undefined);
105
+ }
106
+ /**
107
+ * The codes that say nothing about the statement itself.
108
+ *
109
+ * `Generic` covers a call that was sent and then lost, and every failure the driver could not
110
+ * classify. The rest name the connection or the principal. A statement that meets one of these is
111
+ * left reconsiderable: the next call site asks again.
112
+ */
113
+ const UNINFORMATIVE_CODES = new Set([
114
+ CamusErrorCode.Generic,
115
+ CamusErrorCode.EndpointUnreachable,
116
+ CamusErrorCode.AuthenticationFailed,
117
+ CamusErrorCode.InsufficientPrivilege,
118
+ CamusErrorCode.TooManyAuthAttempts,
119
+ CamusErrorCode.InsecureTransport,
120
+ ]);
121
+ /**
122
+ * True when the server gave a verdict on this statement, rather than the round trip failing.
123
+ *
124
+ * Only a verdict is terminal. A retryable condition, a transport failure, and an error the driver
125
+ * did not raise itself all leave the question open.
126
+ */
127
+ function declinesStatement(error) {
128
+ if (!CamusError.is(error))
129
+ return false;
130
+ if (isRetryable(error))
131
+ return false;
132
+ return !UNINFORMATIVE_CODES.has(error.code);
133
+ }
134
+ /**
135
+ * True when a failure says the node does not implement prepared statements at all, rather than
136
+ * declining this particular statement.
137
+ *
138
+ * Both spellings surface under the generic code, because a server old enough not to have the
139
+ * feature is also too old to have a specific code for refusing it. A server that does have it
140
+ * declines an individual statement with a `CADB05xx` code instead.
141
+ *
142
+ * It is a heuristic, and it is only ever used to answer "is asking again worth a round trip?".
143
+ * Reading it wrong costs at most one wasted registration attempt per statement, never a failed
144
+ * statement.
145
+ */
146
+ function isUnsupported(error) {
147
+ return (error.code === CamusErrorCode.Generic &&
148
+ (error.message.includes('404') || error.message.toLowerCase().includes('unimplemented')));
149
+ }
150
+ //# sourceMappingURL=auto-prepare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-prepare.js","sourceRoot":"","sources":["../../src/prepared/auto-prepare.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,13 @@ export declare class CamusPreparedStatementPolicy {
42
42
  static forKey(key: string, factory: () => CamusPreparedStatementPolicy): CamusPreparedStatementPolicy;
43
43
  /** @internal Test hook: drops every shared policy. */
44
44
  static resetShared(): void;
45
+ /**
46
+ * For each database, the statements that the shared policies keep prepared now. It feeds the
47
+ * `camusdb.client.prepared_statement.count` measurement.
48
+ *
49
+ * @internal
50
+ */
51
+ static collectPreparedCounts(): Map<string, number>;
45
52
  readonly maxAutoPrepare: number;
46
53
  readonly minUsages: number;
47
54
  private readonly entries;
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/prepared/policy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,kEAAkE;AAClE,eAAO,MAAM,eAAe;IAC1B,yEAAyE;;IAEzE,yDAAyD;;IAEzD,6DAA6D;;CAErD,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAkBrF,2FAA2F;AAC3F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,4BAA4B;IACvC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,OAAO;IAE/C,MAAM,CAAC,QAAQ,CAAC,kBAAkB,KAAK;IAEvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAsD;IAEpF,iEAAiE;IACjE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,4BAA4B,GAAG,4BAA4B;IAIrG,sDAAsD;IACtD,MAAM,CAAC,WAAW,IAAI,IAAI;IAI1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,OAAO,CAAC,QAAQ,CAAU;gBAEd,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAMrD,mGAAmG;IACnG,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,uDAAuD;IACvD,IAAI,aAAa,IAAI,MAAM,CAQ1B;IAED,wDAAwD;IACxD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAIlD,2FAA2F;IAC3F,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;KAAE;IA2BhG;;;;;OAKG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;KAAE;IAa7F,sDAAsD;IACtD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKjD,gFAAgF;IAChF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKhD,+FAA+F;IAC/F,OAAO,IAAI,IAAI;IAIf,mFAAmF;IACnF,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI3C,OAAO,CAAC,KAAK;CAiCd"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/prepared/policy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,kEAAkE;AAClE,eAAO,MAAM,eAAe;IAC1B,yEAAyE;;IAEzE,yDAAyD;;IAEzD,6DAA6D;;CAErD,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAkBrF,2FAA2F;AAC3F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,4BAA4B;IACvC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,OAAO;IAE/C,MAAM,CAAC,QAAQ,CAAC,kBAAkB,KAAK;IAEvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAsD;IAEpF,iEAAiE;IACjE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,4BAA4B,GAAG,4BAA4B;IAIrG,sDAAsD;IACtD,MAAM,CAAC,WAAW,IAAI,IAAI;IAI1B;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAanD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,OAAO,CAAC,QAAQ,CAAU;gBAEd,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAMrD,mGAAmG;IACnG,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,uDAAuD;IACvD,IAAI,aAAa,IAAI,MAAM,CAQ1B;IAED,wDAAwD;IACxD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAIlD,2FAA2F;IAC3F,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;KAAE;IA2BhG;;;;;OAKG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;KAAE;IAa7F,sDAAsD;IACtD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKjD,gFAAgF;IAChF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKhD,+FAA+F;IAC/F,OAAO,IAAI,IAAI;IAIf,mFAAmF;IACnF,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI3C,OAAO,CAAC,KAAK;CAiCd"}
@@ -47,6 +47,22 @@ export class CamusPreparedStatementPolicy {
47
47
  static resetShared() {
48
48
  CamusPreparedStatementPolicy.shared.clear();
49
49
  }
50
+ /**
51
+ * For each database, the statements that the shared policies keep prepared now. It feeds the
52
+ * `camusdb.client.prepared_statement.count` measurement.
53
+ *
54
+ * @internal
55
+ */
56
+ static collectPreparedCounts() {
57
+ const counts = new Map();
58
+ for (const policy of CamusPreparedStatementPolicy.shared.values()) {
59
+ for (const entry of policy.entries.values()) {
60
+ if (entry.state === EntryState.Prepared)
61
+ counts.set(entry.database, (counts.get(entry.database) ?? 0) + 1);
62
+ }
63
+ }
64
+ return counts;
65
+ }
50
66
  maxAutoPrepare;
51
67
  minUsages;
52
68
  entries = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/prepared/policy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,yEAAyE;IACzE,EAAE,EAAE,IAAI;IACR,yDAAyD;IACzD,QAAQ,EAAE,UAAU;IACpB,6DAA6D;IAC7D,GAAG,EAAE,KAAK;CACF,CAAC;AAIX,MAAM,UAAU,GAAG;IACjB,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;CACF,CAAC;AAiBX;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,4BAA4B;IACvC,MAAM,CAAU,wBAAwB,GAAG,GAAG,CAAC;IAE/C,MAAM,CAAU,kBAAkB,GAAG,CAAC,CAAC;IAE/B,MAAM,CAAU,MAAM,GAAG,IAAI,cAAc,EAAgC,CAAC;IAEpF,iEAAiE;IACjE,MAAM,CAAC,MAAM,CAAC,GAAW,EAAE,OAA2C;QACpE,OAAO,4BAA4B,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,sDAAsD;IACtD,MAAM,CAAC,WAAW;QAChB,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IAEQ,cAAc,CAAS;IAEvB,SAAS,CAAS;IAEV,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAE5C,QAAQ,CAAU;IAE1B,YAAY,cAAsB,EAAE,SAAiB;QACnD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,cAAc,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,mGAAmG;IACnG,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,uDAAuD;IACvD,IAAI,aAAa;QACf,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,QAAQ;gBAAE,KAAK,EAAE,CAAC;QACnD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wDAAwD;IACxD,UAAU,CAAC,QAAgB,EAAE,GAAW;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,UAAU,CAAC,QAAQ,CAAC;IAC7E,CAAC;IAED,2FAA2F;IAC3F,MAAM,CAAC,QAAgB,EAAE,GAAW;QAClC,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC;QAE3D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAErD,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,KAAK,UAAU,CAAC,QAAQ;gBACtB,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAE5E,KAAK,UAAU,CAAC,OAAO;gBACrB,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAE3E,KAAK,UAAU,CAAC,WAAW;gBACzB,uFAAuF;gBACvF,yDAAyD;gBACzD,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAE3E;gBACE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3E,CAAC;gBAED,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC;gBACrC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACnF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,QAAgB,EAAE,GAAW;QAC/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAErD,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5E,CAAC;QAED,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC;QACrC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtD,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACjF,CAAC;IAED,sDAAsD;IACtD,YAAY,CAAC,QAAgB,EAAE,GAAW;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;IAC7D,CAAC;IAED,gFAAgF;IAChF,WAAW,CAAC,QAAgB,EAAE,GAAW;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;IAC5D,CAAC;IAED,+FAA+F;IAC/F,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,mFAAmF;IACnF,MAAM,CAAC,QAAgB,EAAE,GAAW;QAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,QAAgB,EAAE,GAAW;QACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,uFAAuF;YACvF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,OAAqC,CAAC;QAE1C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAEnD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAE/B,0FAA0F;gBAC1F,kBAAkB;gBAClB,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;oBACzC,OAAO,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC9E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAElC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC;;AAGH,+FAA+F;AAC/F,SAAS,GAAG,CAAC,QAAgB,EAAE,GAAW;IACxC,OAAO,GAAG,QAAQ,KAAK,GAAG,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/prepared/policy.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import type { CamusColumn } from './result-set.js';
8
8
  import type { CamusRowSource } from './row-source.js';
9
+ import type { CamusOperation } from './telemetry.js';
9
10
  import type { DecodeOptions } from './values/decode.js';
10
11
  /**
11
12
  * Rows delivered one at a time, as an async iterable.
@@ -34,8 +35,10 @@ export declare class CamusQueryStream<T = Record<string, unknown>> implements As
34
35
  private readonly mapper;
35
36
  private consumed;
36
37
  private closed;
38
+ /** The span of the statement. It ends at the last row, at a failed read, or at `close`. */
39
+ private readonly operation;
37
40
  /** @internal Built by `CamusClient.queryStream`. */
38
- constructor(source: CamusRowSource, options: DecodeOptions);
41
+ constructor(source: CamusRowSource, options: DecodeOptions, operation?: CamusOperation);
39
42
  /** The output columns, known before the first row. */
40
43
  get columns(): CamusColumn[];
41
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"query-stream.d.ts","sourceRoot":"","sources":["../src/query-stream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC,EAAE,eAAe;IACrG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEnC,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,MAAM,CAAS;IAEvB,oDAAoD;gBACxC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa;IAK1D,sDAAsD;IACtD,IAAI,OAAO,IAAI,WAAW,EAAE,CAM3B;IAED;;;;;OAKG;IACH,IAAI,UAAU,IAAI,SAAS,MAAM,EAAE,CAElC;IAEM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;IAoBjD,gGAAgG;IAC1F,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAQ7B,qEAAqE;IAC/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7C"}
1
+ {"version":3,"file":"query-stream.d.ts","sourceRoot":"","sources":["../src/query-stream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC,EAAE,eAAe;IACrG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEnC,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,MAAM,CAAS;IAEvB,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IAEvD,oDAAoD;gBACxC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,cAAc;IAMtF,sDAAsD;IACtD,IAAI,OAAO,IAAI,WAAW,EAAE,CAM3B;IAED;;;;;OAKG;IACH,IAAI,UAAU,IAAI,SAAS,MAAM,EAAE,CAElC;IAEM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;IA4BjD,gGAAgG;IAC1F,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAQ7B,qEAAqE;IAC/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7C"}
@@ -33,10 +33,13 @@ export class CamusQueryStream {
33
33
  mapper;
34
34
  consumed = false;
35
35
  closed = false;
36
+ /** The span of the statement. It ends at the last row, at a failed read, or at `close`. */
37
+ operation;
36
38
  /** @internal Built by `CamusClient.queryStream`. */
37
- constructor(source, options) {
39
+ constructor(source, options, operation) {
38
40
  this.source = source;
39
41
  this.mapper = new RowMapper(source.columnNames, options);
42
+ this.operation = operation;
40
43
  }
41
44
  /** The output columns, known before the first row. */
42
45
  get columns() {
@@ -62,7 +65,14 @@ export class CamusQueryStream {
62
65
  this.consumed = true;
63
66
  try {
64
67
  for (;;) {
65
- const cells = await this.source.next();
68
+ let cells;
69
+ try {
70
+ cells = await this.source.next();
71
+ }
72
+ catch (error) {
73
+ this.operation?.fail(error);
74
+ throw error;
75
+ }
66
76
  if (cells === undefined)
67
77
  return;
68
78
  yield this.mapper.map(cells);
@@ -85,6 +95,7 @@ export class CamusQueryStream {
85
95
  if (this.closed)
86
96
  return;
87
97
  this.closed = true;
98
+ this.operation?.complete();
88
99
  await this.source.close();
89
100
  }
90
101
  async [Symbol.asyncDispose]() {
@@ -1 +1 @@
1
- {"version":3,"file":"query-stream.js","sourceRoot":"","sources":["../src/query-stream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,gBAAgB;IACV,MAAM,CAAiB;IAEvB,MAAM,CAAY;IAE3B,QAAQ,GAAG,KAAK,CAAC;IAEjB,MAAM,GAAG,KAAK,CAAC;IAEvB,oDAAoD;IACpD,YAAY,MAAsB,EAAE,OAAsB;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,sDAAsD;IACtD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAE;YACrC,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAE,CAAC;SAC1D,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC;YACH,SAAS,CAAC;gBACR,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO;gBAEhC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAI,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,2FAA2F;YAC3F,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,gGAAgG;IAChG,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,GAAQ,EAAE,CAAC;QAErB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"query-stream.js","sourceRoot":"","sources":["../src/query-stream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,gBAAgB;IACV,MAAM,CAAiB;IAEvB,MAAM,CAAY;IAE3B,QAAQ,GAAG,KAAK,CAAC;IAEjB,MAAM,GAAG,KAAK,CAAC;IAEvB,2FAA2F;IAC1E,SAAS,CAA6B;IAEvD,oDAAoD;IACpD,YAAY,MAAsB,EAAE,OAAsB,EAAE,SAA0B;QACpF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,sDAAsD;IACtD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAE;YACrC,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAE,CAAC;SAC1D,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC;YACH,SAAS,CAAC;gBACR,IAAI,KAAkD,CAAC;gBAEvD,IAAI,CAAC;oBACH,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACnC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC5B,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO;gBAEhC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAI,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,2FAA2F;YAC3F,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,gGAAgG;IAChG,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,GAAQ,EAAE,CAAC;QAErB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
package/dist/retry.d.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  * For the full copyright and license information, please view the LICENSE.txt
5
5
  * file that was distributed with this source code.
6
6
  */
7
+ import { CamusRetryKind } from './telemetry.js';
7
8
  /**
8
9
  * True when running the same work again may succeed.
9
10
  *
@@ -31,6 +32,13 @@ export interface RetryOptions {
31
32
  * clients that conflicted do not retry in step.
32
33
  */
33
34
  export declare function withRetry<T>(operation: (attempt: number) => Promise<T>, options?: RetryOptions): Promise<T>;
35
+ /**
36
+ * The loop of `withRetry`. `kind` is what each retry counts as on the
37
+ * `camusdb.client.operation.retries` counter.
38
+ *
39
+ * @internal
40
+ */
41
+ export declare function retryLoop<T>(operation: (attempt: number) => Promise<T>, options: RetryOptions, kind: CamusRetryKind): Promise<T>;
34
42
  /**
35
43
  * The back-off after attempt number `attempt`, in milliseconds. Exported so a caller can mirror the
36
44
  * schedule. The first retry waits the documented 20 ms base, the second 40 ms, and so on.
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAwBnD;AAED,gCAAgC;AAChC,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,sCAAsC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED,2FAA2F;AAC3F,wBAAgB,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/E"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAwB7D;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAwBnD;AAED,gCAAgC;AAChC,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,sCAAsC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED,2FAA2F;AAC3F,wBAAgB,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/E"}
package/dist/retry.js CHANGED
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { CamusError } from './errors.js';
8
8
  import { CamusErrorCode } from './error-codes.js';
9
+ import { CamusRetryKind, recordRetry } from './telemetry.js';
9
10
  /**
10
11
  * Which failures a caller may retry, and a loop that does it.
11
12
  *
@@ -64,7 +65,16 @@ export function isRetryable(error) {
64
65
  * The delay grows exponentially from 20 ms, caps at 400 ms, and carries 25% jitter, so a set of
65
66
  * clients that conflicted do not retry in step.
66
67
  */
67
- export async function withRetry(operation, options = {}) {
68
+ export function withRetry(operation, options = {}) {
69
+ return retryLoop(operation, options, CamusRetryKind.Autocommit);
70
+ }
71
+ /**
72
+ * The loop of `withRetry`. `kind` is what each retry counts as on the
73
+ * `camusdb.client.operation.retries` counter.
74
+ *
75
+ * @internal
76
+ */
77
+ export async function retryLoop(operation, options, kind) {
68
78
  const maxAttempts = Math.max(1, options.maxAttempts ?? 5);
69
79
  for (let attempt = 1;; attempt++) {
70
80
  try {
@@ -73,6 +83,7 @@ export async function withRetry(operation, options = {}) {
73
83
  catch (error) {
74
84
  if (attempt >= maxAttempts || !isRetryable(error))
75
85
  throw error;
86
+ recordRetry(kind, error);
76
87
  await delay(computeDelayMs(attempt), options.signal);
77
88
  }
78
89
  }
package/dist/retry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;GAOG;AAEH,oFAAoF;AACpF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAEtE;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,CAAC,WAAW,EAAE,eAAe,EAAE,yBAAyB,CAAC,CAAC;AAE5F,mEAAmE;AACnE,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,GAAY,KAAK,CAAC;IAE7B,4FAA4F;IAC5F,mEAAmE;IACnE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,IAAI,KAAK,GAAG,eAAe,EAAE,KAAK,EAAE,EAAE,CAAC;QACxE,MAAM,IAAI,GAAa,OAA+B,CAAC,KAAK,CAAC;QAE7D,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,kBAAkB;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEnD,KAAK,MAAM,MAAM,IAAI,yBAAyB,EAAE,CAAC;YAC/C,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;QACpD,CAAC;QAED,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAWD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAA0C,EAC1C,UAAwB,EAAE;IAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAE1D,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAE/D,MAAM,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAErD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,KAAK,CAAC,YAAoB,EAAE,MAAoB;IAC9D,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAe,CAAC,CAAC;IAE5E,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,YAAY,CAAC,CAAC;QAEjB,SAAS,OAAO;YACd,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,MAAO,CAAC,MAAe,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * This file is part of CamusDB
3
+ *
4
+ * For the full copyright and license information, please view the LICENSE.txt
5
+ * file that was distributed with this source code.
6
+ */
7
+ /**
8
+ * Traces and metrics through `@opentelemetry/api`.
9
+ *
10
+ * The package is an optional peer dependency, as the gRPC packages are. When it is installed, the
11
+ * driver reports through the global tracer and meter that it names `camusdb`. When it is not
12
+ * installed, every function here returns at once and the driver reports nothing. Install an
13
+ * OpenTelemetry SDK and register it as usual to collect the data. The driver needs no plugin.
14
+ *
15
+ * The span and metric names and attributes are those of the .NET driver, and they follow the
16
+ * OpenTelemetry database conventions. See the README for the list.
17
+ */
18
+ /** The instrumentation scope that the driver's tracer and meter report under. */
19
+ export declare const CAMUS_TELEMETRY_NAME = "camusdb";
20
+ /** The `camusdb.retry.kind` values: what the driver sent again. */
21
+ export declare const CamusRetryKind: {
22
+ /** A commit or a rollback sent again after `CADB0509`. */
23
+ readonly Finalize: "finalize";
24
+ /** A unit of work of `withRetry` run again after a serializable conflict. */
25
+ readonly Autocommit: "autocommit";
26
+ /** A unit of work of `client.transaction` run again, from `BEGIN`, after a serializable conflict. */
27
+ readonly Transaction: "transaction";
28
+ /** A call sent again with a new token after the server refused the old one. */
29
+ readonly TokenRenewal: "token_renewal";
30
+ /** A `CREATE DATABASE` or a branch creation sent again after a transient failure. */
31
+ readonly CreateDatabase: "create_database";
32
+ };
33
+ export type CamusRetryKind = (typeof CamusRetryKind)[keyof typeof CamusRetryKind];
34
+ /** The `camusdb.prepared_statement.result` values. */
35
+ export declare const PreparedResult: {
36
+ readonly Hit: "hit";
37
+ readonly Registered: "registered";
38
+ readonly Miss: "miss";
39
+ readonly Success: "success";
40
+ readonly Refused: "refused";
41
+ readonly Unsupported: "unsupported";
42
+ };
43
+ type AttributeValue = string | number | boolean;
44
+ type Attributes = Record<string, AttributeValue | undefined>;
45
+ interface OtelSpan {
46
+ isRecording(): boolean;
47
+ setAttribute(key: string, value: AttributeValue): unknown;
48
+ setStatus(status: {
49
+ code: number;
50
+ message?: string;
51
+ }): unknown;
52
+ recordException(exception: unknown): void;
53
+ addEvent(name: string, attributes?: Attributes): unknown;
54
+ end(): void;
55
+ }
56
+ interface OtelTracer {
57
+ startSpan(name: string, options?: {
58
+ kind?: number;
59
+ attributes?: Attributes;
60
+ }, context?: unknown): OtelSpan;
61
+ }
62
+ interface OtelObservableResult {
63
+ observe(value: number, attributes?: Attributes): void;
64
+ }
65
+ interface OtelObservable {
66
+ addCallback(callback: (result: OtelObservableResult) => void): void;
67
+ }
68
+ interface OtelInstrumentOptions {
69
+ description?: string;
70
+ unit?: string;
71
+ advice?: {
72
+ explicitBucketBoundaries?: number[];
73
+ };
74
+ }
75
+ interface OtelMeter {
76
+ createHistogram(name: string, options?: OtelInstrumentOptions): {
77
+ record(value: number, attributes?: Attributes): void;
78
+ };
79
+ createCounter(name: string, options?: OtelInstrumentOptions): {
80
+ add(value: number, attributes?: Attributes): void;
81
+ };
82
+ createObservableGauge(name: string, options?: OtelInstrumentOptions): OtelObservable;
83
+ createObservableUpDownCounter(name: string, options?: OtelInstrumentOptions): OtelObservable;
84
+ }
85
+ /** @internal The subset of `@opentelemetry/api` the driver uses. */
86
+ export interface OtelApi {
87
+ readonly trace: {
88
+ getTracer(name: string, version?: string): OtelTracer;
89
+ setSpan(context: unknown, span: OtelSpan): unknown;
90
+ getActiveSpan(): OtelSpan | undefined;
91
+ };
92
+ readonly context: {
93
+ active(): unknown;
94
+ with<T>(context: unknown, fn: () => T): T;
95
+ };
96
+ readonly metrics: {
97
+ getMeterProvider(): unknown;
98
+ getMeter(name: string, version?: string): OtelMeter;
99
+ };
100
+ readonly SpanKind: {
101
+ readonly CLIENT: number;
102
+ };
103
+ readonly SpanStatusCode: {
104
+ readonly ERROR: number;
105
+ };
106
+ }
107
+ /**
108
+ * @internal Test hook: replaces the API, or with `null` plays a process without the package.
109
+ * `undefined` loads it again on the next operation.
110
+ */
111
+ export declare function setTelemetryApi(replacement: OtelApi | null | undefined): void;
112
+ /** What an operation reads from the client it runs for. `ClientRuntime` has this shape. */
113
+ export interface TelemetryScope {
114
+ readonly database: string;
115
+ readonly config: {
116
+ readonly protocol: string;
117
+ readonly traceQueryText: boolean;
118
+ };
119
+ }
120
+ /** What one operation reports about itself. */
121
+ export interface OperationInit {
122
+ /** `SELECT`, `BEGIN`, `BATCH`, and so on. See `operationName`. */
123
+ readonly operationName?: string | undefined;
124
+ /** The table, when the driver knows it without a parse of the SQL text. */
125
+ readonly collection?: string | undefined;
126
+ /** The SQL text. It goes on the span only with `traceQueryText`. */
127
+ readonly queryText?: string | undefined;
128
+ /** The statement count of a pipeline exchange. */
129
+ readonly batchSize?: number | undefined;
130
+ }
131
+ /**
132
+ * One instrumented operation: its span, and its start time for the duration histogram.
133
+ *
134
+ * It ends once. The first `complete` or `fail` ends it, and later calls do nothing.
135
+ */
136
+ export declare class CamusOperation {
137
+ private readonly otel;
138
+ private readonly span;
139
+ private readonly startedAt;
140
+ private readonly database;
141
+ private readonly operationName;
142
+ private ended;
143
+ private serverAddress;
144
+ private serverPort;
145
+ /** @internal Use `startOperation`. */
146
+ constructor(otel: OtelApi, span: OtelSpan, startedAt: number, database: string, operationName: string | undefined);
147
+ /** Records the server the operation goes to, as `server.address` and `server.port`. */
148
+ setEndpoint(endpoint: string): void;
149
+ setAttribute(key: string, value: AttributeValue): void;
150
+ /**
151
+ * Runs `fn` with this operation's span as the active span, so the HTTP or gRPC spans of the
152
+ * transport are its children.
153
+ */
154
+ run<T>(fn: () => T): T;
155
+ /** Adds a `camusdb.retry` event to this operation's span. */
156
+ addRetryEvent(kind: CamusRetryKind, errorType: string | undefined): void;
157
+ /** Ends the operation as a success. */
158
+ complete(): void;
159
+ /** Ends the operation as a failure. */
160
+ fail(error: unknown): void;
161
+ private end;
162
+ }
163
+ /**
164
+ * Starts an operation, or reports `undefined` when `@opentelemetry/api` is not installed.
165
+ *
166
+ * The span is a child of the active span. Its name is `{operation} {target}`, where the target is
167
+ * the table when it is known, and the database if not.
168
+ */
169
+ export declare function startOperation(scope: TelemetryScope, init: OperationInit): CamusOperation | undefined;
170
+ /**
171
+ * Runs one operation under a span, and ends the span with the operation's outcome.
172
+ *
173
+ * Without `@opentelemetry/api`, it only calls `run`.
174
+ */
175
+ export declare function traced<T>(scope: TelemetryScope, init: OperationInit, run: (operation: CamusOperation | undefined) => Promise<T>): Promise<T>;
176
+ /**
177
+ * The operation name of a statement: its first keyword in upper case when that keyword is a known
178
+ * verb, and `undefined` if not. Leading white space and opening parentheses are skipped.
179
+ */
180
+ export declare function operationName(sql: string): string | undefined;
181
+ /**
182
+ * Counts one retry, and adds a `camusdb.retry` event to the driver span of the operation, or to the
183
+ * active span when it is one of the driver's.
184
+ */
185
+ export declare function recordRetry(kind: CamusRetryKind, error: unknown, details?: {
186
+ database?: string;
187
+ operationName?: string;
188
+ operation?: CamusOperation | undefined;
189
+ }): void;
190
+ /** Counts one endpoint set aside after a transport failure. */
191
+ export declare function recordQuarantine(endpoint: string): void;
192
+ /** Counts one execution of a preparable statement: `hit`, `registered`, or `miss`. */
193
+ export declare function recordPreparedLookup(database: string, result: string): void;
194
+ /** Counts one request to prepare a statement: `success`, `refused`, or `unsupported`. */
195
+ export declare function recordPreparedRegistration(database: string, result: string, error?: unknown): void;
196
+ /** Counts one prepared statement released to make room for one used more recently. */
197
+ export declare function recordPreparedEviction(database: string): void;
198
+ export {};
199
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}