@typed-sql/compiler 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/README.md +28 -5
  3. package/dist/packages/compiler/src/compatibility.d.ts +66 -0
  4. package/dist/packages/compiler/src/compatibility.d.ts.map +1 -0
  5. package/dist/packages/compiler/src/compatibility.js +786 -0
  6. package/dist/packages/compiler/src/compatibility.js.map +1 -0
  7. package/dist/packages/compiler/src/compiler.d.ts +16 -1
  8. package/dist/packages/compiler/src/compiler.d.ts.map +1 -1
  9. package/dist/packages/compiler/src/compiler.js +67 -4
  10. package/dist/packages/compiler/src/compiler.js.map +1 -1
  11. package/dist/packages/compiler/src/index.d.ts +13 -3
  12. package/dist/packages/compiler/src/index.d.ts.map +1 -1
  13. package/dist/packages/compiler/src/index.js +6 -1
  14. package/dist/packages/compiler/src/index.js.map +1 -1
  15. package/dist/packages/compiler/src/manifest.d.ts +505 -0
  16. package/dist/packages/compiler/src/manifest.d.ts.map +1 -0
  17. package/dist/packages/compiler/src/manifest.js +628 -0
  18. package/dist/packages/compiler/src/manifest.js.map +1 -0
  19. package/dist/packages/compiler/src/plans.d.ts +88 -0
  20. package/dist/packages/compiler/src/plans.d.ts.map +1 -0
  21. package/dist/packages/compiler/src/plans.js +459 -0
  22. package/dist/packages/compiler/src/plans.js.map +1 -0
  23. package/dist/packages/compiler/src/project.d.ts +8 -0
  24. package/dist/packages/compiler/src/project.d.ts.map +1 -0
  25. package/dist/packages/compiler/src/project.js +62 -0
  26. package/dist/packages/compiler/src/project.js.map +1 -0
  27. package/dist/packages/compiler/src/scanner.d.ts +6 -0
  28. package/dist/packages/compiler/src/scanner.d.ts.map +1 -1
  29. package/dist/packages/compiler/src/scanner.js +46 -0
  30. package/dist/packages/compiler/src/scanner.js.map +1 -1
  31. package/dist/packages/compiler/src/verification.d.ts +106 -0
  32. package/dist/packages/compiler/src/verification.d.ts.map +1 -0
  33. package/dist/packages/compiler/src/verification.js +516 -0
  34. package/dist/packages/compiler/src/verification.js.map +1 -0
  35. package/package.json +4 -3
