@typed-sql/core 1.0.0 → 2.0.0-rc.1

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 (47) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +26 -3
  3. package/dist/packages/core/src/adapter-capabilities.d.ts +30 -0
  4. package/dist/packages/core/src/adapter-capabilities.d.ts.map +1 -0
  5. package/dist/packages/core/src/adapter-capabilities.js +52 -0
  6. package/dist/packages/core/src/adapter-capabilities.js.map +1 -0
  7. package/dist/packages/core/src/diagnostics.d.ts +16 -0
  8. package/dist/packages/core/src/diagnostics.d.ts.map +1 -1
  9. package/dist/packages/core/src/diagnostics.js +4 -0
  10. package/dist/packages/core/src/diagnostics.js.map +1 -1
  11. package/dist/packages/core/src/execution.d.ts +32 -0
  12. package/dist/packages/core/src/execution.d.ts.map +1 -1
  13. package/dist/packages/core/src/execution.js +117 -1
  14. package/dist/packages/core/src/execution.js.map +1 -1
  15. package/dist/packages/core/src/index.d.ts +14 -3
  16. package/dist/packages/core/src/index.d.ts.map +1 -1
  17. package/dist/packages/core/src/index.js +6 -0
  18. package/dist/packages/core/src/index.js.map +1 -1
  19. package/dist/packages/core/src/observation.d.ts +60 -0
  20. package/dist/packages/core/src/observation.d.ts.map +1 -0
  21. package/dist/packages/core/src/observation.js +149 -0
  22. package/dist/packages/core/src/observation.js.map +1 -0
  23. package/dist/packages/core/src/query.d.ts +11 -0
  24. package/dist/packages/core/src/query.d.ts.map +1 -1
  25. package/dist/packages/core/src/query.js +43 -1
  26. package/dist/packages/core/src/query.js.map +1 -1
  27. package/dist/packages/core/src/resolver.d.ts +2 -0
  28. package/dist/packages/core/src/resolver.d.ts.map +1 -1
  29. package/dist/packages/core/src/resolver.js +10 -0
  30. package/dist/packages/core/src/resolver.js.map +1 -1
  31. package/dist/packages/core/src/result-validation.d.ts +87 -0
  32. package/dist/packages/core/src/result-validation.d.ts.map +1 -0
  33. package/dist/packages/core/src/result-validation.js +167 -0
  34. package/dist/packages/core/src/result-validation.js.map +1 -0
  35. package/dist/packages/core/src/routing.d.ts +71 -0
  36. package/dist/packages/core/src/routing.d.ts.map +1 -0
  37. package/dist/packages/core/src/routing.js +258 -0
  38. package/dist/packages/core/src/routing.js.map +1 -0
  39. package/dist/packages/core/src/semantics.d.ts +49 -0
  40. package/dist/packages/core/src/semantics.d.ts.map +1 -0
  41. package/dist/packages/core/src/semantics.js +134 -0
  42. package/dist/packages/core/src/semantics.js.map +1 -0
  43. package/dist/packages/core/src/types.d.ts +136 -1
  44. package/dist/packages/core/src/types.d.ts.map +1 -1
  45. package/dist/packages/core/src/types.js +95 -1
  46. package/dist/packages/core/src/types.js.map +1 -1
  47. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # @typed-sql/core
2
2
 
3
+ ## 2.0.0-rc.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Publish the coherent 2.0.0-rc.1 release-candidate train.
8
+
9
+ ## 2.0.0-rc.0
10
+
11
+ ### Major Changes
12
+
13
+ - 29afc3d: Add conservative semantic primary/replica routing over application-owned databases, scoped
14
+ read-after-write pinning, explicit role requirements, stable unsafe-route errors, dialect runtime
15
+ semantic resolvers, and bounded abortable transaction retry policies with native PostgreSQL and
16
+ MySQL error classifiers. Parse and classify dialect locking reads so uncertain or affine work
17
+ always fails closed to primary.
18
+ - 3f063f6: Add deterministic, secret-free query manifests with bounded structural variants, inferred result
19
+ and parameter descriptions, semantic evidence, runtime-correlatable fingerprints, unresolved
20
+ entries, compatible parsing, canonical serialization, incremental per-file reuse, tsconfig project
21
+ discovery, and a dedicated CLI command.
22
+ - 6a7ae58: Add opt-in live query verification through grammar-owned PostgreSQL PREPARE and MySQL
23
+ COM_STMT_PREPARE adapters, bounded neutral comparison, deterministic secret-free proof artifacts,
24
+ offline cache validation, explicit unsupported classifications, CLI workflows, real database E2E,
25
+ and performance budgets.
26
+ - b06fd0a: Add grammar-neutral optional adapter capability discovery, typed PostgreSQL COPY import and export
27
+ through application-owned `pg-copy-streams`, and typed MySQL LOAD DATA import through mysql2's
28
+ application-owned infile stream. Bulk transfers preserve ordinary `INSERT` parameter evidence,
29
+ enforce structural row stability, apply bounded backpressure, support cancellation and progress,
30
+ and integrate with transaction ownership and conservative connection cleanup.
31
+ - 3050209: Add the dialect contract v4 semantic query evidence foundation. PostgreSQL and MySQL now report operation, dependencies, cardinality, volatility, locking, connection affinity, and required capabilities; compiler results add deterministic query and structural-variant fingerprints and conservatively merged source-mapped semantics. Schema snapshots can record function volatility, and the AST package exposes a neutral statement walker for grammar implementations.
32
+ - 1b054b6: Add an adapter-neutral, redacted database observation lifecycle for queries, cardinality contracts,
33
+ batches, PostgreSQL pipelines, streams, cancellation, and nested transactions. Runtime fingerprints
34
+ correlate with compiler structural variants while SQL, parameter values, connection configuration,
35
+ and driver causes remain excluded by default. Publish the optional OpenTelemetry bridge with current
36
+ database semantic conventions and explicit high-cardinality or exception-capture opt-ins.
37
+ - b4f1b6e: Add deterministic migration compatibility analysis across before/after schema snapshots and query
38
+ manifests. Reports classify both rolling-deployment directions, retain exact source and dependency
39
+ evidence, fail closed for unknown semantics, redact defaults and paths, and support configurable CI
40
+ severity through `typed-sql compat`.
41
+ - 87189c3: Add grammar-neutral `all`, `one`, and `maybeOne` execution with exact row types, stable cardinality
42
+ and cancellation errors, explicit adapter capabilities, AbortSignal support, and absolute deadlines.
43
+ The pg and mysql2 adapters conservatively discard interrupted connections, including transaction
44
+ leases, while the existing uncontrolled `execute` path remains unchanged.
45
+ - e654fae: Add opt-in Standard Schema V1 result validation with compile-time output compatibility, immutable
46
+ query attachment, sync and async validators, redacted fingerprinted errors, and consistent decoded-row
47
+ handling across buffered cardinality methods, batches, PostgreSQL pipelines, streams, and transactions.
48
+ - b2ec119: Add opt-in, grammar-neutral query-plan governance with PostgreSQL and MySQL structured EXPLAIN
49
+ adapters, transient application-owned samples, redacted fingerprint-keyed artifacts, absolute and
50
+ comparable regression budgets, explicit uncertainty, CLI capture and review, documentation, and
51
+ performance coverage.
52
+
3
53
  ## 1.0.0
