@sqlbraid/core 1.0.4 → 1.1.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.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Low-level TypeScript interfaces for SQLBraid. This package defines the types for templates, rendered statements and adapter capabilities.
4
4
 
5
5
  ```sh
6
- npm install @sqlbraid/core
6
+ pnpm add @sqlbraid/core
7
7
  ```
8
8
 
9
9
  This package gives common types, errors and utilities for statements and parameters. It does not connect to databases and does not execute queries. Use it to write a new driver adapter or a deep integration.
package/dist/index.d.ts CHANGED
@@ -960,7 +960,6 @@ export interface SqlTag extends SqlTagLike<"unknown"> {
960
960
  type AuthoringModuleCatalogEntry = {
961
961
  readonly moduleSpecifier: string;
962
962
  readonly dialectId?: "postgres" | "mysql" | "mariadb" | "sqlite" | "oracle" | "mssql";
963
- readonly helperFamily: "template" | "facade";
964
963
  };
965
964
  export declare const AUTHORING_MODULE_CATALOG: readonly AuthoringModuleCatalogEntry[];
966
965
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/errors.ts","../src/numeric.ts","../src/parameter.ts","../src/routine.ts","../src/template-ir.ts","../src/statement.ts","../src/binding.ts","../src/dialect.ts","../src/query.ts","../src/environment.ts","../src/executor.ts","../src/observers.ts","../src/database.ts","../src/authoring.ts","../src/authoring-modules.ts","../src/capabilities.ts"],"mappings":"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BAA4B,SAAS;EACrC,WAAW,QAAQ;;;;;iBChEJ;WACN;WACA;WACA,WAAW;WACX,OAAO;;;iBAID;WACN;WACA;WACA;WACA;WACA;WACA;WACA;aACE;aACA;aACA,YAAY;aACZ;;WAEF,2BAA2B;WAC3B,WAAW;WACX,iBAAiB,UAAU,sBAAsB;WACjD,cAAc;WACd;WACA;WACA;WACA;WACA;;;iBAIM;WACN;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,UAAU,SAAS;WACnB;WACA;;;iBAIM;WACN;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;iBAIM;WACN;WACA;WACA;WACA;WACA;WACA;WACA,WAAW;WACX,iBAAiB,eAAe,UAAU,sBAAsB;;;iBAI1D;WACN;WACA;WACA;WACA;WACA,eAAe;WACf;WACA;WACA;;YAGC;;iBAiBK;WACN;WACA;WACA;WACA;WACA;WACA;WACA,OAAO;WACP;WACA;WACA;WACA;WACA;;;iBAIM;WACN;WACA;WACA;WACA;WACA;aACE;aACA;aACA,YAAY;aACZ;;WAEF,2BAA2B;WAC3B,WAAW;WACX,iBAAiB,UAAU,sBAAsB;WACjD;WACA;WACA;WACA;WACA;;;iBAIM;WACN;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;YAGC;;iBASK;WACN;WACA;WACA,OAAO;WACP;WACA;WACA;WACA;WACA;;YAGC,iBACR,kBACA,mBACA,mBACA,iBACA,kBACA,kBACA,mBACA,iBACA;;iBAGa;EACf,QAAQ,OAAO,wBAAwB;;;;;iBCnLxB;WACN,qBAAqB;WACrB,QAAQ;;YAGP,kBAAkB,kBAAkB;YAEpC;WAAoC;;WAA6B;;YAEjE,kBAAkB,OAAO,YAAY,0BAC5C,UAAU,YACV,OAAO,OAAO,UAAU;;YAGjB,cAAc,OAAO,UAAU;WAChC;KACN,UAAU,gBAAgB;EACzB,QAAQ,MAAM,kBAAkB,OAAO,oBAAoB,QAAQ;;EAEnE,WAAW,MAAM,kBAAkB,OAAO,oBAAoB,QAAQ,kBAAkB;KACrF,UAAU,eAAe;EAExB,OAAO,M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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/errors.ts","../src/numeric.ts","../src/parameter.ts","../src/routine.ts","../src/template-ir.ts","../src/statement.ts","../src/binding.ts","../src/dialect.ts","../src/query.ts","../src/environment.ts","../src/executor.ts","../src/observers.ts","../src/database.ts","../src/authoring.ts","../src/authoring-modules.ts","../src/capabilities.ts"],"mappings":"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BAA4B,SAAS;EACrC,WAAW,QAAQ;;;;;iBChEJ;WACN;WACA;WACA,WAAW;WACX,OAAO;;;iBAID;WACN;WACA;WACA;WACA;WACA;WACA;WACA;aACE;aACA;aACA,YAAY;aACZ;;WAEF,2BAA2B;WAC3B,WAAW;WACX,iBAAiB,UAAU,sBAAsB;WACjD,cAAc;WACd;WACA;WACA;WACA;WACA;;;iBAIM;WACN;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,UAAU,SAAS;WACnB;WACA;;;iBAIM;WACN;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;iBAIM;WACN;WACA;WACA;WACA;WACA;WACA;WACA,WAAW;WACX,iBAAiB,eAAe,UAAU,sBAAsB;;;iBAI1D;WACN;WACA;WACA;WACA;WACA,eAAe;WACf;WACA;WACA;;YAGC;;iBAiBK;WACN;WACA;WACA;WACA;WACA;WACA;WACA,OAAO;WACP;WACA;WACA;WACA;WACA;;;iBAIM;WACN;WACA;WACA;WACA;WACA;aACE;aACA;aACA,YAAY;aACZ;;WAEF,2BAA2B;WAC3B,WAAW;WACX,iBAAiB,UAAU,sBAAsB;WACjD;WACA;WACA;WACA;WACA;;;iBAIM;WACN;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;YAGC;;iBASK;WACN;WACA;WACA,OAAO;WACP;WACA;WACA;WACA;WACA;;YAGC,iBACR,kBACA,mBACA,mBACA,iBACA,kBACA,kBACA,mBACA,iBACA;;iBAGa;EACf,QAAQ,OAAO,wBAAwB;;;;;iBCnLxB;WACN,qBAAqB;WACrB,QAAQ;;YAGP,kBAAkB,kBAAkB;YAEpC;WAAoC;;WAA6B;;YAEjE,kBAAkB,OAAO,YAAY,0BAC5C,UAAU,YACV,OAAO,OAAO,UAAU;;YAGjB,cAAc,OAAO,UAAU;WAChC;KACN,UAAU,gBAAgB;EACzB,QAAQ,MAAM,kBAAkB,OAAO,oBAAoB,QAAQ;;EAEnE,WAAW,MAAM,kBAAkB,OAAO,oBAAoB,QAAQ,kBAAkB;KACrF,UAAU,eAAe;EAExB,OAAO,M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"}
package/dist/index.js CHANGED
@@ -597,13 +597,13 @@ function copyRenderedParameter(parameter) {
597
597
  if ((direction === "out" || direction === "inout") && outputName === void 0) throw new TypeError("RenderedStatement OUT and INOUT parameters require an outputName.");
598
598
  if (outputName !== void 0 && (direction === void 0 || direction === "in")) throw new TypeError("RenderedStatement parameter outputName requires an OUT or INOUT direction.");
599
599
  if (candidate.value === void 0 && direction !== "out") throw new SqlRenderError("BRAID_BIND_VALUE_UNSUPPORTED", "Undefined bind values are unsupported; use null for SQL NULL.");
600
- return Object.freeze({
601
- value: candidate.value,
602
- ...interpolation === void 0 ? {} : { interpolation },
603
- ...hint === void 0 ? {} : { hint },
604
- ...direction === void 0 ? {} : { direction },
605
- ...outputName === void 0 ? {} : { outputName }
606
- });
600
+ if (interpolation === void 0 && hint === void 0 && direction === void 0 && outputName === void 0) return Object.freeze({ value: candidate.value });
601
+ const copy = { value: candidate.value };
602
+ if (interpolation !== void 0) copy.interpolation = interpolation;
603
+ if (hint !== void 0) copy.hint = hint;
604
+ if (direction !== void 0) copy.direction = direction;
605
+ if (outputName !== void 0) copy.outputName = outputName;
606
+ return Object.freeze(copy);
607
607
  }
608
608
  function copyRoutineProcedure(procedure) {
609
609
  if (procedure === void 0) return void 0;
@@ -647,28 +647,42 @@ function createRenderedStatement(statement) {
647
647
  if (statement.resultKind !== "call" && statement.routineProcedure !== void 0) throw new TypeError("Routine procedure metadata is only valid for call statements.");
648
648
  if (typeof statement.dialectId !== "string" || !statement.dialectId) throw new TypeError("RenderedStatement dialectId must be a non-empty string.");
649
649
  const segments = Object.freeze([...statement.segments]);
650
- if (segments.some((segment) => typeof segment !== "string")) throw new TypeError("RenderedStatement segments must be an array of strings.");
650
+ for (let index = 0; index < segments.length; index += 1) if (typeof segments[index] !== "string") throw new TypeError("RenderedStatement segments must be an array of strings.");
651
651
  const nativeTemplate = statement.nativeTemplate === void 0 ? void 0 : copyNativeTemplate(statement.nativeTemplate, segments);
652
- const parameters = Object.freeze(Array.from(statement.parameters, copyRenderedParameter));
653
- if (parameters.some((parameter) => parameter.direction === "inout" && statement.resultKind !== "call")) throw new TypeError("INOUT parameters are only valid for call statements.");
654
- if (parameters.some((parameter) => parameter.direction === "out" && statement.resultKind !== "call" && statement.resultKind !== "rows")) throw new TypeError("OUT parameters are only valid for call and rows statements.");
655
- const outputNames = /* @__PURE__ */ new Set();
656
- for (const parameter of parameters) if (parameter.outputName !== void 0) {
657
- if (outputNames.has(parameter.outputName)) throw new TypeError(`Duplicate routine outputName: ${parameter.outputName}`);
658
- outputNames.add(parameter.outputName);
652
+ const copiedParameters = [];
653
+ let hasInout = false;
654
+ let hasOut = false;
655
+ let hasOutputName = false;
656
+ for (let index = 0; index < statement.parameters.length; index += 1) {
657
+ const copy = copyRenderedParameter(statement.parameters[index]);
658
+ copiedParameters.push(copy);
659
+ if (copy.direction === "inout") hasInout = true;
660
+ else if (copy.direction === "out") hasOut = true;
661
+ if (copy.outputName !== void 0) hasOutputName = true;
662
+ }
663
+ const parameters = Object.freeze(copiedParameters);
664
+ if (hasInout && statement.resultKind !== "call") throw new TypeError("INOUT parameters are only valid for call statements.");
665
+ if (hasOut && statement.resultKind !== "call" && statement.resultKind !== "rows") throw new TypeError("OUT parameters are only valid for call and rows statements.");
666
+ if (hasOutputName) {
667
+ const outputNames = /* @__PURE__ */ new Set();
668
+ for (const parameter of parameters) if (parameter.outputName !== void 0) {
669
+ if (outputNames.has(parameter.outputName)) throw new TypeError(`Duplicate routine outputName: ${parameter.outputName}`);
670
+ outputNames.add(parameter.outputName);
671
+ }
659
672
  }
660
673
  const routineProcedure = copyRoutineProcedure(statement.routineProcedure);
661
674
  if (routineProcedure !== void 0 && routineProcedure.parameterNames.length !== parameters.length) throw new TypeError("Routine procedure parameterNames must match the rendered parameter count.");
662
- const rendered = Object.freeze({
675
+ const draft = {
663
676
  segments,
664
677
  parameters,
665
- ...nativeTemplate === void 0 ? {} : { nativeTemplate },
666
678
  dialectId: statement.dialectId,
667
- resultKind: statement.resultKind,
668
- ...routineProcedure === void 0 ? {} : { routineProcedure },
669
- ...statement.fingerprint === void 0 ? {} : { fingerprint: statement.fingerprint },
670
- ...statement.variantFingerprint === void 0 ? {} : { variantFingerprint: statement.variantFingerprint }
671
- });
679
+ resultKind: statement.resultKind
680
+ };
681
+ if (nativeTemplate !== void 0) draft.nativeTemplate = nativeTemplate;
682
+ if (routineProcedure !== void 0) draft.routineProcedure = routineProcedure;
683
+ if (statement.fingerprint !== void 0) draft.fingerprint = statement.fingerprint;
684
+ if (statement.variantFingerprint !== void 0) draft.variantFingerprint = statement.variantFingerprint;
685
+ const rendered = Object.freeze(draft);
672
686
  knownRenderedStatements.add(rendered);
673
687
  return rendered;
674
688
  }
@@ -928,114 +942,30 @@ const SQL_FRAGMENT = Symbol.for("sqlbraid.fragment");
928
942
  //#endregion
929
943
  //#region src/authoring-modules.ts
930
944
  const AUTHORING_MODULE_CATALOG = Object.freeze([
931
- {
932
- moduleSpecifier: "@sqlbraid/template",
933
- helperFamily: "template"
934
- },
945
+ { moduleSpecifier: "@sqlbraid/template" },
935
946
  {
936
947
  moduleSpecifier: "@sqlbraid/postgres",
937
- dialectId: "postgres",
938
- helperFamily: "template"
948
+ dialectId: "postgres"
939
949
  },
940
950
  {
941
951
  moduleSpecifier: "@sqlbraid/mysql",
942
- dialectId: "mysql",
943
- helperFamily: "template"
952
+ dialectId: "mysql"
944
953
  },
945
954
  {
946
955
  moduleSpecifier: "@sqlbraid/mariadb",
947
- dialectId: "mariadb",
948
- helperFamily: "template"
956
+ dialectId: "mariadb"
949
957
  },
950
958
  {
951
959
  moduleSpecifier: "@sqlbraid/sqlite",
952
- dialectId: "sqlite",
953
- helperFamily: "template"
960
+ dialectId: "sqlite"
954
961
  },
955
962
  {
956
963
  moduleSpecifier: "@sqlbraid/oracle",
957
- dialectId: "oracle",
958
- helperFamily: "template"
964
+ dialectId: "oracle"
959
965
  },
960
966
  {
961
967
  moduleSpecifier: "@sqlbraid/mssql",
962
- dialectId: "mssql",
963
- helperFamily: "template"
964
- },
965
- {
966
- moduleSpecifier: "sqlbraid/pg",
967
- dialectId: "postgres",
968
- helperFamily: "facade"
969
- },
970
- {
971
- moduleSpecifier: "sqlbraid/mysql2",
972
- dialectId: "mysql",
973
- helperFamily: "facade"
974
- },
975
- {
976
- moduleSpecifier: "sqlbraid/mariadb",
977
- dialectId: "mariadb",
978
- helperFamily: "facade"
979
- },
980
- {
981
- moduleSpecifier: "sqlbraid/node-sqlite",
982
- dialectId: "sqlite",
983
- helperFamily: "facade"
984
- },
985
- {
986
- moduleSpecifier: "sqlbraid/better-sqlite3",
987
- dialectId: "sqlite",
988
- helperFamily: "facade"
989
- },
990
- {
991
- moduleSpecifier: "sqlbraid/libsql",
992
- dialectId: "sqlite",
993
- helperFamily: "facade"
994
- },
995
- {
996
- moduleSpecifier: "sqlbraid/sqlite-wasm",
997
- dialectId: "sqlite",
998
- helperFamily: "facade"
999
- },
1000
- {
1001
- moduleSpecifier: "sqlbraid/d1",
1002
- dialectId: "sqlite",
1003
- helperFamily: "facade"
1004
- },
1005
- {
1006
- moduleSpecifier: "sqlbraid/oracledb",
1007
- dialectId: "oracle",
1008
- helperFamily: "facade"
1009
- },
1010
- {
1011
- moduleSpecifier: "sqlbraid/tedious",
1012
- dialectId: "mssql",
1013
- helperFamily: "facade"
1014
- },
1015
- {
1016
- moduleSpecifier: "sqlbraid/postgres",
1017
- dialectId: "postgres",
1018
- helperFamily: "facade"
1019
- },
1020
- {
1021
- moduleSpecifier: "sqlbraid/mysql",
1022
- dialectId: "mysql",
1023
- helperFamily: "facade"
1024
- },
1025
- {
1026
- moduleSpecifier: "sqlbraid/sqlite",
1027
- dialectId: "sqlite",
1028
- helperFamily: "facade"
1029
- },
1030
- {
1031
- moduleSpecifier: "sqlbraid/oracle",
1032
- dialectId: "oracle",
1033
- helperFamily: "facade"
1034
- },
1035
- {
1036
- moduleSpecifier: "sqlbraid/mssql",
1037
- dialectId: "mssql",
1038
- helperFamily: "facade"
968
+ dialectId: "mssql"
1039
969
  }
1040
970
  ].map((entry) => Object.freeze(entry)));
1041
971
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["validHintNumber"],"sources":["../src/errors.ts","../src/numeric.ts","../src/parameter.ts","../src/routine.ts","../src/statement.ts","../src/binding.ts","../src/template-ir.ts","../src/authoring-modules.ts","../src/capabilities.ts"],"sourcesContent":["/** Thrown when a driver value cannot be represented without losing database information. */\nexport class ResultExactnessError extends Error {\n static readonly code = \"BRAID_RESULT_EXACTNESS\" as const;\n readonly code = ResultExactnessError.code;\n\n constructor(message = \"Result value does not have an exact representation.\") {\n super(message);\n this.name = \"ResultExactnessError\";\n }\n}\n\nexport type PublicErrorCategory = \"runtime\" | \"adapter\" | \"compiler\";\n\n/** One deliberately public SQLBraid error code; an arbitrary `BRAID_` message is not automatically public. */\nexport interface PublicErrorDefinition {\n readonly code: string;\n readonly category: PublicErrorCategory;\n readonly owner: string;\n /**\n * UnsupportedFeatureError only: features for which this code is a public\n * contract. Other public errors intentionally omit this metadata.\n */\n readonly features?: readonly string[];\n}\n\n/**\n * The intentionally small compatibility boundary for SQLBraid-owned errors.\n *\n * Keep this registry explicit. In particular, a BRAID_ token in a driver\n * message or an internal compiler fallback is not public merely because it\n * happens to use the project prefix.\n */\nexport const PUBLIC_ERROR_DEFINITIONS: readonly PublicErrorDefinition[] = Object.freeze([\n { code: \"BRAID_RESULT_EXACTNESS\", category: \"runtime\", owner: \"ResultExactnessError\" },\n { code: \"BRAID_CALL_MAP\", category: \"runtime\", owner: \"RoutineMappingError\" },\n { code: \"BRAID_RESULT_KIND\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseResultKindError\" },\n { code: \"BRAID_RESULT_VALIDATION\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseResultValidationError\" },\n { code: \"BRAID_BATCH_ABORTED\", category: \"runtime\", owner: \"runtime batch lifecycle/synthetic observer error\" },\n { code: \"BRAID_TX_SCOPE\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_TX_CLOSED\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_SESSION_SCOPE\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_SESSION_CLOSED\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_CONNECTION_POISONED\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_STREAM_SCOPE\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_REENTRY\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_TX_OPTIONS_NESTED\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_MIGRATE_SOURCE\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationError\" },\n { code: \"BRAID_MIGRATE_UNINITIALIZED\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationStartupError\" },\n { code: \"BRAID_MIGRATE_PENDING\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationStartupError\" },\n { code: \"BRAID_MIGRATE_AHEAD\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationStartupError\" },\n { code: \"BRAID_MIGRATE_CHECKSUM\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationStartupError\" },\n { code: \"BRAID_MIGRATE_ORDER\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationError\" },\n { code: \"BRAID_MIGRATE_DIRTY\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationError\" },\n { code: \"BRAID_MIGRATE_BUSY\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationError\" },\n { code: \"BRAID_MIGRATE_SCHEMA_DRIFT\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationStartupError\" },\n { code: \"BRAID_CALL_UNSUPPORTED\", category: \"adapter\", owner: \"UnsupportedFeatureError\", features: [\"routine.call\"] },\n {\n code: \"BRAID_RESULT_SETS_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.result-sets\"],\n },\n {\n code: \"BRAID_STREAM_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"statement.stream\"],\n },\n {\n code: \"BRAID_CANCEL_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"statement.cancel\"],\n },\n {\n code: \"BRAID_SESSION_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"session.pinned\"],\n },\n {\n code: \"BRAID_TX_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"transaction\", \"transaction.savepoint\"],\n },\n { code: \"BRAID_TX_OPTIONS_INVALID\", category: \"runtime\", owner: \"TypeError with code\" },\n {\n code: \"BRAID_TX_OPTION_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\n \"transaction.read-only\",\n \"transaction.isolation.read-uncommitted\",\n \"transaction.isolation.read-committed\",\n \"transaction.isolation.repeatable-read\",\n \"transaction.isolation.serializable\",\n ],\n },\n {\n code: \"BRAID_CALL_RESULT_SETS\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.result-sets\"],\n },\n {\n code: \"BRAID_CALL_CURSOR_TX_REQUIRED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.out-cursor\"],\n },\n {\n code: \"BRAID_CALL_OUT_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.out\", \"routine.inout\"],\n },\n {\n code: \"BRAID_CALL_RETURN_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.return-value\"],\n },\n { code: \"BRAID_CALL_PROCEDURE_INVALID\", category: \"adapter\", owner: \"AdapterError\" },\n {\n code: \"BRAID_CALL_CURSOR_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.out-cursor\"],\n },\n {\n code: \"BRAID_RESOURCE_CLEANUP\",\n category: \"adapter\",\n owner: \"adapter cleanup error with code\",\n features: [\"resource.cleanup\", \"resource.discard\"],\n },\n {\n code: \"BRAID_BIND_HINT_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"statement.bind-hint\"],\n },\n { code: \"BRAID_BIND_VALUE_UNSUPPORTED\", category: \"adapter\", owner: \"AdapterError\" },\n {\n code: \"BRAID_INTEGER_MODE_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"result.exact-integer\"],\n },\n {\n code: \"BRAID_CALL_LOB_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.out\"],\n },\n {\n code: \"BRAID_BULK_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"statement.bulk\"],\n },\n {\n code: \"BRAID_PREPARE_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"statement.prepare\"],\n },\n { code: \"BRAID_DIALECT_MISMATCH\", category: \"adapter\", owner: \"UnsupportedFeatureError\", features: [\"dialect\"] },\n {\n code: \"BRAID_RESULT_KIND_AMBIGUOUS\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"result.rows\", \"result.command\"],\n },\n { code: \"BRAID_PREPARED_NAME\", category: \"runtime\", owner: \"prepared query validation\" },\n { code: \"BRAID_PREPARED_SHAPE\", category: \"runtime\", owner: \"prepared query validation\" },\n { code: \"BRAID_BIND_TYPE_REQUIRED\", category: \"adapter\", owner: \"AdapterError\" },\n { code: \"BRAID_EMPTY_LIST\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_EMPTY_SET\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_DIALECT\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_ASYNC_CONTEXT\", category: \"compiler\", owner: \"compiler diagnostic\" },\n { code: \"BRAID_DIRECTIVE_UNTERMINATED\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_DIRECTIVE\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_CONDITION\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_ATTRIBUTES\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_STRUCTURE\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_HOLE_CONTEXT\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_SQL_LEX\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_DEPTH\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_STRUCTURE_LIMIT\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_SQL_LIMIT\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_BIND_LIMIT\", category: \"runtime\", owner: \"SqlRenderError\" },\n] as const);\n\n/** Public adapter capability failure. Unsupported features reject explicitly rather than being buffered or simulated. */\nexport class UnsupportedFeatureError extends Error {\n constructor(\n readonly feature: string,\n readonly code: `BRAID_${string}`,\n message: string,\n options?: ErrorOptions,\n ) {\n super(`${code}: ${message}`, options);\n this.name = \"UnsupportedFeatureError\";\n }\n}\n\n/** Return true only for a registered, semantically valid feature/code pair. */\nexport function isPublicUnsupportedFeatureError(error: unknown): error is UnsupportedFeatureError {\n if (!(error instanceof UnsupportedFeatureError)) return false;\n const definition = PUBLIC_ERROR_DEFINITIONS.find(\n (candidate) => candidate.owner === \"UnsupportedFeatureError\" && candidate.code === error.code,\n );\n return definition?.features?.includes(error.feature) === true;\n}\n\n/** An adapter-owned input/transport failure that retains TypeError semantics. */\nexport class AdapterError extends TypeError {\n constructor(\n readonly code: `BRAID_${string}`,\n message: string,\n options?: ErrorOptions,\n ) {\n super(`${code}: ${message}`, options);\n this.name = \"AdapterError\";\n }\n}\n\n/** Rendering/authoring failure with a stable diagnostic code, raised before driver execution. */\nexport class SqlRenderError extends Error {\n readonly code: string;\n\n constructor(code: string, message: string) {\n super(message);\n this.name = \"SqlRenderError\";\n this.code = code;\n }\n}\n","import { ResultExactnessError } from \"./errors.js\";\n\nexport type NumericSemantics = \"exact-integer\" | \"exact-decimal\" | \"approximate-binary\";\n\nexport type NumericRepresentation = \"string\" | \"number\";\n\nexport type TransportFidelity = \"lossless\" | \"guarded\" | \"lossy\" | \"unsupported\";\n\n/** Database type semantics, JavaScript representation, and transport-fidelity claim for one mapping. */\nexport interface NumericTypeContract {\n readonly semantics: NumericSemantics;\n readonly representation: NumericRepresentation;\n readonly fidelity: TransportFidelity;\n readonly binaryPrecision?: 32 | 64;\n}\n\nexport interface ExactIntegerRange {\n readonly min?: bigint;\n readonly max?: bigint;\n}\n\nfunction exactnessFailure(message: string): never {\n throw new ResultExactnessError(message);\n}\n\n/**\n * Decode an exact integer from driver output, optionally enforcing bigint bounds.\n *\n * @throws {ResultExactnessError} When the value is not an exact integer or violates the requested range.\n */\nexport function decodeExactInteger(value: unknown, range?: ExactIntegerRange): bigint {\n let result: bigint;\n if (typeof value === \"bigint\") {\n result = value;\n } else if (typeof value === \"string\" && /^[+-]?\\d+$/u.test(value)) {\n try {\n result = BigInt(value);\n } catch {\n return exactnessFailure(\"Result value does not have an exact integer representation.\");\n }\n } else if (typeof value === \"number\" && Number.isSafeInteger(value)) {\n result = BigInt(value);\n } else {\n return exactnessFailure(\"Result value does not have an exact integer representation.\");\n }\n\n if (range !== undefined) {\n if (\n (range.min !== undefined && typeof range.min !== \"bigint\") ||\n (range.max !== undefined && typeof range.max !== \"bigint\") ||\n (range.min !== undefined && range.max !== undefined && range.min > range.max)\n ) {\n throw new TypeError(\"Exact integer range bounds must be ordered bigint values.\");\n }\n if (range.min !== undefined && result < range.min) {\n return exactnessFailure(\"Result exact integer is below the configured minimum.\");\n }\n if (range.max !== undefined && result > range.max) {\n return exactnessFailure(\"Result exact integer is above the configured maximum.\");\n }\n }\n return result;\n}\n\n/**\n * Normalize an exact integer at the raw SQLBraid boundary without changing\n * its textual spelling. This is intentionally not a bigint decoder: callers\n * that need arithmetic may opt in to decodeExactInteger().\n */\nexport function normalizeExactInteger(value: unknown): string {\n if (typeof value === \"string\" && /^[+-]?\\d+$/u.test(value)) return value;\n if (typeof value === \"bigint\") return value.toString(10);\n if (typeof value === \"number\" && Number.isSafeInteger(value)) return String(value);\n return exactnessFailure(\"Result value does not have an exact integer representation.\");\n}\n\n/**\n * Convert a database-reported count to a safe operational Number. Counts are\n * not application values, so unlike exact SQL numerics they remain numbers,\n * but narrowing an unsafe value is never implicit.\n */\nexport function safeDatabaseCount(value: unknown): number {\n if (typeof value === \"number\") {\n if (Number.isSafeInteger(value) && value >= 0) return value === 0 ? 0 : value;\n return exactnessFailure(\"Database count is not a safe non-negative integer.\");\n }\n if (typeof value === \"bigint\") {\n if (value < 0n || value > BigInt(Number.MAX_SAFE_INTEGER)) {\n return exactnessFailure(\"Database count is not a safe non-negative integer.\");\n }\n return Number(value);\n }\n if (typeof value === \"string\" && /^[+]?\\d+$/u.test(value)) {\n try {\n const count = BigInt(value);\n if (count >= 0n && count <= BigInt(Number.MAX_SAFE_INTEGER)) return Number(count);\n } catch {\n // Fall through to the common exactness error.\n }\n }\n return exactnessFailure(\"Database count is not a safe non-negative integer.\");\n}\n\n/**\n * Preserve an exact decimal as text; numeric JavaScript values are rejected because they may already be rounded.\n *\n * @throws {ResultExactnessError} When the value cannot prove exact decimal fidelity.\n */\nexport function decodeExactDecimal(value: unknown, options?: { readonly allowBigInt?: boolean }): string {\n if (typeof value === \"string\") return value;\n if (typeof value === \"bigint\" && options?.allowBigInt === true) return value.toString();\n return exactnessFailure(\"Result value does not have an exact decimal representation.\");\n}\n","const SQL_BOUND_PARAMETER = Symbol.for(\"sqlbraid.bound-parameter\");\nconst knownBoundParameters = new WeakSet<object>();\ndeclare const boundParameterBrand: unique symbol;\nconst SQL_ROUTINE_PARAMETER = Symbol.for(\"sqlbraid.routine-parameter\");\nconst knownRoutineParameters = new WeakSet<object>();\n\nexport type RoutineParameterDirection = \"in\" | \"out\" | \"inout\";\n\n/** Explicit database-type metadata for one bound value; this is not application validation or an input codec. */\nexport interface ParameterTypeHint<Input = unknown> {\n readonly databaseType: string;\n readonly length?: number | \"max\";\n readonly precision?: number;\n readonly scale?: number;\n readonly __input?: Input;\n}\n\n/** Value plus an explicit database type hint, created by `sql.bind()`. */\nexport interface BoundParameter<Input = unknown> {\n readonly value: Input;\n readonly hint: ParameterTypeHint<Input>;\n readonly [boundParameterBrand]: true;\n}\n\n/** Value-only routine OUT/INOUT marker; the direction and output name are interpreted by the adapter. */\nexport interface RoutineParameter<Input = unknown> {\n readonly value: Input;\n readonly hint?: ParameterTypeHint;\n readonly direction: Exclude<RoutineParameterDirection, \"in\">;\n readonly outputName: string;\n}\n\nfunction validHintNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && Number.isInteger(value) && value >= 0;\n}\n\nfunction validHintInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && Number.isInteger(value);\n}\n\nfunction isParameterTypeHint(value: unknown): value is ParameterTypeHint {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false;\n const candidate = value as {\n readonly databaseType?: unknown;\n readonly length?: unknown;\n readonly precision?: unknown;\n readonly scale?: unknown;\n };\n return (\n typeof candidate.databaseType === \"string\" &&\n candidate.databaseType.trim().length > 0 &&\n (candidate.length === undefined || candidate.length === \"max\" || validHintNumber(candidate.length)) &&\n (candidate.precision === undefined || validHintNumber(candidate.precision)) &&\n (candidate.scale === undefined || validHintInteger(candidate.scale))\n );\n}\n\n/** Validate and freeze an explicit database parameter-type hint. */\nexport function createParameterTypeHint<Input = unknown>(hint: ParameterTypeHint<Input>): ParameterTypeHint<Input> {\n if (!isParameterTypeHint(hint)) throw new TypeError(\"sql.bind hint must be an object with valid structural fields.\");\n const candidate = hint as {\n readonly databaseType?: unknown;\n readonly length?: unknown;\n readonly precision?: unknown;\n readonly scale?: unknown;\n };\n if (typeof candidate.databaseType !== \"string\" || !candidate.databaseType.trim())\n throw new TypeError(\"sql.bind hint databaseType must be a non-empty string.\");\n if (candidate.length !== undefined && candidate.length !== \"max\" && !validHintNumber(candidate.length))\n throw new TypeError('sql.bind hint length must be a non-negative integer or \"max\".');\n if (candidate.precision !== undefined && !validHintNumber(candidate.precision))\n throw new TypeError(\"sql.bind hint precision must be a non-negative integer.\");\n if (candidate.scale !== undefined && !validHintInteger(candidate.scale))\n throw new TypeError(\"sql.bind hint scale must be an integer.\");\n const normalized = {\n databaseType: candidate.databaseType,\n ...(candidate.length === undefined ? {} : { length: candidate.length }),\n ...(candidate.precision === undefined ? {} : { precision: candidate.precision }),\n ...(candidate.scale === undefined ? {} : { scale: candidate.scale }),\n } as ParameterTypeHint<Input>;\n return Object.freeze(normalized);\n}\n\n/** Create the value-only marker consumed by adapter binding for an explicitly typed input. */\nexport function createBoundParameter<Input>(\n value: NoInfer<Input>,\n hint: ParameterTypeHint<Input>,\n): BoundParameter<Input> {\n const normalizedHint = createParameterTypeHint(hint);\n const bound = Object.freeze({ value, hint: normalizedHint, [SQL_BOUND_PARAMETER]: true });\n knownBoundParameters.add(bound);\n return bound as unknown as BoundParameter<Input>;\n}\n\n/** Recognize only bound-parameter objects created by SQLBraid's own constructor. */\nexport function isBoundParameter(value: unknown): value is BoundParameter {\n if (\n typeof value !== \"object\" ||\n value === null ||\n !knownBoundParameters.has(value) ||\n !Object.hasOwn(value, SQL_BOUND_PARAMETER)\n )\n return false;\n const candidate = value as {\n readonly value?: unknown;\n readonly hint?: unknown;\n readonly [SQL_BOUND_PARAMETER]?: unknown;\n };\n return (\n candidate[SQL_BOUND_PARAMETER] === true && Object.hasOwn(candidate, \"value\") && isParameterTypeHint(candidate.hint)\n );\n}\n\nfunction normalizeOutputName(name: unknown): string {\n if (typeof name !== \"string\" || !name.trim()) throw new TypeError(\"Routine outputName must be a non-empty string.\");\n return name;\n}\n\n/** Create a value-only OUT parameter descriptor; the adapter supplies the native carrier. */\nexport function createRoutineOutParameter(name: string, hint?: ParameterTypeHint): RoutineParameter<null> {\n const normalizedHint = hint === undefined ? undefined : createParameterTypeHint(hint);\n const parameter = Object.freeze({\n value: null,\n direction: \"out\" as const,\n outputName: normalizeOutputName(name),\n ...(normalizedHint === undefined ? {} : { hint: normalizedHint }),\n [SQL_ROUTINE_PARAMETER]: true as const,\n });\n knownRoutineParameters.add(parameter);\n return parameter;\n}\n\n/** Create a value-only INOUT parameter descriptor; input value and output channel stay distinct. */\nexport function createRoutineInOutParameter<Input>(\n name: string,\n value: NoInfer<Input>,\n hint?: ParameterTypeHint<Input>,\n): RoutineParameter<Input> {\n const normalizedHint = hint === undefined ? undefined : createParameterTypeHint(hint);\n const parameter = Object.freeze({\n value,\n direction: \"inout\" as const,\n outputName: normalizeOutputName(name),\n ...(normalizedHint === undefined ? {} : { hint: normalizedHint }),\n [SQL_ROUTINE_PARAMETER]: true as const,\n });\n knownRoutineParameters.add(parameter);\n return parameter as RoutineParameter<Input>;\n}\n\n/** Recognize only routine OUT/INOUT descriptors created by SQLBraid's own constructor. */\nexport function isRoutineParameter(value: unknown): value is RoutineParameter {\n if (typeof value !== \"object\" || value === null || Array.isArray(value) || !knownRoutineParameters.has(value))\n return false;\n const candidate = value as {\n readonly value?: unknown;\n readonly direction?: unknown;\n readonly outputName?: unknown;\n readonly hint?: unknown;\n readonly [SQL_ROUTINE_PARAMETER]?: unknown;\n };\n return (\n candidate[SQL_ROUTINE_PARAMETER] === true &&\n Object.hasOwn(candidate, \"value\") &&\n (candidate.direction === \"out\" || candidate.direction === \"inout\") &&\n typeof candidate.outputName === \"string\" &&\n Boolean(candidate.outputName.trim()) &&\n (candidate.hint === undefined || isParameterTypeHint(candidate.hint))\n );\n}\n","import type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\n/** Optional routine identity metadata used by procedure-aware adapters and prepared-shape checks. */\nexport interface RoutineProcedure {\n readonly name: string;\n readonly parameterNames: readonly string[];\n}\n\nexport type RoutineSchema = StandardSchemaV1<any, any>;\n\n/**\n * Application mapping contracts for routine OUT values, result sets, and return values.\n * Each channel is independent; an OUT cursor is represented as a result set, not as scalar output.\n */\nexport interface RoutineContract<\n Output extends Readonly<Record<string, unknown>> = Readonly<Record<string, unknown>>,\n Sets extends readonly RoutineSchema[] = readonly RoutineSchema[],\n ReturnValue = unknown,\n> {\n readonly output?: StandardSchemaV1<any, Output>;\n readonly resultSets?: Sets;\n readonly returnValue?: StandardSchemaV1<any, ReturnValue>;\n readonly procedure?: RoutineProcedure;\n}\n\n/** One materialized routine result set, kept separate from scalar OUT and return-value channels. */\nexport interface RoutineResultSet<Row = unknown> {\n readonly rows: readonly Row[];\n}\n\nexport type RoutineResultSetTuple<Sets extends readonly unknown[]> = {\n readonly [K in keyof Sets]: RoutineResultSet<Sets[K]>;\n};\n\n/** Application-facing routine result with independent output, result-set, and return-value channels. */\nexport interface RoutineCallResult<\n Output extends Readonly<Record<string, unknown>> = Readonly<Record<string, unknown>>,\n Sets extends readonly unknown[] = readonly unknown[],\n ReturnValue = unknown,\n> {\n readonly output: Output;\n readonly resultSets: RoutineResultSetTuple<Sets>;\n readonly returnValue?: ReturnValue;\n}\n\nexport type RoutineSchemaOutput<Schema> = Schema extends StandardSchemaV1<any, infer Output> ? Output : never;\n\ntype RoutineRowsFromSchemas<Schemas extends readonly RoutineSchema[]> = {\n readonly [K in keyof Schemas]: RoutineSchemaOutput<Schemas[K]>;\n};\n\nexport type RoutineResultFromContract<Contract extends RoutineContract> = RoutineCallResult<\n Contract[\"output\"] extends RoutineSchema\n ? RoutineSchemaOutput<Contract[\"output\"]> extends Readonly<Record<string, unknown>>\n ? RoutineSchemaOutput<Contract[\"output\"]>\n : Readonly<Record<string, unknown>>\n : Readonly<Record<string, unknown>>,\n Contract[\"resultSets\"] extends infer Schemas extends readonly RoutineSchema[]\n ? RoutineRowsFromSchemas<Schemas>\n : readonly unknown[],\n Contract[\"returnValue\"] extends RoutineSchema ? RoutineSchemaOutput<Contract[\"returnValue\"]> : unknown\n> &\n (Contract extends { readonly returnValue: RoutineSchema }\n ? { readonly returnValue: RoutineSchemaOutput<Contract[\"returnValue\"]> }\n : {});\n\nexport type RoutineResultSource =\n | {\n readonly kind: \"out-cursor\";\n readonly name?: string;\n readonly parameterIndex?: number;\n }\n | {\n readonly kind: \"implicit\";\n readonly index: number;\n }\n | {\n readonly kind: \"emitted\";\n readonly index: number;\n };\n\n/** Driver result-set payload with provenance for OUT cursors and emitted/implicit sets. */\nexport interface DriverRoutineResultSet {\n readonly rows: readonly unknown[];\n readonly source: RoutineResultSource;\n}\n\n/** Fully materialized routine result; native cursors, requests, and LOB handles must not escape this boundary. */\nexport interface DriverRoutineResult {\n readonly output: Readonly<Record<string, unknown>>;\n readonly returnValue?: unknown;\n readonly resultSets: readonly DriverRoutineResultSet[];\n}\n\nexport type RoutineMappingLocation =\n | { readonly kind: \"output\" }\n | { readonly kind: \"return-value\" }\n | {\n readonly kind: \"result-set\";\n readonly resultSetIndex: number;\n readonly rowIndex: number;\n };\n\nexport type DriverCapabilityErrorCode =\n | \"BRAID_STREAM_UNSUPPORTED\"\n | \"BRAID_CALL_UNSUPPORTED\"\n | \"BRAID_CALL_RESULT_SETS\"\n | \"BRAID_CALL_CURSOR_TX_REQUIRED\"\n | \"BRAID_CALL_OUT_UNSUPPORTED\"\n | \"BRAID_CALL_RETURN_UNSUPPORTED\"\n | \"BRAID_CALL_CURSOR_UNSUPPORTED\"\n | \"BRAID_RESOURCE_CLEANUP\";\n\n/** Identifies which routine channel or row failed during Standard Schema mapping. */\nexport class RoutineMappingError extends Error {\n static readonly code = \"BRAID_CALL_MAP\" as const;\n readonly code = RoutineMappingError.code;\n readonly location: RoutineMappingLocation;\n\n constructor(message: string, location: RoutineMappingLocation, options?: { readonly cause?: unknown }) {\n super(message, options);\n this.name = \"RoutineMappingError\";\n this.location = Object.freeze(location);\n }\n}\n","import { SqlRenderError } from \"./errors.js\";\nimport { createParameterTypeHint, type ParameterTypeHint, type RoutineParameterDirection } from \"./parameter.js\";\nimport type { RoutineProcedure } from \"./routine.js\";\nimport type { QueryResultKind } from \"./template-ir.js\";\n\nfunction validHintNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && Number.isInteger(value) && value >= 0;\n}\n\n/**\n * A rendered parameter is always a value. Adapters MUST NOT interpret it as\n * raw SQL, an identifier, a nested query, a driver-specific fragment, or a\n * structural tagged-template command.\n */\nexport interface RenderedParameter {\n readonly value: unknown;\n readonly interpolation?: number;\n readonly hint?: ParameterTypeHint;\n readonly direction?: RoutineParameterDirection;\n readonly outputName?: string;\n}\n\n/**\n * Immutable logical statement before driver materialization.\n * `segments.length` is always `parameters.length + 1`; structural SQL lives in segments and parameters remain values.\n */\nexport interface RenderedStatement {\n readonly segments: readonly string[];\n readonly parameters: readonly RenderedParameter[];\n /**\n * Optional native tagged-template carrier. This preserves the original\n * TemplateStringsArray when a driver can bind values through its native tag.\n * It is metadata only; segments/parameters remain the logical statement.\n */\n readonly nativeTemplate?: TemplateStringsArray;\n readonly dialectId: string;\n readonly resultKind: QueryResultKind;\n readonly routineProcedure?: RoutineProcedure;\n readonly fingerprint?: string;\n readonly variantFingerprint?: string;\n}\n\n/** One logical command shape plus its value matrix; all rows must remain homogeneous. */\nexport interface RenderedBulk {\n readonly statement: RenderedStatement;\n readonly parameterSets: readonly (readonly unknown[])[];\n}\n\nexport function createRenderedBulk(bulk: RenderedBulk): RenderedBulk {\n if (bulk === null || typeof bulk !== \"object\" || Array.isArray(bulk)) {\n throw new TypeError(\"RenderedBulk must be an object.\");\n }\n const statement = createRenderedStatement(bulk.statement);\n if (!Array.isArray(bulk.parameterSets)) {\n throw new TypeError(\"RenderedBulk parameterSets must be an array.\");\n }\n const parameterCount = statement.parameters.length;\n const parameterSets = Object.freeze(\n bulk.parameterSets.map((values) => {\n if (!Array.isArray(values) || values.length !== parameterCount) {\n throw new TypeError(\"RenderedBulk parameter sets must match the rendered parameter count.\");\n }\n for (let index = 0; index < values.length; index += 1) {\n if (values[index] === undefined && statement.parameters[index]?.direction !== \"out\") {\n throw new SqlRenderError(\n \"BRAID_BIND_VALUE_UNSUPPORTED\",\n \"Undefined bind values are unsupported; use null for SQL NULL.\",\n );\n }\n }\n return Object.isFrozen(values) ? values : Object.freeze([...values]);\n }),\n );\n return Object.freeze({ statement, parameterSets });\n}\n\nconst knownRenderedStatements = new WeakSet<object>();\n\nfunction copyRenderedParameter(parameter: RenderedParameter): RenderedParameter {\n if (typeof parameter !== \"object\" || parameter === null || Array.isArray(parameter)) {\n throw new TypeError(\"RenderedStatement parameters must be parameter records.\");\n }\n const candidate = parameter as {\n readonly value?: unknown;\n readonly interpolation?: unknown;\n readonly hint?: unknown;\n readonly direction?: unknown;\n readonly outputName?: unknown;\n };\n if (!Object.hasOwn(candidate, \"value\")) throw new TypeError(\"RenderedStatement parameters must contain a value.\");\n const interpolation = candidate.interpolation;\n if (interpolation !== undefined && !validHintNumber(interpolation)) {\n throw new TypeError(\"RenderedStatement parameter interpolation must be a non-negative integer.\");\n }\n const hint = candidate.hint === undefined ? undefined : createParameterTypeHint(candidate.hint as ParameterTypeHint);\n const direction = candidate.direction;\n if (direction !== undefined && direction !== \"in\" && direction !== \"out\" && direction !== \"inout\") {\n throw new TypeError(\"RenderedStatement parameter direction is unsupported.\");\n }\n const outputName = candidate.outputName;\n if (outputName !== undefined && (typeof outputName !== \"string\" || !outputName.trim())) {\n throw new TypeError(\"RenderedStatement parameter outputName must be a non-empty string.\");\n }\n if ((direction === \"out\" || direction === \"inout\") && outputName === undefined) {\n throw new TypeError(\"RenderedStatement OUT and INOUT parameters require an outputName.\");\n }\n if (outputName !== undefined && (direction === undefined || direction === \"in\")) {\n throw new TypeError(\"RenderedStatement parameter outputName requires an OUT or INOUT direction.\");\n }\n if (candidate.value === undefined && direction !== \"out\") {\n throw new SqlRenderError(\n \"BRAID_BIND_VALUE_UNSUPPORTED\",\n \"Undefined bind values are unsupported; use null for SQL NULL.\",\n );\n }\n return Object.freeze({\n value: candidate.value,\n ...(interpolation === undefined ? {} : { interpolation }),\n ...(hint === undefined ? {} : { hint }),\n ...(direction === undefined ? {} : { direction }),\n ...(outputName === undefined ? {} : { outputName }),\n });\n}\n\nfunction copyRoutineProcedure(procedure: RoutineProcedure | undefined): RoutineProcedure | undefined {\n if (procedure === undefined) return undefined;\n if (\n typeof procedure !== \"object\" ||\n procedure === null ||\n typeof procedure.name !== \"string\" ||\n !procedure.name.trim()\n ) {\n throw new TypeError(\"Routine procedure name must be a non-empty string.\");\n }\n if (!Array.isArray(procedure.parameterNames))\n throw new TypeError(\"Routine procedure parameterNames must be an array.\");\n const parameterNames = procedure.parameterNames.map((name) => {\n if (typeof name !== \"string\" || !name.trim())\n throw new TypeError(\"Routine procedure parameterNames must contain non-empty strings.\");\n return name;\n });\n if (new Set(parameterNames).size !== parameterNames.length)\n throw new TypeError(\"Routine procedure parameterNames must be unique.\");\n return Object.freeze({ name: procedure.name, parameterNames: Object.freeze(parameterNames) });\n}\n\nfunction copyNativeTemplate(value: unknown, segments: readonly string[]): TemplateStringsArray {\n if (!Array.isArray(value) || value.length !== segments.length) {\n throw new TypeError(\"RenderedStatement nativeTemplate must have one string per segment boundary.\");\n }\n if (value.some((segment) => typeof segment !== \"string\")) {\n throw new TypeError(\"RenderedStatement nativeTemplate must contain cooked strings.\");\n }\n if (value.some((segment, index) => segment !== segments[index])) {\n throw new TypeError(\"RenderedStatement nativeTemplate cooked strings must match logical segments.\");\n }\n const raw = (value as { readonly raw?: unknown }).raw;\n if (!Array.isArray(raw) || raw.length !== value.length || raw.some((segment) => typeof segment !== \"string\")) {\n throw new TypeError(\"RenderedStatement nativeTemplate.raw must contain one raw string per segment boundary.\");\n }\n if (Object.isFrozen(value) && Object.isFrozen(raw)) return value as unknown as TemplateStringsArray;\n const cooked = [...value] as string[] & { raw: readonly string[] };\n const frozenRaw = Object.freeze([...raw]);\n Object.defineProperty(cooked, \"raw\", {\n configurable: false,\n enumerable: false,\n value: frozenRaw,\n writable: false,\n });\n return Object.freeze(cooked) as unknown as TemplateStringsArray;\n}\n\n/** Validate and freeze one logical statement without creating a second mutable SQL/value source of truth. */\n/** @throws {TypeError|SqlRenderError} For broken segment/parameter invariants or unsupported bind values. */\nexport function createRenderedStatement(statement: {\n readonly segments: readonly string[];\n readonly parameters: readonly RenderedParameter[];\n readonly nativeTemplate?: TemplateStringsArray;\n readonly resultKind: QueryResultKind;\n readonly routineProcedure?: RoutineProcedure;\n readonly dialectId: string;\n readonly fingerprint?: string;\n readonly variantFingerprint?: string;\n}): RenderedStatement {\n if (typeof statement !== \"object\" || statement === null) throw new TypeError(\"RenderedStatement must be an object.\");\n if (knownRenderedStatements.has(statement)) return statement as RenderedStatement;\n if (!Array.isArray(statement.segments)) {\n throw new TypeError(\"RenderedStatement segments must be an array of strings.\");\n }\n if (!Array.isArray(statement.parameters)) throw new TypeError(\"RenderedStatement parameters must be an array.\");\n if (statement.segments.length !== statement.parameters.length + 1) {\n throw new TypeError(\"RenderedStatement invariant violated: segments.length must equal parameters.length + 1.\");\n }\n if (statement.resultKind !== \"call\" && statement.routineProcedure !== undefined) {\n throw new TypeError(\"Routine procedure metadata is only valid for call statements.\");\n }\n if (typeof statement.dialectId !== \"string\" || !statement.dialectId)\n throw new TypeError(\"RenderedStatement dialectId must be a non-empty string.\");\n const segments = Object.freeze([...statement.segments]);\n if (segments.some((segment) => typeof segment !== \"string\"))\n throw new TypeError(\"RenderedStatement segments must be an array of strings.\");\n const nativeTemplate =\n statement.nativeTemplate === undefined ? undefined : copyNativeTemplate(statement.nativeTemplate, segments);\n const parameters = Object.freeze(Array.from(statement.parameters, copyRenderedParameter));\n if (parameters.some((parameter) => parameter.direction === \"inout\" && statement.resultKind !== \"call\")) {\n throw new TypeError(\"INOUT parameters are only valid for call statements.\");\n }\n if (\n parameters.some(\n (parameter) =>\n parameter.direction === \"out\" && statement.resultKind !== \"call\" && statement.resultKind !== \"rows\",\n )\n ) {\n throw new TypeError(\"OUT parameters are only valid for call and rows statements.\");\n }\n const outputNames = new Set<string>();\n for (const parameter of parameters) {\n if (parameter.outputName !== undefined) {\n if (outputNames.has(parameter.outputName))\n throw new TypeError(`Duplicate routine outputName: ${parameter.outputName}`);\n outputNames.add(parameter.outputName);\n }\n }\n const routineProcedure = copyRoutineProcedure(statement.routineProcedure);\n if (routineProcedure !== undefined && routineProcedure.parameterNames.length !== parameters.length) {\n throw new TypeError(\"Routine procedure parameterNames must match the rendered parameter count.\");\n }\n const rendered = Object.freeze({\n segments,\n parameters,\n ...(nativeTemplate === undefined ? {} : { nativeTemplate }),\n dialectId: statement.dialectId,\n resultKind: statement.resultKind,\n ...(routineProcedure === undefined ? {} : { routineProcedure }),\n ...(statement.fingerprint === undefined ? {} : { fingerprint: statement.fingerprint }),\n ...(statement.variantFingerprint === undefined ? {} : { variantFingerprint: statement.variantFingerprint }),\n });\n knownRenderedStatements.add(rendered);\n return rendered;\n}\n","import {\n createRenderedBulk,\n createRenderedStatement,\n type RenderedBulk,\n type RenderedParameter,\n type RenderedStatement,\n} from \"./statement.js\";\nimport { createParameterTypeHint, type ParameterTypeHint, type RoutineParameterDirection } from \"./parameter.js\";\n\nexport type ParameterTransportKind = \"native-value-template\" | \"text-positional\" | \"text-named\" | \"typed-request\";\n\nexport type RequestedReuse = \"auto\" | \"simple\" | \"reuse\";\nexport type EffectiveReuse = \"simple\" | \"reuse\";\nexport type ReuseOwner = \"sqlbraid\" | \"driver\" | \"server\";\n\n/** Inputs to pure binding description. Placeholder syntax and prepared reuse remain adapter-owned. */\nexport interface StatementBindingContext {\n readonly dialectId: string;\n readonly requestedReuse: RequestedReuse;\n readonly preparedName?: string;\n readonly transactionScoped?: boolean;\n}\n\nexport interface BindingDescription {\n readonly index: number;\n readonly name?: string;\n readonly interpolation?: number;\n readonly hint?: ParameterTypeHint;\n readonly direction?: RoutineParameterDirection;\n readonly outputName?: string;\n}\n\n/** Diagnostic-only literalization controls; the result must never be sent to a database. */\nexport interface LiteralizeOptions {\n readonly values?: \"inline\" | \"redacted\";\n readonly maxValueLength?: number;\n readonly binary?: \"summary\" | \"full\";\n readonly redact?: (parameter: RenderedParameter, index: number) => boolean;\n}\n\n/** Diagnostic SQL reconstruction with explicit redaction/truncation evidence. */\nexport interface LiteralizedSqlResult {\n readonly text: string;\n /**\n * True when no diagnostic parameter representation was truncated. Redaction,\n * unsupported literal markers, and divergence from wire SQL do not make it\n * incomplete.\n */\n readonly complete: boolean;\n readonly redactedParameters: number;\n readonly truncatedParameters: number;\n}\n\n/**\n * Immutable transport description derived from one logical statement.\n * `literalizedSql()` reconstructs diagnostics from segments and values; it is never execution input.\n */\nexport interface StatementBindingDescription {\n readonly adapterId: string;\n readonly dialectId: string;\n readonly transport: ParameterTransportKind;\n readonly parameterizedSql?: string;\n readonly bindings: readonly BindingDescription[];\n readonly reuse: {\n readonly requested: RequestedReuse;\n readonly effective: EffectiveReuse;\n readonly owner: ReuseOwner;\n readonly capacity?: number;\n };\n /** Diagnostic reconstruction only; never use this text as execution input. */\n readonly literalizedSql: (options?: LiteralizeOptions) => LiteralizedSqlResult;\n}\n\n/**\n * Driver-owned binding policy. Implementations choose transport, placeholders, type encoding, and reuse ownership.\n * `describe` must be pure and safe to run before connection acquisition.\n */\nexport interface StatementBindingAdapter {\n readonly id: string;\n describe(statement: RenderedStatement, context: StatementBindingContext): StatementBindingDescription;\n describeBulk?(bulk: RenderedBulk, context: StatementBindingContext): BulkBindingDescription;\n}\n\nexport interface StatementBindingDescriptionOptions {\n readonly adapterId: string;\n readonly transport: ParameterTransportKind;\n readonly placeholder?: (index: number) => string;\n readonly reuse: {\n readonly effective: EffectiveReuse;\n readonly owner: ReuseOwner;\n readonly capacity?: number;\n };\n readonly formatLiteral?: (\n parameter: RenderedParameter,\n index: number,\n options: LiteralizeOptions,\n ) => string | undefined;\n}\n\n/** Binding metadata for a homogeneous bulk operation; values are fetched by item index. */\nexport interface BulkBindingDescription {\n readonly adapterId: string;\n readonly dialectId: string;\n readonly transport: ParameterTransportKind;\n readonly parameterizedSql?: string;\n readonly bindings: readonly BindingDescription[];\n readonly itemCount: number;\n valuesAt(index: number): readonly unknown[];\n literalizedSql(index: number, options?: LiteralizeOptions): LiteralizedSqlResult;\n}\n\n/** Materialize placeholder text as a derived view; this helper does not own reuse or driver transport policy. */\nexport function parameterizedSql(statement: RenderedStatement, placeholder: (index: number) => string): string {\n const parts: string[] = [statement.segments[0] ?? \"\"];\n for (let index = 0; index < statement.parameters.length; index += 1) {\n parts.push(placeholder(index + 1), statement.segments[index + 1] ?? \"\");\n }\n return parts.join(\"\");\n}\n\nfunction genericLiteral(parameter: RenderedParameter, dialectId: string, binary: \"summary\" | \"full\"): string {\n const value = parameter.value;\n if (value === null) return \"NULL\";\n if (value === undefined) return \"[undefined]\";\n if (typeof value === \"string\") {\n // Session SQL modes and character sets are unknown; this is not executable SQL.\n if (/^(?:mysql|mariadb)/i.test(dialectId)) return `[string ${JSON.stringify(value)}]`;\n return `'${value.replaceAll(\"'\", \"''\")}'`;\n }\n if (typeof value === \"boolean\") {\n if (/^(?:mysql|sqlite)/i.test(dialectId) || /^(?:oracle|mssql|sqlserver)/i.test(dialectId))\n return value ? \"1\" : \"0\";\n if (/^(?:postgres|postgresql|cockroach|redshift)/i.test(dialectId)) return value ? \"TRUE\" : \"FALSE\";\n return `[boolean ${value ? \"true\" : \"false\"}]`;\n }\n if (typeof value === \"number\") return Number.isFinite(value) ? String(value) : `[unsupported ${String(value)}]`;\n if (typeof value === \"bigint\") return value.toString();\n if (value instanceof Date) {\n try {\n const timestamp = Date.prototype.getTime.call(value);\n return Number.isNaN(timestamp) ? \"[unsupported date]\" : `[date ${Date.prototype.toISOString.call(value)}]`;\n } catch {\n return \"[unsupported date]\";\n }\n }\n if (value instanceof Uint8Array) {\n try {\n if (binary === \"full\") {\n let hex = \"\";\n for (const byte of value) hex += byte.toString(16).padStart(2, \"0\");\n return `X'${hex}'`;\n }\n return `[binary ${value.byteLength} bytes]`;\n } catch {\n return \"[unsupported binary]\";\n }\n }\n if (typeof value === \"object\") return \"[unsupported object]\";\n return `[unsupported ${typeof value}]`;\n}\n\n/** Escape control, bidirectional and unpaired surrogate code units so that diagnostic text cannot drive a terminal or forge lines. */\nfunction escapeControls(text: string): string {\n let result = \"\";\n let start = 0;\n for (let index = 0; index < text.length; index += 1) {\n const code = text.charCodeAt(index);\n let escape = code < 0x20 || (code >= 0x7f && code <= 0x9f) || code === 0x2028 || code === 0x2029;\n escape ||= (code >= 0x202a && code <= 0x202e) || (code >= 0x2066 && code <= 0x2069);\n if (code >= 0xd800 && code <= 0xdbff) {\n const next = text.charCodeAt(index + 1);\n if (next >= 0xdc00 && next <= 0xdfff) {\n index += 1;\n continue;\n }\n escape = true;\n } else if (code >= 0xdc00 && code <= 0xdfff) escape = true;\n if (!escape) continue;\n result += `${text.slice(start, index)}\\\\u${code.toString(16).toUpperCase().padStart(4, \"0\")}`;\n start = index + 1;\n }\n return start === 0 ? text : result + text.slice(start);\n}\n\n/** Truncate without splitting a surrogate pair. */\nfunction truncate(text: string, maxLength: number): string {\n const code = text.charCodeAt(maxLength - 1);\n return text.slice(0, code >= 0xd800 && code <= 0xdbff ? maxLength - 1 : maxLength);\n}\n\nfunction literalized(\n statement: RenderedStatement,\n dialectId: string,\n formatLiteral: StatementBindingDescriptionOptions[\"formatLiteral\"],\n options: LiteralizeOptions | undefined,\n): LiteralizedSqlResult {\n const resolved: LiteralizeOptions = options ?? {};\n const valuesMode = resolved.values ?? \"redacted\";\n const maxLength = resolved.maxValueLength;\n if (valuesMode !== \"inline\" && valuesMode !== \"redacted\")\n throw new TypeError('literalizedSql values must be \"inline\" or \"redacted\".');\n if (maxLength !== undefined && (!Number.isSafeInteger(maxLength) || maxLength < 0)) {\n throw new TypeError(\"literalizedSql maxValueLength must be a non-negative integer.\");\n }\n const binary = resolved.binary ?? \"summary\";\n if (binary !== \"summary\" && binary !== \"full\")\n throw new TypeError('literalizedSql binary must be \"summary\" or \"full\".');\n if (resolved.redact !== undefined && typeof resolved.redact !== \"function\")\n throw new TypeError(\"literalizedSql redact must be a function.\");\n const parts: string[] = [statement.segments[0] ?? \"\"];\n let redactedParameters = 0;\n let truncatedParameters = 0;\n for (let index = 0; index < statement.parameters.length; index += 1) {\n const parameter = statement.parameters[index];\n const redact = valuesMode === \"redacted\" || resolved.redact?.(parameter, index) === true;\n let valueText: string;\n if (redact) {\n valueText = \"[REDACTED]\";\n redactedParameters += 1;\n } else {\n valueText = formatLiteral?.(parameter, index, resolved) ?? genericLiteral(parameter, dialectId, binary);\n }\n valueText = escapeControls(valueText);\n if (maxLength !== undefined && valueText.length > maxLength) {\n valueText = truncate(valueText, maxLength);\n truncatedParameters += 1;\n }\n parts.push(valueText, statement.segments[index + 1] ?? \"\");\n }\n return Object.freeze({\n text: parts.join(\"\"),\n complete: truncatedParameters === 0,\n redactedParameters,\n truncatedParameters,\n });\n}\n\n/** Build an immutable binding description before I/O, including adapter reuse policy and diagnostic literalization. */\nexport function createStatementBindingDescription(\n statement: RenderedStatement,\n context: StatementBindingContext,\n options: StatementBindingDescriptionOptions,\n): StatementBindingDescription {\n const logical = createRenderedStatement(statement);\n const adapterId = options.adapterId;\n const transport = options.transport;\n const placeholder = options.placeholder;\n const formatLiteral = options.formatLiteral;\n const effective = options.reuse.effective;\n const owner = options.reuse.owner;\n const capacity = options.reuse.capacity;\n const dialectId = context.dialectId;\n const requestedReuse = context.requestedReuse;\n if (logical.dialectId !== dialectId) {\n throw new TypeError(\n `BRAID_DIALECT: statement binding dialect ${dialectId} does not match rendered statement dialect ${logical.dialectId}.`,\n );\n }\n if (typeof adapterId !== \"string\" || !adapterId)\n throw new TypeError(\"Statement binding adapterId must be a non-empty string.\");\n if (typeof dialectId !== \"string\" || !dialectId)\n throw new TypeError(\"Statement binding dialectId must be a non-empty string.\");\n if (![\"native-value-template\", \"text-positional\", \"text-named\", \"typed-request\"].includes(transport)) {\n throw new TypeError(\"Statement binding transport is unsupported.\");\n }\n if (transport !== \"native-value-template\" && placeholder === undefined) {\n throw new TypeError(\"Text and typed statement transports require a placeholder function.\");\n }\n if (![\"auto\", \"simple\", \"reuse\"].includes(requestedReuse))\n throw new TypeError(\"Statement binding requestedReuse is unsupported.\");\n if (![\"simple\", \"reuse\"].includes(effective) || ![\"sqlbraid\", \"driver\", \"server\"].includes(owner)) {\n throw new TypeError(\"Statement binding reuse policy is unsupported.\");\n }\n if (capacity !== undefined && (!Number.isSafeInteger(capacity) || capacity < 0)) {\n throw new TypeError(\"Statement binding reuse capacity must be a non-negative safe integer.\");\n }\n if (placeholder !== undefined && typeof placeholder !== \"function\") {\n throw new TypeError(\"Statement binding placeholder must be a function.\");\n }\n const bindings = Object.freeze(\n logical.parameters.map((parameter, offset) =>\n Object.freeze({\n index: offset + 1,\n ...(parameter.outputName === undefined ? {} : { name: parameter.outputName, outputName: parameter.outputName }),\n ...(parameter.interpolation === undefined ? {} : { interpolation: parameter.interpolation }),\n ...(parameter.hint === undefined ? {} : { hint: createParameterTypeHint(parameter.hint) }),\n ...(parameter.direction === undefined ? {} : { direction: parameter.direction }),\n }),\n ),\n );\n const reuse = Object.freeze({\n requested: requestedReuse,\n effective,\n owner,\n ...(capacity === undefined ? {} : { capacity }),\n });\n let parameterizedReady = false;\n let parameterized: string | undefined;\n const literalCache = new Map<string, LiteralizedSqlResult>();\n let defaultLiteralized: LiteralizedSqlResult | undefined;\n const description = {\n adapterId,\n dialectId,\n transport,\n bindings,\n reuse,\n literalizedSql: (literalOptions?: LiteralizeOptions): LiteralizedSqlResult => {\n if (literalOptions === undefined) {\n if (defaultLiteralized === undefined)\n defaultLiteralized = literalized(logical, dialectId, formatLiteral, undefined);\n return defaultLiteralized;\n }\n if (typeof literalOptions !== \"object\" || literalOptions === null)\n throw new TypeError(\"literalizedSql options must be an object.\");\n const values = literalOptions.values;\n const binary = literalOptions.binary;\n const maxValueLength = literalOptions.maxValueLength;\n const redact = literalOptions.redact;\n const snapshot = Object.freeze({\n ...(values === undefined ? {} : { values }),\n ...(binary === undefined ? {} : { binary }),\n ...(maxValueLength === undefined ? {} : { maxValueLength }),\n ...(redact === undefined ? {} : { redact }),\n });\n const cacheKey =\n redact === undefined ? `${values ?? \"\"}\\u0000${binary ?? \"\"}\\u0000${maxValueLength ?? \"\"}` : undefined;\n if (cacheKey !== undefined) {\n const cached = literalCache.get(cacheKey);\n if (cached) return cached;\n }\n const result = literalized(logical, dialectId, formatLiteral, snapshot);\n if (cacheKey !== undefined) literalCache.set(cacheKey, result);\n return result;\n },\n } as StatementBindingDescription;\n if (placeholder !== undefined) {\n Object.defineProperty(description, \"parameterizedSql\", {\n enumerable: true,\n configurable: false,\n get: () => {\n if (!parameterizedReady) {\n parameterized = parameterizedSql(logical, placeholder);\n parameterizedReady = true;\n }\n return parameterized;\n },\n });\n }\n return Object.freeze(description);\n}\n\n/**\n * Build one binding description for a homogeneous bulk statement without cloning application-owned values.\n * Statement metadata is shared by every parameter set; values and diagnostics are addressed by item index.\n */\nexport function createBulkBindingDescription(\n bulk: RenderedBulk,\n context: StatementBindingContext,\n options: StatementBindingDescriptionOptions,\n): BulkBindingDescription {\n const logical = createRenderedBulk(bulk);\n const statementBinding = createStatementBindingDescription(logical.statement, context, options);\n const parameterSets = logical.parameterSets;\n const itemCount = parameterSets.length;\n const valuesAt = (index: number): readonly unknown[] => {\n if (!Number.isSafeInteger(index) || index < 0 || index >= itemCount) {\n throw new RangeError(`Bulk item index ${String(index)} is outside [0, ${itemCount}).`);\n }\n return parameterSets[index]!;\n };\n const literalizedSqlFor = (index: number, literalOptions?: LiteralizeOptions): LiteralizedSqlResult => {\n const values = valuesAt(index);\n const optionsSnapshot =\n literalOptions === undefined\n ? undefined\n : {\n ...(literalOptions.values === undefined ? {} : { values: literalOptions.values }),\n ...(literalOptions.binary === undefined ? {} : { binary: literalOptions.binary }),\n ...(literalOptions.maxValueLength === undefined ? {} : { maxValueLength: literalOptions.maxValueLength }),\n ...(literalOptions.redact === undefined ? {} : { redact: literalOptions.redact }),\n };\n const statement = {\n ...logical.statement,\n // oxlint-disable-next-line oxc/no-map-spread -- Each bulk item needs its own values without mutating shared readonly parameters.\n parameters: logical.statement.parameters.map((parameter, parameterIndex) => ({\n ...parameter,\n value: values[parameterIndex],\n })),\n };\n const result = createStatementBindingDescription(statement, context, options).literalizedSql(optionsSnapshot);\n return result;\n };\n const description = {\n adapterId: statementBinding.adapterId,\n dialectId: statementBinding.dialectId,\n transport: statementBinding.transport,\n bindings: statementBinding.bindings,\n itemCount,\n valuesAt,\n literalizedSql: literalizedSqlFor,\n } as BulkBindingDescription;\n if (\"parameterizedSql\" in statementBinding) {\n Object.defineProperty(description, \"parameterizedSql\", {\n enumerable: true,\n configurable: false,\n get: () => statementBinding.parameterizedSql,\n });\n }\n return Object.freeze(description);\n}\n","export const SQL_FRAGMENT = Symbol.for(\"sqlbraid.fragment\");\n\n/** Half-open source range in the cooked template text, used for diagnostics and source mapping. */\nexport interface SourceRange {\n readonly start: number;\n readonly end: number;\n}\n\n/** Safety bounds applied while parsing and rendering dynamic SQL. */\nexport interface RenderLimits {\n readonly maxSqlBytes?: number;\n readonly maxBindCount?: number;\n readonly maxStructuralItems?: number;\n readonly maxNestingDepth?: number;\n}\n\n/** Declared logical result channel; runtime checks the driver's actual result kind against it. */\nexport type QueryResultKind = \"rows\" | \"command\" | \"call\" | \"unknown\";\n\nexport interface TextNode {\n readonly kind: \"text\";\n readonly text: string;\n readonly range: SourceRange;\n}\n\nexport interface BindNode {\n readonly kind: \"bind\";\n readonly interpolation: number;\n readonly range: SourceRange;\n}\n\nexport interface FragmentNode {\n readonly kind: \"fragment\";\n readonly fragment: SqlFragment;\n readonly range: SourceRange;\n}\n\nexport interface IdentifierNode {\n readonly kind: \"identifier\";\n readonly value: string | readonly string[];\n readonly range: SourceRange;\n}\n\nexport interface RawNode {\n readonly kind: \"raw\";\n readonly text: string;\n readonly range: SourceRange;\n}\n\nexport interface ListNode {\n readonly kind: \"list\";\n readonly values: readonly unknown[];\n readonly range: SourceRange;\n}\n\nexport interface IfNode {\n readonly kind: \"if\";\n readonly condition: number;\n readonly children: readonly TemplateNode[];\n readonly range: SourceRange;\n}\n\nexport interface ChooseWhen {\n readonly condition: number;\n readonly children: readonly TemplateNode[];\n readonly range: SourceRange;\n}\n\nexport interface ChooseNode {\n readonly kind: \"choose\";\n readonly whens: readonly ChooseWhen[];\n readonly otherwise?: readonly TemplateNode[];\n readonly range: SourceRange;\n}\n\nexport interface TrimAttributes {\n readonly prefix: string;\n readonly prefixOverrides: readonly string[];\n readonly suffix: string;\n readonly suffixOverrides: readonly string[];\n}\n\nexport interface TrimNode {\n readonly kind: \"trim\";\n readonly attributes: TrimAttributes;\n readonly children: readonly TemplateNode[];\n readonly range: SourceRange;\n}\n\nexport type TemplateNode =\n | TextNode\n | BindNode\n | FragmentNode\n | IdentifierNode\n | RawNode\n | ListNode\n | IfNode\n | ChooseNode\n | TrimNode;\n\n/** Frozen template intermediate representation with source ranges and optional raw-text parallel nodes. */\nexport interface TemplateIr {\n readonly version: 1;\n readonly nodes: readonly TemplateNode[];\n readonly sourceLength: number;\n /**\n * Optional parallel node tree preserving raw JavaScript template text for\n * native tagged-template transports. The logical node tree remains cooked.\n */\n readonly rawNodes?: readonly TemplateNode[];\n}\n\n/** Explicit structural SQL fragment. Ordinary interpolations are values; fragments opt into SQL structure. */\nexport interface SqlFragment {\n readonly [SQL_FRAGMENT]: true;\n readonly ir: TemplateIr;\n readonly values: readonly unknown[];\n readonly dialectId: string;\n}\n","/** Data-only authoring identity shared by compiler, tooling, and editor consumers. */\nexport type AuthoringModuleCatalogEntry = {\n readonly moduleSpecifier: string;\n readonly dialectId?: \"postgres\" | \"mysql\" | \"mariadb\" | \"sqlite\" | \"oracle\" | \"mssql\";\n readonly helperFamily: \"template\" | \"facade\";\n};\n\nexport const AUTHORING_MODULE_CATALOG: readonly AuthoringModuleCatalogEntry[] = Object.freeze(\n (\n [\n { moduleSpecifier: \"@sqlbraid/template\", helperFamily: \"template\" },\n { moduleSpecifier: \"@sqlbraid/postgres\", dialectId: \"postgres\", helperFamily: \"template\" },\n { moduleSpecifier: \"@sqlbraid/mysql\", dialectId: \"mysql\", helperFamily: \"template\" },\n { moduleSpecifier: \"@sqlbraid/mariadb\", dialectId: \"mariadb\", helperFamily: \"template\" },\n { moduleSpecifier: \"@sqlbraid/sqlite\", dialectId: \"sqlite\", helperFamily: \"template\" },\n\n { moduleSpecifier: \"@sqlbraid/oracle\", dialectId: \"oracle\", helperFamily: \"template\" },\n { moduleSpecifier: \"@sqlbraid/mssql\", dialectId: \"mssql\", helperFamily: \"template\" },\n { moduleSpecifier: \"sqlbraid/pg\", dialectId: \"postgres\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/mysql2\", dialectId: \"mysql\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/mariadb\", dialectId: \"mariadb\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/node-sqlite\", dialectId: \"sqlite\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/better-sqlite3\", dialectId: \"sqlite\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/libsql\", dialectId: \"sqlite\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/sqlite-wasm\", dialectId: \"sqlite\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/d1\", dialectId: \"sqlite\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/oracledb\", dialectId: \"oracle\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/tedious\", dialectId: \"mssql\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/postgres\", dialectId: \"postgres\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/mysql\", dialectId: \"mysql\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/sqlite\", dialectId: \"sqlite\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/oracle\", dialectId: \"oracle\", helperFamily: \"facade\" },\n { moduleSpecifier: \"sqlbraid/mssql\", dialectId: \"mssql\", helperFamily: \"facade\" },\n ] as const\n ).map((entry) => Object.freeze(entry)),\n);\n","/**\n * The machine-readable capability vocabulary shared by adapters, support data,\n * and documentation. A capability's family describes what its status proves;\n * representation and metadata evidence are not execution support aliases.\n */\nexport type CapabilityFamily = \"support\" | \"representation\" | \"metadata\";\n\nexport interface WellKnownCapability {\n readonly id: string;\n readonly family: CapabilityFamily;\n}\n\nconst definitions = [\n { id: \"sql.native-transparency\", family: \"support\" },\n { id: \"sql.generated-structure\", family: \"support\" },\n { id: \"result.rows\", family: \"support\" },\n { id: \"result.command\", family: \"support\" },\n { id: \"result.multiple-sets\", family: \"support\" },\n { id: \"result.standard-schema\", family: \"support\" },\n { id: \"numeric.exact-integer\", family: \"representation\" },\n { id: \"numeric.exact-decimal\", family: \"representation\" },\n { id: \"numeric.approximate-float\", family: \"representation\" },\n { id: \"numeric.approximate-special\", family: \"representation\" },\n { id: \"numeric.bind-exact\", family: \"representation\" },\n { id: \"numeric.aggregate\", family: \"representation\" },\n { id: \"numeric.command-metadata\", family: \"representation\" },\n { id: \"numeric.special-values\", family: \"representation\" },\n { id: \"numeric.scale-greater-than-precision\", family: \"representation\" },\n { id: \"numeric.negative-scale\", family: \"representation\" },\n { id: \"data.json-parsed\", family: \"representation\" },\n { id: \"data.json-lossless-text\", family: \"representation\" },\n { id: \"data.sql-variant\", family: \"representation\" },\n { id: \"data.oracle-object\", family: \"representation\" },\n { id: \"data.oracle-collection\", family: \"representation\" },\n { id: \"data.vector\", family: \"representation\" },\n { id: \"data.binary\", family: \"representation\" },\n { id: \"data.uuid\", family: \"representation\" },\n { id: \"data.temporal-native\", family: \"representation\" },\n { id: \"data.temporal-lossless\", family: \"representation\" },\n { id: \"data.timezone\", family: \"representation\" },\n { id: \"metadata.command-safe\", family: \"metadata\" },\n { id: \"dml.insert-returning\", family: \"support\" },\n { id: \"dml.update-returning\", family: \"support\" },\n { id: \"dml.delete-returning\", family: \"support\" },\n { id: \"dml.merge-returning\", family: \"support\" },\n { id: \"dml.upsert-returning\", family: \"support\" },\n { id: \"session.pinned\", family: \"support\" },\n { id: \"statement.prepare\", family: \"support\" },\n { id: \"statement.cancel\", family: \"support\" },\n { id: \"statement.stream\", family: \"support\" },\n { id: \"statement.bulk\", family: \"support\" },\n { id: \"execution.bulk-fidelity\", family: \"support\" },\n { id: \"transaction\", family: \"support\" },\n { id: \"transaction.savepoint\", family: \"support\" },\n { id: \"transaction.read-only\", family: \"support\" },\n { id: \"transaction.isolation.read-uncommitted\", family: \"support\" },\n { id: \"transaction.isolation.read-committed\", family: \"support\" },\n { id: \"transaction.isolation.repeatable-read\", family: \"support\" },\n { id: \"transaction.isolation.serializable\", family: \"support\" },\n { id: \"routine.call\", family: \"support\" },\n { id: \"routine.out\", family: \"support\" },\n { id: \"routine.inout\", family: \"support\" },\n { id: \"routine.result-sets\", family: \"support\" },\n { id: \"routine.out-cursor\", family: \"support\" },\n { id: \"routine.return-value\", family: \"support\" },\n { id: \"metadata.identity\", family: \"metadata\" },\n { id: \"metadata.generated\", family: \"metadata\" },\n { id: \"metadata.routines\", family: \"metadata\" },\n { id: \"metadata.types\", family: \"metadata\" },\n] as const satisfies readonly WellKnownCapability[];\n\nexport const WELL_KNOWN_CAPABILITIES: readonly WellKnownCapability[] = Object.freeze(\n definitions.map((entry) => Object.freeze(entry)),\n);\n\nexport type WellKnownCapabilityId = (typeof definitions)[number][\"id\"];\n\nexport const WELL_KNOWN_CAPABILITY_IDS: readonly WellKnownCapabilityId[] = Object.freeze(\n definitions.map(({ id }) => id),\n);\n\nconst wellKnownCapabilityIds = new Set<string>(WELL_KNOWN_CAPABILITY_IDS);\n\nexport function isWellKnownCapabilityId(value: string): value is WellKnownCapabilityId {\n return wellKnownCapabilityIds.has(value);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["validHintNumber"],"sources":["../src/errors.ts","../src/numeric.ts","../src/parameter.ts","../src/routine.ts","../src/statement.ts","../src/binding.ts","../src/template-ir.ts","../src/authoring-modules.ts","../src/capabilities.ts"],"sourcesContent":["/** Thrown when a driver value cannot be represented without losing database information. */\nexport class ResultExactnessError extends Error {\n static readonly code = \"BRAID_RESULT_EXACTNESS\" as const;\n readonly code = ResultExactnessError.code;\n\n constructor(message = \"Result value does not have an exact representation.\") {\n super(message);\n this.name = \"ResultExactnessError\";\n }\n}\n\nexport type PublicErrorCategory = \"runtime\" | \"adapter\" | \"compiler\";\n\n/** One deliberately public SQLBraid error code; an arbitrary `BRAID_` message is not automatically public. */\nexport interface PublicErrorDefinition {\n readonly code: string;\n readonly category: PublicErrorCategory;\n readonly owner: string;\n /**\n * UnsupportedFeatureError only: features for which this code is a public\n * contract. Other public errors intentionally omit this metadata.\n */\n readonly features?: readonly string[];\n}\n\n/**\n * The intentionally small compatibility boundary for SQLBraid-owned errors.\n *\n * Keep this registry explicit. In particular, a BRAID_ token in a driver\n * message or an internal compiler fallback is not public merely because it\n * happens to use the project prefix.\n */\nexport const PUBLIC_ERROR_DEFINITIONS: readonly PublicErrorDefinition[] = Object.freeze([\n { code: \"BRAID_RESULT_EXACTNESS\", category: \"runtime\", owner: \"ResultExactnessError\" },\n { code: \"BRAID_CALL_MAP\", category: \"runtime\", owner: \"RoutineMappingError\" },\n { code: \"BRAID_RESULT_KIND\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseResultKindError\" },\n { code: \"BRAID_RESULT_VALIDATION\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseResultValidationError\" },\n { code: \"BRAID_BATCH_ABORTED\", category: \"runtime\", owner: \"runtime batch lifecycle/synthetic observer error\" },\n { code: \"BRAID_TX_SCOPE\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_TX_CLOSED\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_SESSION_SCOPE\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_SESSION_CLOSED\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_CONNECTION_POISONED\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_STREAM_SCOPE\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_REENTRY\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_TX_OPTIONS_NESTED\", category: \"runtime\", owner: \"@sqlbraid/runtime:DatabaseScopeError\" },\n { code: \"BRAID_MIGRATE_SOURCE\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationError\" },\n { code: \"BRAID_MIGRATE_UNINITIALIZED\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationStartupError\" },\n { code: \"BRAID_MIGRATE_PENDING\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationStartupError\" },\n { code: \"BRAID_MIGRATE_AHEAD\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationStartupError\" },\n { code: \"BRAID_MIGRATE_CHECKSUM\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationStartupError\" },\n { code: \"BRAID_MIGRATE_ORDER\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationError\" },\n { code: \"BRAID_MIGRATE_DIRTY\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationError\" },\n { code: \"BRAID_MIGRATE_BUSY\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationError\" },\n { code: \"BRAID_MIGRATE_SCHEMA_DRIFT\", category: \"runtime\", owner: \"@sqlbraid/migrate:MigrationStartupError\" },\n { code: \"BRAID_CALL_UNSUPPORTED\", category: \"adapter\", owner: \"UnsupportedFeatureError\", features: [\"routine.call\"] },\n {\n code: \"BRAID_RESULT_SETS_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.result-sets\"],\n },\n {\n code: \"BRAID_STREAM_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"statement.stream\"],\n },\n {\n code: \"BRAID_CANCEL_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"statement.cancel\"],\n },\n {\n code: \"BRAID_SESSION_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"session.pinned\"],\n },\n {\n code: \"BRAID_TX_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"transaction\", \"transaction.savepoint\"],\n },\n { code: \"BRAID_TX_OPTIONS_INVALID\", category: \"runtime\", owner: \"TypeError with code\" },\n {\n code: \"BRAID_TX_OPTION_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\n \"transaction.read-only\",\n \"transaction.isolation.read-uncommitted\",\n \"transaction.isolation.read-committed\",\n \"transaction.isolation.repeatable-read\",\n \"transaction.isolation.serializable\",\n ],\n },\n {\n code: \"BRAID_CALL_RESULT_SETS\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.result-sets\"],\n },\n {\n code: \"BRAID_CALL_CURSOR_TX_REQUIRED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.out-cursor\"],\n },\n {\n code: \"BRAID_CALL_OUT_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.out\", \"routine.inout\"],\n },\n {\n code: \"BRAID_CALL_RETURN_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.return-value\"],\n },\n { code: \"BRAID_CALL_PROCEDURE_INVALID\", category: \"adapter\", owner: \"AdapterError\" },\n {\n code: \"BRAID_CALL_CURSOR_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.out-cursor\"],\n },\n {\n code: \"BRAID_RESOURCE_CLEANUP\",\n category: \"adapter\",\n owner: \"adapter cleanup error with code\",\n features: [\"resource.cleanup\", \"resource.discard\"],\n },\n {\n code: \"BRAID_BIND_HINT_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"statement.bind-hint\"],\n },\n { code: \"BRAID_BIND_VALUE_UNSUPPORTED\", category: \"adapter\", owner: \"AdapterError\" },\n {\n code: \"BRAID_INTEGER_MODE_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"result.exact-integer\"],\n },\n {\n code: \"BRAID_CALL_LOB_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"routine.out\"],\n },\n {\n code: \"BRAID_BULK_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"statement.bulk\"],\n },\n {\n code: \"BRAID_PREPARE_UNSUPPORTED\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"statement.prepare\"],\n },\n { code: \"BRAID_DIALECT_MISMATCH\", category: \"adapter\", owner: \"UnsupportedFeatureError\", features: [\"dialect\"] },\n {\n code: \"BRAID_RESULT_KIND_AMBIGUOUS\",\n category: \"adapter\",\n owner: \"UnsupportedFeatureError\",\n features: [\"result.rows\", \"result.command\"],\n },\n { code: \"BRAID_PREPARED_NAME\", category: \"runtime\", owner: \"prepared query validation\" },\n { code: \"BRAID_PREPARED_SHAPE\", category: \"runtime\", owner: \"prepared query validation\" },\n { code: \"BRAID_BIND_TYPE_REQUIRED\", category: \"adapter\", owner: \"AdapterError\" },\n { code: \"BRAID_EMPTY_LIST\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_EMPTY_SET\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_DIALECT\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_ASYNC_CONTEXT\", category: \"compiler\", owner: \"compiler diagnostic\" },\n { code: \"BRAID_DIRECTIVE_UNTERMINATED\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_DIRECTIVE\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_CONDITION\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_ATTRIBUTES\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_STRUCTURE\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_HOLE_CONTEXT\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_SQL_LEX\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_DEPTH\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_STRUCTURE_LIMIT\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_SQL_LIMIT\", category: \"runtime\", owner: \"SqlRenderError\" },\n { code: \"BRAID_BIND_LIMIT\", category: \"runtime\", owner: \"SqlRenderError\" },\n] as const);\n\n/** Public adapter capability failure. Unsupported features reject explicitly rather than being buffered or simulated. */\nexport class UnsupportedFeatureError extends Error {\n constructor(\n readonly feature: string,\n readonly code: `BRAID_${string}`,\n message: string,\n options?: ErrorOptions,\n ) {\n super(`${code}: ${message}`, options);\n this.name = \"UnsupportedFeatureError\";\n }\n}\n\n/** Return true only for a registered, semantically valid feature/code pair. */\nexport function isPublicUnsupportedFeatureError(error: unknown): error is UnsupportedFeatureError {\n if (!(error instanceof UnsupportedFeatureError)) return false;\n const definition = PUBLIC_ERROR_DEFINITIONS.find(\n (candidate) => candidate.owner === \"UnsupportedFeatureError\" && candidate.code === error.code,\n );\n return definition?.features?.includes(error.feature) === true;\n}\n\n/** An adapter-owned input/transport failure that retains TypeError semantics. */\nexport class AdapterError extends TypeError {\n constructor(\n readonly code: `BRAID_${string}`,\n message: string,\n options?: ErrorOptions,\n ) {\n super(`${code}: ${message}`, options);\n this.name = \"AdapterError\";\n }\n}\n\n/** Rendering/authoring failure with a stable diagnostic code, raised before driver execution. */\nexport class SqlRenderError extends Error {\n readonly code: string;\n\n constructor(code: string, message: string) {\n super(message);\n this.name = \"SqlRenderError\";\n this.code = code;\n }\n}\n","import { ResultExactnessError } from \"./errors.js\";\n\nexport type NumericSemantics = \"exact-integer\" | \"exact-decimal\" | \"approximate-binary\";\n\nexport type NumericRepresentation = \"string\" | \"number\";\n\nexport type TransportFidelity = \"lossless\" | \"guarded\" | \"lossy\" | \"unsupported\";\n\n/** Database type semantics, JavaScript representation, and transport-fidelity claim for one mapping. */\nexport interface NumericTypeContract {\n readonly semantics: NumericSemantics;\n readonly representation: NumericRepresentation;\n readonly fidelity: TransportFidelity;\n readonly binaryPrecision?: 32 | 64;\n}\n\nexport interface ExactIntegerRange {\n readonly min?: bigint;\n readonly max?: bigint;\n}\n\nfunction exactnessFailure(message: string): never {\n throw new ResultExactnessError(message);\n}\n\n/**\n * Decode an exact integer from driver output, optionally enforcing bigint bounds.\n *\n * @throws {ResultExactnessError} When the value is not an exact integer or violates the requested range.\n */\nexport function decodeExactInteger(value: unknown, range?: ExactIntegerRange): bigint {\n let result: bigint;\n if (typeof value === \"bigint\") {\n result = value;\n } else if (typeof value === \"string\" && /^[+-]?\\d+$/u.test(value)) {\n try {\n result = BigInt(value);\n } catch {\n return exactnessFailure(\"Result value does not have an exact integer representation.\");\n }\n } else if (typeof value === \"number\" && Number.isSafeInteger(value)) {\n result = BigInt(value);\n } else {\n return exactnessFailure(\"Result value does not have an exact integer representation.\");\n }\n\n if (range !== undefined) {\n if (\n (range.min !== undefined && typeof range.min !== \"bigint\") ||\n (range.max !== undefined && typeof range.max !== \"bigint\") ||\n (range.min !== undefined && range.max !== undefined && range.min > range.max)\n ) {\n throw new TypeError(\"Exact integer range bounds must be ordered bigint values.\");\n }\n if (range.min !== undefined && result < range.min) {\n return exactnessFailure(\"Result exact integer is below the configured minimum.\");\n }\n if (range.max !== undefined && result > range.max) {\n return exactnessFailure(\"Result exact integer is above the configured maximum.\");\n }\n }\n return result;\n}\n\n/**\n * Normalize an exact integer at the raw SQLBraid boundary without changing\n * its textual spelling. This is intentionally not a bigint decoder: callers\n * that need arithmetic may opt in to decodeExactInteger().\n */\nexport function normalizeExactInteger(value: unknown): string {\n if (typeof value === \"string\" && /^[+-]?\\d+$/u.test(value)) return value;\n if (typeof value === \"bigint\") return value.toString(10);\n if (typeof value === \"number\" && Number.isSafeInteger(value)) return String(value);\n return exactnessFailure(\"Result value does not have an exact integer representation.\");\n}\n\n/**\n * Convert a database-reported count to a safe operational Number. Counts are\n * not application values, so unlike exact SQL numerics they remain numbers,\n * but narrowing an unsafe value is never implicit.\n */\nexport function safeDatabaseCount(value: unknown): number {\n if (typeof value === \"number\") {\n if (Number.isSafeInteger(value) && value >= 0) return value === 0 ? 0 : value;\n return exactnessFailure(\"Database count is not a safe non-negative integer.\");\n }\n if (typeof value === \"bigint\") {\n if (value < 0n || value > BigInt(Number.MAX_SAFE_INTEGER)) {\n return exactnessFailure(\"Database count is not a safe non-negative integer.\");\n }\n return Number(value);\n }\n if (typeof value === \"string\" && /^[+]?\\d+$/u.test(value)) {\n try {\n const count = BigInt(value);\n if (count >= 0n && count <= BigInt(Number.MAX_SAFE_INTEGER)) return Number(count);\n } catch {\n // Fall through to the common exactness error.\n }\n }\n return exactnessFailure(\"Database count is not a safe non-negative integer.\");\n}\n\n/**\n * Preserve an exact decimal as text; numeric JavaScript values are rejected because they may already be rounded.\n *\n * @throws {ResultExactnessError} When the value cannot prove exact decimal fidelity.\n */\nexport function decodeExactDecimal(value: unknown, options?: { readonly allowBigInt?: boolean }): string {\n if (typeof value === \"string\") return value;\n if (typeof value === \"bigint\" && options?.allowBigInt === true) return value.toString();\n return exactnessFailure(\"Result value does not have an exact decimal representation.\");\n}\n","const SQL_BOUND_PARAMETER = Symbol.for(\"sqlbraid.bound-parameter\");\nconst knownBoundParameters = new WeakSet<object>();\ndeclare const boundParameterBrand: unique symbol;\nconst SQL_ROUTINE_PARAMETER = Symbol.for(\"sqlbraid.routine-parameter\");\nconst knownRoutineParameters = new WeakSet<object>();\n\nexport type RoutineParameterDirection = \"in\" | \"out\" | \"inout\";\n\n/** Explicit database-type metadata for one bound value; this is not application validation or an input codec. */\nexport interface ParameterTypeHint<Input = unknown> {\n readonly databaseType: string;\n readonly length?: number | \"max\";\n readonly precision?: number;\n readonly scale?: number;\n readonly __input?: Input;\n}\n\n/** Value plus an explicit database type hint, created by `sql.bind()`. */\nexport interface BoundParameter<Input = unknown> {\n readonly value: Input;\n readonly hint: ParameterTypeHint<Input>;\n readonly [boundParameterBrand]: true;\n}\n\n/** Value-only routine OUT/INOUT marker; the direction and output name are interpreted by the adapter. */\nexport interface RoutineParameter<Input = unknown> {\n readonly value: Input;\n readonly hint?: ParameterTypeHint;\n readonly direction: Exclude<RoutineParameterDirection, \"in\">;\n readonly outputName: string;\n}\n\nfunction validHintNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && Number.isInteger(value) && value >= 0;\n}\n\nfunction validHintInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && Number.isInteger(value);\n}\n\nfunction isParameterTypeHint(value: unknown): value is ParameterTypeHint {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false;\n const candidate = value as {\n readonly databaseType?: unknown;\n readonly length?: unknown;\n readonly precision?: unknown;\n readonly scale?: unknown;\n };\n return (\n typeof candidate.databaseType === \"string\" &&\n candidate.databaseType.trim().length > 0 &&\n (candidate.length === undefined || candidate.length === \"max\" || validHintNumber(candidate.length)) &&\n (candidate.precision === undefined || validHintNumber(candidate.precision)) &&\n (candidate.scale === undefined || validHintInteger(candidate.scale))\n );\n}\n\n/** Validate and freeze an explicit database parameter-type hint. */\nexport function createParameterTypeHint<Input = unknown>(hint: ParameterTypeHint<Input>): ParameterTypeHint<Input> {\n if (!isParameterTypeHint(hint)) throw new TypeError(\"sql.bind hint must be an object with valid structural fields.\");\n const candidate = hint as {\n readonly databaseType?: unknown;\n readonly length?: unknown;\n readonly precision?: unknown;\n readonly scale?: unknown;\n };\n if (typeof candidate.databaseType !== \"string\" || !candidate.databaseType.trim())\n throw new TypeError(\"sql.bind hint databaseType must be a non-empty string.\");\n if (candidate.length !== undefined && candidate.length !== \"max\" && !validHintNumber(candidate.length))\n throw new TypeError('sql.bind hint length must be a non-negative integer or \"max\".');\n if (candidate.precision !== undefined && !validHintNumber(candidate.precision))\n throw new TypeError(\"sql.bind hint precision must be a non-negative integer.\");\n if (candidate.scale !== undefined && !validHintInteger(candidate.scale))\n throw new TypeError(\"sql.bind hint scale must be an integer.\");\n const normalized = {\n databaseType: candidate.databaseType,\n ...(candidate.length === undefined ? {} : { length: candidate.length }),\n ...(candidate.precision === undefined ? {} : { precision: candidate.precision }),\n ...(candidate.scale === undefined ? {} : { scale: candidate.scale }),\n } as ParameterTypeHint<Input>;\n return Object.freeze(normalized);\n}\n\n/** Create the value-only marker consumed by adapter binding for an explicitly typed input. */\nexport function createBoundParameter<Input>(\n value: NoInfer<Input>,\n hint: ParameterTypeHint<Input>,\n): BoundParameter<Input> {\n const normalizedHint = createParameterTypeHint(hint);\n const bound = Object.freeze({ value, hint: normalizedHint, [SQL_BOUND_PARAMETER]: true });\n knownBoundParameters.add(bound);\n return bound as unknown as BoundParameter<Input>;\n}\n\n/** Recognize only bound-parameter objects created by SQLBraid's own constructor. */\nexport function isBoundParameter(value: unknown): value is BoundParameter {\n if (\n typeof value !== \"object\" ||\n value === null ||\n !knownBoundParameters.has(value) ||\n !Object.hasOwn(value, SQL_BOUND_PARAMETER)\n )\n return false;\n const candidate = value as {\n readonly value?: unknown;\n readonly hint?: unknown;\n readonly [SQL_BOUND_PARAMETER]?: unknown;\n };\n return (\n candidate[SQL_BOUND_PARAMETER] === true && Object.hasOwn(candidate, \"value\") && isParameterTypeHint(candidate.hint)\n );\n}\n\nfunction normalizeOutputName(name: unknown): string {\n if (typeof name !== \"string\" || !name.trim()) throw new TypeError(\"Routine outputName must be a non-empty string.\");\n return name;\n}\n\n/** Create a value-only OUT parameter descriptor; the adapter supplies the native carrier. */\nexport function createRoutineOutParameter(name: string, hint?: ParameterTypeHint): RoutineParameter<null> {\n const normalizedHint = hint === undefined ? undefined : createParameterTypeHint(hint);\n const parameter = Object.freeze({\n value: null,\n direction: \"out\" as const,\n outputName: normalizeOutputName(name),\n ...(normalizedHint === undefined ? {} : { hint: normalizedHint }),\n [SQL_ROUTINE_PARAMETER]: true as const,\n });\n knownRoutineParameters.add(parameter);\n return parameter;\n}\n\n/** Create a value-only INOUT parameter descriptor; input value and output channel stay distinct. */\nexport function createRoutineInOutParameter<Input>(\n name: string,\n value: NoInfer<Input>,\n hint?: ParameterTypeHint<Input>,\n): RoutineParameter<Input> {\n const normalizedHint = hint === undefined ? undefined : createParameterTypeHint(hint);\n const parameter = Object.freeze({\n value,\n direction: \"inout\" as const,\n outputName: normalizeOutputName(name),\n ...(normalizedHint === undefined ? {} : { hint: normalizedHint }),\n [SQL_ROUTINE_PARAMETER]: true as const,\n });\n knownRoutineParameters.add(parameter);\n return parameter as RoutineParameter<Input>;\n}\n\n/** Recognize only routine OUT/INOUT descriptors created by SQLBraid's own constructor. */\nexport function isRoutineParameter(value: unknown): value is RoutineParameter {\n if (typeof value !== \"object\" || value === null || Array.isArray(value) || !knownRoutineParameters.has(value))\n return false;\n const candidate = value as {\n readonly value?: unknown;\n readonly direction?: unknown;\n readonly outputName?: unknown;\n readonly hint?: unknown;\n readonly [SQL_ROUTINE_PARAMETER]?: unknown;\n };\n return (\n candidate[SQL_ROUTINE_PARAMETER] === true &&\n Object.hasOwn(candidate, \"value\") &&\n (candidate.direction === \"out\" || candidate.direction === \"inout\") &&\n typeof candidate.outputName === \"string\" &&\n Boolean(candidate.outputName.trim()) &&\n (candidate.hint === undefined || isParameterTypeHint(candidate.hint))\n );\n}\n","import type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\n/** Optional routine identity metadata used by procedure-aware adapters and prepared-shape checks. */\nexport interface RoutineProcedure {\n readonly name: string;\n readonly parameterNames: readonly string[];\n}\n\nexport type RoutineSchema = StandardSchemaV1<any, any>;\n\n/**\n * Application mapping contracts for routine OUT values, result sets, and return values.\n * Each channel is independent; an OUT cursor is represented as a result set, not as scalar output.\n */\nexport interface RoutineContract<\n Output extends Readonly<Record<string, unknown>> = Readonly<Record<string, unknown>>,\n Sets extends readonly RoutineSchema[] = readonly RoutineSchema[],\n ReturnValue = unknown,\n> {\n readonly output?: StandardSchemaV1<any, Output>;\n readonly resultSets?: Sets;\n readonly returnValue?: StandardSchemaV1<any, ReturnValue>;\n readonly procedure?: RoutineProcedure;\n}\n\n/** One materialized routine result set, kept separate from scalar OUT and return-value channels. */\nexport interface RoutineResultSet<Row = unknown> {\n readonly rows: readonly Row[];\n}\n\nexport type RoutineResultSetTuple<Sets extends readonly unknown[]> = {\n readonly [K in keyof Sets]: RoutineResultSet<Sets[K]>;\n};\n\n/** Application-facing routine result with independent output, result-set, and return-value channels. */\nexport interface RoutineCallResult<\n Output extends Readonly<Record<string, unknown>> = Readonly<Record<string, unknown>>,\n Sets extends readonly unknown[] = readonly unknown[],\n ReturnValue = unknown,\n> {\n readonly output: Output;\n readonly resultSets: RoutineResultSetTuple<Sets>;\n readonly returnValue?: ReturnValue;\n}\n\nexport type RoutineSchemaOutput<Schema> = Schema extends StandardSchemaV1<any, infer Output> ? Output : never;\n\ntype RoutineRowsFromSchemas<Schemas extends readonly RoutineSchema[]> = {\n readonly [K in keyof Schemas]: RoutineSchemaOutput<Schemas[K]>;\n};\n\nexport type RoutineResultFromContract<Contract extends RoutineContract> = RoutineCallResult<\n Contract[\"output\"] extends RoutineSchema\n ? RoutineSchemaOutput<Contract[\"output\"]> extends Readonly<Record<string, unknown>>\n ? RoutineSchemaOutput<Contract[\"output\"]>\n : Readonly<Record<string, unknown>>\n : Readonly<Record<string, unknown>>,\n Contract[\"resultSets\"] extends infer Schemas extends readonly RoutineSchema[]\n ? RoutineRowsFromSchemas<Schemas>\n : readonly unknown[],\n Contract[\"returnValue\"] extends RoutineSchema ? RoutineSchemaOutput<Contract[\"returnValue\"]> : unknown\n> &\n (Contract extends { readonly returnValue: RoutineSchema }\n ? { readonly returnValue: RoutineSchemaOutput<Contract[\"returnValue\"]> }\n : {});\n\nexport type RoutineResultSource =\n | {\n readonly kind: \"out-cursor\";\n readonly name?: string;\n readonly parameterIndex?: number;\n }\n | {\n readonly kind: \"implicit\";\n readonly index: number;\n }\n | {\n readonly kind: \"emitted\";\n readonly index: number;\n };\n\n/** Driver result-set payload with provenance for OUT cursors and emitted/implicit sets. */\nexport interface DriverRoutineResultSet {\n readonly rows: readonly unknown[];\n readonly source: RoutineResultSource;\n}\n\n/** Fully materialized routine result; native cursors, requests, and LOB handles must not escape this boundary. */\nexport interface DriverRoutineResult {\n readonly output: Readonly<Record<string, unknown>>;\n readonly returnValue?: unknown;\n readonly resultSets: readonly DriverRoutineResultSet[];\n}\n\nexport type RoutineMappingLocation =\n | { readonly kind: \"output\" }\n | { readonly kind: \"return-value\" }\n | {\n readonly kind: \"result-set\";\n readonly resultSetIndex: number;\n readonly rowIndex: number;\n };\n\nexport type DriverCapabilityErrorCode =\n | \"BRAID_STREAM_UNSUPPORTED\"\n | \"BRAID_CALL_UNSUPPORTED\"\n | \"BRAID_CALL_RESULT_SETS\"\n | \"BRAID_CALL_CURSOR_TX_REQUIRED\"\n | \"BRAID_CALL_OUT_UNSUPPORTED\"\n | \"BRAID_CALL_RETURN_UNSUPPORTED\"\n | \"BRAID_CALL_CURSOR_UNSUPPORTED\"\n | \"BRAID_RESOURCE_CLEANUP\";\n\n/** Identifies which routine channel or row failed during Standard Schema mapping. */\nexport class RoutineMappingError extends Error {\n static readonly code = \"BRAID_CALL_MAP\" as const;\n readonly code = RoutineMappingError.code;\n readonly location: RoutineMappingLocation;\n\n constructor(message: string, location: RoutineMappingLocation, options?: { readonly cause?: unknown }) {\n super(message, options);\n this.name = \"RoutineMappingError\";\n this.location = Object.freeze(location);\n }\n}\n","import { SqlRenderError } from \"./errors.js\";\nimport { createParameterTypeHint, type ParameterTypeHint, type RoutineParameterDirection } from \"./parameter.js\";\nimport type { RoutineProcedure } from \"./routine.js\";\nimport type { QueryResultKind } from \"./template-ir.js\";\n\nfunction validHintNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && Number.isInteger(value) && value >= 0;\n}\n\n/**\n * A rendered parameter is always a value. Adapters MUST NOT interpret it as\n * raw SQL, an identifier, a nested query, a driver-specific fragment, or a\n * structural tagged-template command.\n */\nexport interface RenderedParameter {\n readonly value: unknown;\n readonly interpolation?: number;\n readonly hint?: ParameterTypeHint;\n readonly direction?: RoutineParameterDirection;\n readonly outputName?: string;\n}\n\n/**\n * Immutable logical statement before driver materialization.\n * `segments.length` is always `parameters.length + 1`; structural SQL lives in segments and parameters remain values.\n */\nexport interface RenderedStatement {\n readonly segments: readonly string[];\n readonly parameters: readonly RenderedParameter[];\n /**\n * Optional native tagged-template carrier. This preserves the original\n * TemplateStringsArray when a driver can bind values through its native tag.\n * It is metadata only; segments/parameters remain the logical statement.\n */\n readonly nativeTemplate?: TemplateStringsArray;\n readonly dialectId: string;\n readonly resultKind: QueryResultKind;\n readonly routineProcedure?: RoutineProcedure;\n readonly fingerprint?: string;\n readonly variantFingerprint?: string;\n}\n\n/** One logical command shape plus its value matrix; all rows must remain homogeneous. */\nexport interface RenderedBulk {\n readonly statement: RenderedStatement;\n readonly parameterSets: readonly (readonly unknown[])[];\n}\n\nexport function createRenderedBulk(bulk: RenderedBulk): RenderedBulk {\n if (bulk === null || typeof bulk !== \"object\" || Array.isArray(bulk)) {\n throw new TypeError(\"RenderedBulk must be an object.\");\n }\n const statement = createRenderedStatement(bulk.statement);\n if (!Array.isArray(bulk.parameterSets)) {\n throw new TypeError(\"RenderedBulk parameterSets must be an array.\");\n }\n const parameterCount = statement.parameters.length;\n const parameterSets = Object.freeze(\n bulk.parameterSets.map((values) => {\n if (!Array.isArray(values) || values.length !== parameterCount) {\n throw new TypeError(\"RenderedBulk parameter sets must match the rendered parameter count.\");\n }\n for (let index = 0; index < values.length; index += 1) {\n if (values[index] === undefined && statement.parameters[index]?.direction !== \"out\") {\n throw new SqlRenderError(\n \"BRAID_BIND_VALUE_UNSUPPORTED\",\n \"Undefined bind values are unsupported; use null for SQL NULL.\",\n );\n }\n }\n return Object.isFrozen(values) ? values : Object.freeze([...values]);\n }),\n );\n return Object.freeze({ statement, parameterSets });\n}\n\nconst knownRenderedStatements = new WeakSet<object>();\n\nfunction copyRenderedParameter(parameter: RenderedParameter): RenderedParameter {\n if (typeof parameter !== \"object\" || parameter === null || Array.isArray(parameter)) {\n throw new TypeError(\"RenderedStatement parameters must be parameter records.\");\n }\n const candidate = parameter as {\n readonly value?: unknown;\n readonly interpolation?: unknown;\n readonly hint?: unknown;\n readonly direction?: unknown;\n readonly outputName?: unknown;\n };\n if (!Object.hasOwn(candidate, \"value\")) throw new TypeError(\"RenderedStatement parameters must contain a value.\");\n const interpolation = candidate.interpolation;\n if (interpolation !== undefined && !validHintNumber(interpolation)) {\n throw new TypeError(\"RenderedStatement parameter interpolation must be a non-negative integer.\");\n }\n const hint = candidate.hint === undefined ? undefined : createParameterTypeHint(candidate.hint as ParameterTypeHint);\n const direction = candidate.direction;\n if (direction !== undefined && direction !== \"in\" && direction !== \"out\" && direction !== \"inout\") {\n throw new TypeError(\"RenderedStatement parameter direction is unsupported.\");\n }\n const outputName = candidate.outputName;\n if (outputName !== undefined && (typeof outputName !== \"string\" || !outputName.trim())) {\n throw new TypeError(\"RenderedStatement parameter outputName must be a non-empty string.\");\n }\n if ((direction === \"out\" || direction === \"inout\") && outputName === undefined) {\n throw new TypeError(\"RenderedStatement OUT and INOUT parameters require an outputName.\");\n }\n if (outputName !== undefined && (direction === undefined || direction === \"in\")) {\n throw new TypeError(\"RenderedStatement parameter outputName requires an OUT or INOUT direction.\");\n }\n if (candidate.value === undefined && direction !== \"out\") {\n throw new SqlRenderError(\n \"BRAID_BIND_VALUE_UNSUPPORTED\",\n \"Undefined bind values are unsupported; use null for SQL NULL.\",\n );\n }\n if (interpolation === undefined && hint === undefined && direction === undefined && outputName === undefined) {\n return Object.freeze({ value: candidate.value });\n }\n const copy: {\n value: unknown;\n interpolation?: number;\n hint?: ParameterTypeHint;\n direction?: RoutineParameterDirection;\n outputName?: string;\n } = { value: candidate.value };\n if (interpolation !== undefined) copy.interpolation = interpolation;\n if (hint !== undefined) copy.hint = hint;\n if (direction !== undefined) copy.direction = direction;\n if (outputName !== undefined) copy.outputName = outputName;\n return Object.freeze(copy) as RenderedParameter;\n}\n\nfunction copyRoutineProcedure(procedure: RoutineProcedure | undefined): RoutineProcedure | undefined {\n if (procedure === undefined) return undefined;\n if (\n typeof procedure !== \"object\" ||\n procedure === null ||\n typeof procedure.name !== \"string\" ||\n !procedure.name.trim()\n ) {\n throw new TypeError(\"Routine procedure name must be a non-empty string.\");\n }\n if (!Array.isArray(procedure.parameterNames))\n throw new TypeError(\"Routine procedure parameterNames must be an array.\");\n const parameterNames = procedure.parameterNames.map((name) => {\n if (typeof name !== \"string\" || !name.trim())\n throw new TypeError(\"Routine procedure parameterNames must contain non-empty strings.\");\n return name;\n });\n if (new Set(parameterNames).size !== parameterNames.length)\n throw new TypeError(\"Routine procedure parameterNames must be unique.\");\n return Object.freeze({ name: procedure.name, parameterNames: Object.freeze(parameterNames) });\n}\n\nfunction copyNativeTemplate(value: unknown, segments: readonly string[]): TemplateStringsArray {\n if (!Array.isArray(value) || value.length !== segments.length) {\n throw new TypeError(\"RenderedStatement nativeTemplate must have one string per segment boundary.\");\n }\n if (value.some((segment) => typeof segment !== \"string\")) {\n throw new TypeError(\"RenderedStatement nativeTemplate must contain cooked strings.\");\n }\n if (value.some((segment, index) => segment !== segments[index])) {\n throw new TypeError(\"RenderedStatement nativeTemplate cooked strings must match logical segments.\");\n }\n const raw = (value as { readonly raw?: unknown }).raw;\n if (!Array.isArray(raw) || raw.length !== value.length || raw.some((segment) => typeof segment !== \"string\")) {\n throw new TypeError(\"RenderedStatement nativeTemplate.raw must contain one raw string per segment boundary.\");\n }\n if (Object.isFrozen(value) && Object.isFrozen(raw)) return value as unknown as TemplateStringsArray;\n const cooked = [...value] as string[] & { raw: readonly string[] };\n const frozenRaw = Object.freeze([...raw]);\n Object.defineProperty(cooked, \"raw\", {\n configurable: false,\n enumerable: false,\n value: frozenRaw,\n writable: false,\n });\n return Object.freeze(cooked) as unknown as TemplateStringsArray;\n}\n\n/** Validate and freeze one logical statement without creating a second mutable SQL/value source of truth. */\n/** @throws {TypeError|SqlRenderError} For broken segment/parameter invariants or unsupported bind values. */\nexport function createRenderedStatement(statement: {\n readonly segments: readonly string[];\n readonly parameters: readonly RenderedParameter[];\n readonly nativeTemplate?: TemplateStringsArray;\n readonly resultKind: QueryResultKind;\n readonly routineProcedure?: RoutineProcedure;\n readonly dialectId: string;\n readonly fingerprint?: string;\n readonly variantFingerprint?: string;\n}): RenderedStatement {\n if (typeof statement !== \"object\" || statement === null) throw new TypeError(\"RenderedStatement must be an object.\");\n if (knownRenderedStatements.has(statement)) return statement as RenderedStatement;\n if (!Array.isArray(statement.segments)) {\n throw new TypeError(\"RenderedStatement segments must be an array of strings.\");\n }\n if (!Array.isArray(statement.parameters)) throw new TypeError(\"RenderedStatement parameters must be an array.\");\n if (statement.segments.length !== statement.parameters.length + 1) {\n throw new TypeError(\"RenderedStatement invariant violated: segments.length must equal parameters.length + 1.\");\n }\n if (statement.resultKind !== \"call\" && statement.routineProcedure !== undefined) {\n throw new TypeError(\"Routine procedure metadata is only valid for call statements.\");\n }\n if (typeof statement.dialectId !== \"string\" || !statement.dialectId)\n throw new TypeError(\"RenderedStatement dialectId must be a non-empty string.\");\n const segments = Object.freeze([...statement.segments]);\n for (let index = 0; index < segments.length; index += 1) {\n if (typeof segments[index] !== \"string\")\n throw new TypeError(\"RenderedStatement segments must be an array of strings.\");\n }\n const nativeTemplate =\n statement.nativeTemplate === undefined ? undefined : copyNativeTemplate(statement.nativeTemplate, segments);\n const copiedParameters: RenderedParameter[] = [];\n let hasInout = false;\n let hasOut = false;\n let hasOutputName = false;\n for (let index = 0; index < statement.parameters.length; index += 1) {\n const copy = copyRenderedParameter(statement.parameters[index] as RenderedParameter);\n copiedParameters.push(copy);\n if (copy.direction === \"inout\") hasInout = true;\n else if (copy.direction === \"out\") hasOut = true;\n if (copy.outputName !== undefined) hasOutputName = true;\n }\n const parameters = Object.freeze(copiedParameters);\n if (hasInout && statement.resultKind !== \"call\") {\n throw new TypeError(\"INOUT parameters are only valid for call statements.\");\n }\n if (hasOut && statement.resultKind !== \"call\" && statement.resultKind !== \"rows\") {\n throw new TypeError(\"OUT parameters are only valid for call and rows statements.\");\n }\n if (hasOutputName) {\n const outputNames = new Set<string>();\n for (const parameter of parameters) {\n if (parameter.outputName !== undefined) {\n if (outputNames.has(parameter.outputName))\n throw new TypeError(`Duplicate routine outputName: ${parameter.outputName}`);\n outputNames.add(parameter.outputName);\n }\n }\n }\n const routineProcedure = copyRoutineProcedure(statement.routineProcedure);\n if (routineProcedure !== undefined && routineProcedure.parameterNames.length !== parameters.length) {\n throw new TypeError(\"Routine procedure parameterNames must match the rendered parameter count.\");\n }\n const draft: {\n segments: readonly string[];\n parameters: readonly RenderedParameter[];\n nativeTemplate?: TemplateStringsArray;\n dialectId: string;\n resultKind: QueryResultKind;\n routineProcedure?: RoutineProcedure;\n fingerprint?: string;\n variantFingerprint?: string;\n } = { segments, parameters, dialectId: statement.dialectId, resultKind: statement.resultKind };\n if (nativeTemplate !== undefined) draft.nativeTemplate = nativeTemplate;\n if (routineProcedure !== undefined) draft.routineProcedure = routineProcedure;\n if (statement.fingerprint !== undefined) draft.fingerprint = statement.fingerprint;\n if (statement.variantFingerprint !== undefined) draft.variantFingerprint = statement.variantFingerprint;\n const rendered = Object.freeze(draft) as RenderedStatement;\n knownRenderedStatements.add(rendered);\n return rendered;\n}\n","import {\n createRenderedBulk,\n createRenderedStatement,\n type RenderedBulk,\n type RenderedParameter,\n type RenderedStatement,\n} from \"./statement.js\";\nimport { createParameterTypeHint, type ParameterTypeHint, type RoutineParameterDirection } from \"./parameter.js\";\n\nexport type ParameterTransportKind = \"native-value-template\" | \"text-positional\" | \"text-named\" | \"typed-request\";\n\nexport type RequestedReuse = \"auto\" | \"simple\" | \"reuse\";\nexport type EffectiveReuse = \"simple\" | \"reuse\";\nexport type ReuseOwner = \"sqlbraid\" | \"driver\" | \"server\";\n\n/** Inputs to pure binding description. Placeholder syntax and prepared reuse remain adapter-owned. */\nexport interface StatementBindingContext {\n readonly dialectId: string;\n readonly requestedReuse: RequestedReuse;\n readonly preparedName?: string;\n readonly transactionScoped?: boolean;\n}\n\nexport interface BindingDescription {\n readonly index: number;\n readonly name?: string;\n readonly interpolation?: number;\n readonly hint?: ParameterTypeHint;\n readonly direction?: RoutineParameterDirection;\n readonly outputName?: string;\n}\n\n/** Diagnostic-only literalization controls; the result must never be sent to a database. */\nexport interface LiteralizeOptions {\n readonly values?: \"inline\" | \"redacted\";\n readonly maxValueLength?: number;\n readonly binary?: \"summary\" | \"full\";\n readonly redact?: (parameter: RenderedParameter, index: number) => boolean;\n}\n\n/** Diagnostic SQL reconstruction with explicit redaction/truncation evidence. */\nexport interface LiteralizedSqlResult {\n readonly text: string;\n /**\n * True when no diagnostic parameter representation was truncated. Redaction,\n * unsupported literal markers, and divergence from wire SQL do not make it\n * incomplete.\n */\n readonly complete: boolean;\n readonly redactedParameters: number;\n readonly truncatedParameters: number;\n}\n\n/**\n * Immutable transport description derived from one logical statement.\n * `literalizedSql()` reconstructs diagnostics from segments and values; it is never execution input.\n */\nexport interface StatementBindingDescription {\n readonly adapterId: string;\n readonly dialectId: string;\n readonly transport: ParameterTransportKind;\n readonly parameterizedSql?: string;\n readonly bindings: readonly BindingDescription[];\n readonly reuse: {\n readonly requested: RequestedReuse;\n readonly effective: EffectiveReuse;\n readonly owner: ReuseOwner;\n readonly capacity?: number;\n };\n /** Diagnostic reconstruction only; never use this text as execution input. */\n readonly literalizedSql: (options?: LiteralizeOptions) => LiteralizedSqlResult;\n}\n\n/**\n * Driver-owned binding policy. Implementations choose transport, placeholders, type encoding, and reuse ownership.\n * `describe` must be pure and safe to run before connection acquisition.\n */\nexport interface StatementBindingAdapter {\n readonly id: string;\n describe(statement: RenderedStatement, context: StatementBindingContext): StatementBindingDescription;\n describeBulk?(bulk: RenderedBulk, context: StatementBindingContext): BulkBindingDescription;\n}\n\nexport interface StatementBindingDescriptionOptions {\n readonly adapterId: string;\n readonly transport: ParameterTransportKind;\n readonly placeholder?: (index: number) => string;\n readonly reuse: {\n readonly effective: EffectiveReuse;\n readonly owner: ReuseOwner;\n readonly capacity?: number;\n };\n readonly formatLiteral?: (\n parameter: RenderedParameter,\n index: number,\n options: LiteralizeOptions,\n ) => string | undefined;\n}\n\n/** Binding metadata for a homogeneous bulk operation; values are fetched by item index. */\nexport interface BulkBindingDescription {\n readonly adapterId: string;\n readonly dialectId: string;\n readonly transport: ParameterTransportKind;\n readonly parameterizedSql?: string;\n readonly bindings: readonly BindingDescription[];\n readonly itemCount: number;\n valuesAt(index: number): readonly unknown[];\n literalizedSql(index: number, options?: LiteralizeOptions): LiteralizedSqlResult;\n}\n\n/** Materialize placeholder text as a derived view; this helper does not own reuse or driver transport policy. */\nexport function parameterizedSql(statement: RenderedStatement, placeholder: (index: number) => string): string {\n const parts: string[] = [statement.segments[0] ?? \"\"];\n for (let index = 0; index < statement.parameters.length; index += 1) {\n parts.push(placeholder(index + 1), statement.segments[index + 1] ?? \"\");\n }\n return parts.join(\"\");\n}\n\nfunction genericLiteral(parameter: RenderedParameter, dialectId: string, binary: \"summary\" | \"full\"): string {\n const value = parameter.value;\n if (value === null) return \"NULL\";\n if (value === undefined) return \"[undefined]\";\n if (typeof value === \"string\") {\n // Session SQL modes and character sets are unknown; this is not executable SQL.\n if (/^(?:mysql|mariadb)/i.test(dialectId)) return `[string ${JSON.stringify(value)}]`;\n return `'${value.replaceAll(\"'\", \"''\")}'`;\n }\n if (typeof value === \"boolean\") {\n if (/^(?:mysql|sqlite)/i.test(dialectId) || /^(?:oracle|mssql|sqlserver)/i.test(dialectId))\n return value ? \"1\" : \"0\";\n if (/^(?:postgres|postgresql|cockroach|redshift)/i.test(dialectId)) return value ? \"TRUE\" : \"FALSE\";\n return `[boolean ${value ? \"true\" : \"false\"}]`;\n }\n if (typeof value === \"number\") return Number.isFinite(value) ? String(value) : `[unsupported ${String(value)}]`;\n if (typeof value === \"bigint\") return value.toString();\n if (value instanceof Date) {\n try {\n const timestamp = Date.prototype.getTime.call(value);\n return Number.isNaN(timestamp) ? \"[unsupported date]\" : `[date ${Date.prototype.toISOString.call(value)}]`;\n } catch {\n return \"[unsupported date]\";\n }\n }\n if (value instanceof Uint8Array) {\n try {\n if (binary === \"full\") {\n let hex = \"\";\n for (const byte of value) hex += byte.toString(16).padStart(2, \"0\");\n return `X'${hex}'`;\n }\n return `[binary ${value.byteLength} bytes]`;\n } catch {\n return \"[unsupported binary]\";\n }\n }\n if (typeof value === \"object\") return \"[unsupported object]\";\n return `[unsupported ${typeof value}]`;\n}\n\n/** Escape control, bidirectional and unpaired surrogate code units so that diagnostic text cannot drive a terminal or forge lines. */\nfunction escapeControls(text: string): string {\n let result = \"\";\n let start = 0;\n for (let index = 0; index < text.length; index += 1) {\n const code = text.charCodeAt(index);\n let escape = code < 0x20 || (code >= 0x7f && code <= 0x9f) || code === 0x2028 || code === 0x2029;\n escape ||= (code >= 0x202a && code <= 0x202e) || (code >= 0x2066 && code <= 0x2069);\n if (code >= 0xd800 && code <= 0xdbff) {\n const next = text.charCodeAt(index + 1);\n if (next >= 0xdc00 && next <= 0xdfff) {\n index += 1;\n continue;\n }\n escape = true;\n } else if (code >= 0xdc00 && code <= 0xdfff) escape = true;\n if (!escape) continue;\n result += `${text.slice(start, index)}\\\\u${code.toString(16).toUpperCase().padStart(4, \"0\")}`;\n start = index + 1;\n }\n return start === 0 ? text : result + text.slice(start);\n}\n\n/** Truncate without splitting a surrogate pair. */\nfunction truncate(text: string, maxLength: number): string {\n const code = text.charCodeAt(maxLength - 1);\n return text.slice(0, code >= 0xd800 && code <= 0xdbff ? maxLength - 1 : maxLength);\n}\n\nfunction literalized(\n statement: RenderedStatement,\n dialectId: string,\n formatLiteral: StatementBindingDescriptionOptions[\"formatLiteral\"],\n options: LiteralizeOptions | undefined,\n): LiteralizedSqlResult {\n const resolved: LiteralizeOptions = options ?? {};\n const valuesMode = resolved.values ?? \"redacted\";\n const maxLength = resolved.maxValueLength;\n if (valuesMode !== \"inline\" && valuesMode !== \"redacted\")\n throw new TypeError('literalizedSql values must be \"inline\" or \"redacted\".');\n if (maxLength !== undefined && (!Number.isSafeInteger(maxLength) || maxLength < 0)) {\n throw new TypeError(\"literalizedSql maxValueLength must be a non-negative integer.\");\n }\n const binary = resolved.binary ?? \"summary\";\n if (binary !== \"summary\" && binary !== \"full\")\n throw new TypeError('literalizedSql binary must be \"summary\" or \"full\".');\n if (resolved.redact !== undefined && typeof resolved.redact !== \"function\")\n throw new TypeError(\"literalizedSql redact must be a function.\");\n const parts: string[] = [statement.segments[0] ?? \"\"];\n let redactedParameters = 0;\n let truncatedParameters = 0;\n for (let index = 0; index < statement.parameters.length; index += 1) {\n const parameter = statement.parameters[index];\n const redact = valuesMode === \"redacted\" || resolved.redact?.(parameter, index) === true;\n let valueText: string;\n if (redact) {\n valueText = \"[REDACTED]\";\n redactedParameters += 1;\n } else {\n valueText = formatLiteral?.(parameter, index, resolved) ?? genericLiteral(parameter, dialectId, binary);\n }\n valueText = escapeControls(valueText);\n if (maxLength !== undefined && valueText.length > maxLength) {\n valueText = truncate(valueText, maxLength);\n truncatedParameters += 1;\n }\n parts.push(valueText, statement.segments[index + 1] ?? \"\");\n }\n return Object.freeze({\n text: parts.join(\"\"),\n complete: truncatedParameters === 0,\n redactedParameters,\n truncatedParameters,\n });\n}\n\n/** Build an immutable binding description before I/O, including adapter reuse policy and diagnostic literalization. */\nexport function createStatementBindingDescription(\n statement: RenderedStatement,\n context: StatementBindingContext,\n options: StatementBindingDescriptionOptions,\n): StatementBindingDescription {\n const logical = createRenderedStatement(statement);\n const adapterId = options.adapterId;\n const transport = options.transport;\n const placeholder = options.placeholder;\n const formatLiteral = options.formatLiteral;\n const effective = options.reuse.effective;\n const owner = options.reuse.owner;\n const capacity = options.reuse.capacity;\n const dialectId = context.dialectId;\n const requestedReuse = context.requestedReuse;\n if (logical.dialectId !== dialectId) {\n throw new TypeError(\n `BRAID_DIALECT: statement binding dialect ${dialectId} does not match rendered statement dialect ${logical.dialectId}.`,\n );\n }\n if (typeof adapterId !== \"string\" || !adapterId)\n throw new TypeError(\"Statement binding adapterId must be a non-empty string.\");\n if (typeof dialectId !== \"string\" || !dialectId)\n throw new TypeError(\"Statement binding dialectId must be a non-empty string.\");\n if (![\"native-value-template\", \"text-positional\", \"text-named\", \"typed-request\"].includes(transport)) {\n throw new TypeError(\"Statement binding transport is unsupported.\");\n }\n if (transport !== \"native-value-template\" && placeholder === undefined) {\n throw new TypeError(\"Text and typed statement transports require a placeholder function.\");\n }\n if (![\"auto\", \"simple\", \"reuse\"].includes(requestedReuse))\n throw new TypeError(\"Statement binding requestedReuse is unsupported.\");\n if (![\"simple\", \"reuse\"].includes(effective) || ![\"sqlbraid\", \"driver\", \"server\"].includes(owner)) {\n throw new TypeError(\"Statement binding reuse policy is unsupported.\");\n }\n if (capacity !== undefined && (!Number.isSafeInteger(capacity) || capacity < 0)) {\n throw new TypeError(\"Statement binding reuse capacity must be a non-negative safe integer.\");\n }\n if (placeholder !== undefined && typeof placeholder !== \"function\") {\n throw new TypeError(\"Statement binding placeholder must be a function.\");\n }\n const bindings = Object.freeze(\n logical.parameters.map((parameter, offset) =>\n Object.freeze({\n index: offset + 1,\n ...(parameter.outputName === undefined ? {} : { name: parameter.outputName, outputName: parameter.outputName }),\n ...(parameter.interpolation === undefined ? {} : { interpolation: parameter.interpolation }),\n ...(parameter.hint === undefined ? {} : { hint: createParameterTypeHint(parameter.hint) }),\n ...(parameter.direction === undefined ? {} : { direction: parameter.direction }),\n }),\n ),\n );\n const reuse = Object.freeze({\n requested: requestedReuse,\n effective,\n owner,\n ...(capacity === undefined ? {} : { capacity }),\n });\n let parameterizedReady = false;\n let parameterized: string | undefined;\n const literalCache = new Map<string, LiteralizedSqlResult>();\n let defaultLiteralized: LiteralizedSqlResult | undefined;\n const description = {\n adapterId,\n dialectId,\n transport,\n bindings,\n reuse,\n literalizedSql: (literalOptions?: LiteralizeOptions): LiteralizedSqlResult => {\n if (literalOptions === undefined) {\n if (defaultLiteralized === undefined)\n defaultLiteralized = literalized(logical, dialectId, formatLiteral, undefined);\n return defaultLiteralized;\n }\n if (typeof literalOptions !== \"object\" || literalOptions === null)\n throw new TypeError(\"literalizedSql options must be an object.\");\n const values = literalOptions.values;\n const binary = literalOptions.binary;\n const maxValueLength = literalOptions.maxValueLength;\n const redact = literalOptions.redact;\n const snapshot = Object.freeze({\n ...(values === undefined ? {} : { values }),\n ...(binary === undefined ? {} : { binary }),\n ...(maxValueLength === undefined ? {} : { maxValueLength }),\n ...(redact === undefined ? {} : { redact }),\n });\n const cacheKey =\n redact === undefined ? `${values ?? \"\"}\\u0000${binary ?? \"\"}\\u0000${maxValueLength ?? \"\"}` : undefined;\n if (cacheKey !== undefined) {\n const cached = literalCache.get(cacheKey);\n if (cached) return cached;\n }\n const result = literalized(logical, dialectId, formatLiteral, snapshot);\n if (cacheKey !== undefined) literalCache.set(cacheKey, result);\n return result;\n },\n } as StatementBindingDescription;\n if (placeholder !== undefined) {\n Object.defineProperty(description, \"parameterizedSql\", {\n enumerable: true,\n configurable: false,\n get: () => {\n if (!parameterizedReady) {\n parameterized = parameterizedSql(logical, placeholder);\n parameterizedReady = true;\n }\n return parameterized;\n },\n });\n }\n return Object.freeze(description);\n}\n\n/**\n * Build one binding description for a homogeneous bulk statement without cloning application-owned values.\n * Statement metadata is shared by every parameter set; values and diagnostics are addressed by item index.\n */\nexport function createBulkBindingDescription(\n bulk: RenderedBulk,\n context: StatementBindingContext,\n options: StatementBindingDescriptionOptions,\n): BulkBindingDescription {\n const logical = createRenderedBulk(bulk);\n const statementBinding = createStatementBindingDescription(logical.statement, context, options);\n const parameterSets = logical.parameterSets;\n const itemCount = parameterSets.length;\n const valuesAt = (index: number): readonly unknown[] => {\n if (!Number.isSafeInteger(index) || index < 0 || index >= itemCount) {\n throw new RangeError(`Bulk item index ${String(index)} is outside [0, ${itemCount}).`);\n }\n return parameterSets[index]!;\n };\n const literalizedSqlFor = (index: number, literalOptions?: LiteralizeOptions): LiteralizedSqlResult => {\n const values = valuesAt(index);\n const optionsSnapshot =\n literalOptions === undefined\n ? undefined\n : {\n ...(literalOptions.values === undefined ? {} : { values: literalOptions.values }),\n ...(literalOptions.binary === undefined ? {} : { binary: literalOptions.binary }),\n ...(literalOptions.maxValueLength === undefined ? {} : { maxValueLength: literalOptions.maxValueLength }),\n ...(literalOptions.redact === undefined ? {} : { redact: literalOptions.redact }),\n };\n const statement = {\n ...logical.statement,\n // oxlint-disable-next-line oxc/no-map-spread -- Each bulk item needs its own values without mutating shared readonly parameters.\n parameters: logical.statement.parameters.map((parameter, parameterIndex) => ({\n ...parameter,\n value: values[parameterIndex],\n })),\n };\n const result = createStatementBindingDescription(statement, context, options).literalizedSql(optionsSnapshot);\n return result;\n };\n const description = {\n adapterId: statementBinding.adapterId,\n dialectId: statementBinding.dialectId,\n transport: statementBinding.transport,\n bindings: statementBinding.bindings,\n itemCount,\n valuesAt,\n literalizedSql: literalizedSqlFor,\n } as BulkBindingDescription;\n if (\"parameterizedSql\" in statementBinding) {\n Object.defineProperty(description, \"parameterizedSql\", {\n enumerable: true,\n configurable: false,\n get: () => statementBinding.parameterizedSql,\n });\n }\n return Object.freeze(description);\n}\n","export const SQL_FRAGMENT = Symbol.for(\"sqlbraid.fragment\");\n\n/** Half-open source range in the cooked template text, used for diagnostics and source mapping. */\nexport interface SourceRange {\n readonly start: number;\n readonly end: number;\n}\n\n/** Safety bounds applied while parsing and rendering dynamic SQL. */\nexport interface RenderLimits {\n readonly maxSqlBytes?: number;\n readonly maxBindCount?: number;\n readonly maxStructuralItems?: number;\n readonly maxNestingDepth?: number;\n}\n\n/** Declared logical result channel; runtime checks the driver's actual result kind against it. */\nexport type QueryResultKind = \"rows\" | \"command\" | \"call\" | \"unknown\";\n\nexport interface TextNode {\n readonly kind: \"text\";\n readonly text: string;\n readonly range: SourceRange;\n}\n\nexport interface BindNode {\n readonly kind: \"bind\";\n readonly interpolation: number;\n readonly range: SourceRange;\n}\n\nexport interface FragmentNode {\n readonly kind: \"fragment\";\n readonly fragment: SqlFragment;\n readonly range: SourceRange;\n}\n\nexport interface IdentifierNode {\n readonly kind: \"identifier\";\n readonly value: string | readonly string[];\n readonly range: SourceRange;\n}\n\nexport interface RawNode {\n readonly kind: \"raw\";\n readonly text: string;\n readonly range: SourceRange;\n}\n\nexport interface ListNode {\n readonly kind: \"list\";\n readonly values: readonly unknown[];\n readonly range: SourceRange;\n}\n\nexport interface IfNode {\n readonly kind: \"if\";\n readonly condition: number;\n readonly children: readonly TemplateNode[];\n readonly range: SourceRange;\n}\n\nexport interface ChooseWhen {\n readonly condition: number;\n readonly children: readonly TemplateNode[];\n readonly range: SourceRange;\n}\n\nexport interface ChooseNode {\n readonly kind: \"choose\";\n readonly whens: readonly ChooseWhen[];\n readonly otherwise?: readonly TemplateNode[];\n readonly range: SourceRange;\n}\n\nexport interface TrimAttributes {\n readonly prefix: string;\n readonly prefixOverrides: readonly string[];\n readonly suffix: string;\n readonly suffixOverrides: readonly string[];\n}\n\nexport interface TrimNode {\n readonly kind: \"trim\";\n readonly attributes: TrimAttributes;\n readonly children: readonly TemplateNode[];\n readonly range: SourceRange;\n}\n\nexport type TemplateNode =\n | TextNode\n | BindNode\n | FragmentNode\n | IdentifierNode\n | RawNode\n | ListNode\n | IfNode\n | ChooseNode\n | TrimNode;\n\n/** Frozen template intermediate representation with source ranges and optional raw-text parallel nodes. */\nexport interface TemplateIr {\n readonly version: 1;\n readonly nodes: readonly TemplateNode[];\n readonly sourceLength: number;\n /**\n * Optional parallel node tree preserving raw JavaScript template text for\n * native tagged-template transports. The logical node tree remains cooked.\n */\n readonly rawNodes?: readonly TemplateNode[];\n}\n\n/** Explicit structural SQL fragment. Ordinary interpolations are values; fragments opt into SQL structure. */\nexport interface SqlFragment {\n readonly [SQL_FRAGMENT]: true;\n readonly ir: TemplateIr;\n readonly values: readonly unknown[];\n readonly dialectId: string;\n}\n","/** Data-only authoring identity shared by compiler, tooling, and editor consumers. */\nexport type AuthoringModuleCatalogEntry = {\n readonly moduleSpecifier: string;\n readonly dialectId?: \"postgres\" | \"mysql\" | \"mariadb\" | \"sqlite\" | \"oracle\" | \"mssql\";\n};\n\nexport const AUTHORING_MODULE_CATALOG: readonly AuthoringModuleCatalogEntry[] = Object.freeze(\n (\n [\n { moduleSpecifier: \"@sqlbraid/template\" },\n { moduleSpecifier: \"@sqlbraid/postgres\", dialectId: \"postgres\" },\n { moduleSpecifier: \"@sqlbraid/mysql\", dialectId: \"mysql\" },\n { moduleSpecifier: \"@sqlbraid/mariadb\", dialectId: \"mariadb\" },\n { moduleSpecifier: \"@sqlbraid/sqlite\", dialectId: \"sqlite\" },\n { moduleSpecifier: \"@sqlbraid/oracle\", dialectId: \"oracle\" },\n { moduleSpecifier: \"@sqlbraid/mssql\", dialectId: \"mssql\" },\n ] as const\n ).map((entry) => Object.freeze(entry)),\n);\n","/**\n * The machine-readable capability vocabulary shared by adapters, support data,\n * and documentation. A capability's family describes what its status proves;\n * representation and metadata evidence are not execution support aliases.\n */\nexport type CapabilityFamily = \"support\" | \"representation\" | \"metadata\";\n\nexport interface WellKnownCapability {\n readonly id: string;\n readonly family: CapabilityFamily;\n}\n\nconst definitions = [\n { id: \"sql.native-transparency\", family: \"support\" },\n { id: \"sql.generated-structure\", family: \"support\" },\n { id: \"result.rows\", family: \"support\" },\n { id: \"result.command\", family: \"support\" },\n { id: \"result.multiple-sets\", family: \"support\" },\n { id: \"result.standard-schema\", family: \"support\" },\n { id: \"numeric.exact-integer\", family: \"representation\" },\n { id: \"numeric.exact-decimal\", family: \"representation\" },\n { id: \"numeric.approximate-float\", family: \"representation\" },\n { id: \"numeric.approximate-special\", family: \"representation\" },\n { id: \"numeric.bind-exact\", family: \"representation\" },\n { id: \"numeric.aggregate\", family: \"representation\" },\n { id: \"numeric.command-metadata\", family: \"representation\" },\n { id: \"numeric.special-values\", family: \"representation\" },\n { id: \"numeric.scale-greater-than-precision\", family: \"representation\" },\n { id: \"numeric.negative-scale\", family: \"representation\" },\n { id: \"data.json-parsed\", family: \"representation\" },\n { id: \"data.json-lossless-text\", family: \"representation\" },\n { id: \"data.sql-variant\", family: \"representation\" },\n { id: \"data.oracle-object\", family: \"representation\" },\n { id: \"data.oracle-collection\", family: \"representation\" },\n { id: \"data.vector\", family: \"representation\" },\n { id: \"data.binary\", family: \"representation\" },\n { id: \"data.uuid\", family: \"representation\" },\n { id: \"data.temporal-native\", family: \"representation\" },\n { id: \"data.temporal-lossless\", family: \"representation\" },\n { id: \"data.timezone\", family: \"representation\" },\n { id: \"metadata.command-safe\", family: \"metadata\" },\n { id: \"dml.insert-returning\", family: \"support\" },\n { id: \"dml.update-returning\", family: \"support\" },\n { id: \"dml.delete-returning\", family: \"support\" },\n { id: \"dml.merge-returning\", family: \"support\" },\n { id: \"dml.upsert-returning\", family: \"support\" },\n { id: \"session.pinned\", family: \"support\" },\n { id: \"statement.prepare\", family: \"support\" },\n { id: \"statement.cancel\", family: \"support\" },\n { id: \"statement.stream\", family: \"support\" },\n { id: \"statement.bulk\", family: \"support\" },\n { id: \"execution.bulk-fidelity\", family: \"support\" },\n { id: \"transaction\", family: \"support\" },\n { id: \"transaction.savepoint\", family: \"support\" },\n { id: \"transaction.read-only\", family: \"support\" },\n { id: \"transaction.isolation.read-uncommitted\", family: \"support\" },\n { id: \"transaction.isolation.read-committed\", family: \"support\" },\n { id: \"transaction.isolation.repeatable-read\", family: \"support\" },\n { id: \"transaction.isolation.serializable\", family: \"support\" },\n { id: \"routine.call\", family: \"support\" },\n { id: \"routine.out\", family: \"support\" },\n { id: \"routine.inout\", family: \"support\" },\n { id: \"routine.result-sets\", family: \"support\" },\n { id: \"routine.out-cursor\", family: \"support\" },\n { id: \"routine.return-value\", family: \"support\" },\n { id: \"metadata.identity\", family: \"metadata\" },\n { id: \"metadata.generated\", family: \"metadata\" },\n { id: \"metadata.routines\", family: \"metadata\" },\n { id: \"metadata.types\", family: \"metadata\" },\n] as const satisfies readonly WellKnownCapability[];\n\nexport const WELL_KNOWN_CAPABILITIES: readonly WellKnownCapability[] = Object.freeze(\n definitions.map((entry) => Object.freeze(entry)),\n);\n\nexport type WellKnownCapabilityId = (typeof definitions)[number][\"id\"];\n\nexport const WELL_KNOWN_CAPABILITY_IDS: readonly WellKnownCapabilityId[] = Object.freeze(\n definitions.map(({ id }) => id),\n);\n\nconst wellKnownCapabilityIds = new Set<string>(WELL_KNOWN_CAPABILITY_IDS);\n\nexport function isWellKnownCapabilityId(value: string): value is WellKnownCapabilityId {\n return wellKnownCapabilityIds.has(value);\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sqlbraid/core",
3
- "version": "1.0.4",
3
+ "version": "1.1.0-rc.1",
4
4
  "description": "Core SQLBraid types and SQL template interfaces for typed database applications",
5
5
  "keywords": [
6
6
  "database",