@@ -0,0 +1,516 @@
1
+ import { createHash } from "node:crypto";
2
+ import { isAbsolute, relative, resolve, sep } from "node:path";
3
+ import { compileSource } from "./compiler.js";
4
+ import { buildQueryManifest, serializeQueryManifest, } from "./manifest.js";
5
+ export const QUERY_VERIFICATION_FORMAT_VERSION = 1;
6
+ export const QUERY_VERIFIER_VERSION = "typed-sql-v1";
7
+ const sha256 = (value) => createHash("sha256").update(value).digest("hex");
8
+ const compareText = (left, right) => (left < right ? -1 : left > right ? 1 : 0);
9
+ function portableRelative(rootDir, file) {
10
+ const root = resolve(rootDir);
11
+ const path = relative(root, isAbsolute(file) ? resolve(file) : resolve(root, file))
12
+ .split(sep)
13
+ .join("/");
14
+ if (path.length === 0 || path === ".." || path.startsWith("../") || isAbsolute(path)) {
15
+ throw new TypeError(`Cannot make ${file} relative to ${rootDir}`);
16
+ }
17
+ return path;
18
+ }
19
+ function expectedColumn(column, index) {
20
+ return {
21
+ index: index + 1,
22
+ name: column.name,
23
+ tsType: column.tsType,
24
+ nullable: column.nullable,
25
+ ...(column.databaseType === undefined ? {} : { databaseType: column.databaseType }),
26
+ };
27
+ }
28
+ function expectedParameter(parameter) {
29
+ return {
30
+ index: parameter.index,
31
+ tsType: parameter.tsType,
32
+ nullable: parameter.nullable,
33
+ ...(parameter.databaseType === undefined ? {} : { databaseType: parameter.databaseType }),
34
+ };
35
+ }
36
+ /** Recompiles source only in memory and proves that it still matches the supplied manifest. */
37
+ export function collectQueryVerificationCandidates(options) {
38
+ const rebuilt = buildQueryManifest({
39
+ rootDir: options.rootDir,
40
+ sources: options.sources,
41
+ ...(options.projects === undefined ? {} : { projects: options.projects }),
42
+ dialect: options.dialect,
43
+ schema: options.schema,
44
+ ...(options.typePolicy === undefined ? {} : { typePolicy: options.typePolicy }),
45
+ compilerVersion: options.manifest.compilerVersion,
46
+ ...(options.maxStructuralVariants === undefined ? {} : { maxStructuralVariants: options.maxStructuralVariants }),
47
+ }).manifest;
48
+ if (serializeQueryManifest(rebuilt) !== serializeQueryManifest(options.manifest)) {
49
+ throw new TypeError("Query manifest is stale; regenerate it before live verification");
50
+ }
51
+ const entries = new Map(options.manifest.queries
52
+ .filter((entry) => entry.status === "resolved")
53
+ .map((entry) => [`${entry.source.file}\0${entry.source.range.start}`, entry]));
54
+ const candidates = [];
55
+ for (const input of options.sources) {
56
+ const file = portableRelative(options.rootDir, input.file);
57
+ const compilation = compileSource({
58
+ source: input.source,
59
+ dialect: options.dialect,
60
+ schema: options.schema,
61
+ ...(options.typePolicy === undefined ? {} : { typePolicy: options.typePolicy }),
62
+ ...(options.maxStructuralVariants === undefined ? {} : { maxStructuralVariants: options.maxStructuralVariants }),
63
+ });
64
+ for (const query of compilation.queries) {
65
+ const entry = entries.get(`${file}\0${query.query.range.start}`);
66
+ if (entry === undefined || entry.fingerprint !== query.fingerprint) {
67
+ throw new TypeError(`Query manifest does not match ${file}:${query.query.range.line}`);
68
+ }
69
+ for (const variant of query.variants) {
70
+ if (!entry.variants.some((manifestVariant) => manifestVariant.fingerprint === variant.fingerprint)) {
71
+ throw new TypeError(`Query manifest is missing variant ${variant.fingerprint}`);
72
+ }
73
+ candidates.push({
74
+ queryId: entry.id,
75
+ variantFingerprint: variant.fingerprint,
76
+ source: entry.source,
77
+ sql: variant.sql,
78
+ operation: variant.semantics.operation.value,
79
+ columns: variant.columns.map(expectedColumn),
80
+ parameters: variant.parameters.map(expectedParameter),
81
+ });
82
+ }
83
+ }
84
+ }
85
+ return candidates.sort((left, right) => compareText(left.source.file, right.source.file) ||
86
+ left.source.range.start - right.source.range.start ||
87
+ compareText(left.variantFingerprint, right.variantFingerprint));
88
+ }
89
+ function normalizedType(value) {
90
+ return value.trim().toLowerCase().replace(/\s+/gu, " ");
91
+ }
92
+ function topLevelUnionMembers(value) {
93
+ const members = [];
94
+ let start = 0;
95
+ let quote;
96
+ let escaped = false;
97
+ let depth = 0;
98
+ for (let index = 0; index < value.length; index += 1) {
99
+ const char = value[index];
100
+ if (quote !== undefined) {
101
+ if (escaped)
102
+ escaped = false;
103
+ else if (char === "\\")
104
+ escaped = true;
105
+ else if (char === quote)
106
+ quote = undefined;
107
+ continue;
108
+ }
109
+ if (char === '"' || char === "'")
110
+ quote = char;
111
+ else if (char === "(" || char === "[" || char === "{")
112
+ depth += 1;
113
+ else if (char === ")" || char === "]" || char === "}")
114
+ depth = Math.max(0, depth - 1);
115
+ else if (char === "|" && depth === 0) {
116
+ members.push(value.slice(start, index).trim());
117
+ start = index + 1;
118
+ }
119
+ }
120
+ members.push(value.slice(start).trim());
121
+ return members;
122
+ }
123
+ function primitiveType(member) {
124
+ if (["string", "number", "bigint", "boolean", "null", "undefined"].includes(member)) {
125
+ return member;
126
+ }
127
+ if (/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/iu.test(member))
128
+ return "number";
129
+ if (/^-?(?:0|[1-9]\d*)n$/u.test(member))
130
+ return "bigint";
131
+ if (member === "true" || member === "false")
132
+ return "boolean";
133
+ if (member.startsWith('"') && member.endsWith('"')) {
134
+ try {
135
+ return typeof JSON.parse(member) === "string" ? "string" : undefined;
136
+ }
137
+ catch {
138
+ return undefined;
139
+ }
140
+ }
141
+ return undefined;
142
+ }
143
+ /** Parameter metadata describes what the server accepts, so a compiler-side literal subset is safe. */
144
+ function parameterTypeCompatible(expected, actual) {
145
+ if (expected === actual)
146
+ return true;
147
+ const accepted = topLevelUnionMembers(actual);
148
+ const supplied = topLevelUnionMembers(expected);
149
+ return (supplied.length > 0 &&
150
+ supplied.every((member) => accepted.some((target) => member === target || (primitiveType(target) === target && primitiveType(member) === target))));
151
+ }
152
+ function compareField(target, expected, actual) {
153
+ const mismatches = [];
154
+ const add = (kind, expectedValue, actualValue) => mismatches.push({ kind, target, index: expected.index, expected: expectedValue, actual: actualValue });
155
+ if (target === "column" &&
156
+ expected.name !== undefined &&
157
+ actual.name !== undefined &&
158
+ expected.name !== actual.name) {
159
+ add("column-name", expected.name, actual.name);
160
+ }
161
+ if (expected.tsType !== "unknown" && actual.tsType !== undefined) {
162
+ if (expected.tsType !== actual.tsType &&
163
+ (target !== "parameter" || !parameterTypeCompatible(expected.tsType, actual.tsType))) {
164
+ add("typescript-type", expected.tsType, actual.tsType);
165
+ }
166
+ }
167
+ else if (expected.databaseType !== undefined &&
168
+ actual.databaseType !== undefined &&
169
+ normalizedType(expected.databaseType) !== normalizedType(actual.databaseType)) {
170
+ add("database-type", expected.databaseType, actual.databaseType);
171
+ }
172
+ if (actual.nullable !== undefined && expected.nullable !== actual.nullable) {
173
+ add("nullability", String(expected.nullable), String(actual.nullable));
174
+ }
175
+ return mismatches;
176
+ }
177
+ function compareEvidence(candidate, evidence) {
178
+ const mismatches = [];
179
+ if (candidate.columns.length !== evidence.columns.length) {
180
+ mismatches.push({
181
+ kind: "column-count",
182
+ target: "column",
183
+ expected: String(candidate.columns.length),
184
+ actual: String(evidence.columns.length),
185
+ });
186
+ }
187
+ if (candidate.parameters.length !== evidence.parameters.length) {
188
+ mismatches.push({
189
+ kind: "parameter-count",
190
+ target: "parameter",
191
+ expected: String(candidate.parameters.length),
192
+ actual: String(evidence.parameters.length),
193
+ });
194
+ }
195
+ for (let index = 0; index < Math.min(candidate.columns.length, evidence.columns.length); index += 1) {
196
+ mismatches.push(...compareField("column", candidate.columns[index], evidence.columns[index]));
197
+ }
198
+ for (let index = 0; index < Math.min(candidate.parameters.length, evidence.parameters.length); index += 1) {
199
+ mismatches.push(...compareField("parameter", candidate.parameters[index], evidence.parameters[index]));
200
+ }
201
+ return mismatches;
202
+ }
203
+ function safeToPrepare(operation) {
204
+ return operation === "read" || operation === "write";
205
+ }
206
+ async function boundedMap(values, concurrency, visit) {
207
+ const output = new Array(values.length);
208
+ let cursor = 0;
209
+ const worker = async () => {
210
+ while (cursor < values.length) {
211
+ const index = cursor++;
212
+ output[index] = await visit(values[index]);
213
+ }
214
+ };
215
+ await Promise.all(Array.from({ length: Math.min(concurrency, values.length) }, worker));
216
+ return output;
217
+ }
218
+ function canonicalize(value) {
219
+ if (Array.isArray(value))
220
+ return value.map(canonicalize);
221
+ if (typeof value !== "object" || value === null)
222
+ return value;
223
+ return Object.fromEntries(Object.entries(value)
224
+ .sort(([left], [right]) => compareText(left, right))
225
+ .map(([key, item]) => [key, canonicalize(item)]));
226
+ }
227
+ function normalizedServer(server) {
228
+ if (typeof server.version !== "string" || server.version.length === 0)
229
+ throw new TypeError("Live verifier server.version must be a non-empty string");
230
+ return {
231
+ version: server.version,
232
+ ...(server.features === undefined ? {} : { features: [...new Set(server.features)].sort(compareText) }),
233
+ };
234
+ }
235
+ function verificationCacheKey(value) {
236
+ return `sha256:${sha256(JSON.stringify(canonicalize({
237
+ verifierVersion: QUERY_VERIFIER_VERSION,
238
+ adapterVersion: value.adapterVersion,
239
+ dialect: value.dialect,
240
+ manifestHash: value.manifestHash,
241
+ server: normalizedServer(value.server),
242
+ entries: value.entries,
243
+ })))}`;
244
+ }
245
+ export async function verifyQueryManifest(options) {
246
+ if (options.verifier.dialect !== options.manifest.dialect.id)
247
+ throw new TypeError(`Verifier dialect ${options.verifier.dialect} does not match ${options.manifest.dialect.id}`);
248
+ const concurrency = options.concurrency ?? 4;
249
+ if (!Number.isSafeInteger(concurrency) || concurrency < 1)
250
+ throw new TypeError("verification concurrency must be a positive safe integer");
251
+ if (options.verifier.adapterVersion.length === 0)
252
+ throw new TypeError("Verifier adapterVersion must not be empty");
253
+ const server = normalizedServer(await options.verifier.server());
254
+ const byQuery = new Map();
255
+ for (const candidate of options.candidates)
256
+ byQuery.set(candidate.queryId, [...(byQuery.get(candidate.queryId) ?? []), candidate]);
257
+ const work = [];
258
+ for (const query of options.manifest.queries) {
259
+ if (query.status === "unresolved") {
260
+ work.push({
261
+ queryId: query.id,
262
+ source: query.source,
263
+ status: "skipped",
264
+ code: "TSQ501",
265
+ reason: "manifest-unresolved",
266
+ });
267
+ continue;
268
+ }
269
+ const candidates = byQuery.get(query.id) ?? [];
270
+ for (const variant of query.variants) {
271
+ const candidate = candidates.find((item) => item.variantFingerprint === variant.fingerprint);
272
+ if (candidate === undefined)
273
+ work.push({
274
+ queryId: query.id,
275
+ variantFingerprint: variant.fingerprint,
276
+ source: query.source,
277
+ status: "skipped",
278
+ code: "TSQ501",
279
+ reason: "candidate-missing",
280
+ });
281
+ else if (!safeToPrepare(candidate.operation))
282
+ work.push({
283
+ queryId: query.id,
284
+ variantFingerprint: variant.fingerprint,
285
+ source: query.source,
286
+ status: "skipped",
287
+ code: "TSQ501",
288
+ reason: "unsafe-operation",
289
+ });
290
+ else
291
+ work.push(candidate);
292
+ }
293
+ }
294
+ const entries = await boundedMap(work, concurrency, async (item) => {
295
+ if ("status" in item)
296
+ return item;
297
+ try {
298
+ const native = await options.verifier.verify({
299
+ fingerprint: item.variantFingerprint,
300
+ sql: item.sql,
301
+ operation: item.operation,
302
+ });
303
+ if (native.unavailable !== undefined && native.unavailable.length > 0) {
304
+ return {
305
+ queryId: item.queryId,
306
+ variantFingerprint: item.variantFingerprint,
307
+ source: item.source,
308
+ status: "skipped",
309
+ code: "TSQ501",
310
+ reason: "native-metadata-unavailable",
311
+ };
312
+ }
313
+ const evidence = {
314
+ columns: native.columns.map((field) => ({ ...field })),
315
+ parameters: native.parameters.map((field) => ({ ...field })),
316
+ };
317
+ const mismatches = compareEvidence(item, evidence);
318
+ return mismatches.length === 0
319
+ ? {
320
+ queryId: item.queryId,
321
+ variantFingerprint: item.variantFingerprint,
322
+ source: item.source,
323
+ status: "verified",
324
+ evidence,
325
+ }
326
+ : {
327
+ queryId: item.queryId,
328
+ variantFingerprint: item.variantFingerprint,
329
+ source: item.source,
330
+ status: "mismatch",
331
+ code: "TSQ500",
332
+ mismatches,
333
+ evidence,
334
+ };
335
+ }
336
+ catch {
337
+ return {
338
+ queryId: item.queryId,
339
+ variantFingerprint: item.variantFingerprint,
340
+ source: item.source,
341
+ status: "error",
342
+ code: "TSQ502",
343
+ reason: "native-verification-failed",
344
+ };
345
+ }
346
+ });
347
+ const manifestHash = `sha256:${sha256(serializeQueryManifest(options.manifest))}`;
348
+ const cacheKey = verificationCacheKey({
349
+ adapterVersion: options.verifier.adapterVersion,
350
+ dialect: options.verifier.dialect,
351
+ manifestHash,
352
+ server,
353
+ entries,
354
+ });
355
+ const proof = {
356
+ formatVersion: QUERY_VERIFICATION_FORMAT_VERSION,
357
+ verifierVersion: QUERY_VERIFIER_VERSION,
358
+ adapterVersion: options.verifier.adapterVersion,
359
+ dialect: options.verifier.dialect,
360
+ manifestHash,
361
+ cacheKey,
362
+ server,
363
+ entries,
364
+ };
365
+ return {
366
+ proof,
367
+ verified: entries.filter((entry) => entry.status === "verified").length,
368
+ mismatched: entries.filter((entry) => entry.status === "mismatch").length,
369
+ skipped: entries.filter((entry) => entry.status === "skipped").length,
370
+ failed: entries.filter((entry) => entry.status === "error").length,
371
+ };
372
+ }
373
+ export function serializeQueryVerificationProof(proof) {
374
+ return `${JSON.stringify(canonicalize(proof), null, 2)}\n`;
375
+ }
376
+ function record(value) {
377
+ return typeof value === "object" && value !== null && !Array.isArray(value);
378
+ }
379
+ function fingerprint(value, description) {
380
+ if (typeof value !== "string" || !/^sha256:[a-f\d]{64}$/u.test(value)) {
381
+ throw new TypeError(`${description} must be a SHA-256 fingerprint`);
382
+ }
383
+ }
384
+ function sourceLocation(value) {
385
+ if (!record(value) ||
386
+ typeof value.file !== "string" ||
387
+ value.file.length === 0 ||
388
+ value.file === ".." ||
389
+ value.file.startsWith("../") ||
390
+ isAbsolute(value.file)) {
391
+ throw new TypeError("Query verification source must contain a relative file");
392
+ }
393
+ if (!record(value.range))
394
+ throw new TypeError("Query verification source range is invalid");
395
+ for (const property of ["start", "end", "line", "column"]) {
396
+ if (!Number.isSafeInteger(value.range[property]))
397
+ throw new TypeError("Query verification source range is invalid");
398
+ }
399
+ }
400
+ function evidenceFields(value, description) {
401
+ if (!Array.isArray(value))
402
+ throw new TypeError(`${description} must be an array`);
403
+ for (const field of value) {
404
+ if (!record(field) || !Number.isSafeInteger(field.index) || field.index < 1) {
405
+ throw new TypeError(`${description} contains an invalid field`);
406
+ }
407
+ for (const property of ["name", "databaseType", "tsType"]) {
408
+ if (field[property] !== undefined && typeof field[property] !== "string") {
409
+ throw new TypeError(`${description} contains an invalid ${property}`);
410
+ }
411
+ }
412
+ if (field.nullable !== undefined && typeof field.nullable !== "boolean") {
413
+ throw new TypeError(`${description} contains invalid nullability`);
414
+ }
415
+ }
416
+ }
417
+ function proofEvidence(value) {
418
+ if (!record(value))
419
+ throw new TypeError("Query verification evidence must be an object");
420
+ evidenceFields(value.columns, "Query verification columns");
421
+ evidenceFields(value.parameters, "Query verification parameters");
422
+ }
423
+ export function parseQueryVerificationProof(value) {
424
+ if (!record(value))
425
+ throw new TypeError("Query verification proof must be an object");
426
+ if (value.formatVersion !== QUERY_VERIFICATION_FORMAT_VERSION)
427
+ throw new TypeError(`Unsupported query verification format ${String(value.formatVersion)}`);
428
+ if (value.verifierVersion !== QUERY_VERIFIER_VERSION)
429
+ throw new TypeError(`Unsupported query verifier version ${String(value.verifierVersion)}`);
430
+ for (const property of ["adapterVersion", "dialect", "manifestHash", "cacheKey"]) {
431
+ if (typeof value[property] !== "string" || value[property].length === 0)
432
+ throw new TypeError(`Query verification proof ${property} must be a non-empty string`);
433
+ }
434
+ fingerprint(value.manifestHash, "Query verification manifestHash");
435
+ fingerprint(value.cacheKey, "Query verification cacheKey");
436
+ if (!record(value.server) ||
437
+ typeof value.server.version !== "string" ||
438
+ value.server.version.length === 0 ||
439
+ (value.server.features !== undefined &&
440
+ (!Array.isArray(value.server.features) ||
441
+ value.server.features.some((feature) => typeof feature !== "string"))) ||
442
+ !Array.isArray(value.entries))
443
+ throw new TypeError("Query verification proof server or entries are invalid");
444
+ const statuses = new Set(["verified", "mismatch", "skipped", "error"]);
445
+ const mismatchKinds = new Set([
446
+ "column-count",
447
+ "parameter-count",
448
+ "column-name",
449
+ "database-type",
450
+ "typescript-type",
451
+ "nullability",
452
+ ]);
453
+ const skipReasons = new Set([
454
+ "manifest-unresolved",
455
+ "unsafe-operation",
456
+ "candidate-missing",
457
+ "native-metadata-unavailable",
458
+ ]);
459
+ for (const entry of value.entries) {
460
+ if (!record(entry) || !statuses.has(String(entry.status)))
461
+ throw new TypeError("Query verification proof contains an invalid entry");
462
+ fingerprint(entry.queryId, "Query verification queryId");
463
+ sourceLocation(entry.source);
464
+ if (entry.variantFingerprint !== undefined)
465
+ fingerprint(entry.variantFingerprint, "Query verification variant");
466
+ if (entry.status !== "skipped" && entry.variantFingerprint === undefined) {
467
+ throw new TypeError("Query verification entry requires a variant fingerprint");
468
+ }
469
+ if (entry.status === "verified")
470
+ proofEvidence(entry.evidence);
471
+ else if (entry.status === "mismatch") {
472
+ if (entry.code !== "TSQ500" || !Array.isArray(entry.mismatches))
473
+ throw new TypeError("Query verification mismatch is invalid");
474
+ proofEvidence(entry.evidence);
475
+ for (const mismatch of entry.mismatches) {
476
+ if (!record(mismatch) ||
477
+ !mismatchKinds.has(mismatch.kind) ||
478
+ !["column", "parameter"].includes(String(mismatch.target)) ||
479
+ (mismatch.index !== undefined && (!Number.isSafeInteger(mismatch.index) || mismatch.index < 1)) ||
480
+ typeof mismatch.expected !== "string" ||
481
+ typeof mismatch.actual !== "string")
482
+ throw new TypeError("Query verification mismatch evidence is invalid");
483
+ }
484
+ }
485
+ else if (entry.status === "skipped") {
486
+ if (entry.code !== "TSQ501" ||
487
+ !skipReasons.has(entry.reason) ||
488
+ (entry.reason !== "manifest-unresolved" && entry.variantFingerprint === undefined))
489
+ throw new TypeError("Query verification skip is invalid");
490
+ }
491
+ else if (entry.code !== "TSQ502" || entry.reason !== "native-verification-failed") {
492
+ throw new TypeError("Query verification failure is invalid");
493
+ }
494
+ }
495
+ return value;
496
+ }
497
+ export function assertQueryVerificationProofCurrent(manifest, proof, verifier) {
498
+ const manifestHash = `sha256:${sha256(serializeQueryManifest(manifest))}`;
499
+ if (proof.manifestHash !== manifestHash)
500
+ throw new TypeError("Query verification proof is stale for this manifest");
501
+ if (proof.dialect !== manifest.dialect.id)
502
+ throw new TypeError("Query verification proof dialect is stale");
503
+ if (verifier !== undefined &&
504
+ (proof.dialect !== verifier.dialect || proof.adapterVersion !== verifier.adapterVersion))
505
+ throw new TypeError("Query verification proof adapter is stale");
506
+ const expectedCacheKey = verificationCacheKey({
507
+ adapterVersion: proof.adapterVersion,
508
+ dialect: proof.dialect,
509
+ manifestHash,
510
+ server: proof.server,
511
+ entries: proof.entries,
512
+ });
513
+ if (proof.cacheKey !== expectedCacheKey)
514
+ throw new TypeError("Query verification proof cache key is stale");
515
+ }
516
+ //# sourceMappingURL=verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../../src/verification.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@typed-sql/compiler",
3
- "version": "1.0.0",
4
- "description": "Dialect-neutral TypeScript source extraction and typed SQL compilation.",
3
+ "version": "2.0.0",
4
+ "description": "Dialect-neutral TypeScript source compilation, query evidence, and migration compatibility.",
5
5
  "license": "MIT",
6
6
  "author": "Lojhan",
7
7
  "repository": {
@@ -36,7 +36,8 @@
36
36
  ".": "./dist/packages/compiler/src/index.js"
37
37
  },
38
38
  "dependencies": {
39
- "@typed-sql/core": "1.0.0"
39
+ "@typed-sql/core": "2.0.0",
40
+ "@typed-sql/schema": "2.0.0"
40
41
  },
41
42
  "scripts": {
42
43
  "test": "poku test --reporter=compact --enforce",