@typed-sql/compiler 2.0.0-rc.1 → 2.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/CHANGELOG.md +89 -0
- package/README.md +14 -0
- package/dist/packages/compiler/src/analysis.d.ts +93 -0
- package/dist/packages/compiler/src/analysis.d.ts.map +1 -0
- package/dist/packages/compiler/src/analysis.js +149 -0
- package/dist/packages/compiler/src/analysis.js.map +1 -0
- package/dist/packages/compiler/src/check.d.ts +5 -0
- package/dist/packages/compiler/src/check.d.ts.map +1 -1
- package/dist/packages/compiler/src/check.js +40 -14
- package/dist/packages/compiler/src/check.js.map +1 -1
- package/dist/packages/compiler/src/compatibility.d.ts +7 -5
- package/dist/packages/compiler/src/compatibility.d.ts.map +1 -1
- package/dist/packages/compiler/src/compatibility.js +312 -11
- package/dist/packages/compiler/src/compatibility.js.map +1 -1
- package/dist/packages/compiler/src/compiler.d.ts +30 -1
- package/dist/packages/compiler/src/compiler.d.ts.map +1 -1
- package/dist/packages/compiler/src/compiler.js +162 -17
- package/dist/packages/compiler/src/compiler.js.map +1 -1
- package/dist/packages/compiler/src/index.d.ts +7 -3
- package/dist/packages/compiler/src/index.d.ts.map +1 -1
- package/dist/packages/compiler/src/index.js +3 -1
- package/dist/packages/compiler/src/index.js.map +1 -1
- package/dist/packages/compiler/src/manifest.d.ts +162 -1
- package/dist/packages/compiler/src/manifest.d.ts.map +1 -1
- package/dist/packages/compiler/src/manifest.js +233 -22
- package/dist/packages/compiler/src/manifest.js.map +1 -1
- package/dist/packages/compiler/src/plans.d.ts +1 -0
- package/dist/packages/compiler/src/plans.d.ts.map +1 -1
- package/dist/packages/compiler/src/plans.js +6 -1
- package/dist/packages/compiler/src/plans.js.map +1 -1
- package/dist/packages/compiler/src/repeated-fragments.d.ts +20 -0
- package/dist/packages/compiler/src/repeated-fragments.d.ts.map +1 -0
- package/dist/packages/compiler/src/repeated-fragments.js +108 -0
- package/dist/packages/compiler/src/repeated-fragments.js.map +1 -0
- package/dist/packages/compiler/src/scanner.d.ts +17 -0
- package/dist/packages/compiler/src/scanner.d.ts.map +1 -1
- package/dist/packages/compiler/src/scanner.js +213 -1
- package/dist/packages/compiler/src/scanner.js.map +1 -1
- package/dist/packages/compiler/src/typescript.d.ts +16 -0
- package/dist/packages/compiler/src/typescript.d.ts.map +1 -0
- package/dist/packages/compiler/src/typescript.js +35 -0
- package/dist/packages/compiler/src/typescript.js.map +1 -0
- package/dist/packages/compiler/src/verification.d.ts +3 -0
- package/dist/packages/compiler/src/verification.d.ts.map +1 -1
- package/dist/packages/compiler/src/verification.js +15 -0
- package/dist/packages/compiler/src/verification.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DialectCapabilityState, type DialectPlugin, type QuerySemantics, type SchemaSnapshot, type SourceRange, type SqlDiagnostic } from "@typed-sql/core";
|
|
2
2
|
export declare const QUERY_MANIFEST_FORMAT_VERSION: 1;
|
|
3
3
|
export declare const QUERY_FINGERPRINT_ALGORITHM: "typed-sql-v1";
|
|
4
4
|
export interface QueryManifestSourceInput {
|
|
@@ -52,6 +52,23 @@ export interface QueryManifestParameter {
|
|
|
52
52
|
readonly nullable: boolean;
|
|
53
53
|
readonly databaseType?: string;
|
|
54
54
|
}
|
|
55
|
+
export interface QueryManifestRepeatedFragment {
|
|
56
|
+
readonly kind: "repeated-fragment";
|
|
57
|
+
readonly fingerprint: string;
|
|
58
|
+
readonly sourceSpan: SourceRange;
|
|
59
|
+
readonly element: {
|
|
60
|
+
readonly kind: "fragment";
|
|
61
|
+
readonly sqlSkeleton: string;
|
|
62
|
+
readonly fingerprint: string;
|
|
63
|
+
};
|
|
64
|
+
readonly separator: {
|
|
65
|
+
readonly kind: "static-fragment";
|
|
66
|
+
readonly text: string;
|
|
67
|
+
readonly fingerprint: string;
|
|
68
|
+
};
|
|
69
|
+
readonly minimumItems: 1;
|
|
70
|
+
readonly parameterPattern: readonly QueryManifestParameter[];
|
|
71
|
+
}
|
|
55
72
|
export interface QueryManifestVariant {
|
|
56
73
|
readonly fingerprint: string;
|
|
57
74
|
readonly choices: Readonly<Record<string, boolean>>;
|
|
@@ -60,6 +77,11 @@ export interface QueryManifestVariant {
|
|
|
60
77
|
readonly columns: readonly QueryManifestColumn[];
|
|
61
78
|
readonly parameters: readonly QueryManifestParameter[];
|
|
62
79
|
readonly semantics: QueryManifestSemantics;
|
|
80
|
+
/** Evidence for declared dialect capabilities this variant actually uses. */
|
|
81
|
+
readonly capabilityEvidence?: readonly QueryManifestCapabilityEvidence[];
|
|
82
|
+
}
|
|
83
|
+
export interface QueryManifestCapabilityEvidence extends DialectCapabilityState {
|
|
84
|
+
readonly capability: string;
|
|
63
85
|
}
|
|
64
86
|
interface QueryManifestEntryBase {
|
|
65
87
|
readonly id: string;
|
|
@@ -72,8 +94,11 @@ export interface ResolvedQueryManifestEntry extends QueryManifestEntryBase {
|
|
|
72
94
|
readonly rowType: string;
|
|
73
95
|
readonly parameterType: string;
|
|
74
96
|
readonly diagnostics: readonly QueryManifestDiagnostic[];
|
|
97
|
+
readonly repeatedFragments?: readonly QueryManifestRepeatedFragment[];
|
|
75
98
|
readonly variants: readonly QueryManifestVariant[];
|
|
76
99
|
readonly semantics: QueryManifestSemantics;
|
|
100
|
+
/** Evidence for declared dialect capabilities this query actually uses. */
|
|
101
|
+
readonly capabilityEvidence?: readonly QueryManifestCapabilityEvidence[];
|
|
77
102
|
}
|
|
78
103
|
export interface UnresolvedQueryManifestEntry extends QueryManifestEntryBase {
|
|
79
104
|
readonly status: "unresolved";
|
|
@@ -88,7 +113,11 @@ export interface QueryManifest {
|
|
|
88
113
|
readonly dialect: {
|
|
89
114
|
readonly id: string;
|
|
90
115
|
readonly grammarVersion: string;
|
|
116
|
+
/** Hash of canonical grammar/server capability evidence used for this analysis. */
|
|
117
|
+
readonly capabilityFingerprint?: string;
|
|
91
118
|
};
|
|
119
|
+
/** Schema contract used to produce this manifest; absent only on historical artifacts. */
|
|
120
|
+
readonly schemaFormat?: 1 | 2;
|
|
92
121
|
readonly schemaHash: string;
|
|
93
122
|
readonly typePolicyHash: string;
|
|
94
123
|
readonly projects: readonly string[];
|
|
@@ -188,6 +217,59 @@ export declare const QUERY_MANIFEST_JSON_SCHEMA: Readonly<{
|
|
|
188
217
|
};
|
|
189
218
|
};
|
|
190
219
|
};
|
|
220
|
+
readonly capabilityStateEvidence: {
|
|
221
|
+
readonly type: "object";
|
|
222
|
+
readonly required: readonly ["kind", "key", "value"];
|
|
223
|
+
readonly properties: {
|
|
224
|
+
readonly kind: {
|
|
225
|
+
readonly enum: readonly ["server-version", "feature", "setting", "policy", "grammar"];
|
|
226
|
+
};
|
|
227
|
+
readonly key: {
|
|
228
|
+
readonly type: "string";
|
|
229
|
+
readonly minLength: 1;
|
|
230
|
+
};
|
|
231
|
+
readonly value: {
|
|
232
|
+
readonly type: "string";
|
|
233
|
+
readonly minLength: 1;
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
readonly capabilityEvidence: {
|
|
238
|
+
readonly type: "object";
|
|
239
|
+
readonly required: readonly ["capability", "level", "reason", "evidence"];
|
|
240
|
+
readonly properties: {
|
|
241
|
+
readonly capability: {
|
|
242
|
+
readonly type: "string";
|
|
243
|
+
readonly pattern: "^[a-z][A-Za-z0-9]*$";
|
|
244
|
+
};
|
|
245
|
+
readonly level: {
|
|
246
|
+
readonly enum: readonly ["exact", "conservative", "unsupported"];
|
|
247
|
+
};
|
|
248
|
+
readonly reason: {
|
|
249
|
+
readonly type: "string";
|
|
250
|
+
readonly minLength: 1;
|
|
251
|
+
};
|
|
252
|
+
readonly since: {
|
|
253
|
+
readonly type: "string";
|
|
254
|
+
readonly minLength: 1;
|
|
255
|
+
};
|
|
256
|
+
readonly until: {
|
|
257
|
+
readonly type: "string";
|
|
258
|
+
readonly minLength: 1;
|
|
259
|
+
};
|
|
260
|
+
readonly diagnostic: {
|
|
261
|
+
readonly type: "string";
|
|
262
|
+
readonly minLength: 1;
|
|
263
|
+
};
|
|
264
|
+
readonly evidence: {
|
|
265
|
+
readonly type: "array";
|
|
266
|
+
readonly minItems: 1;
|
|
267
|
+
readonly items: {
|
|
268
|
+
readonly $ref: "#/$defs/capabilityStateEvidence";
|
|
269
|
+
};
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
};
|
|
191
273
|
readonly fact: {
|
|
192
274
|
readonly type: "object";
|
|
193
275
|
readonly required: readonly ["value", "evidence"];
|
|
@@ -318,6 +400,60 @@ export declare const QUERY_MANIFEST_JSON_SCHEMA: Readonly<{
|
|
|
318
400
|
};
|
|
319
401
|
};
|
|
320
402
|
};
|
|
403
|
+
readonly repeatedFragment: {
|
|
404
|
+
readonly type: "object";
|
|
405
|
+
readonly required: readonly ["kind", "fingerprint", "sourceSpan", "element", "separator", "minimumItems", "parameterPattern"];
|
|
406
|
+
readonly properties: {
|
|
407
|
+
readonly kind: {
|
|
408
|
+
readonly const: "repeated-fragment";
|
|
409
|
+
};
|
|
410
|
+
readonly fingerprint: {
|
|
411
|
+
readonly $ref: "#/$defs/fingerprint";
|
|
412
|
+
};
|
|
413
|
+
readonly sourceSpan: {
|
|
414
|
+
readonly $ref: "#/$defs/range";
|
|
415
|
+
};
|
|
416
|
+
readonly element: {
|
|
417
|
+
readonly type: "object";
|
|
418
|
+
readonly required: readonly ["kind", "sqlSkeleton", "fingerprint"];
|
|
419
|
+
readonly properties: {
|
|
420
|
+
readonly kind: {
|
|
421
|
+
readonly const: "fragment";
|
|
422
|
+
};
|
|
423
|
+
readonly sqlSkeleton: {
|
|
424
|
+
readonly type: "string";
|
|
425
|
+
};
|
|
426
|
+
readonly fingerprint: {
|
|
427
|
+
readonly $ref: "#/$defs/fingerprint";
|
|
428
|
+
};
|
|
429
|
+
};
|
|
430
|
+
};
|
|
431
|
+
readonly separator: {
|
|
432
|
+
readonly type: "object";
|
|
433
|
+
readonly required: readonly ["kind", "text", "fingerprint"];
|
|
434
|
+
readonly properties: {
|
|
435
|
+
readonly kind: {
|
|
436
|
+
readonly const: "static-fragment";
|
|
437
|
+
};
|
|
438
|
+
readonly text: {
|
|
439
|
+
readonly type: "string";
|
|
440
|
+
};
|
|
441
|
+
readonly fingerprint: {
|
|
442
|
+
readonly $ref: "#/$defs/fingerprint";
|
|
443
|
+
};
|
|
444
|
+
};
|
|
445
|
+
};
|
|
446
|
+
readonly minimumItems: {
|
|
447
|
+
readonly const: 1;
|
|
448
|
+
};
|
|
449
|
+
readonly parameterPattern: {
|
|
450
|
+
readonly type: "array";
|
|
451
|
+
readonly items: {
|
|
452
|
+
readonly $ref: "#/$defs/parameter";
|
|
453
|
+
};
|
|
454
|
+
};
|
|
455
|
+
};
|
|
456
|
+
};
|
|
321
457
|
readonly variant: {
|
|
322
458
|
readonly type: "object";
|
|
323
459
|
readonly required: readonly ["fingerprint", "choices", "rowType", "parameterType", "columns", "parameters", "semantics"];
|
|
@@ -355,6 +491,12 @@ export declare const QUERY_MANIFEST_JSON_SCHEMA: Readonly<{
|
|
|
355
491
|
readonly semantics: {
|
|
356
492
|
readonly $ref: "#/$defs/semantics";
|
|
357
493
|
};
|
|
494
|
+
readonly capabilityEvidence: {
|
|
495
|
+
readonly type: "array";
|
|
496
|
+
readonly items: {
|
|
497
|
+
readonly $ref: "#/$defs/capabilityEvidence";
|
|
498
|
+
};
|
|
499
|
+
};
|
|
358
500
|
};
|
|
359
501
|
};
|
|
360
502
|
readonly location: {
|
|
@@ -400,6 +542,13 @@ export declare const QUERY_MANIFEST_JSON_SCHEMA: Readonly<{
|
|
|
400
542
|
readonly $ref: "#/$defs/diagnostic";
|
|
401
543
|
};
|
|
402
544
|
};
|
|
545
|
+
readonly repeatedFragments: {
|
|
546
|
+
readonly type: "array";
|
|
547
|
+
readonly minItems: 1;
|
|
548
|
+
readonly items: {
|
|
549
|
+
readonly $ref: "#/$defs/repeatedFragment";
|
|
550
|
+
};
|
|
551
|
+
};
|
|
403
552
|
readonly variants: {
|
|
404
553
|
readonly type: "array";
|
|
405
554
|
readonly minItems: 1;
|
|
@@ -410,6 +559,12 @@ export declare const QUERY_MANIFEST_JSON_SCHEMA: Readonly<{
|
|
|
410
559
|
readonly semantics: {
|
|
411
560
|
readonly $ref: "#/$defs/semantics";
|
|
412
561
|
};
|
|
562
|
+
readonly capabilityEvidence: {
|
|
563
|
+
readonly type: "array";
|
|
564
|
+
readonly items: {
|
|
565
|
+
readonly $ref: "#/$defs/capabilityEvidence";
|
|
566
|
+
};
|
|
567
|
+
};
|
|
413
568
|
};
|
|
414
569
|
};
|
|
415
570
|
readonly unresolvedQuery: {
|
|
@@ -460,8 +615,14 @@ export declare const QUERY_MANIFEST_JSON_SCHEMA: Readonly<{
|
|
|
460
615
|
readonly grammarVersion: {
|
|
461
616
|
readonly type: "string";
|
|
462
617
|
};
|
|
618
|
+
readonly capabilityFingerprint: {
|
|
619
|
+
readonly $ref: "#/$defs/hash";
|
|
620
|
+
};
|
|
463
621
|
};
|
|
464
622
|
};
|
|
623
|
+
readonly schemaFormat: {
|
|
624
|
+
readonly enum: readonly [1, 2];
|
|
625
|
+
};
|
|
465
626
|
readonly schemaHash: {
|
|
466
627
|
readonly type: "string";
|
|
467
628
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
3
|
+
import { ARTIFACT_COMPATIBILITY_IDENTITY_FORMAT_VERSION, assessArtifactCompatibility, CORE_ARTIFACT_COMPATIBILITY_VERSION, resolveDialectCapabilityStates, } from "@typed-sql/core";
|
|
3
4
|
import { calculateSchemaHash, calculateTypePolicyHash } from "@typed-sql/schema";
|
|
4
5
|
import { compileSource } from "./compiler.js";
|
|
5
6
|
import { extractDynamicQueries, extractStaticQueries } from "./scanner.js";
|
|
@@ -64,13 +65,21 @@ function manifestSemantics(semantics) {
|
|
|
64
65
|
capabilities: semantics.capabilities,
|
|
65
66
|
};
|
|
66
67
|
}
|
|
68
|
+
function manifestCapabilityEvidence(semantics, states) {
|
|
69
|
+
return [...new Set(semantics.capabilities)]
|
|
70
|
+
.sort(compareText)
|
|
71
|
+
.flatMap((capability) => {
|
|
72
|
+
const state = states[capability];
|
|
73
|
+
return state === undefined ? [] : [{ capability, ...state }];
|
|
74
|
+
});
|
|
75
|
+
}
|
|
67
76
|
function entryId(dialect, location, identity) {
|
|
68
77
|
return `sha256:${sha256(`${dialect}\0${location.file}\0${location.range.start}\0${identity}`)}`;
|
|
69
78
|
}
|
|
70
79
|
function inRange(diagnostic, range) {
|
|
71
80
|
return diagnostic.range.start >= range.start && diagnostic.range.start < range.end;
|
|
72
81
|
}
|
|
73
|
-
function sourceEntries(file, source, options) {
|
|
82
|
+
function sourceEntries(file, source, options, capabilityStates) {
|
|
74
83
|
const compilation = compileSource({
|
|
75
84
|
source,
|
|
76
85
|
dialect: options.dialect,
|
|
@@ -106,16 +115,34 @@ function sourceEntries(file, source, options) {
|
|
|
106
115
|
diagnostics: compilation.diagnostics
|
|
107
116
|
.filter((diagnostic) => inRange(diagnostic, query.range))
|
|
108
117
|
.map(manifestDiagnostic),
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
+
...(compiled.repeatedFragments === undefined
|
|
119
|
+
? {}
|
|
120
|
+
: {
|
|
121
|
+
repeatedFragments: compiled.repeatedFragments.map((artifact) => ({
|
|
122
|
+
...artifact,
|
|
123
|
+
sourceSpan: { ...artifact.sourceSpan },
|
|
124
|
+
element: { ...artifact.element },
|
|
125
|
+
separator: { ...artifact.separator },
|
|
126
|
+
parameterPattern: artifact.parameterPattern.map(parameterDescription),
|
|
127
|
+
})),
|
|
128
|
+
}),
|
|
129
|
+
variants: compiled.variants.map((variant) => {
|
|
130
|
+
const capabilityEvidence = manifestCapabilityEvidence(variant.semantics, capabilityStates);
|
|
131
|
+
return {
|
|
132
|
+
fingerprint: variant.fingerprint,
|
|
133
|
+
choices: choiceDescriptions(variant.choices),
|
|
134
|
+
rowType: variant.rowType,
|
|
135
|
+
parameterType: variant.parameterType,
|
|
136
|
+
columns: variant.columns.map(columnDescription),
|
|
137
|
+
parameters: variant.parameters.map(parameterDescription),
|
|
138
|
+
semantics: manifestSemantics(variant.semantics),
|
|
139
|
+
...(capabilityEvidence.length === 0 ? {} : { capabilityEvidence }),
|
|
140
|
+
};
|
|
141
|
+
}),
|
|
118
142
|
semantics: manifestSemantics(compiled.semantics),
|
|
143
|
+
...(manifestCapabilityEvidence(compiled.semantics, capabilityStates).length === 0
|
|
144
|
+
? {}
|
|
145
|
+
: { capabilityEvidence: manifestCapabilityEvidence(compiled.semantics, capabilityStates) }),
|
|
119
146
|
};
|
|
120
147
|
});
|
|
121
148
|
for (const dynamic of extractDynamicQueries(source, [options.dialect.sqlModule])) {
|
|
@@ -136,14 +163,38 @@ function sourceEntries(file, source, options) {
|
|
|
136
163
|
}
|
|
137
164
|
return entries.sort((left, right) => left.source.range.start - right.source.range.start);
|
|
138
165
|
}
|
|
139
|
-
function compatiblePrevious(previous, compilerVersion, dialect, schemaHash, typePolicyHash) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
166
|
+
function compatiblePrevious(previous, compilerVersion, dialect, capabilityFingerprint, schemaFormat, schemaHash, typePolicyHash) {
|
|
167
|
+
if (previous?.schemaFormat === undefined || previous.dialect.capabilityFingerprint === undefined)
|
|
168
|
+
return false;
|
|
169
|
+
const identity = (manifest) => ({
|
|
170
|
+
formatVersion: ARTIFACT_COMPATIBILITY_IDENTITY_FORMAT_VERSION,
|
|
171
|
+
artifact: {
|
|
172
|
+
kind: "query-manifest",
|
|
173
|
+
version: String(manifest.formatVersion),
|
|
174
|
+
algorithm: manifest.fingerprintAlgorithm,
|
|
175
|
+
},
|
|
176
|
+
producer: { core: CORE_ARTIFACT_COMPATIBILITY_VERSION, compiler: manifest.compilerVersion },
|
|
177
|
+
grammar: {
|
|
178
|
+
id: manifest.dialect.id,
|
|
179
|
+
version: manifest.dialect.grammarVersion,
|
|
180
|
+
capabilityFingerprint: manifest.dialect.capabilityFingerprint,
|
|
181
|
+
},
|
|
182
|
+
schema: { formatVersion: manifest.schemaFormat, hash: manifest.schemaHash },
|
|
183
|
+
typePolicyHash: manifest.typePolicyHash,
|
|
184
|
+
});
|
|
185
|
+
return (assessArtifactCompatibility(identity({
|
|
186
|
+
formatVersion: QUERY_MANIFEST_FORMAT_VERSION,
|
|
187
|
+
compilerVersion,
|
|
188
|
+
fingerprintAlgorithm: QUERY_FINGERPRINT_ALGORITHM,
|
|
189
|
+
dialect: { id: dialect.id, grammarVersion: dialect.grammarVersion, capabilityFingerprint },
|
|
190
|
+
schemaFormat,
|
|
191
|
+
schemaHash,
|
|
192
|
+
typePolicyHash,
|
|
193
|
+
}), identity({
|
|
194
|
+
...previous,
|
|
195
|
+
schemaFormat: previous.schemaFormat,
|
|
196
|
+
dialect: { ...previous.dialect, capabilityFingerprint: previous.dialect.capabilityFingerprint },
|
|
197
|
+
})).outcome === "compatible");
|
|
147
198
|
}
|
|
148
199
|
export function buildQueryManifest(options) {
|
|
149
200
|
if (options.compilerVersion.length === 0)
|
|
@@ -153,13 +204,15 @@ export function buildQueryManifest(options) {
|
|
|
153
204
|
}
|
|
154
205
|
const schemaHash = calculateSchemaHash(options.schema);
|
|
155
206
|
const typePolicyHash = calculateTypePolicyHash(options.typePolicy ?? {});
|
|
207
|
+
const capabilityStates = resolveDialectCapabilityStates(options.dialect, options.schema, options.typePolicy);
|
|
208
|
+
const capabilityFingerprint = sha256(JSON.stringify(capabilityStates));
|
|
156
209
|
const inputs = options.sources
|
|
157
210
|
.map((input) => ({ input, file: portableRelative(options.rootDir, input.file), hash: sha256(input.source) }))
|
|
158
211
|
.sort((left, right) => compareText(left.file, right.file));
|
|
159
212
|
const duplicate = inputs.find((input, index) => input.file === inputs[index - 1]?.file);
|
|
160
213
|
if (duplicate !== undefined)
|
|
161
214
|
throw new TypeError(`Duplicate manifest source ${duplicate.file}`);
|
|
162
|
-
const mayReuse = compatiblePrevious(options.previous, options.compilerVersion, options.dialect, schemaHash, typePolicyHash);
|
|
215
|
+
const mayReuse = compatiblePrevious(options.previous, options.compilerVersion, options.dialect, capabilityFingerprint, options.schema.formatVersion, schemaHash, typePolicyHash);
|
|
163
216
|
const previousSources = new Map(options.previous?.sources.map((source) => [source.file, source.hash]) ?? []);
|
|
164
217
|
const previousEntries = new Map();
|
|
165
218
|
for (const entry of options.previous?.queries ?? []) {
|
|
@@ -174,7 +227,7 @@ export function buildQueryManifest(options) {
|
|
|
174
227
|
return previousEntries.get(file) ?? [];
|
|
175
228
|
}
|
|
176
229
|
analyzedFiles += 1;
|
|
177
|
-
return sourceEntries(file, input.source, options);
|
|
230
|
+
return sourceEntries(file, input.source, options, capabilityStates);
|
|
178
231
|
});
|
|
179
232
|
queries.sort((left, right) => compareText(left.source.file, right.source.file) || left.source.range.start - right.source.range.start);
|
|
180
233
|
const projects = [
|
|
@@ -184,7 +237,12 @@ export function buildQueryManifest(options) {
|
|
|
184
237
|
formatVersion: QUERY_MANIFEST_FORMAT_VERSION,
|
|
185
238
|
compilerVersion: options.compilerVersion,
|
|
186
239
|
fingerprintAlgorithm: QUERY_FINGERPRINT_ALGORITHM,
|
|
187
|
-
dialect: {
|
|
240
|
+
dialect: {
|
|
241
|
+
id: options.dialect.id,
|
|
242
|
+
grammarVersion: options.dialect.grammarVersion,
|
|
243
|
+
capabilityFingerprint,
|
|
244
|
+
},
|
|
245
|
+
schemaFormat: options.schema.formatVersion,
|
|
188
246
|
schemaHash,
|
|
189
247
|
typePolicyHash,
|
|
190
248
|
projects,
|
|
@@ -298,6 +356,43 @@ function assertSemantics(value, description) {
|
|
|
298
356
|
throw new TypeError(`${description} capabilities must contain strings`);
|
|
299
357
|
}
|
|
300
358
|
}
|
|
359
|
+
function assertCapabilityEvidence(value, description) {
|
|
360
|
+
if (!Array.isArray(value))
|
|
361
|
+
throw new TypeError(`${description} must be an array`);
|
|
362
|
+
const capabilities = [];
|
|
363
|
+
for (const item of value) {
|
|
364
|
+
if (!record(item))
|
|
365
|
+
throw new TypeError(`${description} entries must be objects`);
|
|
366
|
+
assertString(item.capability, `${description} capability`);
|
|
367
|
+
assertString(item.reason, `${description} reason`);
|
|
368
|
+
if (!/^[a-z][A-Za-z0-9]*$/u.test(item.capability) || item.reason.length === 0) {
|
|
369
|
+
throw new TypeError(`${description} contains an invalid capability or reason`);
|
|
370
|
+
}
|
|
371
|
+
if (!(item.level === "exact" || item.level === "conservative" || item.level === "unsupported")) {
|
|
372
|
+
throw new TypeError(`${description} contains an invalid capability level`);
|
|
373
|
+
}
|
|
374
|
+
for (const property of ["since", "until", "diagnostic"]) {
|
|
375
|
+
if (item[property] !== undefined)
|
|
376
|
+
assertString(item[property], `${description} ${property}`);
|
|
377
|
+
}
|
|
378
|
+
if (!Array.isArray(item.evidence) || item.evidence.length === 0) {
|
|
379
|
+
throw new TypeError(`${description} entries require evidence`);
|
|
380
|
+
}
|
|
381
|
+
for (const evidence of item.evidence) {
|
|
382
|
+
if (!record(evidence))
|
|
383
|
+
throw new TypeError(`${description} evidence must contain objects`);
|
|
384
|
+
if (!["server-version", "feature", "setting", "policy", "grammar"].includes(evidence.kind)) {
|
|
385
|
+
throw new TypeError(`${description} contains an invalid evidence kind`);
|
|
386
|
+
}
|
|
387
|
+
assertString(evidence.key, `${description} evidence key`);
|
|
388
|
+
assertString(evidence.value, `${description} evidence value`);
|
|
389
|
+
}
|
|
390
|
+
capabilities.push(item.capability);
|
|
391
|
+
}
|
|
392
|
+
if (capabilities.some((capability, index) => capability !== [...new Set(capabilities)].sort(compareText)[index])) {
|
|
393
|
+
throw new TypeError(`${description} must be sorted and unique`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
301
396
|
function assertVariant(value, description) {
|
|
302
397
|
if (!record(value))
|
|
303
398
|
throw new TypeError(`${description} must be an object`);
|
|
@@ -336,6 +431,49 @@ function assertVariant(value, description) {
|
|
|
336
431
|
}
|
|
337
432
|
}
|
|
338
433
|
assertSemantics(value.semantics, `${description} semantics`);
|
|
434
|
+
if (value.capabilityEvidence !== undefined) {
|
|
435
|
+
assertCapabilityEvidence(value.capabilityEvidence, `${description} capabilityEvidence`);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
function assertRepeatedFragments(value, description) {
|
|
439
|
+
if (!Array.isArray(value) || value.length === 0)
|
|
440
|
+
throw new TypeError(`${description} must be a non-empty array`);
|
|
441
|
+
for (const artifact of value) {
|
|
442
|
+
if (!record(artifact) || artifact.kind !== "repeated-fragment" || artifact.minimumItems !== 1) {
|
|
443
|
+
throw new TypeError(`${description} entries must be repeated-fragment artifacts with minimumItems 1`);
|
|
444
|
+
}
|
|
445
|
+
assertString(artifact.fingerprint, `${description} fingerprint`);
|
|
446
|
+
if (!/^sha256:[a-f\d]{64}$/u.test(artifact.fingerprint))
|
|
447
|
+
throw new TypeError(`${description} fingerprint is invalid`);
|
|
448
|
+
assertRange(artifact.sourceSpan, `${description} sourceSpan`);
|
|
449
|
+
if (!record(artifact.element) || artifact.element.kind !== "fragment") {
|
|
450
|
+
throw new TypeError(`${description} element is invalid`);
|
|
451
|
+
}
|
|
452
|
+
assertString(artifact.element.sqlSkeleton, `${description} element sqlSkeleton`);
|
|
453
|
+
assertString(artifact.element.fingerprint, `${description} element fingerprint`);
|
|
454
|
+
if (!/^sha256:[a-f\d]{64}$/u.test(artifact.element.fingerprint)) {
|
|
455
|
+
throw new TypeError(`${description} element fingerprint is invalid`);
|
|
456
|
+
}
|
|
457
|
+
if (!record(artifact.separator) || artifact.separator.kind !== "static-fragment") {
|
|
458
|
+
throw new TypeError(`${description} separator is invalid`);
|
|
459
|
+
}
|
|
460
|
+
assertString(artifact.separator.text, `${description} separator text`);
|
|
461
|
+
assertString(artifact.separator.fingerprint, `${description} separator fingerprint`);
|
|
462
|
+
if (!/^sha256:[a-f\d]{64}$/u.test(artifact.separator.fingerprint)) {
|
|
463
|
+
throw new TypeError(`${description} separator fingerprint is invalid`);
|
|
464
|
+
}
|
|
465
|
+
if (!Array.isArray(artifact.parameterPattern))
|
|
466
|
+
throw new TypeError(`${description} parameterPattern must be an array`);
|
|
467
|
+
for (const [index, parameter] of artifact.parameterPattern.entries()) {
|
|
468
|
+
if (!record(parameter) || parameter.index !== index + 1 || typeof parameter.nullable !== "boolean") {
|
|
469
|
+
throw new TypeError(`${description} parameterPattern must use contiguous one-based parameters`);
|
|
470
|
+
}
|
|
471
|
+
assertString(parameter.tsType, `${description} parameter tsType`);
|
|
472
|
+
if (parameter.databaseType !== undefined) {
|
|
473
|
+
assertString(parameter.databaseType, `${description} parameter databaseType`);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
339
477
|
}
|
|
340
478
|
export function parseQueryManifest(value) {
|
|
341
479
|
if (!record(value))
|
|
@@ -356,6 +494,14 @@ export function parseQueryManifest(value) {
|
|
|
356
494
|
value.dialect.grammarVersion.length === 0) {
|
|
357
495
|
throw new TypeError("Query manifest dialect must contain id and grammarVersion");
|
|
358
496
|
}
|
|
497
|
+
if (value.dialect.capabilityFingerprint !== undefined &&
|
|
498
|
+
(typeof value.dialect.capabilityFingerprint !== "string" ||
|
|
499
|
+
!/^[a-f\d]{64}$/u.test(value.dialect.capabilityFingerprint))) {
|
|
500
|
+
throw new TypeError("Query manifest dialect capabilityFingerprint must be a SHA-256 hash");
|
|
501
|
+
}
|
|
502
|
+
if (value.schemaFormat !== undefined && value.schemaFormat !== 1 && value.schemaFormat !== 2) {
|
|
503
|
+
throw new TypeError("Query manifest schemaFormat must be 1 or 2");
|
|
504
|
+
}
|
|
359
505
|
if (typeof value.schemaHash !== "string" ||
|
|
360
506
|
!/^[a-f\d]{64}$/u.test(value.schemaHash) ||
|
|
361
507
|
typeof value.typePolicyHash !== "string" ||
|
|
@@ -400,10 +546,16 @@ export function parseQueryManifest(value) {
|
|
|
400
546
|
throw new TypeError("Resolved query manifest entries are incomplete");
|
|
401
547
|
}
|
|
402
548
|
assertDiagnostics(query.diagnostics, "Resolved query diagnostics");
|
|
549
|
+
if (query.repeatedFragments !== undefined) {
|
|
550
|
+
assertRepeatedFragments(query.repeatedFragments, "Resolved query repeatedFragments");
|
|
551
|
+
}
|
|
403
552
|
for (const [index, variant] of query.variants.entries()) {
|
|
404
553
|
assertVariant(variant, `Query manifest variant ${index}`);
|
|
405
554
|
}
|
|
406
555
|
assertSemantics(query.semantics, "Resolved query semantics");
|
|
556
|
+
if (query.capabilityEvidence !== undefined) {
|
|
557
|
+
assertCapabilityEvidence(query.capabilityEvidence, "Resolved query capabilityEvidence");
|
|
558
|
+
}
|
|
407
559
|
}
|
|
408
560
|
else if (query.status === "unresolved") {
|
|
409
561
|
if (query.reason !== "diagnostic" && query.reason !== "dynamic") {
|
|
@@ -455,6 +607,28 @@ export const QUERY_MANIFEST_JSON_SCHEMA = Object.freeze({
|
|
|
455
607
|
range: { $ref: "#/$defs/range" },
|
|
456
608
|
},
|
|
457
609
|
},
|
|
610
|
+
capabilityStateEvidence: {
|
|
611
|
+
type: "object",
|
|
612
|
+
required: ["kind", "key", "value"],
|
|
613
|
+
properties: {
|
|
614
|
+
kind: { enum: ["server-version", "feature", "setting", "policy", "grammar"] },
|
|
615
|
+
key: { type: "string", minLength: 1 },
|
|
616
|
+
value: { type: "string", minLength: 1 },
|
|
617
|
+
},
|
|
618
|
+
},
|
|
619
|
+
capabilityEvidence: {
|
|
620
|
+
type: "object",
|
|
621
|
+
required: ["capability", "level", "reason", "evidence"],
|
|
622
|
+
properties: {
|
|
623
|
+
capability: { type: "string", pattern: "^[a-z][A-Za-z0-9]*$" },
|
|
624
|
+
level: { enum: ["exact", "conservative", "unsupported"] },
|
|
625
|
+
reason: { type: "string", minLength: 1 },
|
|
626
|
+
since: { type: "string", minLength: 1 },
|
|
627
|
+
until: { type: "string", minLength: 1 },
|
|
628
|
+
diagnostic: { type: "string", minLength: 1 },
|
|
629
|
+
evidence: { type: "array", minItems: 1, items: { $ref: "#/$defs/capabilityStateEvidence" } },
|
|
630
|
+
},
|
|
631
|
+
},
|
|
458
632
|
fact: {
|
|
459
633
|
type: "object",
|
|
460
634
|
required: ["value", "evidence"],
|
|
@@ -527,6 +701,35 @@ export const QUERY_MANIFEST_JSON_SCHEMA = Object.freeze({
|
|
|
527
701
|
databaseType: { type: "string" },
|
|
528
702
|
},
|
|
529
703
|
},
|
|
704
|
+
repeatedFragment: {
|
|
705
|
+
type: "object",
|
|
706
|
+
required: ["kind", "fingerprint", "sourceSpan", "element", "separator", "minimumItems", "parameterPattern"],
|
|
707
|
+
properties: {
|
|
708
|
+
kind: { const: "repeated-fragment" },
|
|
709
|
+
fingerprint: { $ref: "#/$defs/fingerprint" },
|
|
710
|
+
sourceSpan: { $ref: "#/$defs/range" },
|
|
711
|
+
element: {
|
|
712
|
+
type: "object",
|
|
713
|
+
required: ["kind", "sqlSkeleton", "fingerprint"],
|
|
714
|
+
properties: {
|
|
715
|
+
kind: { const: "fragment" },
|
|
716
|
+
sqlSkeleton: { type: "string" },
|
|
717
|
+
fingerprint: { $ref: "#/$defs/fingerprint" },
|
|
718
|
+
},
|
|
719
|
+
},
|
|
720
|
+
separator: {
|
|
721
|
+
type: "object",
|
|
722
|
+
required: ["kind", "text", "fingerprint"],
|
|
723
|
+
properties: {
|
|
724
|
+
kind: { const: "static-fragment" },
|
|
725
|
+
text: { type: "string" },
|
|
726
|
+
fingerprint: { $ref: "#/$defs/fingerprint" },
|
|
727
|
+
},
|
|
728
|
+
},
|
|
729
|
+
minimumItems: { const: 1 },
|
|
730
|
+
parameterPattern: { type: "array", items: { $ref: "#/$defs/parameter" } },
|
|
731
|
+
},
|
|
732
|
+
},
|
|
530
733
|
variant: {
|
|
531
734
|
type: "object",
|
|
532
735
|
required: ["fingerprint", "choices", "rowType", "parameterType", "columns", "parameters", "semantics"],
|
|
@@ -542,6 +745,7 @@ export const QUERY_MANIFEST_JSON_SCHEMA = Object.freeze({
|
|
|
542
745
|
columns: { type: "array", items: { $ref: "#/$defs/column" } },
|
|
543
746
|
parameters: { type: "array", items: { $ref: "#/$defs/parameter" } },
|
|
544
747
|
semantics: { $ref: "#/$defs/semantics" },
|
|
748
|
+
capabilityEvidence: { type: "array", items: { $ref: "#/$defs/capabilityEvidence" } },
|
|
545
749
|
},
|
|
546
750
|
},
|
|
547
751
|
location: {
|
|
@@ -572,8 +776,10 @@ export const QUERY_MANIFEST_JSON_SCHEMA = Object.freeze({
|
|
|
572
776
|
rowType: { type: "string" },
|
|
573
777
|
parameterType: { type: "string" },
|
|
574
778
|
diagnostics: { type: "array", items: { $ref: "#/$defs/diagnostic" } },
|
|
779
|
+
repeatedFragments: { type: "array", minItems: 1, items: { $ref: "#/$defs/repeatedFragment" } },
|
|
575
780
|
variants: { type: "array", minItems: 1, items: { $ref: "#/$defs/variant" } },
|
|
576
781
|
semantics: { $ref: "#/$defs/semantics" },
|
|
782
|
+
capabilityEvidence: { type: "array", items: { $ref: "#/$defs/capabilityEvidence" } },
|
|
577
783
|
},
|
|
578
784
|
},
|
|
579
785
|
unresolvedQuery: {
|
|
@@ -606,8 +812,13 @@ export const QUERY_MANIFEST_JSON_SCHEMA = Object.freeze({
|
|
|
606
812
|
dialect: {
|
|
607
813
|
type: "object",
|
|
608
814
|
required: ["id", "grammarVersion"],
|
|
609
|
-
properties: {
|
|
815
|
+
properties: {
|
|
816
|
+
id: { type: "string" },
|
|
817
|
+
grammarVersion: { type: "string" },
|
|
818
|
+
capabilityFingerprint: { $ref: "#/$defs/hash" },
|
|
819
|
+
},
|
|
610
820
|
},
|
|
821
|
+
schemaFormat: { enum: [1, 2] },
|
|
611
822
|
schemaHash: { type: "string" },
|
|
612
823
|
typePolicyHash: { type: "string" },
|
|
613
824
|
projects: { type: "array", items: { $ref: "#/$defs/relativePath" } },
|