@askdb/core 1.0.0-beta.45 → 1.0.0-beta.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +15 -13
  2. package/dist/ask.d.ts +15 -7
  3. package/dist/ask.d.ts.map +1 -1
  4. package/dist/ask.js +29 -5
  5. package/dist/ask.js.map +1 -1
  6. package/dist/enrichment/prompt.d.ts.map +1 -1
  7. package/dist/enrichment/prompt.js +6 -4
  8. package/dist/enrichment/prompt.js.map +1 -1
  9. package/dist/enrichment/types.d.ts +13 -12
  10. package/dist/enrichment/types.d.ts.map +1 -1
  11. package/dist/errors.d.ts +30 -6
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js.map +1 -1
  14. package/dist/index.d.ts +3 -3
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +3 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/logging/askdb-logger.d.ts +2 -0
  19. package/dist/logging/askdb-logger.d.ts.map +1 -1
  20. package/dist/logging/create-askdb-logger.d.ts.map +1 -1
  21. package/dist/logging/create-askdb-logger.js +3 -0
  22. package/dist/logging/create-askdb-logger.js.map +1 -1
  23. package/dist/logging/log-events.d.ts +8 -0
  24. package/dist/logging/log-events.d.ts.map +1 -1
  25. package/dist/logging/log-events.js +8 -0
  26. package/dist/logging/log-events.js.map +1 -1
  27. package/dist/schema/normalize.d.ts +0 -2
  28. package/dist/schema/normalize.d.ts.map +1 -1
  29. package/dist/schema/normalize.js +0 -4
  30. package/dist/schema/normalize.js.map +1 -1
  31. package/dist/schema/v2/index.d.ts +3 -2
  32. package/dist/schema/v2/index.d.ts.map +1 -1
  33. package/dist/schema/v2/index.js +3 -2
  34. package/dist/schema/v2/index.js.map +1 -1
  35. package/dist/schema/v2/loader.d.ts +24 -6
  36. package/dist/schema/v2/loader.d.ts.map +1 -1
  37. package/dist/schema/v2/loader.js +164 -100
  38. package/dist/schema/v2/loader.js.map +1 -1
  39. package/dist/schema/v2/save-file.d.ts +56 -0
  40. package/dist/schema/v2/save-file.d.ts.map +1 -0
  41. package/dist/schema/v2/save-file.js +138 -0
  42. package/dist/schema/v2/save-file.js.map +1 -0
  43. package/dist/schema/v2/tenant-policy-loader.d.ts +1 -10
  44. package/dist/schema/v2/tenant-policy-loader.d.ts.map +1 -1
  45. package/dist/schema/v2/tenant-policy-loader.js +65 -51
  46. package/dist/schema/v2/tenant-policy-loader.js.map +1 -1
  47. package/dist/schema/v2/tenant-policy.d.ts +5 -0
  48. package/dist/schema/v2/tenant-policy.d.ts.map +1 -1
  49. package/dist/schema/v2/tenant-policy.js +26 -0
  50. package/dist/schema/v2/tenant-policy.js.map +1 -1
  51. package/dist/sql/bind.d.ts +11 -4
  52. package/dist/sql/bind.d.ts.map +1 -1
  53. package/dist/sql/bind.js +5 -8
  54. package/dist/sql/bind.js.map +1 -1
  55. package/dist/sql/dialect-spec.d.ts +1 -0
  56. package/dist/sql/dialect-spec.d.ts.map +1 -1
  57. package/dist/sql/dialect-spec.js +2 -1
  58. package/dist/sql/dialect-spec.js.map +1 -1
  59. package/dist/sql/guardrail-decide.d.ts +4 -2
  60. package/dist/sql/guardrail-decide.d.ts.map +1 -1
  61. package/dist/sql/guardrail-decide.js.map +1 -1
  62. package/dist/sql/prompt-identifiers.d.ts +9 -0
  63. package/dist/sql/prompt-identifiers.d.ts.map +1 -1
  64. package/dist/sql/prompt-identifiers.js +22 -3
  65. package/dist/sql/prompt-identifiers.js.map +1 -1
  66. package/dist/sql/prompt.d.ts.map +1 -1
  67. package/dist/sql/prompt.js +3 -1
  68. package/dist/sql/prompt.js.map +1 -1
  69. package/dist/sql/rebind.d.ts +34 -7
  70. package/dist/sql/rebind.d.ts.map +1 -1
  71. package/dist/sql/rebind.js +50 -10
  72. package/dist/sql/rebind.js.map +1 -1
  73. package/dist/sql/tenant-placeholders.d.ts +26 -11
  74. package/dist/sql/tenant-placeholders.d.ts.map +1 -1
  75. package/dist/sql/tenant-placeholders.js +50 -25
  76. package/dist/sql/tenant-placeholders.js.map +1 -1
  77. package/dist/sql/tenant-policy-warnings.d.ts +8 -0
  78. package/dist/sql/tenant-policy-warnings.d.ts.map +1 -0
  79. package/dist/sql/tenant-policy-warnings.js +21 -0
  80. package/dist/sql/tenant-policy-warnings.js.map +1 -0
  81. package/dist/sql/validate.d.ts +15 -3
  82. package/dist/sql/validate.d.ts.map +1 -1
  83. package/dist/sql/validate.js +107 -8
  84. package/dist/sql/validate.js.map +1 -1
  85. package/package.json +2 -2
