@minnowdb/core 0.2.1 → 0.3.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.
- package/README.md +21 -32
- package/dist/engine/artifact-cache.d.ts +2 -0
- package/dist/engine/artifact-cache.d.ts.map +1 -1
- package/dist/engine/artifact-cache.js +5 -0
- package/dist/engine/artifact-cache.js.map +1 -1
- package/dist/engine/batch.d.ts +6 -1
- package/dist/engine/batch.d.ts.map +1 -1
- package/dist/engine/batch.js +17 -6
- package/dist/engine/batch.js.map +1 -1
- package/dist/engine/catalog.d.ts +22 -2
- package/dist/engine/catalog.d.ts.map +1 -1
- package/dist/engine/catalog.js +30 -3
- package/dist/engine/catalog.js.map +1 -1
- package/dist/engine/client.d.ts +2 -0
- package/dist/engine/client.d.ts.map +1 -1
- package/dist/engine/client.js +20 -10
- package/dist/engine/client.js.map +1 -1
- package/dist/engine/database.d.ts +67 -5
- package/dist/engine/database.d.ts.map +1 -1
- package/dist/engine/database.js +3508 -369
- package/dist/engine/database.js.map +1 -1
- package/dist/engine/defaults.d.ts +4 -7
- package/dist/engine/defaults.d.ts.map +1 -1
- package/dist/engine/defaults.js +47 -21
- package/dist/engine/defaults.js.map +1 -1
- package/dist/engine/fts.d.ts.map +1 -1
- package/dist/engine/fts.js +2 -0
- package/dist/engine/fts.js.map +1 -1
- package/dist/engine/index.d.ts +1 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +1 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/live.d.ts.map +1 -1
- package/dist/engine/live.js +10 -2
- package/dist/engine/live.js.map +1 -1
- package/dist/engine/optimizer.d.ts.map +1 -1
- package/dist/engine/optimizer.js +258 -23
- package/dist/engine/optimizer.js.map +1 -1
- package/dist/engine/query-cache.d.ts +1 -1
- package/dist/engine/query-cache.d.ts.map +1 -1
- package/dist/engine/query-cache.js +3 -1
- package/dist/engine/query-cache.js.map +1 -1
- package/dist/engine/query.d.ts +130 -22
- package/dist/engine/query.d.ts.map +1 -1
- package/dist/engine/query.js +1344 -241
- package/dist/engine/query.js.map +1 -1
- package/dist/engine/schema-wire.d.ts +6 -2
- package/dist/engine/schema-wire.d.ts.map +1 -1
- package/dist/engine/schema-wire.js +40 -33
- package/dist/engine/schema-wire.js.map +1 -1
- package/dist/engine/schema.d.ts +157 -76
- package/dist/engine/schema.d.ts.map +1 -1
- package/dist/engine/schema.js +548 -103
- package/dist/engine/schema.js.map +1 -1
- package/dist/engine/sort-keys.d.ts +4 -3
- package/dist/engine/sort-keys.d.ts.map +1 -1
- package/dist/engine/sort-keys.js +42 -27
- package/dist/engine/sort-keys.js.map +1 -1
- package/dist/engine/sql-domains.d.ts +26 -0
- package/dist/engine/sql-domains.d.ts.map +1 -0
- package/dist/engine/sql-domains.js +421 -0
- package/dist/engine/sql-domains.js.map +1 -0
- package/dist/engine/sql-driver.d.ts +19 -0
- package/dist/engine/sql-driver.d.ts.map +1 -0
- package/dist/engine/sql-driver.js +2 -0
- package/dist/engine/sql-driver.js.map +1 -0
- package/dist/engine/sql-json.d.ts +7 -8
- package/dist/engine/sql-json.d.ts.map +1 -1
- package/dist/engine/sql-json.js +28 -14
- package/dist/engine/sql-json.js.map +1 -1
- package/dist/engine/sql-semantics.d.ts +2 -0
- package/dist/engine/sql-semantics.d.ts.map +1 -1
- package/dist/engine/sql-semantics.js +69 -3
- package/dist/engine/sql-semantics.js.map +1 -1
- package/dist/engine/vector.d.ts +5 -1
- package/dist/engine/vector.d.ts.map +1 -1
- package/dist/engine/vector.js +433 -61
- package/dist/engine/vector.js.map +1 -1
- package/dist/engine/worker-host.d.ts +1 -0
- package/dist/engine/worker-host.d.ts.map +1 -1
- package/dist/engine/worker-host.js +4 -0
- package/dist/engine/worker-host.js.map +1 -1
- package/dist/plan/index.d.ts +3 -3
- package/dist/plan/index.js +3 -3
- package/dist/storage/indexeddb.d.ts +44 -5
- package/dist/storage/indexeddb.d.ts.map +1 -1
- package/dist/storage/indexeddb.js +738 -175
- package/dist/storage/indexeddb.js.map +1 -1
- package/dist/storage/memory.d.ts +27 -10
- package/dist/storage/memory.d.ts.map +1 -1
- package/dist/storage/memory.js +67 -18
- package/dist/storage/memory.js.map +1 -1
- package/dist/storage/opfs/leader.d.ts +28 -6
- package/dist/storage/opfs/leader.d.ts.map +1 -1
- package/dist/storage/opfs/leader.js +301 -34
- package/dist/storage/opfs/leader.js.map +1 -1
- package/dist/storage/opfs/rpc.d.ts.map +1 -1
- package/dist/storage/opfs/rpc.js +2 -1
- package/dist/storage/opfs/rpc.js.map +1 -1
- package/dist/storage/opfs/store.d.ts +34 -5
- package/dist/storage/opfs/store.d.ts.map +1 -1
- package/dist/storage/opfs/store.js +41 -0
- package/dist/storage/opfs/store.js.map +1 -1
- package/dist/storage/snapshot.d.ts +14 -0
- package/dist/storage/snapshot.d.ts.map +1 -1
- package/dist/storage/snapshot.js +44 -0
- package/dist/storage/snapshot.js.map +1 -1
- package/dist/storage/toolkit/index.d.ts +1 -1
- package/dist/storage/toolkit/index.d.ts.map +1 -1
- package/dist/storage/toolkit/index.js +1 -1
- package/dist/storage/toolkit/index.js.map +1 -1
- package/dist/storage/toolkit/record-core.d.ts +19 -5
- package/dist/storage/toolkit/record-core.d.ts.map +1 -1
- package/dist/storage/toolkit/record-core.js +353 -78
- package/dist/storage/toolkit/record-core.js.map +1 -1
- package/dist/storage/toolkit/wire.d.ts +15 -0
- package/dist/storage/toolkit/wire.d.ts.map +1 -1
- package/dist/storage/toolkit/wire.js +134 -0
- package/dist/storage/toolkit/wire.js.map +1 -1
- package/dist/storage/types.d.ts +213 -31
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js +291 -20
- package/dist/storage/types.js.map +1 -1
- package/dist/testing/block-store-conformance.d.ts.map +1 -1
- package/dist/testing/block-store-conformance.js +153 -2
- package/dist/testing/block-store-conformance.js.map +1 -1
- package/dist/testing/index.d.ts +9 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +23 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/simulator.d.ts +98 -0
- package/dist/testing/simulator.d.ts.map +1 -0
- package/dist/testing/simulator.js +560 -0
- package/dist/testing/simulator.js.map +1 -0
- package/dist/testing/sqllogictest.d.ts +90 -0
- package/dist/testing/sqllogictest.d.ts.map +1 -0
- package/dist/testing/sqllogictest.js +435 -0
- package/dist/testing/sqllogictest.js.map +1 -0
- package/dist/transactions/index.d.ts +18 -3
- package/dist/transactions/index.d.ts.map +1 -1
- package/dist/transactions/index.js +64 -8
- package/dist/transactions/index.js.map +1 -1
- package/package.json +5 -3
- package/postgres-feature-profile.json +223 -0
- package/sql-feature-matrix.json +172 -252
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { QueryResult, QueryValue } from "../engine/index.js";
|
|
2
|
+
export type SqlLogicType = "I" | "R" | "T";
|
|
3
|
+
export type SqlLogicSortMode = "nosort" | "rowsort" | "valuesort";
|
|
4
|
+
export interface SqlLogicLocation {
|
|
5
|
+
readonly file: string;
|
|
6
|
+
readonly line: number;
|
|
7
|
+
}
|
|
8
|
+
export interface SqlLogicCondition {
|
|
9
|
+
readonly kind: "onlyif" | "skipif";
|
|
10
|
+
readonly engine: string;
|
|
11
|
+
readonly location: SqlLogicLocation;
|
|
12
|
+
}
|
|
13
|
+
interface LocatedRecord {
|
|
14
|
+
readonly location: SqlLogicLocation;
|
|
15
|
+
}
|
|
16
|
+
export interface SqlLogicStatement extends LocatedRecord {
|
|
17
|
+
readonly kind: "statement";
|
|
18
|
+
readonly expectation: "ok" | "error";
|
|
19
|
+
readonly sql: string;
|
|
20
|
+
readonly conditions: readonly SqlLogicCondition[];
|
|
21
|
+
}
|
|
22
|
+
export interface SqlLogicExpectedValues {
|
|
23
|
+
readonly kind: "values";
|
|
24
|
+
readonly values: readonly string[];
|
|
25
|
+
}
|
|
26
|
+
export interface SqlLogicExpectedHash {
|
|
27
|
+
readonly kind: "hash";
|
|
28
|
+
readonly valueCount: number;
|
|
29
|
+
readonly hash: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SqlLogicQuery extends LocatedRecord {
|
|
32
|
+
readonly kind: "query";
|
|
33
|
+
readonly types: readonly SqlLogicType[];
|
|
34
|
+
readonly sortMode: SqlLogicSortMode;
|
|
35
|
+
readonly label?: string;
|
|
36
|
+
readonly sql: string;
|
|
37
|
+
readonly expected: SqlLogicExpectedValues | SqlLogicExpectedHash;
|
|
38
|
+
readonly conditions: readonly SqlLogicCondition[];
|
|
39
|
+
}
|
|
40
|
+
export interface SqlLogicHashThreshold extends LocatedRecord {
|
|
41
|
+
readonly kind: "hash-threshold";
|
|
42
|
+
readonly valueCount: number;
|
|
43
|
+
}
|
|
44
|
+
export interface SqlLogicHalt extends LocatedRecord {
|
|
45
|
+
readonly kind: "halt";
|
|
46
|
+
}
|
|
47
|
+
export type SqlLogicRecord = SqlLogicStatement | SqlLogicQuery | SqlLogicHashThreshold | SqlLogicHalt;
|
|
48
|
+
export interface SqlLogicDatabase {
|
|
49
|
+
readonly engineName: string;
|
|
50
|
+
execute(sql: string): Promise<unknown>;
|
|
51
|
+
query(sql: string): Promise<QueryResult>;
|
|
52
|
+
close(): void | Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
export interface SqlLogicRunStatistics {
|
|
55
|
+
readonly files: number;
|
|
56
|
+
readonly statements: number;
|
|
57
|
+
readonly queries: number;
|
|
58
|
+
readonly values: number;
|
|
59
|
+
readonly skipped: number;
|
|
60
|
+
readonly halted: boolean;
|
|
61
|
+
readonly hashThreshold: number;
|
|
62
|
+
}
|
|
63
|
+
export interface SqlLogicRunOptions {
|
|
64
|
+
/** Audit hook. Returning "continue" records the failure externally and runs the next record. */
|
|
65
|
+
readonly onFailure?: (failure: SqlLogicFailure, record: SqlLogicStatement | SqlLogicQuery) => "continue" | undefined;
|
|
66
|
+
}
|
|
67
|
+
export declare class SqlLogicParseError extends Error {
|
|
68
|
+
readonly location: SqlLogicLocation;
|
|
69
|
+
constructor(message: string, location: SqlLogicLocation);
|
|
70
|
+
}
|
|
71
|
+
export declare class SqlLogicFailure extends Error {
|
|
72
|
+
readonly location: SqlLogicLocation;
|
|
73
|
+
readonly sql?: string | undefined;
|
|
74
|
+
constructor(message: string, location: SqlLogicLocation, sql?: string | undefined, options?: ErrorOptions);
|
|
75
|
+
}
|
|
76
|
+
/** Parses the original SQLite SQLLogicTest format, rejecting unknown extensions. */
|
|
77
|
+
export declare function parseSqlLogicTest(source: string, file?: string): SqlLogicRecord[];
|
|
78
|
+
/**
|
|
79
|
+
* Parses a line source one record at a time. The full upstream corpus contains very large files;
|
|
80
|
+
* this form bounds parser memory to the largest individual record instead of the largest file.
|
|
81
|
+
*/
|
|
82
|
+
export declare function parseSqlLogicTestLines(lines: Iterable<string> | AsyncIterable<string>, file?: string): AsyncGenerator<SqlLogicRecord>;
|
|
83
|
+
/** Runs already-parsed records against one empty database connection. */
|
|
84
|
+
export declare function runSqlLogicTest(records: Iterable<SqlLogicRecord> | AsyncIterable<SqlLogicRecord>, database: SqlLogicDatabase, options?: SqlLogicRunOptions): Promise<SqlLogicRunStatistics>;
|
|
85
|
+
/** Renders one value with the original SQLite SQLLogicTest adapter rules. */
|
|
86
|
+
export declare function renderSqlLogicValue(value: QueryValue, type: SqlLogicType | undefined): string;
|
|
87
|
+
/** Small browser-safe MD5 implementation for compatibility with the original corpus hashes. */
|
|
88
|
+
export declare function md5Hex(input: string): string;
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=sqllogictest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqllogictest.d.ts","sourceRoot":"","sources":["../../src/testing/sqllogictest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
export class SqlLogicParseError extends Error {
|
|
2
|
+
location;
|
|
3
|
+
constructor(message, location) {
|
|
4
|
+
super(`${location.file}:${String(location.line)}: ${message}`);
|
|
5
|
+
this.location = location;
|
|
6
|
+
this.name = "SqlLogicParseError";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class SqlLogicFailure extends Error {
|
|
10
|
+
location;
|
|
11
|
+
sql;
|
|
12
|
+
constructor(message, location, sql, options) {
|
|
13
|
+
super(`${location.file}:${String(location.line)}: ${message}${sql === undefined ? "" : `\n${sql}`}`, options);
|
|
14
|
+
this.location = location;
|
|
15
|
+
this.sql = sql;
|
|
16
|
+
this.name = "SqlLogicFailure";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** Parses the original SQLite SQLLogicTest format, rejecting unknown extensions. */
|
|
20
|
+
export function parseSqlLogicTest(source, file = "<memory>") {
|
|
21
|
+
const groups = splitRecordGroups(source);
|
|
22
|
+
return groups.map((group) => parseRecord(group, file));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parses a line source one record at a time. The full upstream corpus contains very large files;
|
|
26
|
+
* this form bounds parser memory to the largest individual record instead of the largest file.
|
|
27
|
+
*/
|
|
28
|
+
export async function* parseSqlLogicTestLines(lines, file = "<stream>") {
|
|
29
|
+
let current = [];
|
|
30
|
+
let lineNumber = 0;
|
|
31
|
+
const finish = () => {
|
|
32
|
+
if (current.length === 0)
|
|
33
|
+
return undefined;
|
|
34
|
+
const record = parseRecord({ lines: current }, file);
|
|
35
|
+
current = [];
|
|
36
|
+
return record;
|
|
37
|
+
};
|
|
38
|
+
for await (const original of lines) {
|
|
39
|
+
lineNumber++;
|
|
40
|
+
const text = original.endsWith("\r") ? original.slice(0, -1) : original;
|
|
41
|
+
if (text.startsWith("#"))
|
|
42
|
+
continue;
|
|
43
|
+
if (text.trim().length === 0) {
|
|
44
|
+
const record = finish();
|
|
45
|
+
if (record !== undefined)
|
|
46
|
+
yield record;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
current.push({ text, number: lineNumber });
|
|
50
|
+
}
|
|
51
|
+
const record = finish();
|
|
52
|
+
if (record !== undefined)
|
|
53
|
+
yield record;
|
|
54
|
+
}
|
|
55
|
+
function splitRecordGroups(source) {
|
|
56
|
+
const lines = source.replaceAll("\r\n", "\n").replaceAll("\r", "\n").split("\n");
|
|
57
|
+
const groups = [];
|
|
58
|
+
let current = [];
|
|
59
|
+
const finish = () => {
|
|
60
|
+
if (current.length > 0)
|
|
61
|
+
groups.push({ lines: current });
|
|
62
|
+
current = [];
|
|
63
|
+
};
|
|
64
|
+
for (const [index, text] of lines.entries()) {
|
|
65
|
+
if (text.startsWith("#"))
|
|
66
|
+
continue;
|
|
67
|
+
if (text.trim().length === 0) {
|
|
68
|
+
finish();
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
current.push({ text, number: index + 1 });
|
|
72
|
+
}
|
|
73
|
+
finish();
|
|
74
|
+
return groups;
|
|
75
|
+
}
|
|
76
|
+
function parseRecord(group, file) {
|
|
77
|
+
let index = 0;
|
|
78
|
+
const conditions = [];
|
|
79
|
+
while (index < group.lines.length) {
|
|
80
|
+
const line = requireLine(group, index, file);
|
|
81
|
+
const tokens = tokenizeDirective(line.text);
|
|
82
|
+
if (tokens[0] !== "skipif" && tokens[0] !== "onlyif")
|
|
83
|
+
break;
|
|
84
|
+
if (tokens.length !== 2)
|
|
85
|
+
fail("conditional must name exactly one engine", file, line.number);
|
|
86
|
+
conditions.push({
|
|
87
|
+
kind: tokens[0],
|
|
88
|
+
engine: tokens[1] ?? "",
|
|
89
|
+
location: { file, line: line.number },
|
|
90
|
+
});
|
|
91
|
+
index++;
|
|
92
|
+
}
|
|
93
|
+
const header = requireLine(group, index, file);
|
|
94
|
+
const tokens = tokenizeDirective(header.text);
|
|
95
|
+
const location = { file, line: header.number };
|
|
96
|
+
if (tokens[0] === "statement") {
|
|
97
|
+
if (tokens.length !== 2 || (tokens[1] !== "ok" && tokens[1] !== "error")) {
|
|
98
|
+
fail("statement must be 'statement ok' or 'statement error'", file, header.number);
|
|
99
|
+
}
|
|
100
|
+
const sql = sqlLines(group.lines.slice(index + 1));
|
|
101
|
+
if (sql.length === 0)
|
|
102
|
+
fail("statement has no SQL", file, header.number);
|
|
103
|
+
return {
|
|
104
|
+
kind: "statement",
|
|
105
|
+
expectation: tokens[1],
|
|
106
|
+
sql,
|
|
107
|
+
conditions,
|
|
108
|
+
location,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
if (tokens[0] === "query") {
|
|
112
|
+
if (tokens.length < 2 || tokens.length > 4) {
|
|
113
|
+
fail("query must be 'query <types> [sort-mode] [label]'", file, header.number);
|
|
114
|
+
}
|
|
115
|
+
const typeString = tokens[1] ?? "";
|
|
116
|
+
const types = [];
|
|
117
|
+
for (const type of typeString)
|
|
118
|
+
types.push(type);
|
|
119
|
+
if (types.length === 0 || types.some((type) => type !== "I" && type !== "R" && type !== "T")) {
|
|
120
|
+
fail("query type string must contain only I, R, and T", file, header.number);
|
|
121
|
+
}
|
|
122
|
+
const sortMode = tokens[2] ?? "nosort";
|
|
123
|
+
if (sortMode !== "nosort" && sortMode !== "rowsort" && sortMode !== "valuesort") {
|
|
124
|
+
fail(`unknown query sort mode '${sortMode}'`, file, header.number);
|
|
125
|
+
}
|
|
126
|
+
const body = group.lines.slice(index + 1);
|
|
127
|
+
const separator = body.findIndex((line) => line.text === "----");
|
|
128
|
+
const queryLines = separator < 0 ? body : body.slice(0, separator);
|
|
129
|
+
const sql = sqlLines(queryLines);
|
|
130
|
+
if (sql.length === 0)
|
|
131
|
+
fail("query has no SQL", file, header.number);
|
|
132
|
+
const expectedLines = separator < 0 ? [] : body.slice(separator + 1).map((line) => line.text);
|
|
133
|
+
return {
|
|
134
|
+
kind: "query",
|
|
135
|
+
types: types,
|
|
136
|
+
sortMode,
|
|
137
|
+
...(tokens[3] === undefined ? {} : { label: tokens[3] }),
|
|
138
|
+
sql,
|
|
139
|
+
expected: parseExpected(expectedLines, file, header.number),
|
|
140
|
+
conditions,
|
|
141
|
+
location,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
if (conditions.length > 0) {
|
|
145
|
+
fail("conditionals may prefix only a statement or query", file, header.number);
|
|
146
|
+
}
|
|
147
|
+
if (tokens[0] === "hash-threshold") {
|
|
148
|
+
if (tokens.length !== 2 || !isNonNegativeInteger(tokens[1])) {
|
|
149
|
+
fail("hash-threshold must be a non-negative whole number", file, header.number);
|
|
150
|
+
}
|
|
151
|
+
return { kind: "hash-threshold", valueCount: Number(tokens[1]), location };
|
|
152
|
+
}
|
|
153
|
+
if (tokens[0] === "halt") {
|
|
154
|
+
if (tokens.length !== 1 || group.lines.length !== 1) {
|
|
155
|
+
fail("halt does not accept arguments", file, header.number);
|
|
156
|
+
}
|
|
157
|
+
return { kind: "halt", location };
|
|
158
|
+
}
|
|
159
|
+
fail(`unknown SQLLogicTest directive '${tokens[0] ?? ""}'`, file, header.number);
|
|
160
|
+
}
|
|
161
|
+
function parseExpected(lines, file, line) {
|
|
162
|
+
if (lines.length !== 1)
|
|
163
|
+
return { kind: "values", values: lines };
|
|
164
|
+
const match = /^(\d+) values hashing to ([0-9a-fA-F]{32})$/.exec(lines[0] ?? "");
|
|
165
|
+
if (match === null)
|
|
166
|
+
return { kind: "values", values: lines };
|
|
167
|
+
const valueCount = Number(match[1]);
|
|
168
|
+
if (!Number.isSafeInteger(valueCount))
|
|
169
|
+
fail("hashed value count is too large", file, line);
|
|
170
|
+
return { kind: "hash", valueCount, hash: (match[2] ?? "").toLowerCase() };
|
|
171
|
+
}
|
|
172
|
+
function tokenizeDirective(line) {
|
|
173
|
+
return line.trim().split(/\s+/u);
|
|
174
|
+
}
|
|
175
|
+
function sqlLines(lines) {
|
|
176
|
+
return lines.map((line) => line.text).join("\n");
|
|
177
|
+
}
|
|
178
|
+
function requireLine(group, index, file) {
|
|
179
|
+
const line = group.lines[index];
|
|
180
|
+
if (line === undefined) {
|
|
181
|
+
const last = group.lines.at(-1)?.number ?? 1;
|
|
182
|
+
fail("conditional is missing its statement or query", file, last);
|
|
183
|
+
}
|
|
184
|
+
return line;
|
|
185
|
+
}
|
|
186
|
+
function isNonNegativeInteger(value) {
|
|
187
|
+
return value !== undefined && /^\d+$/u.test(value) && Number.isSafeInteger(Number(value));
|
|
188
|
+
}
|
|
189
|
+
function fail(message, file, line) {
|
|
190
|
+
throw new SqlLogicParseError(message, { file, line });
|
|
191
|
+
}
|
|
192
|
+
/** Runs already-parsed records against one empty database connection. */
|
|
193
|
+
export async function runSqlLogicTest(records, database, options = {}) {
|
|
194
|
+
let statements = 0;
|
|
195
|
+
let queries = 0;
|
|
196
|
+
let values = 0;
|
|
197
|
+
let skipped = 0;
|
|
198
|
+
let hashThreshold = 8;
|
|
199
|
+
let halted = false;
|
|
200
|
+
const labels = new Map();
|
|
201
|
+
try {
|
|
202
|
+
for await (const record of records) {
|
|
203
|
+
if (record.kind === "hash-threshold") {
|
|
204
|
+
hashThreshold = record.valueCount;
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
if (record.kind === "halt") {
|
|
208
|
+
halted = true;
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
if (shouldSkip(record.conditions, database.engineName)) {
|
|
212
|
+
skipped++;
|
|
213
|
+
if (record.kind === "query" && record.label !== undefined) {
|
|
214
|
+
rememberExpectedLabel(record, labels);
|
|
215
|
+
}
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
try {
|
|
219
|
+
if (record.kind === "statement") {
|
|
220
|
+
statements++;
|
|
221
|
+
await runStatement(record, database);
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
queries++;
|
|
225
|
+
const actual = await runQuery(record, database);
|
|
226
|
+
values += actual.length;
|
|
227
|
+
compareExpected(record, actual, hashThreshold);
|
|
228
|
+
rememberActualLabel(record, actual, labels);
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
if (error instanceof SqlLogicFailure && options.onFailure?.(error, record) === "continue") {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
finally {
|
|
239
|
+
await database.close();
|
|
240
|
+
}
|
|
241
|
+
return { files: 1, statements, queries, values, skipped, halted, hashThreshold };
|
|
242
|
+
}
|
|
243
|
+
function shouldSkip(conditions, engineName) {
|
|
244
|
+
const engine = engineName.toLowerCase();
|
|
245
|
+
return conditions.some((condition) => {
|
|
246
|
+
const matches = condition.engine.toLowerCase() === engine;
|
|
247
|
+
return condition.kind === "skipif" ? matches : !matches;
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
async function runStatement(record, database) {
|
|
251
|
+
let failure;
|
|
252
|
+
try {
|
|
253
|
+
await database.execute(record.sql);
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
failure = error;
|
|
257
|
+
}
|
|
258
|
+
if (record.expectation === "error") {
|
|
259
|
+
if (failure !== undefined)
|
|
260
|
+
return;
|
|
261
|
+
throw new SqlLogicFailure("statement succeeded; expected an error", record.location, record.sql);
|
|
262
|
+
}
|
|
263
|
+
if (failure !== undefined) {
|
|
264
|
+
throw new SqlLogicFailure("statement failed; expected success", record.location, record.sql, {
|
|
265
|
+
cause: failure,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
async function runQuery(record, database) {
|
|
270
|
+
let result;
|
|
271
|
+
try {
|
|
272
|
+
result = await database.query(record.sql);
|
|
273
|
+
}
|
|
274
|
+
catch (cause) {
|
|
275
|
+
throw new SqlLogicFailure("query failed", record.location, record.sql, { cause });
|
|
276
|
+
}
|
|
277
|
+
if (result.columns.length !== record.types.length) {
|
|
278
|
+
throw new SqlLogicFailure(`wrong column count: expected ${String(record.types.length)}, received ${String(result.columns.length)}`, record.location, record.sql);
|
|
279
|
+
}
|
|
280
|
+
const rows = result.rows.map((row) => result.columns.map((column, index) => renderSqlLogicValue(row[column] ?? null, record.types[index])));
|
|
281
|
+
if (record.sortMode === "rowsort")
|
|
282
|
+
rows.sort(compareRows);
|
|
283
|
+
const flattened = rows.flat();
|
|
284
|
+
if (record.sortMode === "valuesort")
|
|
285
|
+
flattened.sort(compareText);
|
|
286
|
+
return flattened;
|
|
287
|
+
}
|
|
288
|
+
function compareRows(left, right) {
|
|
289
|
+
for (let index = 0; index < left.length; index++) {
|
|
290
|
+
const comparison = compareText(left[index] ?? "", right[index] ?? "");
|
|
291
|
+
if (comparison !== 0)
|
|
292
|
+
return comparison;
|
|
293
|
+
}
|
|
294
|
+
return 0;
|
|
295
|
+
}
|
|
296
|
+
function compareText(left, right) {
|
|
297
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
298
|
+
}
|
|
299
|
+
/** Renders one value with the original SQLite SQLLogicTest adapter rules. */
|
|
300
|
+
export function renderSqlLogicValue(value, type) {
|
|
301
|
+
if (value === null)
|
|
302
|
+
return "NULL";
|
|
303
|
+
if (type === "I") {
|
|
304
|
+
const numeric = typeof value === "boolean" ? Number(value) : Number(value);
|
|
305
|
+
if (!Number.isFinite(numeric))
|
|
306
|
+
return "0";
|
|
307
|
+
return String(Math.trunc(numeric));
|
|
308
|
+
}
|
|
309
|
+
if (type === "R") {
|
|
310
|
+
const numeric = typeof value === "boolean" ? Number(value) : Number(value);
|
|
311
|
+
return Number.isFinite(numeric) ? numeric.toFixed(3) : "0.000";
|
|
312
|
+
}
|
|
313
|
+
const rendered = value instanceof Date ? value.toISOString() : String(value);
|
|
314
|
+
if (rendered.length === 0)
|
|
315
|
+
return "(empty)";
|
|
316
|
+
return rendered.replaceAll(/[^ -~]/gu, "@");
|
|
317
|
+
}
|
|
318
|
+
function compareExpected(record, actual, hashThreshold) {
|
|
319
|
+
const hashed = hashThreshold > 0 && actual.length > hashThreshold;
|
|
320
|
+
if (hashed) {
|
|
321
|
+
if (record.expected.kind !== "hash") {
|
|
322
|
+
throw new SqlLogicFailure(`result exceeds hash-threshold ${String(hashThreshold)} but the expected result is not hashed`, record.location, record.sql);
|
|
323
|
+
}
|
|
324
|
+
const hash = md5Hex(withTrailingNewlines(actual));
|
|
325
|
+
if (record.expected.valueCount !== actual.length || record.expected.hash !== hash) {
|
|
326
|
+
throw new SqlLogicFailure(`wrong result hash: expected ${String(record.expected.valueCount)} values hashing to ${record.expected.hash}, received ${String(actual.length)} values hashing to ${hash}`, record.location, record.sql);
|
|
327
|
+
}
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
if (record.expected.kind === "hash") {
|
|
331
|
+
throw new SqlLogicFailure(`expected result is hashed but ${String(actual.length)} values do not exceed hash-threshold ${String(hashThreshold)}`, record.location, record.sql);
|
|
332
|
+
}
|
|
333
|
+
if (!equalValues(record.expected.values, actual)) {
|
|
334
|
+
const expected = describeValues(record.expected.values, hashThreshold);
|
|
335
|
+
const received = describeValues(actual, hashThreshold);
|
|
336
|
+
throw new SqlLogicFailure(`wrong result:\nexpected ${expected}\nreceived ${received}`, record.location, record.sql);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
function equalValues(expected, actual) {
|
|
340
|
+
return (expected.length === actual.length && expected.every((value, index) => value === actual[index]));
|
|
341
|
+
}
|
|
342
|
+
function describeValues(values, hashThreshold) {
|
|
343
|
+
if (hashThreshold > 0 && values.length > hashThreshold) {
|
|
344
|
+
return `${String(values.length)} values hashing to ${md5Hex(withTrailingNewlines(values))}`;
|
|
345
|
+
}
|
|
346
|
+
return JSON.stringify(values);
|
|
347
|
+
}
|
|
348
|
+
function rememberExpectedLabel(record, labels) {
|
|
349
|
+
if (record.label === undefined)
|
|
350
|
+
return;
|
|
351
|
+
const hash = record.expected.kind === "hash"
|
|
352
|
+
? record.expected.hash
|
|
353
|
+
: md5Hex(withTrailingNewlines(record.expected.values));
|
|
354
|
+
rememberLabel(record.label, hash, record.location, labels);
|
|
355
|
+
}
|
|
356
|
+
function rememberActualLabel(record, values, labels) {
|
|
357
|
+
if (record.label === undefined)
|
|
358
|
+
return;
|
|
359
|
+
rememberLabel(record.label, md5Hex(withTrailingNewlines(values)), record.location, labels);
|
|
360
|
+
}
|
|
361
|
+
function rememberLabel(label, hash, location, labels) {
|
|
362
|
+
const previous = labels.get(label);
|
|
363
|
+
if (previous !== undefined && previous.hash !== hash) {
|
|
364
|
+
throw new SqlLogicFailure(`labeled result '${label}' differs from ${previous.location.file}:${String(previous.location.line)}`, location);
|
|
365
|
+
}
|
|
366
|
+
labels.set(label, { hash, location });
|
|
367
|
+
}
|
|
368
|
+
function withTrailingNewlines(values) {
|
|
369
|
+
return values.map((value) => `${value}\n`).join("");
|
|
370
|
+
}
|
|
371
|
+
/** Small browser-safe MD5 implementation for compatibility with the original corpus hashes. */
|
|
372
|
+
export function md5Hex(input) {
|
|
373
|
+
const bytes = new TextEncoder().encode(input);
|
|
374
|
+
const paddedLength = Math.ceil((bytes.length + 9) / 64) * 64;
|
|
375
|
+
const padded = new Uint8Array(paddedLength);
|
|
376
|
+
padded.set(bytes);
|
|
377
|
+
padded[bytes.length] = 0x80;
|
|
378
|
+
const bitLength = BigInt(bytes.length) * 8n;
|
|
379
|
+
const view = new DataView(padded.buffer);
|
|
380
|
+
view.setUint32(paddedLength - 8, Number(bitLength & 0xffffffffn), true);
|
|
381
|
+
view.setUint32(paddedLength - 4, Number((bitLength >> 32n) & 0xffffffffn), true);
|
|
382
|
+
let a0 = 0x67452301;
|
|
383
|
+
let b0 = 0xefcdab89;
|
|
384
|
+
let c0 = 0x98badcfe;
|
|
385
|
+
let d0 = 0x10325476;
|
|
386
|
+
const words = new Uint32Array(16);
|
|
387
|
+
for (let offset = 0; offset < paddedLength; offset += 64) {
|
|
388
|
+
for (let index = 0; index < 16; index++)
|
|
389
|
+
words[index] = view.getUint32(offset + index * 4, true);
|
|
390
|
+
let a = a0;
|
|
391
|
+
let b = b0;
|
|
392
|
+
let c = c0;
|
|
393
|
+
let d = d0;
|
|
394
|
+
for (let index = 0; index < 64; index++) {
|
|
395
|
+
const { mix, word } = md5Round(index, b, c, d);
|
|
396
|
+
const rotated = rotateLeft((a + mix + (MD5_CONSTANTS[index] ?? 0) + (words[word] ?? 0)) >>> 0, MD5_SHIFTS[index]);
|
|
397
|
+
a = d;
|
|
398
|
+
d = c;
|
|
399
|
+
c = b;
|
|
400
|
+
b = (b + rotated) >>> 0;
|
|
401
|
+
}
|
|
402
|
+
a0 = (a0 + a) >>> 0;
|
|
403
|
+
b0 = (b0 + b) >>> 0;
|
|
404
|
+
c0 = (c0 + c) >>> 0;
|
|
405
|
+
d0 = (d0 + d) >>> 0;
|
|
406
|
+
}
|
|
407
|
+
return [a0, b0, c0, d0].map(littleEndianHex).join("");
|
|
408
|
+
}
|
|
409
|
+
function md5Round(index, b, c, d) {
|
|
410
|
+
if (index < 16)
|
|
411
|
+
return { mix: (b & c) | (~b & d), word: index };
|
|
412
|
+
if (index < 32)
|
|
413
|
+
return { mix: (d & b) | (~d & c), word: (5 * index + 1) % 16 };
|
|
414
|
+
if (index < 48)
|
|
415
|
+
return { mix: b ^ c ^ d, word: (3 * index + 5) % 16 };
|
|
416
|
+
return { mix: c ^ (b | ~d), word: (7 * index) % 16 };
|
|
417
|
+
}
|
|
418
|
+
function rotateLeft(value, shift) {
|
|
419
|
+
const bits = shift ?? 0;
|
|
420
|
+
return ((value << bits) | (value >>> (32 - bits))) >>> 0;
|
|
421
|
+
}
|
|
422
|
+
function littleEndianHex(value) {
|
|
423
|
+
let output = "";
|
|
424
|
+
for (let index = 0; index < 4; index++) {
|
|
425
|
+
output += ((value >>> (index * 8)) & 0xff).toString(16).padStart(2, "0");
|
|
426
|
+
}
|
|
427
|
+
return output;
|
|
428
|
+
}
|
|
429
|
+
const MD5_SHIFTS = [
|
|
430
|
+
7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14,
|
|
431
|
+
20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6,
|
|
432
|
+
10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,
|
|
433
|
+
];
|
|
434
|
+
const MD5_CONSTANTS = Array.from({ length: 64 }, (_, index) => Math.floor(Math.abs(Math.sin(index + 1)) * 2 ** 32));
|
|
435
|
+
//# sourceMappingURL=sqllogictest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqllogictest.js","sourceRoot":"","sources":["../../src/testing/sqllogictest.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,17 @@ export declare class TransactionClosedError extends Error {
|
|
|
28
28
|
readonly name = "TransactionClosedError";
|
|
29
29
|
constructor(transactionId: string);
|
|
30
30
|
}
|
|
31
|
+
/** Opaque staged-state marker used by SQL SAVEPOINT. */
|
|
32
|
+
export interface TransactionCheckpoint {
|
|
33
|
+
readonly transactionId: string;
|
|
34
|
+
readonly pendingBlockIds: readonly string[];
|
|
35
|
+
readonly pendingSegmentIds: readonly string[];
|
|
36
|
+
readonly uniqueKeyChanges: readonly UniqueKeyChanges[];
|
|
37
|
+
readonly ftsChanges: readonly FtsChanges[];
|
|
38
|
+
readonly supersededBlockIds: readonly string[];
|
|
39
|
+
readonly changedTableIds: readonly string[];
|
|
40
|
+
readonly logicallyUnchanged: boolean;
|
|
41
|
+
}
|
|
31
42
|
export declare class Snapshot {
|
|
32
43
|
#private;
|
|
33
44
|
private readonly store;
|
|
@@ -52,7 +63,7 @@ export declare class LeasedSnapshot extends Snapshot {
|
|
|
52
63
|
* (`SnapshotManifestMissingError`, `LeaseConflictError`) leave this snapshot open and pass
|
|
53
64
|
* through.
|
|
54
65
|
*/
|
|
55
|
-
moveTo(version: number | null, ttlMs: number): Promise<LeasedSnapshot | undefined>;
|
|
66
|
+
moveTo(version: number | null, ttlMs: number, knownBlockIds?: readonly string[]): Promise<LeasedSnapshot | undefined>;
|
|
56
67
|
release(): Promise<void>;
|
|
57
68
|
/** Closes this snapshot without touching the store — for a lease the store no longer holds. */
|
|
58
69
|
discard(): void;
|
|
@@ -78,6 +89,10 @@ export declare class DatabaseTransaction {
|
|
|
78
89
|
* since there is no statement-level rollback inside a transaction.
|
|
79
90
|
*/
|
|
80
91
|
get stagedWorkCount(): number;
|
|
92
|
+
/** Captures all publish-relevant state; row-id/autoincrement reservations deliberately burn. */
|
|
93
|
+
checkpoint(): TransactionCheckpoint;
|
|
94
|
+
/** Rewinds staged artifacts and every in-memory commit delta to one earlier checkpoint. */
|
|
95
|
+
rollbackTo(checkpoint: TransactionCheckpoint): Promise<void>;
|
|
81
96
|
snapshot(): Promise<Snapshot>;
|
|
82
97
|
getBlock(id: string): Promise<Uint8Array | undefined>;
|
|
83
98
|
stageBlock(id: string, bytes: Uint8Array): Promise<void>;
|
|
@@ -171,7 +186,7 @@ export declare class TransactionManager {
|
|
|
171
186
|
}>;
|
|
172
187
|
resume(transactionId: string): Promise<DatabaseTransaction>;
|
|
173
188
|
openSnapshot(version?: number | null): Promise<Snapshot>;
|
|
174
|
-
openLeasedSnapshot(options: OpenLeasedSnapshotOptions): Promise<LeasedSnapshot>;
|
|
189
|
+
openLeasedSnapshot(options: OpenLeasedSnapshotOptions, knownBlockIds?: readonly string[]): Promise<LeasedSnapshot>;
|
|
175
190
|
/**
|
|
176
191
|
* Re-pins an open leased snapshot to another version — one reader moving on to a newer
|
|
177
192
|
* commit. With the store's atomic `moveLease` the record stays and moves in one round trip;
|
|
@@ -182,7 +197,7 @@ export declare class TransactionManager {
|
|
|
182
197
|
*/
|
|
183
198
|
moveLeasedSnapshot(snapshot: LeasedSnapshot, options: OpenLeasedSnapshotOptions & {
|
|
184
199
|
version: number | null;
|
|
185
|
-
}): Promise<LeasedSnapshot>;
|
|
200
|
+
}, knownBlockIds?: readonly string[]): Promise<LeasedSnapshot>;
|
|
186
201
|
removeExpiredLeases(at?: Date): Promise<string[]>;
|
|
187
202
|
recover(options: RecoveryOptions): Promise<RecoveryReport>;
|
|
188
203
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transactions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EAGf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,EAElB,KAAK,iBAAiB,EAEtB,KAAK,UAAU,EACf,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,IAAI,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,oEAAoE;IACpE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAGnC,QAAQ,CAAC,aAAa,EAAE,MAAM;IAF1C,SAAkB,IAAI,4BAA4B;gBAE7B,aAAa,EAAE,MAAM;CAG3C;AAED,qBAAa,QAAQ;;IAIjB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;gBADd,KAAK,EAAE,UAAU,EACzB,OAAO,EAAE,MAAM,GAAG,IAAI,EAC/B,QAAQ,EAAE,SAAS,MAAM,EAAE;IAK7B,YAAY,IAAI,MAAM,EAAE;IAIxB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIvB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;CAI5D;AAED,qBAAa,cAAe,SAAQ,QAAQ;;IASxC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAJpB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,MAAM,EAAE,WAAW,EACF,GAAG,EAAE,MAAM,IAAI;IASlC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,SAAS,IAAI,IAAI,CAEpB;IAEc,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAK9D,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC;;;;;;OAMG;IACG,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transactions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EAGf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,EAElB,KAAK,iBAAiB,EAEtB,KAAK,UAAU,EACf,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,IAAI,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,oEAAoE;IACpE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAGnC,QAAQ,CAAC,aAAa,EAAE,MAAM;IAF1C,SAAkB,IAAI,4BAA4B;gBAE7B,aAAa,EAAE,MAAM;CAG3C;AAED,wDAAwD;AACxD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC;IAC3C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;CACtC;AAED,qBAAa,QAAQ;;IAIjB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;gBADd,KAAK,EAAE,UAAU,EACzB,OAAO,EAAE,MAAM,GAAG,IAAI,EAC/B,QAAQ,EAAE,SAAS,MAAM,EAAE;IAK7B,YAAY,IAAI,MAAM,EAAE;IAIxB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIvB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;CAI5D;AAED,qBAAa,cAAe,SAAQ,QAAQ;;IASxC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAJpB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,MAAM,EAAE,WAAW,EACF,GAAG,EAAE,MAAM,IAAI;IASlC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,SAAS,IAAI,IAAI,CAEpB;IAEc,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAK9D,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC;;;;;;OAMG;IACG,MAAM,CACV,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAChC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAehC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B,+FAA+F;IAC/F,OAAO,IAAI,IAAI;CAOhB;AAED,qBAAa,mBAAmB;;IAgB5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEtB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,KAAK,EAAE,UAAU,EAClC,MAAM,EAAE,iBAAiB,EACR,GAAG,EAAE,MAAM,IAAI,EAChC,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO;IAMvC,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,MAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAExC;IAED,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAEnC;IAED,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,IAAI,iBAAiB,IAAI,MAAM,EAAE,CAEhC;IAED,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAEjC;IAED;;;;;;OAMG;IACH,IAAI,eAAe,IAAI,MAAM,CAQ5B;IAED,gGAAgG;IAChG,UAAU,IAAI,qBAAqB;IAcnC,2FAA2F;IACrF,UAAU,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C5D,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAMrD,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D;;;;;OAKG;IACG,cAAc,CAClB,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,QAAQ,EAAE,SAAS,aAAa,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAiChB;;;;;;;;OAQG;IACG,uBAAuB,CAC3B,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,QAAQ,EAAE,SAAS,aAAa,EAAE,GACjC,OAAO,CAAC,eAAe,CAAC;IAuE3B;;;;;;OAMG;IACG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB/D,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxD,2EAA2E;IACrE,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB5D;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKvC;;;OAGG;IACH,sBAAsB,IAAI,IAAI;IAK9B,oFAAoF;IACpF,IAAI,2BAA2B,IAAI,SAAS,gBAAgB,EAAE,CAE7D;IAED,8EAA8E;IAC9E,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAYpD;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAyCxC,eAAe,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAW5C,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAkClC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC;IA4B3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAmD7B;AAED,qBAAa,kBAAkB;;IAK3B,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,UAAU,EAClC,OAAO,GAAE,yBAA8B;IAMnC,KAAK,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI3C;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAqBnD;;;;;OAKG;IACG,oBAAoB,CACxB,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,EACD,oBAAoB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5F,OAAO,CAAC;QACT,WAAW,EAAE,mBAAmB,CAAC;QACjC,MAAM,CAAC,EAAE,UAAU,CAAC;QACpB,mBAAmB,CAAC,EAAE,UAAU,CAAC;KAClC,CAAC;IAuEI,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAO3D,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOxD,kBAAkB,CACtB,OAAO,EAAE,yBAAyB,EAClC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAChC,OAAO,CAAC,cAAc,CAAC;IAsC1B;;;;;;;OAOG;IACG,kBAAkB,CACtB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,yBAAyB,GAAG;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAC/D,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAChC,OAAO,CAAC,cAAc,CAAC;IAkBpB,mBAAmB,CAAC,EAAE,GAAE,IAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB9D,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CA+FjE"}
|