@typed-sql/conformance 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 +69 -0
- package/README.md +30 -20
- package/dist/packages/conformance/src/assertions.d.ts +7 -1
- package/dist/packages/conformance/src/assertions.d.ts.map +1 -1
- package/dist/packages/conformance/src/assertions.js +89 -1
- package/dist/packages/conformance/src/assertions.js.map +1 -1
- package/dist/packages/conformance/src/failure-injection.d.ts +24 -0
- package/dist/packages/conformance/src/failure-injection.d.ts.map +1 -0
- package/dist/packages/conformance/src/failure-injection.js +52 -0
- package/dist/packages/conformance/src/failure-injection.js.map +1 -0
- package/dist/packages/conformance/src/feature-ledger-markdown.d.ts +4 -0
- package/dist/packages/conformance/src/feature-ledger-markdown.d.ts.map +1 -0
- package/dist/packages/conformance/src/feature-ledger-markdown.js +58 -0
- package/dist/packages/conformance/src/feature-ledger-markdown.js.map +1 -0
- package/dist/packages/conformance/src/feature-ledger.d.ts +62 -0
- package/dist/packages/conformance/src/feature-ledger.d.ts.map +1 -0
- package/dist/packages/conformance/src/feature-ledger.js +347 -0
- package/dist/packages/conformance/src/feature-ledger.js.map +1 -0
- package/dist/packages/conformance/src/index.d.ts +6 -2
- package/dist/packages/conformance/src/index.d.ts.map +1 -1
- package/dist/packages/conformance/src/index.js +3 -1
- package/dist/packages/conformance/src/index.js.map +1 -1
- package/dist/packages/conformance/src/types.d.ts +60 -1
- package/dist/packages/conformance/src/types.d.ts.map +1 -1
- package/dist/packages/conformance/src/types.js +1 -0
- package/dist/packages/conformance/src/types.js.map +1 -1
- package/dist/packages/conformance/src/v2/contracts.d.ts +7 -0
- package/dist/packages/conformance/src/v2/contracts.d.ts.map +1 -0
- package/dist/packages/conformance/src/v2/contracts.js +97 -0
- package/dist/packages/conformance/src/v2/contracts.js.map +1 -0
- package/dist/packages/conformance/src/v2/fixtures.d.ts +4 -0
- package/dist/packages/conformance/src/v2/fixtures.d.ts.map +1 -0
- package/dist/packages/conformance/src/v2/fixtures.js +58 -0
- package/dist/packages/conformance/src/v2/fixtures.js.map +1 -0
- package/dist/packages/conformance/src/v2/index.d.ts +9 -0
- package/dist/packages/conformance/src/v2/index.d.ts.map +1 -0
- package/dist/packages/conformance/src/v2/index.js +8 -0
- package/dist/packages/conformance/src/v2/index.js.map +1 -0
- package/dist/packages/conformance/src/v2/legacy.d.ts +6 -0
- package/dist/packages/conformance/src/v2/legacy.d.ts.map +1 -0
- package/dist/packages/conformance/src/v2/legacy.js +75 -0
- package/dist/packages/conformance/src/v2/legacy.js.map +1 -0
- package/dist/packages/conformance/src/v2/reporters.d.ts +4 -0
- package/dist/packages/conformance/src/v2/reporters.d.ts.map +1 -0
- package/dist/packages/conformance/src/v2/reporters.js +17 -0
- package/dist/packages/conformance/src/v2/reporters.js.map +1 -0
- package/dist/packages/conformance/src/v2/reproduction.d.ts +4 -0
- package/dist/packages/conformance/src/v2/reproduction.d.ts.map +1 -0
- package/dist/packages/conformance/src/v2/reproduction.js +35 -0
- package/dist/packages/conformance/src/v2/reproduction.js.map +1 -0
- package/dist/packages/conformance/src/v2/runner.d.ts +9 -0
- package/dist/packages/conformance/src/v2/runner.d.ts.map +1 -0
- package/dist/packages/conformance/src/v2/runner.js +369 -0
- package/dist/packages/conformance/src/v2/runner.js.map +1 -0
- package/dist/packages/conformance/src/v2/types.d.ts +204 -0
- package/dist/packages/conformance/src/v2/types.d.ts.map +1 -0
- package/dist/packages/conformance/src/v2/types.js +3 -0
- package/dist/packages/conformance/src/v2/types.js.map +1 -0
- package/package.json +5 -4
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
export const FEATURE_LEDGER_FORMAT_VERSION = 1;
|
|
2
|
+
const categories = new Set([
|
|
3
|
+
"lexical",
|
|
4
|
+
"statement",
|
|
5
|
+
"clause",
|
|
6
|
+
"expression",
|
|
7
|
+
"operator",
|
|
8
|
+
"function-family",
|
|
9
|
+
"type-family",
|
|
10
|
+
"coercion",
|
|
11
|
+
"semantic",
|
|
12
|
+
"schema",
|
|
13
|
+
"runtime",
|
|
14
|
+
"tooling",
|
|
15
|
+
]);
|
|
16
|
+
const scopes = new Set(["application-query", "conservative-command", "out-of-scope"]);
|
|
17
|
+
const levels = new Set(["exact", "conservative", "unsupported", "out-of-scope"]);
|
|
18
|
+
const featureIdPattern = /^[a-z][a-z0-9]*(?:[.-][a-z][a-z0-9]*)+$/u;
|
|
19
|
+
const capabilityPattern = /^[a-z][A-Za-z0-9]*$/u;
|
|
20
|
+
const dialectPattern = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u;
|
|
21
|
+
const diagnosticPattern = /^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*$/u;
|
|
22
|
+
const ownerPattern = /^(?:repository|@typed-sql\/[a-z][a-z0-9-]*)$/u;
|
|
23
|
+
const coveragePattern = /^(?:ast|diagnostic|docs|resolver|runtime|schema|tooling):[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$/u;
|
|
24
|
+
const repositoryPathPattern = /^(?!\/)(?!.*(?:^|\/)\.\.?\/)[a-zA-Z0-9_.@/-]+$/u;
|
|
25
|
+
const versionPattern = /^\d+(?:\.\d+){0,2}$/u;
|
|
26
|
+
const versionSchemes = new Set(["major", "major-minor", "numeric"]);
|
|
27
|
+
function isRecord(value) {
|
|
28
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
29
|
+
}
|
|
30
|
+
function assertOnlyKeys(value, allowed, path) {
|
|
31
|
+
const allowedKeys = new Set(allowed);
|
|
32
|
+
const unknown = Object.keys(value).filter((key) => !allowedKeys.has(key));
|
|
33
|
+
if (unknown.length > 0)
|
|
34
|
+
throw new TypeError(`${path} contains unknown properties: ${unknown.sort().join(", ")}`);
|
|
35
|
+
}
|
|
36
|
+
function nonEmptyString(value, path) {
|
|
37
|
+
if (typeof value !== "string" || value.length === 0 || value.trim() !== value || value.includes("\0")) {
|
|
38
|
+
throw new TypeError(`${path} must be a trimmed, non-empty string`);
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
function optionalString(value, path) {
|
|
43
|
+
return value === undefined ? undefined : nonEmptyString(value, path);
|
|
44
|
+
}
|
|
45
|
+
function sortedUniqueStrings(value, path) {
|
|
46
|
+
if (!Array.isArray(value) || value.some((item) => typeof item !== "string" || item.length === 0)) {
|
|
47
|
+
throw new TypeError(`${path} must be an array of non-empty strings`);
|
|
48
|
+
}
|
|
49
|
+
const strings = value;
|
|
50
|
+
if (new Set(strings).size !== strings.length)
|
|
51
|
+
throw new TypeError(`${path} must not contain duplicates`);
|
|
52
|
+
const sorted = [...strings].sort();
|
|
53
|
+
if (strings.some((item, index) => item !== sorted[index]))
|
|
54
|
+
throw new TypeError(`${path} must be sorted`);
|
|
55
|
+
return Object.freeze([...strings]);
|
|
56
|
+
}
|
|
57
|
+
function repositoryPaths(value, path, prefix) {
|
|
58
|
+
const paths = sortedUniqueStrings(value, path);
|
|
59
|
+
for (const item of paths) {
|
|
60
|
+
if (!repositoryPathPattern.test(item) || !item.startsWith(prefix)) {
|
|
61
|
+
throw new TypeError(`${path} entries must be canonical ${prefix} repository paths`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return paths;
|
|
65
|
+
}
|
|
66
|
+
function parseSource(value, path) {
|
|
67
|
+
if (!isRecord(value))
|
|
68
|
+
throw new TypeError(`${path} must be an object`);
|
|
69
|
+
assertOnlyKeys(value, ["title", "url", "vendorVersion"], path);
|
|
70
|
+
const title = nonEmptyString(value.title, `${path}.title`);
|
|
71
|
+
const url = nonEmptyString(value.url, `${path}.url`);
|
|
72
|
+
let parsed;
|
|
73
|
+
try {
|
|
74
|
+
parsed = new URL(url);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
throw new TypeError(`${path}.url must be an absolute URL`);
|
|
78
|
+
}
|
|
79
|
+
if (parsed.protocol !== "https:")
|
|
80
|
+
throw new TypeError(`${path}.url must use HTTPS`);
|
|
81
|
+
const vendorVersion = optionalString(value.vendorVersion, `${path}.vendorVersion`);
|
|
82
|
+
return Object.freeze({ title, url, ...(vendorVersion === undefined ? {} : { vendorVersion }) });
|
|
83
|
+
}
|
|
84
|
+
function parseSources(value, path) {
|
|
85
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
86
|
+
throw new TypeError(`${path} must contain at least one authoritative source`);
|
|
87
|
+
}
|
|
88
|
+
const sources = value.map((source, index) => parseSource(source, `${path}[${index}]`));
|
|
89
|
+
const sourceUrls = sources.map(({ url }) => url);
|
|
90
|
+
if (new Set(sourceUrls).size !== sourceUrls.length)
|
|
91
|
+
throw new TypeError(`${path} must not repeat URLs`);
|
|
92
|
+
return Object.freeze([...sources].sort((left, right) => left.url.localeCompare(right.url)));
|
|
93
|
+
}
|
|
94
|
+
function versionParts(value, scheme) {
|
|
95
|
+
if (!versionPattern.test(value))
|
|
96
|
+
throw new TypeError(`Invalid ${scheme} version ${JSON.stringify(value)}`);
|
|
97
|
+
const parts = value.split(".").map(Number);
|
|
98
|
+
if (scheme === "major")
|
|
99
|
+
return [parts[0]];
|
|
100
|
+
if (scheme === "major-minor")
|
|
101
|
+
return [parts[0], parts[1] ?? 0];
|
|
102
|
+
return [parts[0], parts[1] ?? 0, parts[2] ?? 0];
|
|
103
|
+
}
|
|
104
|
+
/** Compares canonical vendor versions according to that vendor's release-line semantics. */
|
|
105
|
+
export function compareGrammarVersions(left, right, scheme) {
|
|
106
|
+
const leftParts = versionParts(left, scheme);
|
|
107
|
+
const rightParts = versionParts(right, scheme);
|
|
108
|
+
for (let index = 0; index < Math.max(leftParts.length, rightParts.length); index += 1) {
|
|
109
|
+
const difference = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);
|
|
110
|
+
if (difference !== 0)
|
|
111
|
+
return difference < 0 ? -1 : 1;
|
|
112
|
+
}
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
export function grammarVersionInRange(version, range, scheme) {
|
|
116
|
+
return (compareGrammarVersions(version, range.minimum, scheme) >= 0 &&
|
|
117
|
+
compareGrammarVersions(version, range.maximum, scheme) <= 0);
|
|
118
|
+
}
|
|
119
|
+
function parseVersionRange(value, path, scheme) {
|
|
120
|
+
if (!isRecord(value))
|
|
121
|
+
throw new TypeError(`${path} must be an object`);
|
|
122
|
+
assertOnlyKeys(value, ["minimum", "maximum"], path);
|
|
123
|
+
const minimum = nonEmptyString(value.minimum, `${path}.minimum`);
|
|
124
|
+
const maximum = nonEmptyString(value.maximum, `${path}.maximum`);
|
|
125
|
+
versionParts(minimum, scheme);
|
|
126
|
+
versionParts(maximum, scheme);
|
|
127
|
+
if (compareGrammarVersions(minimum, maximum, scheme) > 0) {
|
|
128
|
+
throw new TypeError(`${path}.minimum must not be newer than ${path}.maximum`);
|
|
129
|
+
}
|
|
130
|
+
return Object.freeze({ minimum, maximum });
|
|
131
|
+
}
|
|
132
|
+
function parseRanges(value, path, scheme) {
|
|
133
|
+
if (!Array.isArray(value))
|
|
134
|
+
throw new TypeError(`${path} must be an array`);
|
|
135
|
+
const ranges = value.map((range, index) => parseVersionRange(range, `${path}[${index}]`, scheme));
|
|
136
|
+
for (let index = 1; index < ranges.length; index += 1) {
|
|
137
|
+
const previous = ranges[index - 1];
|
|
138
|
+
const current = ranges[index];
|
|
139
|
+
if (compareGrammarVersions(previous.minimum, current.minimum, scheme) >= 0) {
|
|
140
|
+
throw new TypeError(`${path} must be sorted by minimum version without duplicates`);
|
|
141
|
+
}
|
|
142
|
+
if (compareGrammarVersions(previous.maximum, current.minimum, scheme) >= 0) {
|
|
143
|
+
throw new TypeError(`${path} must not contain overlapping ranges`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return Object.freeze(ranges);
|
|
147
|
+
}
|
|
148
|
+
function parseDialectPolicy(value, path) {
|
|
149
|
+
if (!isRecord(value))
|
|
150
|
+
throw new TypeError(`${path} must be an object`);
|
|
151
|
+
assertOnlyKeys(value, ["title", "versionScheme", "stable", "canary", "sources"], path);
|
|
152
|
+
const title = nonEmptyString(value.title, `${path}.title`);
|
|
153
|
+
if (typeof value.versionScheme !== "string" || !versionSchemes.has(value.versionScheme)) {
|
|
154
|
+
throw new TypeError(`${path}.versionScheme is not supported`);
|
|
155
|
+
}
|
|
156
|
+
const versionScheme = value.versionScheme;
|
|
157
|
+
const stable = parseRanges(value.stable, `${path}.stable`, versionScheme);
|
|
158
|
+
if (stable.length === 0)
|
|
159
|
+
throw new TypeError(`${path}.stable must contain at least one supported range`);
|
|
160
|
+
const canary = parseRanges(value.canary, `${path}.canary`, versionScheme);
|
|
161
|
+
for (const canaryRange of canary) {
|
|
162
|
+
if (stable.some((stableRange) => compareGrammarVersions(canaryRange.maximum, stableRange.minimum, versionScheme) >= 0 &&
|
|
163
|
+
compareGrammarVersions(canaryRange.minimum, stableRange.maximum, versionScheme) <= 0)) {
|
|
164
|
+
throw new TypeError(`${path}.canary must not overlap stable ranges`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const sources = parseSources(value.sources, `${path}.sources`);
|
|
168
|
+
return Object.freeze({ title, versionScheme, stable, canary, sources });
|
|
169
|
+
}
|
|
170
|
+
function parseSupport(value, path, scheme) {
|
|
171
|
+
if (!isRecord(value))
|
|
172
|
+
throw new TypeError(`${path} must be an object`);
|
|
173
|
+
assertOnlyKeys(value, ["level", "introduced", "removed", "conditions", "diagnostic", "tests", "notes"], path);
|
|
174
|
+
if (typeof value.level !== "string" || !levels.has(value.level)) {
|
|
175
|
+
throw new TypeError(`${path}.level must be exact, conservative, unsupported, or out-of-scope`);
|
|
176
|
+
}
|
|
177
|
+
const level = value.level;
|
|
178
|
+
const introduced = optionalString(value.introduced, `${path}.introduced`);
|
|
179
|
+
const removed = optionalString(value.removed, `${path}.removed`);
|
|
180
|
+
if (introduced !== undefined)
|
|
181
|
+
versionParts(introduced, scheme);
|
|
182
|
+
if (removed !== undefined)
|
|
183
|
+
versionParts(removed, scheme);
|
|
184
|
+
if (introduced !== undefined && removed !== undefined && compareGrammarVersions(introduced, removed, scheme) >= 0) {
|
|
185
|
+
throw new TypeError(`${path}.introduced must be older than ${path}.removed`);
|
|
186
|
+
}
|
|
187
|
+
const conditions = value.conditions === undefined ? undefined : sortedUniqueStrings(value.conditions, `${path}.conditions`);
|
|
188
|
+
const diagnostic = optionalString(value.diagnostic, `${path}.diagnostic`);
|
|
189
|
+
if (diagnostic !== undefined && !diagnosticPattern.test(diagnostic)) {
|
|
190
|
+
throw new TypeError(`${path}.diagnostic must be a stable uppercase diagnostic code`);
|
|
191
|
+
}
|
|
192
|
+
if (level === "unsupported" && diagnostic === undefined) {
|
|
193
|
+
throw new TypeError(`${path}.diagnostic is required for unsupported support`);
|
|
194
|
+
}
|
|
195
|
+
const tests = sortedUniqueStrings(value.tests, `${path}.tests`);
|
|
196
|
+
if (tests.length === 0) {
|
|
197
|
+
throw new TypeError(`${path}.tests must prove the ${level} classification`);
|
|
198
|
+
}
|
|
199
|
+
for (const test of tests) {
|
|
200
|
+
if (!repositoryPathPattern.test(test) || !test.includes("/test/") || !test.endsWith(".test.ts")) {
|
|
201
|
+
throw new TypeError(`${path}.tests entries must be canonical executable test paths`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
const notes = optionalString(value.notes, `${path}.notes`);
|
|
205
|
+
return Object.freeze({
|
|
206
|
+
level,
|
|
207
|
+
...(introduced === undefined ? {} : { introduced }),
|
|
208
|
+
...(removed === undefined ? {} : { removed }),
|
|
209
|
+
...(conditions === undefined ? {} : { conditions }),
|
|
210
|
+
...(diagnostic === undefined ? {} : { diagnostic }),
|
|
211
|
+
tests,
|
|
212
|
+
...(notes === undefined ? {} : { notes }),
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
function parseEntry(value, path, policies) {
|
|
216
|
+
if (!isRecord(value))
|
|
217
|
+
throw new TypeError(`${path} must be an object`);
|
|
218
|
+
assertOnlyKeys(value, ["id", "title", "category", "scope", "owner", "capability", "coverage", "documentation", "sources", "dialects"], path);
|
|
219
|
+
const id = nonEmptyString(value.id, `${path}.id`);
|
|
220
|
+
if (!featureIdPattern.test(id))
|
|
221
|
+
throw new TypeError(`${path}.id is not a canonical feature id`);
|
|
222
|
+
const title = nonEmptyString(value.title, `${path}.title`);
|
|
223
|
+
if (typeof value.category !== "string" || !categories.has(value.category)) {
|
|
224
|
+
throw new TypeError(`${path}.category is not supported`);
|
|
225
|
+
}
|
|
226
|
+
const category = value.category;
|
|
227
|
+
if (typeof value.scope !== "string" || !scopes.has(value.scope)) {
|
|
228
|
+
throw new TypeError(`${path}.scope is not supported`);
|
|
229
|
+
}
|
|
230
|
+
const scope = value.scope;
|
|
231
|
+
const owner = nonEmptyString(value.owner, `${path}.owner`);
|
|
232
|
+
if (!ownerPattern.test(owner))
|
|
233
|
+
throw new TypeError(`${path}.owner is not a package or repository owner`);
|
|
234
|
+
const capability = optionalString(value.capability, `${path}.capability`);
|
|
235
|
+
if (capability !== undefined && !capabilityPattern.test(capability)) {
|
|
236
|
+
throw new TypeError(`${path}.capability must be a lower camel-case identifier`);
|
|
237
|
+
}
|
|
238
|
+
const coverage = sortedUniqueStrings(value.coverage, `${path}.coverage`);
|
|
239
|
+
if (coverage.length === 0)
|
|
240
|
+
throw new TypeError(`${path}.coverage must not be empty`);
|
|
241
|
+
for (const token of coverage) {
|
|
242
|
+
if (!coveragePattern.test(token))
|
|
243
|
+
throw new TypeError(`${path}.coverage contains invalid token ${token}`);
|
|
244
|
+
}
|
|
245
|
+
const documentation = repositoryPaths(value.documentation, `${path}.documentation`, "docs/");
|
|
246
|
+
if (documentation.length === 0)
|
|
247
|
+
throw new TypeError(`${path}.documentation must not be empty`);
|
|
248
|
+
const sources = parseSources(value.sources, `${path}.sources`);
|
|
249
|
+
if (!isRecord(value.dialects) || Object.keys(value.dialects).length === 0) {
|
|
250
|
+
throw new TypeError(`${path}.dialects must contain at least one grammar`);
|
|
251
|
+
}
|
|
252
|
+
const dialectNames = Object.keys(value.dialects);
|
|
253
|
+
const policyNames = Object.keys(policies);
|
|
254
|
+
if (dialectNames.length !== policyNames.length || dialectNames.some((name, index) => name !== policyNames[index])) {
|
|
255
|
+
throw new TypeError(`${path}.dialects must classify every configured grammar: ${policyNames.join(", ")}`);
|
|
256
|
+
}
|
|
257
|
+
const sortedDialectNames = [...dialectNames].sort();
|
|
258
|
+
if (dialectNames.some((name, index) => name !== sortedDialectNames[index])) {
|
|
259
|
+
throw new TypeError(`${path}.dialects must be sorted`);
|
|
260
|
+
}
|
|
261
|
+
const dialects = {};
|
|
262
|
+
for (const dialect of dialectNames) {
|
|
263
|
+
if (!dialectPattern.test(dialect))
|
|
264
|
+
throw new TypeError(`${path}.dialects.${dialect} is not a canonical grammar id`);
|
|
265
|
+
dialects[dialect] = parseSupport(value.dialects[dialect], `${path}.dialects.${dialect}`, policies[dialect].versionScheme);
|
|
266
|
+
}
|
|
267
|
+
return Object.freeze({
|
|
268
|
+
id,
|
|
269
|
+
title,
|
|
270
|
+
category,
|
|
271
|
+
scope,
|
|
272
|
+
owner,
|
|
273
|
+
...(capability === undefined ? {} : { capability }),
|
|
274
|
+
coverage,
|
|
275
|
+
documentation,
|
|
276
|
+
sources,
|
|
277
|
+
dialects: Object.freeze(dialects),
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
/** Parses, validates, canonicalizes, and deeply freezes a feature ledger. */
|
|
281
|
+
export function parseGrammarFeatureLedger(value) {
|
|
282
|
+
if (!isRecord(value))
|
|
283
|
+
throw new TypeError("Grammar feature ledger must be an object");
|
|
284
|
+
assertOnlyKeys(value, ["formatVersion", "dialects", "entries"], "ledger");
|
|
285
|
+
if (value.formatVersion !== FEATURE_LEDGER_FORMAT_VERSION) {
|
|
286
|
+
throw new TypeError(`Unsupported grammar feature ledger format ${String(value.formatVersion)}`);
|
|
287
|
+
}
|
|
288
|
+
if (!isRecord(value.dialects) || Object.keys(value.dialects).length === 0) {
|
|
289
|
+
throw new TypeError("ledger.dialects must contain at least one grammar support policy");
|
|
290
|
+
}
|
|
291
|
+
const dialectNames = Object.keys(value.dialects);
|
|
292
|
+
const sortedDialectNames = [...dialectNames].sort();
|
|
293
|
+
if (dialectNames.some((name, index) => name !== sortedDialectNames[index])) {
|
|
294
|
+
throw new TypeError("ledger.dialects must be sorted");
|
|
295
|
+
}
|
|
296
|
+
const dialects = {};
|
|
297
|
+
for (const dialect of dialectNames) {
|
|
298
|
+
if (!dialectPattern.test(dialect))
|
|
299
|
+
throw new TypeError(`ledger.dialects.${dialect} is not a canonical grammar id`);
|
|
300
|
+
dialects[dialect] = parseDialectPolicy(value.dialects[dialect], `ledger.dialects.${dialect}`);
|
|
301
|
+
}
|
|
302
|
+
if (!Array.isArray(value.entries))
|
|
303
|
+
throw new TypeError("ledger.entries must be an array");
|
|
304
|
+
const entries = value.entries.map((entry, index) => parseEntry(entry, `ledger.entries[${index}]`, dialects));
|
|
305
|
+
const ids = entries.map(({ id }) => id);
|
|
306
|
+
if (new Set(ids).size !== ids.length)
|
|
307
|
+
throw new TypeError("ledger.entries must have unique feature ids");
|
|
308
|
+
const sortedIds = [...ids].sort();
|
|
309
|
+
if (ids.some((id, index) => id !== sortedIds[index]))
|
|
310
|
+
throw new TypeError("ledger.entries must be sorted by id");
|
|
311
|
+
const capabilityIds = entries.flatMap(({ capability }) => (capability === undefined ? [] : [capability]));
|
|
312
|
+
if (new Set(capabilityIds).size !== capabilityIds.length) {
|
|
313
|
+
throw new TypeError("ledger.entries must map each compatibility capability at most once");
|
|
314
|
+
}
|
|
315
|
+
const coverage = entries.flatMap((entry) => entry.coverage);
|
|
316
|
+
if (new Set(coverage).size !== coverage.length) {
|
|
317
|
+
throw new TypeError("ledger.entries must map each implementation coverage token exactly once");
|
|
318
|
+
}
|
|
319
|
+
return Object.freeze({
|
|
320
|
+
formatVersion: FEATURE_LEDGER_FORMAT_VERSION,
|
|
321
|
+
dialects: Object.freeze(dialects),
|
|
322
|
+
entries: Object.freeze(entries),
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
export function defineGrammarFeatureLedger(value) {
|
|
326
|
+
return parseGrammarFeatureLedger(value);
|
|
327
|
+
}
|
|
328
|
+
export function featureSupport(ledger, featureId, dialect) {
|
|
329
|
+
const entry = ledger.entries.find(({ id }) => id === featureId);
|
|
330
|
+
return entry?.dialects[dialect];
|
|
331
|
+
}
|
|
332
|
+
/** Resolves a feature classification for a concrete server version, failing closed outside its version window. */
|
|
333
|
+
export function featureSupportAtVersion(ledger, featureId, dialect, version) {
|
|
334
|
+
const support = featureSupport(ledger, featureId, dialect);
|
|
335
|
+
const policy = ledger.dialects[dialect];
|
|
336
|
+
if (support === undefined || policy === undefined)
|
|
337
|
+
return undefined;
|
|
338
|
+
if (support.introduced !== undefined &&
|
|
339
|
+
compareGrammarVersions(version, support.introduced, policy.versionScheme) < 0) {
|
|
340
|
+
return undefined;
|
|
341
|
+
}
|
|
342
|
+
if (support.removed !== undefined && compareGrammarVersions(version, support.removed, policy.versionScheme) >= 0) {
|
|
343
|
+
return undefined;
|
|
344
|
+
}
|
|
345
|
+
return support;
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=feature-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-ledger.js","sourceRoot":"","sources":["../../../../src/feature-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
export { assertCodecConformance, assertGrammarConformance, assertRuntimeAdapterConformance, defineCodecConformanceFixture, defineGrammarConformanceFixture, } from "./assertions.js";
|
|
1
|
+
export { assertCodecConformance, assertFragmentListConformance, assertGrammarConformance, assertRuntimeAdapterConformance, assertVersionedCapabilityConformance, defineCodecConformanceFixture, defineGrammarConformanceFixture, } from "./assertions.js";
|
|
2
|
+
export type { FailureInjection, FailureInjectionSnapshot, FailureInjector } from "./failure-injection.js";
|
|
3
|
+
export { ConformanceInjectedFailure, createFailureInjector, INJECTED_FAILURE_CODE, } from "./failure-injection.js";
|
|
4
|
+
export type { GrammarDialectPolicy, GrammarFeatureCategory, GrammarFeatureEntry, GrammarFeatureLedger, GrammarFeatureScope, GrammarFeatureSource, GrammarFeatureSupport, GrammarFeatureSupportLevel, GrammarVersionRange, GrammarVersionScheme, } from "./feature-ledger.js";
|
|
5
|
+
export { compareGrammarVersions, defineGrammarFeatureLedger, FEATURE_LEDGER_FORMAT_VERSION, featureSupport, featureSupportAtVersion, grammarVersionInRange, parseGrammarFeatureLedger, } from "./feature-ledger.js";
|
|
2
6
|
export { measureGrammarPerformance } from "./performance.js";
|
|
3
|
-
export type { CodecConformanceCase, CodecConformanceFixture, GrammarAnalysisProbe, GrammarCapabilityProbe, GrammarConformanceFixture, GrammarConformanceReport, GrammarDependencyExpectation, GrammarPerformanceOptions, GrammarPerformanceResult, GrammarPolicyProbe, GrammarSemanticExpectation, GrammarStructuralProbe, GrammarUnsupportedProbe, RequiredGrammarProbe, RuntimeAdapterConformanceFixture, } from "./types.js";
|
|
7
|
+
export type { CodecConformanceCase, CodecConformanceFixture, FragmentListConformanceFixture, FragmentListConformanceReport, FragmentListDiagnosticCase, FragmentListParameterExpectation, FragmentListRenderCase, GrammarAnalysisProbe, GrammarCapabilityProbe, GrammarConformanceFixture, GrammarConformanceReport, GrammarDependencyExpectation, GrammarPerformanceOptions, GrammarPerformanceResult, GrammarPolicyProbe, GrammarSemanticExpectation, GrammarStructuralProbe, GrammarUnsupportedProbe, RequiredGrammarProbe, RuntimeAdapterConformanceFixture, VersionedCapabilityConformanceFixture, VersionedCapabilityExpectation, VersionedCapabilityProbe, } from "./types.js";
|
|
4
8
|
export { GRAMMAR_CONFORMANCE_VERSION, REQUIRED_GRAMMAR_PROBES } from "./types.js";
|
|
5
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,+BAA+B,EAC/B,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,gCAAgC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,wBAAwB,EACxB,+BAA+B,EAC/B,oCAAoC,EACpC,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,6BAA6B,EAC7B,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,gCAAgC,EAChC,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export { assertCodecConformance, assertGrammarConformance, assertRuntimeAdapterConformance, defineCodecConformanceFixture, defineGrammarConformanceFixture, } from "./assertions.js";
|
|
1
|
+
export { assertCodecConformance, assertFragmentListConformance, assertGrammarConformance, assertRuntimeAdapterConformance, assertVersionedCapabilityConformance, defineCodecConformanceFixture, defineGrammarConformanceFixture, } from "./assertions.js";
|
|
2
|
+
export { ConformanceInjectedFailure, createFailureInjector, INJECTED_FAILURE_CODE, } from "./failure-injection.js";
|
|
3
|
+
export { compareGrammarVersions, defineGrammarFeatureLedger, FEATURE_LEDGER_FORMAT_VERSION, featureSupport, featureSupportAtVersion, grammarVersionInRange, parseGrammarFeatureLedger, } from "./feature-ledger.js";
|
|
2
4
|
export { measureGrammarPerformance } from "./performance.js";
|
|
3
5
|
export { GRAMMAR_CONFORMANCE_VERSION, REQUIRED_GRAMMAR_PROBES } from "./types.js";
|
|
4
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,+BAA+B,EAC/B,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,wBAAwB,EACxB,+BAA+B,EAC/B,oCAAoC,EACpC,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAahC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,6BAA6B,EAC7B,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AA0B7D,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { DialectPlugin, Query, QueryCardinality, QueryConnectionAffinity, QueryDependencyAccess, QueryDependencyKind, QueryLocking, QueryOperation, QueryVolatility, SchemaSnapshot, SqlRenderer } from "@typed-sql/core";
|
|
1
|
+
import type { DialectCapabilityStates, DialectPlugin, Query, QueryCardinality, QueryConnectionAffinity, QueryDependencyAccess, QueryDependencyKind, QueryLocking, QueryOperation, QueryVolatility, SchemaSnapshot, SqlRenderer, SqlSegment } from "@typed-sql/core";
|
|
2
|
+
/** @deprecated Use `CONFORMANCE_VERSION` from `@typed-sql/conformance/v2`. Removed in typed-sql 3.0. */
|
|
2
3
|
export declare const GRAMMAR_CONFORMANCE_VERSION: 1;
|
|
3
4
|
export declare const REQUIRED_GRAMMAR_PROBES: readonly ["select", "parameters", "nullability", "joins", "ctes", "functions", "dml"];
|
|
4
5
|
export type RequiredGrammarProbe = (typeof REQUIRED_GRAMMAR_PROBES)[number];
|
|
@@ -76,8 +77,25 @@ export interface GrammarConformanceReport {
|
|
|
76
77
|
readonly grammarVersion: string;
|
|
77
78
|
readonly requiredProbes: readonly RequiredGrammarProbe[];
|
|
78
79
|
readonly capabilities: Readonly<Record<string, boolean>>;
|
|
80
|
+
readonly capabilityStates: DialectCapabilityStates;
|
|
79
81
|
readonly structuralVariants: number;
|
|
80
82
|
}
|
|
83
|
+
export interface VersionedCapabilityExpectation {
|
|
84
|
+
readonly capability: string;
|
|
85
|
+
readonly level: "exact" | "conservative" | "unsupported";
|
|
86
|
+
readonly diagnostic?: string;
|
|
87
|
+
readonly evidenceKinds?: readonly ("server-version" | "feature" | "setting" | "policy" | "grammar")[];
|
|
88
|
+
}
|
|
89
|
+
export interface VersionedCapabilityProbe<Snapshot, Policy = unknown> {
|
|
90
|
+
readonly name: string;
|
|
91
|
+
readonly snapshot: Snapshot;
|
|
92
|
+
readonly policy?: Policy;
|
|
93
|
+
readonly expected: readonly VersionedCapabilityExpectation[];
|
|
94
|
+
}
|
|
95
|
+
export interface VersionedCapabilityConformanceFixture<Snapshot extends SchemaSnapshot, Policy = unknown> {
|
|
96
|
+
readonly dialect: DialectPlugin<Snapshot, Policy>;
|
|
97
|
+
readonly probes: readonly VersionedCapabilityProbe<Snapshot, Policy>[];
|
|
98
|
+
}
|
|
81
99
|
export interface CodecConformanceCase<Input, Output> {
|
|
82
100
|
readonly name: string;
|
|
83
101
|
readonly input: Input;
|
|
@@ -96,6 +114,47 @@ export interface RuntimeAdapterConformanceFixture<Row, Parameters extends readon
|
|
|
96
114
|
readonly expectedValues: readonly unknown[];
|
|
97
115
|
readonly rows: readonly Row[];
|
|
98
116
|
}
|
|
117
|
+
export interface FragmentListParameterExpectation {
|
|
118
|
+
readonly index: number;
|
|
119
|
+
readonly tsType: string;
|
|
120
|
+
readonly nullable: boolean;
|
|
121
|
+
readonly databaseType?: string;
|
|
122
|
+
}
|
|
123
|
+
export interface FragmentListRenderCase {
|
|
124
|
+
readonly name: string;
|
|
125
|
+
readonly cardinality: 1 | 2 | 5;
|
|
126
|
+
readonly query: {
|
|
127
|
+
readonly segments: readonly SqlSegment[];
|
|
128
|
+
};
|
|
129
|
+
readonly expectedText: string;
|
|
130
|
+
readonly expectedValues: readonly unknown[];
|
|
131
|
+
}
|
|
132
|
+
export interface FragmentListDiagnosticCase {
|
|
133
|
+
readonly name: string;
|
|
134
|
+
readonly source: string;
|
|
135
|
+
readonly diagnosticCode: string;
|
|
136
|
+
}
|
|
137
|
+
/** Shared source-analysis and rendering contract for implicit homogeneous fragment lists. */
|
|
138
|
+
export interface FragmentListConformanceFixture<Snapshot extends SchemaSnapshot, Policy = unknown> {
|
|
139
|
+
readonly name: string;
|
|
140
|
+
readonly dialect: DialectPlugin<Snapshot, Policy>;
|
|
141
|
+
readonly renderer: SqlRenderer;
|
|
142
|
+
readonly snapshot: Snapshot;
|
|
143
|
+
readonly compilerSource: string;
|
|
144
|
+
readonly expectedRepresentativeSql: string;
|
|
145
|
+
readonly expectedRowType: string;
|
|
146
|
+
readonly expectedResultKind: "rows" | "command";
|
|
147
|
+
readonly expectedElementParameters: readonly FragmentListParameterExpectation[];
|
|
148
|
+
readonly renderCases: readonly FragmentListRenderCase[];
|
|
149
|
+
readonly diagnostics?: readonly FragmentListDiagnosticCase[];
|
|
150
|
+
readonly policy?: Policy;
|
|
151
|
+
}
|
|
152
|
+
export interface FragmentListConformanceReport {
|
|
153
|
+
readonly grammar: string;
|
|
154
|
+
readonly artifactFingerprint: string;
|
|
155
|
+
readonly renderCardinalities: readonly [1, 2, 5];
|
|
156
|
+
readonly diagnosticCases: number;
|
|
157
|
+
}
|
|
99
158
|
export interface GrammarPerformanceOptions<Snapshot extends SchemaSnapshot, Policy> {
|
|
100
159
|
readonly dialect: DialectPlugin<Snapshot, Policy>;
|
|
101
160
|
readonly snapshot: Snapshot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,aAAa,EACb,KAAK,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EACX,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB,wGAAwG;AACxG,eAAO,MAAM,2BAA2B,EAAG,CAAU,CAAC;AAEtD,eAAO,MAAM,uBAAuB,uFAQzB,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IACtD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;IACvD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,MAAM,sBAAsB,GAC9B;IACE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;CACzC,GACD;IACE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC;CAC/C,CAAC;AAEN,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;CACxD;AAED,MAAM,WAAW,kBAAkB,CAAC,MAAM;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,yBAAyB,CAAC,QAAQ,SAAS,cAAc,EAAE,MAAM;IAChF,QAAQ,CAAC,OAAO,EAAE,OAAO,2BAA2B,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,YAAY,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACzD,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,2BAA2B,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzD,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IACnD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,aAAa,CAAC;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;CACvG;AAED,MAAM,WAAW,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,8BAA8B,EAAE,CAAC;CAC9D;AAED,MAAM,WAAW,qCAAqC,CAAC,QAAQ,SAAS,cAAc,EAAE,MAAM,GAAG,OAAO;IACtG,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,SAAS,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;CACxE;AAED,MAAM,WAAW,oBAAoB,CAAC,KAAK,EAAE,MAAM;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK,EAAE,MAAM;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;CAChE;AAED,MAAM,WAAW,gCAAgC,CAAC,GAAG,EAAE,UAAU,SAAS,SAAS,OAAO,EAAE;IAC1F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,SAAS,OAAO,EAAE,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;KAAE,CAAC;IAC7D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,SAAS,OAAO,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,6FAA6F;AAC7F,MAAM,WAAW,8BAA8B,CAAC,QAAQ,SAAS,cAAc,EAAE,MAAM,GAAG,OAAO;IAC/F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,yBAAyB,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAChF,QAAQ,CAAC,WAAW,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB,CAAC,QAAQ,SAAS,cAAc,EAAE,MAAM;IAChF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"AAgBA,wGAAwG;AACxG,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAU,CAAC;AAEtD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;IACnD,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,OAAO;IACP,MAAM;IACN,WAAW;IACX,KAAK;CACG,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { GrammarFeatureLedger } from "../feature-ledger.js";
|
|
2
|
+
import { type ConformanceProbe, type ConformanceSuite, type ConformanceTarget, type ConformanceTargetSelector, type ExpectedOutcome } from "./types.js";
|
|
3
|
+
export declare function defineConformanceProbe(probe: ConformanceProbe): ConformanceProbe;
|
|
4
|
+
export declare function defineConformanceSuite(suite: ConformanceSuite, ledger?: GrammarFeatureLedger): ConformanceSuite;
|
|
5
|
+
export declare function targetMatches(selector: ConformanceTargetSelector, target: ConformanceTarget): boolean;
|
|
6
|
+
export declare function selectExpectedOutcome(probe: ConformanceProbe, target: ConformanceTarget): ExpectedOutcome;
|
|
7
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../../../src/v2/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AA6BpB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAoBhF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,gBAAgB,CAc/G;AAUD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,yBAAyB,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAkBrG;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAQzG"}
|