@@ -3,7 +3,7 @@ import { isTenantPlaceholderName, markerStyleForDialect, renderPreparedQuery, sc
3
3
  import { BUILT_IN_DIALECTS, isBuiltInDialectId } from "./dialect-spec.js";
4
4
  import { decide, throwIfDenied } from "./guardrail-decide.js";
5
5
  import { evaluateGuardrails, guardrailPlan } from "./guardrails.js";
6
- import { findTenantPlaceholderAnyCase, resolveTenantSql, unexpandedSubtreeError } from "./tenant-placeholders.js";
6
+ import { assertTenantSqlMode, DEFAULT_TENANT_SQL_MODE, findTenantPlaceholderAnyCase, resolveTenantSql, unexpandedSubtreeError, } from "./tenant-placeholders.js";
7
7
  import { validateTenantScope } from "./tenant-scope-validate.js";
8
8
  import { validateSelectSql } from "./validate.js";
9
9
  /**
@@ -17,16 +17,20 @@ import { validateSelectSql } from "./validate.js";
17
17
  * `guardrails.acceptWarnings` includes `"tenant"`; a sensitive `warn` binds and is
18
18
  * reported in `verdict`.
19
19
  * - Binds the business values from `values`, then renders each `:tenant_<root>_ids`
20
- * placeholder from `guardrails.tenantScope`: escaped literals in `sql`, driver markers
21
- * after the business markers in `unboundSql` (in source order for `?` dialects), with
22
- * the IDs folded into `params`. `bindings` lists the business parameters.
20
+ * placeholder from `guardrails.tenantScope`. In `sql`: driver markers numbered from the
21
+ * first slot with the IDs in `tenantParams` (`tenantSqlMode: "sql-params"`, the default),
22
+ * or escaped literals (`"sql-only"`). In `unboundSql`: driver markers after the business
23
+ * markers (in source order for `?` dialects), with the IDs folded into `params`.
24
+ * `bindings` lists the business parameters.
23
25
  *
24
26
  * Throws `QueryParameterError` without `guardrails` (`MISSING_GUARDRAIL_CONTEXT`), for a
25
27
  * `:tenant_*` key in `values` (`TENANT_VALUE_SUPPLIED`), and when the tenant markers can't
26
28
  * be aligned with the business params (`TENANT_PARAM_ALIGNMENT`). Throws `TenantScopeError`
27
- * for a missing or invalid scope, an unexpanded `subtree` (`SUBTREE_NOT_RESOLVABLE`), and a
29
+ * for a missing or invalid scope, an unexpanded `subtree` (`SUBTREE_NOT_RESOLVABLE`), a
28
30
  * placeholder the scope has no IDs for, including any placeholder under a `global` scope or
29
- * a schema without a tenant policy (`UNRESOLVED_TENANT_PLACEHOLDER`). Synchronous.
31
+ * a schema without a tenant policy (`UNRESOLVED_TENANT_PLACEHOLDER`), and a tenant ID
32
+ * that isn't printable ASCII or that contains a backslash, which `sql` can't inline safely
33
+ * (`UNESCAPABLE_TENANT_ID`). Synchronous.
30
34
  */
31
35
  export function bindPreparedQuery(prepared, values, guardrails) {
32
36
  if (typeof guardrails !== "object" || guardrails === null || guardrails.schema === undefined) {
@@ -36,7 +40,9 @@ export function bindPreparedQuery(prepared, values, guardrails) {
36
40
  if (!isBuiltInDialectId(prepared.dialect)) {
37
41
  throw new QueryParameterError(`Unknown dialect '${prepared.dialect}'.`, "DIALECT_UNSUPPORTED");
38
42
  }
39
- const spec = BUILT_IN_DIALECTS[prepared.dialect];
43
+ const spec = rebindSpec(prepared, guardrails.dialect);
44
+ const tenantMode = guardrails.tenantSqlMode ?? DEFAULT_TENANT_SQL_MODE;
45
+ assertTenantSqlMode(tenantMode, "bindPreparedQuery()");
40
46
  rejectTenantValues(values);
41
47
  const { schema } = guardrails;
42
48
  const policy = "schemaId" in schema ? schema.tenantPolicy : undefined;
@@ -75,9 +81,15 @@ export function bindPreparedQuery(prepared, values, guardrails) {
75
81
  : `The template references ${placeholder}, but the schema has no tenant policy to render it ` +
76
82
  "from. Refusing to bind a template with an unsubstituted tenant placeholder.", "UNRESOLVED_TENANT_PLACEHOLDER");
77
83
  }
78
- let bound = renderPreparedQuery(prepared, values, { skipTenantPlaceholders: true });
84
+ let bound = renderPreparedQuery(prepared, values, { skipTenantPlaceholders: true, dialect: spec });
85
+ let tenantParams;
79
86
  if (policy && scope) {
80
- const sql = resolveTenantSql(bound.sql, policy, scope, "sql-only", 1, spec).sql;
87
+ // `sql` carries business values as inlined literals, so its only markers are tenant
88
+ // markers, numbered from the first slot, as in ask() (ADR 0024).
89
+ const resolved = resolveTenantSql(bound.sql, policy, scope, tenantMode, 1, spec);
90
+ const sql = resolved.sql;
91
+ if (resolved.mode === "sql-params" && resolved.params.length > 0)
92
+ tenantParams = resolved.params;
81
93
  const unbound = bindTenantIntoUnboundSql(bound, {
82
94
  namedSql: prepared.namedSql,
83
95
  tenantPolicy: policy,
@@ -95,7 +107,7 @@ export function bindPreparedQuery(prepared, values, guardrails) {
95
107
  }
96
108
  validateSelectSql(spec, bound.sql);
97
109
  validateSelectSql(spec, bound.unboundSql);
98
- return { ...bound, verdict };
110
+ return { ...bound, ...(tenantParams ? { tenantParams } : {}), verdict };
99
111
  }
100
112
  function rejectTenantValues(values) {
101
113
  for (const key of Object.keys(values ?? {})) {
@@ -172,4 +184,32 @@ export function bindTenantIntoUnboundSql(bound, ctx) {
172
184
  }));
173
185
  return { unboundSql: unbound.sql, params: combined, bindings };
174
186
  }
187
+ /**
188
+ * The spec a rebind checks and renders under. A `"builtin"` template uses its built-in spec
189
+ * unless the host passes one. A `"host"` template, or one stored without `dialectRules`, has
190
+ * rules AskDB can't recover, so it needs the host's spec rather than a guess (ADR 0032).
191
+ */
192
+ function rebindSpec(prepared, dialect) {
193
+ if (dialect === undefined) {
194
+ if (prepared.dialectRules === "builtin")
195
+ return BUILT_IN_DIALECTS[prepared.dialect];
196
+ const fix = `Pass guardrails.dialect: the DialectSpec ask() ran with, or the built-in id '${prepared.dialect}' ` +
197
+ "if it ran with the built-in rules.";
198
+ const rules = prepared.dialectRules;
199
+ throw new QueryParameterError(rules === "host"
200
+ ? "This template was made by ask() under a host's DialectSpec (dialectRules: 'host'), so " +
201
+ `bindPreparedQuery() checks and renders it only under that spec. ${fix} A constant from another ` +
202
+ "copy of @askdb/core counts as a host's spec."
203
+ : rules === undefined || rules === null
204
+ ? "This template has no dialectRules: it was stored before AskDB recorded which dialect rules ask() " +
205
+ `used, so bindPreparedQuery() won't guess. ${fix}`
206
+ : `This template has dialectRules ${JSON.stringify(rules).replace(/"/g, "'")}, which is neither 'builtin' ` +
207
+ `nor 'host', so bindPreparedQuery() won't guess. ${fix}`, "DIALECT_SPEC_REQUIRED");
208
+ }
209
+ const spec = typeof dialect === "string" ? (isBuiltInDialectId(dialect) ? BUILT_IN_DIALECTS[dialect] : undefined) : dialect;
210
+ if (spec?.id !== prepared.dialect) {
211
+ throw new QueryParameterError(`guardrails.dialect must have the template's dialect id '${prepared.dialect}'.`, "DIALECT_UNSUPPORTED");
212
+ }
213
+ return spec;
214
+ }
175
215
  //# sourceMappingURL=rebind.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rebind.js","sourceRoot":"","sources":["../../src/sql/rebind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rebind.js","sourceRoot":"","sources":["../../src/sql/rebind.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,18 @@ import { TenantScopeError } from "../errors.js";
2
2
  import { placeholderForRoot, placeholderForTenantRoot, type NormalizedTenantPolicy, type TenantScope } from "../schema/v2/tenant-policy.js";
3
3
  import { type DialectSpec } from "./dialect-spec.js";
4
4
  export type TenantSqlOutputMode = "sql-only" | "sql-params";
5
+ /**
6
+ * The `tenantSqlMode` used when a caller doesn't set one: tenant IDs leave the SQL text
7
+ * and bind through the dialect's driver markers. Hosts that report or forward the mode
8
+ * import this rather than hard-code it.
9
+ */
10
+ export declare const DEFAULT_TENANT_SQL_MODE: TenantSqlOutputMode;
11
+ /**
12
+ * Refuse a `tenantSqlMode` that is neither `"sql-only"` nor `"sql-params"`. Rendering it as
13
+ * either would guess at the host's intent, and a custom `AskDialect`'s `$N` markers are money
14
+ * constants on SQL Server, so it fails closed (ADR 0024).
15
+ */
16
+ export declare function assertTenantSqlMode(mode: unknown, caller: string): asserts mode is TenantSqlOutputMode;
5
17
  export type TenantBinding = {
6
18
  placeholder: string;
7
19
  rootLabel: string;
@@ -26,11 +38,10 @@ export type TenantPlaceholderResult = {
26
38
  };
27
39
  /**
28
40
  * The parts of a dialect the tenant substituter reads: `id` picks the driver
29
- * marker style (`$N` / `?` / `@pN`); `backslashEscapes` drives literal escaping.
30
- * When `backslashEscapes` is unset, a built-in `id` supplies it (on for MySQL and
31
- * MariaDB); with an unknown `id`, a tenant ID containing a backslash throws
32
- * rather than guess. Omit the dialect entirely for Postgres-style `$N` markers
33
- * and quote-doubling only.
41
+ * marker style (`$N` / `?` / `@pN`), and with `backslashEscapes` it says how to lex
42
+ * the SQL, so only placeholders in code regions are substituted. Inlined tenant IDs
43
+ * are escaped the same way on every dialect (printable ASCII only, quotes doubled, no backslash).
44
+ * Omit the dialect entirely for Postgres-style `$N` markers and Postgres lexing.
34
45
  */
35
46
  export type TenantSqlDialect = Partial<Pick<DialectSpec, "id" | "backslashEscapes">>;
36
47
  export { placeholderForRoot, placeholderForTenantRoot };
@@ -51,9 +62,10 @@ export declare function unexpandedSubtreeError(tenantRoot: string, caller: "reso
51
62
  export declare function findTenantPlaceholderAnyCase(sql: string, dialect?: TenantSqlDialect): string | undefined;
52
63
  /**
53
64
  * Substitute the `:tenant_<root>_ids` placeholders in `sql` with the IDs from
54
- * `scope` — as escaped literals (`"sql-only"`), or as dialect driver markers plus
55
- * a `params` array (`"sql-params"`). Only placeholders in code regions are
56
- * touched; text inside string literals and quoted identifiers is left as-is.
65
+ * `scope` — as dialect driver markers plus a `params` array (`"sql-params"`, the
66
+ * default), or as escaped literals (`"sql-only"`, for a tool that takes one SQL
67
+ * string). Only placeholders in code regions are touched; text inside string
68
+ * literals and quoted identifiers is left as-is.
57
69
  *
58
70
  * A `subtree` access must already be expanded into per-root IDs (a `multi_root`
59
71
  * access, or `ids` when the subtree is one root table): `ask()` does this via its
@@ -61,11 +73,14 @@ export declare function findTenantPlaceholderAnyCase(sql: string, dialect?: Tena
61
73
  * an unexpanded `subtree` throws (`SUBTREE_NOT_RESOLVABLE`) rather than bind the
62
74
  * seed IDs only.
63
75
  *
76
+ * Throws `TenantScopeError` (`TENANT_SQL_MODE_REQUIRED`) for a `mode` other than
77
+ * `"sql-only"` or `"sql-params"`.
64
78
  * Also throws `TenantScopeError` when a placeholder cannot be resolved
65
79
  * (`UNRESOLVED_TENANT_PLACEHOLDER`) or when a multi-ID scope meets a predicate
66
- * with no list form (`UNSUPPORTED_TENANT_PREDICATE`), and in `sql-only` mode when
67
- * a tenant ID holds a backslash but the dialect's escaping is unknown
68
- * (`UNESCAPABLE_TENANT_ID`). Throws `SchemaParseError` when two of the policy's roots
80
+ * with no list form (`UNSUPPORTED_TENANT_PREDICATE`), and in `sql-only` mode when a
81
+ * tenant ID contains a backslash or a character outside printable ASCII, on every dialect
82
+ * (`UNESCAPABLE_TENANT_ID`).
83
+ * Throws `SchemaParseError` when two of the policy's roots
69
84
  * derive the same placeholder, rather than bind one root's IDs through the other's.
70
85
  *
71
86
  * A `global` scope binds no IDs: SQL without a tenant placeholder is returned unchanged,
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-placeholders.d.ts","sourceRoot":"","sources":["../../src/sql/tenant-placeholders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAEL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAEjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiBzF,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,GAC5D;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC;AAerF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,CAAC;AAMxD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAM3F;AAmED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,oBAAoB,GAAG,0BAA0B,GAAG,qBAAqB,GAChF,gBAAgB,CASlB;AA8FD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAQxG;AAuJD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,sBAAsB,EAC9B,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE,mBAAgC,EACtC,eAAe,GAAE,MAAU,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,uBAAuB,CA2CzB"}
1
+ {"version":3,"file":"tenant-placeholders.d.ts","sourceRoot":"","sources":["../../src/sql/tenant-placeholders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAEL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAEjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgBzE,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,mBAAkC,CAAC;AAEzE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,mBAAmB,CAMtG;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,GAC5D;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC;AAerF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,CAAC;AAMxD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAM3F;AAmED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,oBAAoB,GAAG,0BAA0B,GAAG,qBAAqB,GAChF,gBAAgB,CASlB;AAmGD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAQxG;AAkJD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,sBAAsB,EAC9B,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE,mBAA6C,EACnD,eAAe,GAAE,MAAU,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,uBAAuB,CA4CzB"}
@@ -1,7 +1,23 @@
1
1
  import { TenantScopeError } from "../errors.js";
2
2
  import { assertDistinctRootPlaceholders, placeholderForRoot, placeholderForTenantRoot, } from "../schema/v2/tenant-policy.js";
3
- import { getDialectSpec, isBuiltInDialectId } from "./dialect-spec.js";
4
- import { escapeSqlLiteral, escapeSqlLiteralLegacy, formatMarker, isTenantPlaceholderName, markerStyleForDialect, scanPlaceholders, scanTenantPlaceholders, } from "./bind.js";
3
+ import { isBuiltInDialectId } from "./dialect-spec.js";
4
+ import { escapeSqlLiteral, formatMarker, isTenantPlaceholderName, markerStyleForDialect, scanPlaceholders, scanTenantPlaceholders, } from "./bind.js";
5
+ /**
6
+ * The `tenantSqlMode` used when a caller doesn't set one: tenant IDs leave the SQL text
7
+ * and bind through the dialect's driver markers. Hosts that report or forward the mode
8
+ * import this rather than hard-code it.
9
+ */
10
+ export const DEFAULT_TENANT_SQL_MODE = "sql-params";
11
+ /**
12
+ * Refuse a `tenantSqlMode` that is neither `"sql-only"` nor `"sql-params"`. Rendering it as
13
+ * either would guess at the host's intent, and a custom `AskDialect`'s `$N` markers are money
14
+ * constants on SQL Server, so it fails closed (ADR 0024).
15
+ */
16
+ export function assertTenantSqlMode(mode, caller) {
17
+ if (mode === "sql-only" || mode === "sql-params")
18
+ return;
19
+ throw new TenantScopeError(`${caller} got tenantSqlMode ${JSON.stringify(mode)}; it must be 'sql-params' or 'sql-only'.`, "TENANT_SQL_MODE_REQUIRED");
20
+ }
5
21
  /** The lexer input for a {@link TenantSqlDialect}: only meaningful when an `id` is known. */
6
22
  function lexerDialect(dialect) {
7
23
  return dialect?.id === undefined
@@ -89,22 +105,26 @@ export function unexpandedSubtreeError(tenantRoot, caller) {
89
105
  // ---------------------------------------------------------------------------
90
106
  // Substitution — token-aware, one edit per code-region occurrence
91
107
  // ---------------------------------------------------------------------------
92
- function escapeTenantId(value, dialect) {
93
- if (dialect === undefined) {
94
- return escapeSqlLiteralLegacy(value);
95
- }
96
- let backslashEscapes = dialect.backslashEscapes;
97
- if (backslashEscapes === undefined && dialect.id !== undefined && isBuiltInDialectId(dialect.id)) {
98
- backslashEscapes = getDialectSpec(dialect.id).backslashEscapes;
99
- }
100
- if (backslashEscapes === undefined && value.includes("\\")) {
101
- // Doubling quotes alone leaves `\'` able to close the literal on an engine
102
- // that reads backslash escapes (MySQL's default), so don't guess.
103
- throw new TenantScopeError(`A tenant ID contains a backslash, and dialect '${dialect.id ?? "(no id)"}' does not say ` +
104
- "whether backslash escapes inside string literals. Set backslashEscapes on the dialect, " +
105
- "or use tenantSqlMode 'sql-params'.", "UNESCAPABLE_TENANT_ID");
108
+ /** Printable ASCII without the backslash: the only characters a tenant-ID literal may hold. */
109
+ const INLINABLE_TENANT_ID = /^[\x20-\x5b\x5d-\x7e]*$/;
110
+ /**
111
+ * Inline one tenant ID as a string literal. A literal of printable ASCII, with no
112
+ * backslash and its quotes doubled, reads the same whether or not the server treats
113
+ * backslash as an escape, and goes out as the same bytes in every ASCII-compatible
114
+ * connection charset. Any other ID has no such form: a backslash breaks out on a server
115
+ * that reads strings differently from the dialect (Postgres with
116
+ * `standard_conforming_strings = off`), and a non-ASCII character's bytes depend on the
117
+ * connection charset (`¥` is sent as 0x5C, a backslash, under `sjis`, `cp932` or `ujis`).
118
+ * So it's refused on every dialect, never guessed at (ADR 0024).
119
+ */
120
+ function escapeTenantId(value) {
121
+ if (!INLINABLE_TENANT_ID.test(value)) {
122
+ throw new TenantScopeError("A tenant ID contains a backslash or a character outside printable ASCII, which tenantSqlMode " +
123
+ "'sql-only' can't inline safely: a server whose string settings or connection charset differ from " +
124
+ "the dialect's can read it as the end of the literal. Use tenantSqlMode 'sql-params' (the default) " +
125
+ "to pass tenant IDs as driver parameters.", "UNESCAPABLE_TENANT_ID");
106
126
  }
107
- return escapeSqlLiteral(value, { backslashEscapes });
127
+ return escapeSqlLiteral(value, undefined);
108
128
  }
109
129
  /**
110
130
  * Replace every tenant placeholder that sits in a code region of `sql`.
@@ -244,7 +264,7 @@ function unsupportedPredicate(occ, op) {
244
264
  // Replace placeholders — SQL-only mode (inline literals)
245
265
  // ---------------------------------------------------------------------------
246
266
  function replacePlaceholdersWithLiterals(sql, resolved, dialect) {
247
- return substituteTenantPlaceholders(sql, resolved, (r) => r.ids.map((id) => escapeTenantId(id, dialect)), dialect);
267
+ return substituteTenantPlaceholders(sql, resolved, (r) => r.ids.map(escapeTenantId), dialect);
248
268
  }
249
269
  // ---------------------------------------------------------------------------
250
270
  // Replace placeholders — SQL+params mode (dialect driver markers)
@@ -286,9 +306,10 @@ function replacePlaceholdersWithParams(sql, resolved, startIndex = 1, dialect) {
286
306
  // ---------------------------------------------------------------------------
287
307
  /**
288
308
  * Substitute the `:tenant_<root>_ids` placeholders in `sql` with the IDs from
289
- * `scope` — as escaped literals (`"sql-only"`), or as dialect driver markers plus
290
- * a `params` array (`"sql-params"`). Only placeholders in code regions are
291
- * touched; text inside string literals and quoted identifiers is left as-is.
309
+ * `scope` — as dialect driver markers plus a `params` array (`"sql-params"`, the
310
+ * default), or as escaped literals (`"sql-only"`, for a tool that takes one SQL
311
+ * string). Only placeholders in code regions are touched; text inside string
312
+ * literals and quoted identifiers is left as-is.
292
313
  *
293
314
  * A `subtree` access must already be expanded into per-root IDs (a `multi_root`
294
315
  * access, or `ids` when the subtree is one root table): `ask()` does this via its
@@ -296,11 +317,14 @@ function replacePlaceholdersWithParams(sql, resolved, startIndex = 1, dialect) {
296
317
  * an unexpanded `subtree` throws (`SUBTREE_NOT_RESOLVABLE`) rather than bind the
297
318
  * seed IDs only.
298
319
  *
320
+ * Throws `TenantScopeError` (`TENANT_SQL_MODE_REQUIRED`) for a `mode` other than
321
+ * `"sql-only"` or `"sql-params"`.
299
322
  * Also throws `TenantScopeError` when a placeholder cannot be resolved
300
323
  * (`UNRESOLVED_TENANT_PLACEHOLDER`) or when a multi-ID scope meets a predicate
301
- * with no list form (`UNSUPPORTED_TENANT_PREDICATE`), and in `sql-only` mode when
302
- * a tenant ID holds a backslash but the dialect's escaping is unknown
303
- * (`UNESCAPABLE_TENANT_ID`). Throws `SchemaParseError` when two of the policy's roots
324
+ * with no list form (`UNSUPPORTED_TENANT_PREDICATE`), and in `sql-only` mode when a
325
+ * tenant ID contains a backslash or a character outside printable ASCII, on every dialect
326
+ * (`UNESCAPABLE_TENANT_ID`).
327
+ * Throws `SchemaParseError` when two of the policy's roots
304
328
  * derive the same placeholder, rather than bind one root's IDs through the other's.
305
329
  *
306
330
  * A `global` scope binds no IDs: SQL without a tenant placeholder is returned unchanged,
@@ -308,7 +332,8 @@ function replacePlaceholdersWithParams(sql, resolved, startIndex = 1, dialect) {
308
332
  * fill it (ADR 0010). A placeholder in any casing but the exact lowercase form throws the
309
333
  * same reason under every scope.
310
334
  */
311
- export function resolveTenantSql(sql, policy, scope, mode = "sql-only", paramStartIndex = 1, dialect) {
335
+ export function resolveTenantSql(sql, policy, scope, mode = DEFAULT_TENANT_SQL_MODE, paramStartIndex = 1, dialect) {
336
+ assertTenantSqlMode(mode, "resolveTenantSql()");
312
337
  if (scope.access.kind === "subtree") {
313
338
  throw unexpandedSubtreeError(scope.access.tenantRoot, "resolveTenantSql()");
314
339
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-placeholders.js","sourceRoot":"","sources":["../../src/sql/tenant-placeholders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenant-placeholders.js","sourceRoot":"","sources":["../../src/sql/tenant-placeholders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AskDbLogger } from "../logging/askdb-logger.js";
2
+ import type { NormalizedTenantPolicy } from "../schema/v2/tenant-policy.js";
3
+ /**
4
+ * Log a loaded tenant policy's warnings once per loaded schema (ADR 0023).
5
+ * `loadSchema()` takes no logger, so the first `ask()` with a logger reports them.
6
+ */
7
+ export declare function logTenantPolicyWarningsOnce(logger: AskDbLogger | undefined, policy: NormalizedTenantPolicy): void;
8
+ //# sourceMappingURL=tenant-policy-warnings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-policy-warnings.d.ts","sourceRoot":"","sources":["../../src/sql/tenant-policy-warnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAM5E;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,sBAAsB,GAC7B,IAAI,CAcN"}
@@ -0,0 +1,21 @@
1
+ import { AskDbLogEvent } from "../logging/log-events.js";
2
+ import { formatTenantPolicyWarning } from "../schema/v2/tenant-policy.js";
3
+ /** Policies whose warnings were already logged. Each `loadSchema()` returns a new policy object. */
4
+ const logged = new WeakSet();
5
+ /**
6
+ * Log a loaded tenant policy's warnings once per loaded schema (ADR 0023).
7
+ * `loadSchema()` takes no logger, so the first `ask()` with a logger reports them.
8
+ */
9
+ export function logTenantPolicyWarningsOnce(logger, policy) {
10
+ if (!logger || policy.warnings.length === 0 || logged.has(policy))
11
+ return;
12
+ logged.add(policy);
13
+ const log = logger.warn ?? logger.info;
14
+ log.call(logger, {
15
+ event: AskDbLogEvent.TenantPolicyWarnings,
16
+ enforcement: policy.enforcement,
17
+ warningCount: policy.warnings.length,
18
+ warnings: policy.warnings,
19
+ }, `tenant policy doesn't match schema.json: ${policy.warnings.map(formatTenantPolicyWarning).join("; ")}`);
20
+ }
21
+ //# sourceMappingURL=tenant-policy-warnings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-policy-warnings.js","sourceRoot":"","sources":["../../src/sql/tenant-policy-warnings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,oGAAoG;AACpG,MAAM,MAAM,GAAG,IAAI,OAAO,EAA0B,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAA+B,EAC/B,MAA8B;IAE9B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO;IAC1E,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;IACvC,GAAG,CAAC,IAAI,CACN,MAAM,EACN;QACE,KAAK,EAAE,aAAa,CAAC,oBAAoB;QACzC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;QACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,EACD,4CAA4C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxG,CAAC;AACJ,CAAC"}
@@ -17,9 +17,14 @@ import { type DialectSpec } from "./dialect-spec.js";
17
17
  * 6. `SQL_MULTI_STATEMENT`, SQL Server lexer only (so also for a dialect id that is no
18
18
  * built-in engine) — a second statement written without `;`, which T-SQL doesn't
19
19
  * need, or code SQL Server may split differently from the lexer (see `tsql-batch.ts`).
20
- * 7. `SQL_FORBIDDEN_KEYWORD` — an unquoted keyword from the shared denylist or the
20
+ * 7. `SQL_LOCKING_READ` — a locking read, at any depth: `FOR UPDATE`, `FOR NO KEY UPDATE`,
21
+ * `FOR SHARE`, `FOR KEY SHARE` or `LOCK IN SHARE MODE` on every lexer, and on the SQL Server
22
+ * lexer a lock hint such as `UPDLOCK` or `HOLDLOCK` unquoted anywhere, or quoted alone in
23
+ * parentheses right after a name, at any depth and with trailing spaces, and any such name
24
+ * that isn't printable ASCII, which SQL Server may read as a hint (#319).
25
+ * 8. `SQL_FORBIDDEN_KEYWORD` — an unquoted keyword from the shared denylist or the
21
26
  * dialect's `extraForbiddenKeywords`.
22
- * 8. `SQL_FORBIDDEN_FUNCTION` — a call (`name(`) to a function in the dialect's
27
+ * 9. `SQL_FORBIDDEN_FUNCTION` — a call (`name(`) to a function in the dialect's
23
28
  * `blockedFunctions` (side-effecting or file/network/sleep functions).
24
29
  *
25
30
  * Then the dialect's `extraValidate` runs on the statement without its trailing `;`.
@@ -35,9 +40,16 @@ export declare function validateSelectSql(dialect: DialectSpec, sql: string): st
35
40
  /**
36
41
  * The words `validateSelectSql` rejects unquoted for a dialect, lowercase: the shared denylist
37
42
  * and the spec's `extraForbiddenKeywords`, plus every built-in spec's for an id that is no
38
- * built-in engine family. The NL→SQL prompt quotes names in this set.
43
+ * built-in engine family, and T-SQL's lock hints wherever the SQL Server lexer runs. The
44
+ * NL→SQL prompt quotes names in this set.
39
45
  */
40
46
  export declare function keywordsRejectedUnquoted(dialect: Pick<DialectSpec, "id" | "backslashEscapes" | "extraForbiddenKeywords">): Set<string>;
47
+ /**
48
+ * Whether `validateSelectSql` runs the SQL Server lexer, and so the T-SQL hint checks, for a
49
+ * dialect: `sqlserver`, and an id that is no built-in engine family, which is checked every
50
+ * engine's way. The NL→SQL prompt follows it (#319).
51
+ */
52
+ export declare function checkedAsTsql(dialect: Pick<DialectSpec, "id" | "backslashEscapes">): boolean;
41
53
  /** Explanation of guardrails satisfied by a string already passing {@link validateSelectSql}. */
42
54
  export type SelectGuardrailExplain = {
43
55
  statementKind: "select" | "with";
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/sql/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAyCxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAyB3E;AA6GD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,GAAG,wBAAwB,CAAC,GAC/E,GAAG,CAAC,MAAM,CAAC,CAIb;AAsCD,iGAAiG;AACjG,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,6FAA6F;AAC7F,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,sBAAsB,CAiB5F"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/sql/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAyCxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAyB3E;AAsHD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,GAAG,wBAAwB,CAAC,GAC/E,GAAG,CAAC,MAAM,CAAC,CAIb;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,CAAC,GAAG,OAAO,CAG5F;AAqHD,iGAAiG;AACjG,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,6FAA6F;AAC7F,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,sBAAsB,CAkB5F"}