4
54
 
5
55
  ### Major Changes
package/README.md CHANGED
@@ -26,13 +26,36 @@ type Account = QueryRow<typeof query>;
26
26
  type Parameters = QueryParameters<typeof query>;
27
27
  ```
28
28
 
29
+ Runtime adapters share grammar-neutral result and control contracts: `all`, `one`, and `maybeOne`
30
+ preserve the inferred row, accept optional signals or absolute deadlines, and expose stable
31
+ cardinality and cancellation errors. Adapter capabilities are explicit; unsupported controls are
32
+ never silently ignored.
33
+
34
+ Optional adapter services use namespaced capability tokens rather than widening the common
35
+ `Database` interface. `getAdapterCapability` and `requireAdapterCapability` preserve the service
36
+ type without adding a protocol or driver dependency to core.
37
+
38
+ `DatabaseObserver` provides redacted query, batch, pipeline, stream, cancellation, and nested
39
+ transaction lifecycles. It is disabled by default and does not add a telemetry dependency to core.
40
+
41
+ `sql.validateResult(query, schema)` optionally validates decoded rows through the structural
42
+ Standard Schema V1 interface. Validator output must agree with the inferred row; core does not
43
+ install Zod, Valibot, or another validator package.
44
+
45
+ `createRoutedDatabase` provides conservative, grammar-neutral primary/replica selection and bounded
46
+ explicit-transaction retries from semantic evidence. Dialect packages supply the semantic resolver;
47
+ applications continue owning every database adapter and topology decision.
48
+
29
49
  Grammar and adapter authors can use `DialectPlugin`, `DIALECT_CONTRACT_VERSION`,
30
- `assertDialectPlugin`, `createDatabase`, `renderQuery`, the prepared-query skeleton helpers, and
31
- the neutral resolver primitives from the package root. The package has no parser, grammar,
50
+ `assertDialectPlugin`, `defineQuerySemantics`, `mergeQuerySemantics`, `createDatabase`, `renderQuery`,
51
+ the prepared-query skeleton helpers, and the neutral resolver primitives from the package root. The package has no parser, grammar,
32
52
  database driver, TypeScript compiler, or editor dependency.
33
53
 
34
54
  Read the [query API](https://github.com/Lojhan/typed-sql/blob/main/docs/reference/api.md),
35
- [architecture](https://github.com/Lojhan/typed-sql/blob/main/docs/concepts/architecture.md), and
55
+ [architecture](https://github.com/Lojhan/typed-sql/blob/main/docs/concepts/architecture.md),
56
+ [routing and retry guide](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/routing-and-retries.md),
57
+ [bulk data guide](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/bulk-data.md),
58
+ [result validation guide](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/result-validation.md), and
36
59
  [custom grammar guide](https://github.com/Lojhan/typed-sql/blob/main/docs/extending/custom-grammars.md).
37
60
 
38
61
  MIT © typed-sql contributors
@@ -0,0 +1,30 @@
1
+ declare const adapterCapabilityBrand: unique symbol;
2
+ /** A namespaced token describing one optional service exposed by a database adapter. */
3
+ export interface AdapterCapability<Service> {
4
+ readonly id: string;
5
+ readonly key: symbol;
6
+ readonly [adapterCapabilityBrand]: () => Service;
7
+ }
8
+ export type AdapterCapabilityService<Capability> = Capability extends AdapterCapability<infer Service> ? Service : never;
9
+ export type AdapterCapabilityResolver = (key: symbol) => unknown;
10
+ export declare const adapterCapabilities: unique symbol;
11
+ /** Structural host contract implemented by adapters that provide optional services. */
12
+ export interface AdapterCapabilityHost {
13
+ readonly [adapterCapabilities]?: AdapterCapabilityResolver;
14
+ }
15
+ export declare class UnsupportedAdapterCapabilityError extends Error {
16
+ readonly code = "TSQL_UNSUPPORTED_ADAPTER_CAPABILITY";
17
+ readonly capability: string;
18
+ constructor(capability: string);
19
+ }
20
+ /** Defines a globally stable, namespaced adapter capability token. */
21
+ export declare function defineAdapterCapability<Service>(id: string): AdapterCapability<Service>;
22
+ /** Creates the immutable resolver installed on one adapter or transaction scope. */
23
+ export declare function createAdapterCapabilityResolver(entries: readonly (readonly [AdapterCapability<unknown>, unknown])[]): AdapterCapabilityResolver;
24
+ /** Returns an optional adapter service without importing its driver or protocol package. */
25
+ export declare function getAdapterCapability<Service>(host: unknown, capability: AdapterCapability<Service>): Service | undefined;
26
+ export declare function hasAdapterCapability<Service>(host: unknown, capability: AdapterCapability<Service>): boolean;
27
+ /** Resolves an adapter service or throws a stable fail-closed error. */
28
+ export declare function requireAdapterCapability<Service>(host: unknown, capability: AdapterCapability<Service>): Service;
29
+ export {};
30
+ //# sourceMappingURL=adapter-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-capabilities.d.ts","sourceRoot":"","sources":["../../../../src/adapter-capabilities.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,sBAAsB,EAAE,OAAO,MAA8D,CAAC;AAEpG,wFAAwF;AACxF,MAAM,WAAW,iBAAiB,CAAC,OAAO;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC;CAClD;AAED,MAAM,MAAM,wBAAwB,CAAC,UAAU,IAC7C,UAAU,SAAS,iBAAiB,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;AAExE,MAAM,MAAM,yBAAyB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;AAEjE,eAAO,MAAM,mBAAmB,EAAE,OAAO,MAAoE,CAAC;AAE9G,uFAAuF;AACvF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,yBAAyB,CAAC;CAC5D;AAED,qBAAa,iCAAkC,SAAQ,KAAK;IAC1D,QAAQ,CAAC,IAAI,yCAAyC;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,YAAY,UAAU,EAAE,MAAM,EAI7B;CACF;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAWvF;AAED,oFAAoF;AACpF,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GACnE,yBAAyB,CAO3B;AAED,4FAA4F;AAC5F,wBAAgB,oBAAoB,CAAC,OAAO,EAC1C,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,GACrC,OAAO,GAAG,SAAS,CAIrB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,CAE5G;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,CAIhH"}
@@ -0,0 +1,52 @@
1
+ const adapterCapabilityBrand = Symbol("@typed-sql/core.adapter-capability");
2
+ export const adapterCapabilities = Symbol.for("@typed-sql/core.adapter-capabilities");
3
+ export class UnsupportedAdapterCapabilityError extends Error {
4
+ code = "TSQL_UNSUPPORTED_ADAPTER_CAPABILITY";
5
+ capability;
6
+ constructor(capability) {
7
+ super(`This database adapter does not provide the ${capability} capability`);
8
+ this.name = "UnsupportedAdapterCapabilityError";
9
+ this.capability = capability;
10
+ }
11
+ }
12
+ /** Defines a globally stable, namespaced adapter capability token. */
13
+ export function defineAdapterCapability(id) {
14
+ if (id.length === 0 || !id.includes(".")) {
15
+ throw new TypeError("Adapter capability ids must be non-empty and namespaced, for example vendor.feature");
16
+ }
17
+ return Object.freeze({
18
+ id,
19
+ key: Symbol.for(`@typed-sql/adapter-capability/${id}`),
20
+ [adapterCapabilityBrand]: () => {
21
+ throw new TypeError("Adapter capability type brands are not callable");
22
+ },
23
+ });
24
+ }
25
+ /** Creates the immutable resolver installed on one adapter or transaction scope. */
26
+ export function createAdapterCapabilityResolver(entries) {
27
+ const services = new Map();
28
+ for (const [capability, service] of entries) {
29
+ if (services.has(capability.key))
30
+ throw new TypeError(`Duplicate adapter capability: ${capability.id}`);
31
+ services.set(capability.key, service);
32
+ }
33
+ return (key) => services.get(key);
34
+ }
35
+ /** Returns an optional adapter service without importing its driver or protocol package. */
36
+ export function getAdapterCapability(host, capability) {
37
+ if ((typeof host !== "object" && typeof host !== "function") || host === null)
38
+ return undefined;
39
+ const resolver = host[adapterCapabilities];
40
+ return resolver?.(capability.key);
41
+ }
42
+ export function hasAdapterCapability(host, capability) {
43
+ return getAdapterCapability(host, capability) !== undefined;
44
+ }
45
+ /** Resolves an adapter service or throws a stable fail-closed error. */
46
+ export function requireAdapterCapability(host, capability) {
47
+ const service = getAdapterCapability(host, capability);
48
+ if (service === undefined)
49
+ throw new UnsupportedAdapterCapabilityError(capability.id);
50
+ return service;
51
+ }
52
+ //# sourceMappingURL=adapter-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-capabilities.js","sourceRoot":"","sources":["../../../../src/adapter-capabilities.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAkB,MAAM,CAAC,oCAAoC,CAAU,CAAC;AAcpG,MAAM,CAAC,MAAM,mBAAmB,GAAkB,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAU,CAAC;AAO9G,MAAM,OAAO,iCAAkC,SAAQ,KAAK;IACjD,IAAI,GAAG,qCAAqC,CAAC;IAC7C,UAAU,CAAS;IAE5B,YAAY,UAAkB;QAC5B,KAAK,CAAC,8CAA8C,UAAU,aAAa,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED,sEAAsE;AACtE,MAAM,UAAU,uBAAuB,CAAU,EAAU;IACzD,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,SAAS,CAAC,qFAAqF,CAAC,CAAC;IAC7G,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE;QACF,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,iCAAiC,EAAE,EAAE,CAAC;QACtD,CAAC,sBAAsB,CAAC,EAAE,GAAY,EAAE;YACtC,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;QACzE,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,+BAA+B,CAC7C,OAAoE;IAEpE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;QAC5C,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QACxG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,GAAW,EAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,oBAAoB,CAClC,IAAa,EACb,UAAsC;IAEtC,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAChG,MAAM,QAAQ,GAAI,IAA8B,CAAC,mBAAmB,CAAC,CAAC;IACtE,OAAO,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAwB,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAU,IAAa,EAAE,UAAsC;IACjG,OAAO,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,SAAS,CAAC;AAC9D,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,wBAAwB,CAAU,IAAa,EAAE,UAAsC;IACrG,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,iCAAiC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -15,6 +15,10 @@ export declare const diagnosticRegistry: Readonly<{
15
15
  readonly category: "contract";
16
16
  readonly summary: "Structural SQL requires an explicitly trusted fragment.";
17
17
  };
18
+ readonly TSQ005: {
19
+ readonly category: "support";
20
+ readonly summary: "Runtime SQL cannot be analyzed statically.";
21
+ };
18
22
  readonly TSQ007: {
19
23
  readonly category: "contract";
20
24
  readonly summary: "The schema snapshot and dialect do not match.";
@@ -111,6 +115,18 @@ export declare const diagnosticRegistry: Readonly<{
111
115
  readonly category: "support";
112
116
  readonly summary: "The dialect surface is intentionally unsupported.";
113
117
  };
118
+ readonly TSQ500: {
119
+ readonly category: "verification";
120
+ readonly summary: "Live database metadata differs from compiler evidence.";
121
+ };
122
+ readonly TSQ501: {
123
+ readonly category: "verification";
124
+ readonly summary: "A query could not be verified safely or statically.";
125
+ };
126
+ readonly TSQ502: {
127
+ readonly category: "verification";
128
+ readonly summary: "Native live verification failed without persisting driver details.";
129
+ };
114
130
  }>;
115
131
  export type TypedSqlDiagnosticCode = keyof typeof diagnosticRegistry;
116
132
  export declare function isTypedSqlDiagnosticCode(value: string): value is TypedSqlDiagnosticCode;
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../../src/diagnostics.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;iBACnB,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,iCAAiC;;;iBAC9D,QAAQ,EAAE,UAAU;iBAAE,OAAO,EAAE,uCAAuC;;;iBACtE,QAAQ,EAAE,UAAU;iBAAE,OAAO,EAAE,wDAAwD;;;iBACvF,QAAQ,EAAE,UAAU;iBAAE,OAAO,EAAE,yDAAyD;;;iBACxF,QAAQ,EAAE,UAAU;iBAAE,OAAO,EAAE,+CAA+C;;;iBAC9E,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,oCAAoC;;;iBACjE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,qCAAqC;;;iBAClE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,kCAAkC;;;iBAC/D,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,kDAAkD;;;iBAC/E,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,oDAAoD;;;iBACjF,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,oDAAoD;;;iBACjF,QAAQ,EAAE,MAAM;iBAAE,OAAO,EAAE,sCAAsC;;;iBACjE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,yCAAyC;;;iBACtE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,iCAAiC;;;iBAC9D,QAAQ,EAAE,MAAM;iBAAE,OAAO,EAAE,wBAAwB;;;iBACnD,QAAQ,EAAE,MAAM;iBAAE,OAAO,EAAE,wCAAwC;;;iBACnE,QAAQ,EAAE,MAAM;iBAAE,OAAO,EAAE,mCAAmC;;;iBAC9D,QAAQ,EAAE,MAAM;iBAAE,OAAO,EAAE,4DAA4D;;;iBACvF,QAAQ,EAAE,SAAS;iBAAE,OAAO,EAAE,kDAAkD;;;iBAChF,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,2BAA2B;;;iBACxD,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,6BAA6B;;;iBAC1D,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,wCAAwC;;;iBACrE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,0CAA0C;;;iBACvE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,kDAAkD;;;iBAC/E,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,uDAAuD;;;iBACpF,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,oDAAoD;;;iBACjF,QAAQ,EAAE,OAAO;iBAAE,OAAO,EAAE,qEAAqE;;;iBACjG,QAAQ,EAAE,SAAS;iBAAE,OAAO,EAAE,mDAAmD;;EAClF,CAAC;AAEZ,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAErE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,sBAAsB,CAEvF"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../../src/diagnostics.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;iBACnB,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,iCAAiC;;;iBAC9D,QAAQ,EAAE,UAAU;iBAAE,OAAO,EAAE,uCAAuC;;;iBACtE,QAAQ,EAAE,UAAU;iBAAE,OAAO,EAAE,wDAAwD;;;iBACvF,QAAQ,EAAE,UAAU;iBAAE,OAAO,EAAE,yDAAyD;;;iBACxF,QAAQ,EAAE,SAAS;iBAAE,OAAO,EAAE,4CAA4C;;;iBAC1E,QAAQ,EAAE,UAAU;iBAAE,OAAO,EAAE,+CAA+C;;;iBAC9E,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,oCAAoC;;;iBACjE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,qCAAqC;;;iBAClE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,kCAAkC;;;iBAC/D,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,kDAAkD;;;iBAC/E,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,oDAAoD;;;iBACjF,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,oDAAoD;;;iBACjF,QAAQ,EAAE,MAAM;iBAAE,OAAO,EAAE,sCAAsC;;;iBACjE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,yCAAyC;;;iBACtE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,iCAAiC;;;iBAC9D,QAAQ,EAAE,MAAM;iBAAE,OAAO,EAAE,wBAAwB;;;iBACnD,QAAQ,EAAE,MAAM;iBAAE,OAAO,EAAE,wCAAwC;;;iBACnE,QAAQ,EAAE,MAAM;iBAAE,OAAO,EAAE,mCAAmC;;;iBAC9D,QAAQ,EAAE,MAAM;iBAAE,OAAO,EAAE,4DAA4D;;;iBACvF,QAAQ,EAAE,SAAS;iBAAE,OAAO,EAAE,kDAAkD;;;iBAChF,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,2BAA2B;;;iBACxD,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,6BAA6B;;;iBAC1D,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,wCAAwC;;;iBACrE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,0CAA0C;;;iBACvE,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,kDAAkD;;;iBAC/E,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,uDAAuD;;;iBACpF,QAAQ,EAAE,QAAQ;iBAAE,OAAO,EAAE,oDAAoD;;;iBACjF,QAAQ,EAAE,OAAO;iBAAE,OAAO,EAAE,qEAAqE;;;iBACjG,QAAQ,EAAE,SAAS;iBAAE,OAAO,EAAE,mDAAmD;;;iBACjF,QAAQ,EAAE,cAAc;iBAAE,OAAO,EAAE,wDAAwD;;;iBAC3F,QAAQ,EAAE,cAAc;iBAAE,OAAO,EAAE,qDAAqD;;;iBACxF,QAAQ,EAAE,cAAc;iBAAE,OAAO,EAAE,oEAAoE;;EACxG,CAAC;AAEZ,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAErE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,sBAAsB,CAEvF"}
@@ -3,6 +3,7 @@ export const diagnosticRegistry = Object.freeze({
3
3
  TSQ002: { category: "resource", summary: "SQL exceeded a parser resource limit." },
4
4
  TSQ003: { category: "resource", summary: "Conditional SQL exceeded the structural variant limit." },
5
5
  TSQ004: { category: "contract", summary: "Structural SQL requires an explicitly trusted fragment." },
6
+ TSQ005: { category: "support", summary: "Runtime SQL cannot be analyzed statically." },
6
7
  TSQ007: { category: "contract", summary: "The schema snapshot and dialect do not match." },
7
8
  TSQ100: { category: "schema", summary: "A referenced table does not exist." },
8
9
  TSQ101: { category: "schema", summary: "A referenced column does not exist." },
@@ -27,6 +28,9 @@ export const diagnosticRegistry = Object.freeze({
27
28
  TSQ217: { category: "result", summary: "An IN subquery does not return exactly one column." },
28
29
  TSQ301: { category: "drift", summary: "The live schema or type policy differs from the generated snapshot." },
29
30
  TSQ401: { category: "support", summary: "The dialect surface is intentionally unsupported." },
31
+ TSQ500: { category: "verification", summary: "Live database metadata differs from compiler evidence." },
32
+ TSQ501: { category: "verification", summary: "A query could not be verified safely or statically." },
33
+ TSQ502: { category: "verification", summary: "Native live verification failed without persisting driver details." },
30
34
  });
31
35
  export function isTypedSqlDiagnosticCode(value) {
32
36
  return Object.hasOwn(diagnosticRegistry, value);
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../../src/diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,iCAAiC,EAAE;IAC1E,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,uCAAuC,EAAE;IAClF,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,wDAAwD,EAAE;IACnG,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,yDAAyD,EAAE;IACpG,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,+CAA+C,EAAE;IAC1F,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,oCAAoC,EAAE;IAC7E,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qCAAqC,EAAE;IAC9E,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,kCAAkC,EAAE;IAC3E,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,kDAAkD,EAAE;IAC3F,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,oDAAoD,EAAE;IAC7F,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,oDAAoD,EAAE;IAC7F,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,sCAAsC,EAAE;IAC7E,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,yCAAyC,EAAE;IAClF,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,iCAAiC,EAAE;IAC1E,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,EAAE;IAC/D,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,wCAAwC,EAAE;IAC/E,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,mCAAmC,EAAE;IAC1E,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,4DAA4D,EAAE;IACnG,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,kDAAkD,EAAE;IAC5F,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,EAAE;IACpE,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,6BAA6B,EAAE;IACtE,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,wCAAwC,EAAE;IACjF,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,0CAA0C,EAAE;IACnF,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,kDAAkD,EAAE;IAC3F,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,uDAAuD,EAAE;IAChG,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,oDAAoD,EAAE;IAC7F,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,qEAAqE,EAAE;IAC7G,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,mDAAmD,EAAE;CACrF,CAAC,CAAC;AAIZ,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../../src/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,36 @@
1
1
  import type { Query } from "./query.js";
2
+ export type QueryCardinalityExpectation = "one" | "maybeOne";
3
+ export type QueryCancellationReason = "signal" | "deadline";
4
+ export type ExecutionCapability = "cancellation" | "deadlines";
5
+ export interface ExecutionOptions {
6
+ readonly signal?: AbortSignal;
7
+ /** Absolute Unix time in milliseconds, or a Date representing that instant. */
8
+ readonly deadline?: number | Date;
9
+ }
10
+ export interface ExecutionCapabilities {
11
+ readonly cancellation: boolean;
12
+ readonly deadlines: boolean;
13
+ }
14
+ export declare class QueryCardinalityError extends Error {
15
+ readonly code = "TSQL_CARDINALITY";
16
+ readonly expected: QueryCardinalityExpectation;
17
+ readonly actual: number;
18
+ constructor(expected: QueryCardinalityExpectation, actual: number);
19
+ }
20
+ export declare class QueryCancelledError extends Error {
21
+ readonly code = "TSQL_CANCELLED";
22
+ readonly reason: QueryCancellationReason;
23
+ constructor(reason: QueryCancellationReason, options?: ErrorOptions);
24
+ }
25
+ export declare class UnsupportedExecutionCapabilityError extends Error {
26
+ readonly code = "TSQL_UNSUPPORTED_EXECUTION_CAPABILITY";
27
+ readonly capability: ExecutionCapability;
28
+ constructor(capability: ExecutionCapability);
29
+ }
30
+ export declare function executionDeadline(options: ExecutionOptions): number | undefined;
31
+ export declare function assertExecutionCapabilities(capabilities: ExecutionCapabilities, options: ExecutionOptions): void;
32
+ /** Runs one dispatched operation and invokes adapter cleanup exactly once when its controls fire. */
33
+ export declare function runControlledExecution<Value>(options: ExecutionOptions, operation: () => Promise<Value>, cancel: (error: QueryCancelledError) => void): Promise<Value>;
2
34
  /** The buffered rows produced by executing one typed query. */
3
35
  export type QueryResult<Value> = Value extends Query<infer Row, infer _Params> ? readonly Row[] : never;
4
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,+DAA+D;AAC/D,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI,KAAK,SAAS,KAAK,CAAC,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC;AAExG;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS,SAAS,OAAO,EAAE,IAAI;IAC7D,QAAQ,EAAE,KAAK,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CAC/D,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,SAAS,OAAO,EAAE,IAAI,OAAO,GAAG;IACrE,QAAQ,EAAE,KAAK,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,EAAE,MAAM,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK;CACtH,CAAC;AAEF,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,+DAA+D;AAC/D,MAAM,WAAW,WAAW,CAAC,GAAG,CAAE,SAAQ,qBAAqB,CAAC,GAAG,CAAC,EAAE,eAAe;IACnF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,2BAA2B,GAAG,KAAK,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,QAAQ,EAAE,2BAA2B,EAAE,MAAM,EAAE,MAAM,EAShE;CACF;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,oBAAoB;IACjC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IAEzC,YAAY,MAAM,EAAE,uBAAuB,EAAE,OAAO,GAAE,YAAiB,EAItE;CACF;AAED,qBAAa,mCAAoC,SAAQ,KAAK;IAC5D,QAAQ,CAAC,IAAI,2CAA2C;IACxD,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IAEzC,YAAY,UAAU,EAAE,mBAAmB,EAI1C;CACF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAK/E;AAED,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,qBAAqB,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAQhH;AAID,qGAAqG;AACrG,wBAAsB,sBAAsB,CAAC,KAAK,EAChD,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAC/B,MAAM,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAC3C,OAAO,CAAC,KAAK,CAAC,CA2DhB;AAED,+DAA+D;AAC/D,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI,KAAK,SAAS,KAAK,CAAC,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC;AAExG;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS,SAAS,OAAO,EAAE,IAAI;IAC7D,QAAQ,EAAE,KAAK,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CAC/D,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,SAAS,OAAO,EAAE,IAAI,OAAO,GAAG;IACrE,QAAQ,EAAE,KAAK,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,EAAE,MAAM,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK;CACtH,CAAC;AAEF,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,+DAA+D;AAC/D,MAAM,WAAW,WAAW,CAAC,GAAG,CAAE,SAAQ,qBAAqB,CAAC,GAAG,CAAC,EAAE,eAAe;IACnF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -1,2 +1,118 @@
1
- export {};
1
+ export class QueryCardinalityError extends Error {
2
+ code = "TSQL_CARDINALITY";
3
+ expected;
4
+ actual;
5
+ constructor(expected, actual) {
6
+ super(expected === "one"
7
+ ? `Expected exactly one row, received ${actual}`
8
+ : `Expected at most one row, received ${actual}`);
9
+ this.name = "QueryCardinalityError";
10
+ this.expected = expected;
11
+ this.actual = actual;
12
+ }
13
+ }
14
+ export class QueryCancelledError extends Error {
15
+ code = "TSQL_CANCELLED";
16
+ reason;
17
+ constructor(reason, options = {}) {
18
+ super(reason === "deadline" ? "Query deadline expired" : "Query execution was cancelled", options);
19
+ this.name = "QueryCancelledError";
20
+ this.reason = reason;
21
+ }
22
+ }
23
+ export class UnsupportedExecutionCapabilityError extends Error {
24
+ code = "TSQL_UNSUPPORTED_EXECUTION_CAPABILITY";
25
+ capability;
26
+ constructor(capability) {
27
+ super(`This database adapter does not support ${capability}`);
28
+ this.name = "UnsupportedExecutionCapabilityError";
29
+ this.capability = capability;
30
+ }
31
+ }
32
+ export function executionDeadline(options) {
33
+ if (options.deadline === undefined)
34
+ return undefined;
35
+ const deadline = options.deadline instanceof Date ? options.deadline.getTime() : options.deadline;
36
+ if (!Number.isFinite(deadline))
37
+ throw new RangeError("Execution deadline must be a finite Unix time in milliseconds");
38
+ return deadline;
39
+ }
40
+ export function assertExecutionCapabilities(capabilities, options) {
41
+ executionDeadline(options);
42
+ if (options.signal !== undefined && !capabilities.cancellation) {
43
+ throw new UnsupportedExecutionCapabilityError("cancellation");
44
+ }
45
+ if (options.deadline !== undefined && !capabilities.deadlines) {
46
+ throw new UnsupportedExecutionCapabilityError("deadlines");
47
+ }
48
+ }
49
+ const maximumTimerDelay = 2_147_483_647;
50
+ /** Runs one dispatched operation and invokes adapter cleanup exactly once when its controls fire. */
51
+ export async function runControlledExecution(options, operation, cancel) {
52
+ const deadline = executionDeadline(options);
53
+ if (options.signal?.aborted)
54
+ throw new QueryCancelledError("signal", { cause: options.signal.reason });
55
+ if (deadline !== undefined && deadline <= Date.now())
56
+ throw new QueryCancelledError("deadline");
57
+ let cancellationError;
58
+ let rejectCancellation;
59
+ const cancellation = new Promise((_resolve, reject) => {
60
+ rejectCancellation = reject;
61
+ });
62
+ // A deadline may expire before the operation is dispatched. Keep that rejected
63
+ // branch observed even when the function exits before constructing Promise.race.
64
+ void cancellation.catch(() => undefined);
65
+ const requestCancellation = (reason) => {
66
+ if (cancellationError !== undefined)
67
+ return;
68
+ cancellationError = new QueryCancelledError(reason, {
69
+ ...(reason === "signal" ? { cause: options.signal?.reason } : {}),
70
+ });
71
+ try {
72
+ cancel(cancellationError);
73
+ }
74
+ catch {
75
+ // Cancellation is authoritative. Adapter cleanup failures must not escape
76
+ // an AbortSignal listener or replace the stable cancellation error.
77
+ }
78
+ finally {
79
+ rejectCancellation(cancellationError);
80
+ }
81
+ };
82
+ const onAbort = () => requestCancellation("signal");
83
+ options.signal?.addEventListener("abort", onAbort, { once: true });
84
+ let deadlineTimer;
85
+ const armDeadline = () => {
86
+ if (deadline === undefined)
87
+ return;
88
+ const remaining = deadline - Date.now();
89
+ if (remaining <= 0)
90
+ requestCancellation("deadline");
91
+ else
92
+ deadlineTimer = setTimeout(remaining > maximumTimerDelay ? armDeadline : () => requestCancellation("deadline"), Math.min(remaining, maximumTimerDelay));
93
+ };
94
+ armDeadline();
95
+ try {
96
+ if (cancellationError !== undefined)
97
+ throw cancellationError;
98
+ const running = operation();
99
+ try {
100
+ const value = await Promise.race([running, cancellation]);
101
+ if (cancellationError !== undefined)
102
+ throw cancellationError;
103
+ return value;
104
+ }
105
+ catch (error) {
106
+ if (cancellationError === undefined)
107
+ throw error;
108
+ await running.catch(() => undefined);
109
+ throw cancellationError;
110
+ }
111
+ }
112
+ finally {
113
+ options.signal?.removeEventListener("abort", onAbort);
114
+ if (deadlineTimer !== undefined)
115
+ clearTimeout(deadlineTimer);
116
+ }
117
+ }
2
118
  //# sourceMappingURL=execution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../../src/execution.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../../src/execution.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,21 @@
1
+ export type { AdapterCapability, AdapterCapabilityHost, AdapterCapabilityResolver, AdapterCapabilityService, } from "./adapter-capabilities.js";
2
+ export { adapterCapabilities, createAdapterCapabilityResolver, defineAdapterCapability, getAdapterCapability, hasAdapterCapability, requireAdapterCapability, UnsupportedAdapterCapabilityError, } from "./adapter-capabilities.js";
1
3
  export type { TypedSqlDiagnosticCode } from "./diagnostics.js";
2
4
  export { diagnosticRegistry, isTypedSqlDiagnosticCode } from "./diagnostics.js";
3
- export type { QueryBatch, QueryResult, QueryResults, QueryStream, StreamOptions } from "./execution.js";
4
- export type { Database, OptionalSqlFragment, Query, QueryExecutor, QueryParameters, QueryRenderSkeleton, QueryRow, RenderedQuery, SqlFragment, SqlRenderer, SqlSegment, SqlTag, TransactionDatabase, TransactionRunner, } from "./query.js";
5
+ export type { ExecutionCapabilities, ExecutionCapability, ExecutionOptions, QueryBatch, QueryCancellationReason, QueryCardinalityExpectation, QueryResult, QueryResults, QueryStream, StreamOptions, } from "./execution.js";
6
+ export { assertExecutionCapabilities, executionDeadline, QueryCancelledError, QueryCardinalityError, runControlledExecution, UnsupportedExecutionCapabilityError, } from "./execution.js";
7
+ export type { ActiveDatabaseObservation, BatchOperationStart, DatabaseObservation, DatabaseObservationStatus, DatabaseObserver, DatabaseOperationCompletion, DatabaseOperationEnd, DatabaseOperationStart, QueryObservationCardinality, QueryOperationStart, StreamOperationStart, TransactionOperationStart, } from "./observation.js";
8
+ export { databaseErrorCompletion, observeQueryStream, startDatabaseObservation } from "./observation.js";
9
+ export type { ControlledQueryExecutor, Database, OptionalSqlFragment, Query, QueryExecutor, QueryParameters, QueryRenderSkeleton, QueryRow, RenderedQuery, SqlFragment, SqlRenderer, SqlSegment, SqlTag, TransactionDatabase, TransactionRunner, } from "./query.js";
5
10
  export { bindQueryRenderSkeleton, compileQueryRenderSkeleton, createDatabase, renderQuery, sql, } from "./query.js";
6
11
  export type { ResolverType } from "./resolver.js";
7
12
  export { closestName, ParameterCollector, ResolverSchemaIndex, unionTypeLiterals } from "./resolver.js";
8
- export type { ColumnSnapshot, DialectAnalysis, DialectCapabilities, DialectPlugin, DomainSnapshot, FunctionSnapshot, GeneratedSchemaMetadata, GeneratedSchemaSnapshot, ResolvedColumn, ResolvedParameter, SchemaProvider, SchemaSnapshot, SourceRange, SqlDiagnostic, SqlDiagnosticFix, TableSnapshot, TypedSqlConfig, } from "./types.js";
13
+ export type { CompatibleResultSchema, QueryResultValidationFailure, QueryResultValidationIssue, QueryResultValidationOptions, StandardSchemaV1, StandardTypedV1, } from "./result-validation.js";
14
+ export { hasQueryResultValidator, QueryResultValidationError, queryResultValidationSource, validateQueryResultRows, validateQueryResultStream, } from "./result-validation.js";
15
+ export type { QueryRoute, QueryRoutePreference, QueryRouteSelection, QueryRoutingObserver, QuerySemanticResolver, ReplicaSelectionContext, ReplicaSelector, RoutedDatabase, RoutedDatabaseOptions, RoutedTransactionOptions, TransactionRetryContext, TransactionRetryEvent, TransactionRetryPolicy, } from "./routing.js";
16
+ export { createRoutedDatabase, queryRoute, UnsafeReplicaRoutingError } from "./routing.js";
17
+ export type { QueryCardinality, QueryConnectionAffinity, QueryDependency, QueryDependencyAccess, QueryDependencyKind, QueryLocking, QueryOperation, QuerySemantics, QueryVolatility, SemanticEvidence, SemanticFact, } from "./semantics.js";
18
+ export { defineQuerySemantics, mapQuerySemanticRanges, mergeQuerySemantics, QUERY_SEMANTICS_VERSION, unknownQuerySemantics, } from "./semantics.js";
19
+ export type { ColumnSnapshot, DialectAnalysis, DialectCapabilities, DialectPlugin, DomainSnapshot, FunctionSnapshot, GeneratedSchemaMetadata, GeneratedSchemaSnapshot, LiveQueryVerificationEvidence, LiveQueryVerificationField, LiveQueryVerificationRequest, LiveQueryVerificationServer, LiveQueryVerifier, QueryPlanBudget, QueryPlanBudgetPolicy, QueryPlanCaptureRequest, QueryPlanEnvironment, QueryPlanEvidence, QueryPlanInspector, QueryPlanNode, QueryPlanSample, QueryPlanSampleProvider, QueryPlanSampleRequest, ResolvedColumn, ResolvedParameter, SchemaProvider, SchemaSnapshot, SourceRange, SqlDiagnostic, SqlDiagnosticFix, TableSnapshot, TypedSqlConfig, } from "./types.js";
9
20
  export { assertDialectPlugin, DIALECT_CONTRACT_VERSION, defineConfig, parameterTypeLiteral, rowTypeLiteral, } from "./types.js";
10
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAChF,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACxG,YAAY,EACV,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,MAAM,EACN,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EACd,WAAW,EACX,GAAG,GACJ,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACxG,YAAY,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
+ export { adapterCapabilities, createAdapterCapabilityResolver, defineAdapterCapability, getAdapterCapability, hasAdapterCapability, requireAdapterCapability, UnsupportedAdapterCapabilityError, } from "./adapter-capabilities.js";
1
2
  export { diagnosticRegistry, isTypedSqlDiagnosticCode } from "./diagnostics.js";
3
+ export { assertExecutionCapabilities, executionDeadline, QueryCancelledError, QueryCardinalityError, runControlledExecution, UnsupportedExecutionCapabilityError, } from "./execution.js";
4
+ export { databaseErrorCompletion, observeQueryStream, startDatabaseObservation } from "./observation.js";
2
5
  export { bindQueryRenderSkeleton, compileQueryRenderSkeleton, createDatabase, renderQuery, sql, } from "./query.js";
3
6
  export { closestName, ParameterCollector, ResolverSchemaIndex, unionTypeLiterals } from "./resolver.js";
7
+ export { hasQueryResultValidator, QueryResultValidationError, queryResultValidationSource, validateQueryResultRows, validateQueryResultStream, } from "./result-validation.js";
8
+ export { createRoutedDatabase, queryRoute, UnsafeReplicaRoutingError } from "./routing.js";
9
+ export { defineQuerySemantics, mapQuerySemanticRanges, mergeQuerySemantics, QUERY_SEMANTICS_VERSION, unknownQuerySemantics, } from "./semantics.js";
4
10
  export { assertDialectPlugin, DIALECT_CONTRACT_VERSION, defineConfig, parameterTypeLiteral, rowTypeLiteral, } from "./types.js";
5
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAkBhF,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EACd,WAAW,EACX,GAAG,GACJ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAoBxG,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,iCAAiC,GAClC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAahF,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,mCAAmC,GACpC,MAAM,gBAAgB,CAAC;AAexB,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAkBzG,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EACd,WAAW,EACX,GAAG,GACJ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AASxG,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAgBhC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAc3F,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAmCxB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -0,0 +1,60 @@
1
+ import type { QueryCancellationReason, QueryCardinalityExpectation, QueryStream } from "./execution.js";
2
+ export type QueryObservationCardinality = QueryCardinalityExpectation | "many";
3
+ export type DatabaseObservationStatus = "success" | "error" | "cancelled";
4
+ interface DatabaseOperationCommon {
5
+ readonly dialect: string;
6
+ readonly grammarVersion: string;
7
+ readonly transactionDepth: number;
8
+ }
9
+ export interface QueryOperationStart extends DatabaseOperationCommon {
10
+ readonly kind: "query";
11
+ readonly fingerprint: string;
12
+ readonly cardinality: QueryObservationCardinality;
13
+ readonly prepared: boolean;
14
+ }
15
+ export interface BatchOperationStart extends DatabaseOperationCommon {
16
+ readonly kind: "batch" | "pipeline";
17
+ readonly fingerprints: readonly string[];
18
+ readonly size: number;
19
+ }
20
+ export interface StreamOperationStart extends DatabaseOperationCommon {
21
+ readonly kind: "stream";
22
+ readonly fingerprint: string;
23
+ readonly prepared: boolean;
24
+ }
25
+ export interface TransactionOperationStart extends DatabaseOperationCommon {
26
+ readonly kind: "transaction";
27
+ }
28
+ export type DatabaseOperationStart = QueryOperationStart | BatchOperationStart | StreamOperationStart | TransactionOperationStart;
29
+ export interface DatabaseOperationCompletion {
30
+ readonly status: DatabaseObservationStatus;
31
+ readonly rowCount?: number;
32
+ readonly errorType?: string;
33
+ readonly cancellationReason?: QueryCancellationReason;
34
+ }
35
+ export interface DatabaseOperationEnd extends DatabaseOperationCompletion {
36
+ readonly durationMilliseconds: number;
37
+ /** Present only when the observer explicitly enables error-cause capture. */
38
+ readonly cause?: unknown;
39
+ }
40
+ export interface DatabaseObservation {
41
+ /** Runs dispatch in observer-owned context, such as an OpenTelemetry span context. */
42
+ run?<Value>(operation: () => Value): Value;
43
+ end(completion: DatabaseOperationEnd): void;
44
+ }
45
+ export interface DatabaseObserver {
46
+ /** Error objects may include sensitive driver text and are excluded by default. */
47
+ readonly captureErrorCause?: boolean;
48
+ start(operation: DatabaseOperationStart): DatabaseObservation | undefined;
49
+ }
50
+ export interface ActiveDatabaseObservation {
51
+ run<Value>(operation: () => Value): Value;
52
+ end(completion: DatabaseOperationCompletion, cause?: unknown): void;
53
+ }
54
+ /** Starts one redacted operation lifecycle. Observer start/end failures never replace database results. */
55
+ export declare function startDatabaseObservation(observer: DatabaseObserver | undefined, operation: DatabaseOperationStart): ActiveDatabaseObservation | undefined;
56
+ export declare function databaseErrorCompletion(error: unknown): DatabaseOperationCompletion;
57
+ /** Adds a lazy, exactly-once observation lifecycle to an adapter-owned query stream. */
58
+ export declare function observeQueryStream<Row>(stream: QueryStream<Row>, observer: DatabaseObserver | undefined, operation: StreamOperationStart): QueryStream<Row>;
59
+ export {};
60
+ //# sourceMappingURL=observation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../../../../src/observation.ts"],"names":[],"mappings":"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"}