@typed-sql/postgres 2.0.0 → 2.1.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/CHANGELOG.md +289 -0
- package/README.md +17 -0
- package/dist/packages/postgres/src/bulk.d.ts.map +1 -1
- package/dist/packages/postgres/src/bulk.js +1 -1
- package/dist/packages/postgres/src/bulk.js.map +1 -1
- package/dist/packages/postgres/src/capabilities.d.ts +19 -0
- package/dist/packages/postgres/src/capabilities.d.ts.map +1 -0
- package/dist/packages/postgres/src/capabilities.js +120 -0
- package/dist/packages/postgres/src/capabilities.js.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/14.d.ts +4 -0
- package/dist/packages/postgres/src/catalog/generated/14.d.ts.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/14.js +2018 -0
- package/dist/packages/postgres/src/catalog/generated/14.js.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/15.d.ts +4 -0
- package/dist/packages/postgres/src/catalog/generated/15.d.ts.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/15.js +2012 -0
- package/dist/packages/postgres/src/catalog/generated/15.js.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/16.d.ts +4 -0
- package/dist/packages/postgres/src/catalog/generated/16.d.ts.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/16.js +2012 -0
- package/dist/packages/postgres/src/catalog/generated/16.js.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/17.d.ts +4 -0
- package/dist/packages/postgres/src/catalog/generated/17.d.ts.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/17.js +2012 -0
- package/dist/packages/postgres/src/catalog/generated/17.js.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/18.d.ts +4 -0
- package/dist/packages/postgres/src/catalog/generated/18.d.ts.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/18.js +2048 -0
- package/dist/packages/postgres/src/catalog/generated/18.js.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/19.d.ts +4 -0
- package/dist/packages/postgres/src/catalog/generated/19.d.ts.map +1 -0
- package/dist/packages/postgres/src/catalog/generated/19.js +2048 -0
- package/dist/packages/postgres/src/catalog/generated/19.js.map +1 -0
- package/dist/packages/postgres/src/catalog/index.d.ts +14 -0
- package/dist/packages/postgres/src/catalog/index.d.ts.map +1 -0
- package/dist/packages/postgres/src/catalog/index.js +86 -0
- package/dist/packages/postgres/src/catalog/index.js.map +1 -0
- package/dist/packages/postgres/src/catalog/types.d.ts +46 -0
- package/dist/packages/postgres/src/catalog/types.d.ts.map +1 -0
- package/dist/packages/postgres/src/catalog/types.js +2 -0
- package/dist/packages/postgres/src/catalog/types.js.map +1 -0
- package/dist/packages/postgres/src/expression-evidence.d.ts +11 -0
- package/dist/packages/postgres/src/expression-evidence.d.ts.map +1 -0
- package/dist/packages/postgres/src/expression-evidence.js +33 -0
- package/dist/packages/postgres/src/expression-evidence.js.map +1 -0
- package/dist/packages/postgres/src/extensions.d.ts +61 -0
- package/dist/packages/postgres/src/extensions.d.ts.map +1 -0
- package/dist/packages/postgres/src/extensions.js +311 -0
- package/dist/packages/postgres/src/extensions.js.map +1 -0
- package/dist/packages/postgres/src/index.d.ts +13 -0
- package/dist/packages/postgres/src/index.d.ts.map +1 -1
- package/dist/packages/postgres/src/index.js +51 -17
- package/dist/packages/postgres/src/index.js.map +1 -1
- package/dist/packages/postgres/src/parser/index.d.ts +8 -0
- package/dist/packages/postgres/src/parser/index.d.ts.map +1 -0
- package/dist/packages/postgres/src/parser/index.js +4 -0
- package/dist/packages/postgres/src/parser/index.js.map +1 -0
- package/dist/packages/postgres/src/parser/parser.d.ts +14 -0
- package/dist/packages/postgres/src/parser/parser.d.ts.map +1 -0
- package/dist/packages/postgres/src/parser/parser.js +2683 -0
- package/dist/packages/postgres/src/parser/parser.js.map +1 -0
- package/dist/packages/postgres/src/parser/tokenizer.d.ts +15 -0
- package/dist/packages/postgres/src/parser/tokenizer.d.ts.map +1 -0
- package/dist/packages/postgres/src/parser/tokenizer.js +470 -0
- package/dist/packages/postgres/src/parser/tokenizer.js.map +1 -0
- package/dist/packages/postgres/src/parser/types.d.ts +652 -0
- package/dist/packages/postgres/src/parser/types.d.ts.map +1 -0
- package/dist/packages/postgres/src/parser/types.js +9 -0
- package/dist/packages/postgres/src/parser/types.js.map +1 -0
- package/dist/packages/postgres/src/parser/walk.d.ts +13 -0
- package/dist/packages/postgres/src/parser/walk.d.ts.map +1 -0
- package/dist/packages/postgres/src/parser/walk.js +374 -0
- package/dist/packages/postgres/src/parser/walk.js.map +1 -0
- package/dist/packages/postgres/src/pg.d.ts +35 -4
- package/dist/packages/postgres/src/pg.d.ts.map +1 -1
- package/dist/packages/postgres/src/pg.js +355 -40
- package/dist/packages/postgres/src/pg.js.map +1 -1
- package/dist/packages/postgres/src/prepared.d.ts +5 -3
- package/dist/packages/postgres/src/prepared.d.ts.map +1 -1
- package/dist/packages/postgres/src/prepared.js +23 -15
- package/dist/packages/postgres/src/prepared.js.map +1 -1
- package/dist/packages/postgres/src/provider.d.ts +149 -11
- package/dist/packages/postgres/src/provider.d.ts.map +1 -1
- package/dist/packages/postgres/src/provider.js +652 -42
- package/dist/packages/postgres/src/provider.js.map +1 -1
- package/dist/packages/postgres/src/resolver.d.ts +1 -1
- package/dist/packages/postgres/src/resolver.d.ts.map +1 -1
- package/dist/packages/postgres/src/resolver.js +2767 -203
- package/dist/packages/postgres/src/resolver.js.map +1 -1
- package/dist/packages/postgres/src/routing.d.ts.map +1 -1
- package/dist/packages/postgres/src/routing.js +1 -1
- package/dist/packages/postgres/src/routing.js.map +1 -1
- package/dist/packages/postgres/src/runtime-compatibility.d.ts +14 -0
- package/dist/packages/postgres/src/runtime-compatibility.d.ts.map +1 -0
- package/dist/packages/postgres/src/runtime-compatibility.js +63 -0
- package/dist/packages/postgres/src/runtime-compatibility.js.map +1 -0
- package/dist/packages/postgres/src/runtime.d.ts +10 -1
- package/dist/packages/postgres/src/runtime.d.ts.map +1 -1
- package/dist/packages/postgres/src/runtime.js +50 -2
- package/dist/packages/postgres/src/runtime.js.map +1 -1
- package/dist/packages/postgres/src/semantics.d.ts +1 -1
- package/dist/packages/postgres/src/semantics.d.ts.map +1 -1
- package/dist/packages/postgres/src/semantics.js +19 -6
- package/dist/packages/postgres/src/semantics.js.map +1 -1
- package/dist/packages/postgres/src/support.d.ts +29 -0
- package/dist/packages/postgres/src/support.d.ts.map +1 -0
- package/dist/packages/postgres/src/support.js +45 -0
- package/dist/packages/postgres/src/support.js.map +1 -0
- package/dist/packages/postgres/src/type-policy.d.ts.map +1 -1
- package/dist/packages/postgres/src/type-policy.js +34 -43
- package/dist/packages/postgres/src/type-policy.js.map +1 -1
- package/dist/packages/postgres/src/type-resolution.d.ts +33 -0
- package/dist/packages/postgres/src/type-resolution.d.ts.map +1 -0
- package/dist/packages/postgres/src/type-resolution.js +906 -0
- package/dist/packages/postgres/src/type-resolution.js.map +1 -0
- package/package.json +7 -4
|
@@ -1,12 +1,52 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { once } from "node:events";
|
|
3
|
+
import { readFile } from "node:fs/promises";
|
|
3
4
|
import { finished } from "node:stream/promises";
|
|
4
|
-
import {
|
|
5
|
+
import { postgresServerEvidence } from "./capabilities.js";
|
|
6
|
+
import { PostgresExtensionResolutionError, resolvePostgresExtensionManifests, } from "./extensions.js";
|
|
7
|
+
import { PostgresSchemaProvider, postgresCatalogQueries } from "./provider.js";
|
|
5
8
|
import { createPostgresDatabase, } from "./runtime.js";
|
|
9
|
+
import { parsePostgresRuntimeSnapshot, validatePostgresRuntimeCompatibility } from "./runtime-compatibility.js";
|
|
6
10
|
import { defaultPostgresTypePolicy, isKnownPostgresType, mapPostgresType, } from "./type-policy.js";
|
|
7
11
|
const pgCursorPackage = "pg-cursor";
|
|
8
12
|
const pgCopyStreamsPackage = "pg-copy-streams";
|
|
9
13
|
const queryTimeoutError = "@typed-sql/postgres/pg does not accept pg query_timeout because pg can reject before the connection is ready for reuse; use PostgreSQL statement_timeout instead";
|
|
14
|
+
/** Stable adapter classification that retains the original driver failure as `cause`. */
|
|
15
|
+
export class PostgresAdapterError extends Error {
|
|
16
|
+
code = "POSTGRES_ADAPTER_ERROR";
|
|
17
|
+
kind;
|
|
18
|
+
sqlState;
|
|
19
|
+
constructor(kind, message, sqlState, cause) {
|
|
20
|
+
super(message, { cause });
|
|
21
|
+
this.name = "PostgresAdapterError";
|
|
22
|
+
this.kind = kind;
|
|
23
|
+
this.sqlState = sqlState;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function errorRecord(error) {
|
|
27
|
+
return typeof error === "object" && error !== null ? error : {};
|
|
28
|
+
}
|
|
29
|
+
/** Converts driver-specific failures into a value-safe, SQL-free adapter outcome. */
|
|
30
|
+
export function normalizePostgresAdapterError(error) {
|
|
31
|
+
if (error instanceof PostgresAdapterError)
|
|
32
|
+
return error;
|
|
33
|
+
const record = errorRecord(error);
|
|
34
|
+
const sqlState = typeof record.code === "string" && /^[A-Z\d]{5}$/u.test(record.code) ? record.code : undefined;
|
|
35
|
+
const message = typeof record.message === "string" ? record.message : "PostgreSQL driver operation failed";
|
|
36
|
+
const kind = sqlState === "25P02"
|
|
37
|
+
? "transaction-abort"
|
|
38
|
+
: sqlState === "57014" && /statement timeout/iu.test(message)
|
|
39
|
+
? "timeout"
|
|
40
|
+
: sqlState?.startsWith("08") === true ||
|
|
41
|
+
sqlState === "57P01" ||
|
|
42
|
+
["ECONNRESET", "EPIPE", "ETIMEDOUT"].includes(String(record.code)) ||
|
|
43
|
+
/connection (?:ended|terminated|lost)/iu.test(message)
|
|
44
|
+
? "connection-loss"
|
|
45
|
+
: sqlState === undefined
|
|
46
|
+
? "driver"
|
|
47
|
+
: "server";
|
|
48
|
+
return new PostgresAdapterError(kind, message, sqlState, error);
|
|
49
|
+
}
|
|
10
50
|
async function defaultPgCursorImporter() {
|
|
11
51
|
return import(pgCursorPackage);
|
|
12
52
|
}
|
|
@@ -70,8 +110,107 @@ async function connectionString(value) {
|
|
|
70
110
|
throw new TypeError("PostgreSQL connectionString must not be empty");
|
|
71
111
|
return resolved;
|
|
72
112
|
}
|
|
73
|
-
|
|
74
|
-
|
|
113
|
+
/** Reads canonical, non-secret compatibility evidence from a PostgreSQL connection or pool. */
|
|
114
|
+
export async function readPgRuntimeServerEvidence(queryable) {
|
|
115
|
+
const result = await queryable.query(postgresCatalogQueries.version);
|
|
116
|
+
const row = result.rows[0];
|
|
117
|
+
if (row === undefined || typeof row.server_version !== "string") {
|
|
118
|
+
throw new TypeError("PostgreSQL runtime compatibility did not return server-version evidence");
|
|
119
|
+
}
|
|
120
|
+
return postgresServerEvidence(row.server_version, row.extensions ?? [], {
|
|
121
|
+
...(row.standard_conforming_strings === undefined
|
|
122
|
+
? {}
|
|
123
|
+
: { standardConformingStrings: row.standard_conforming_strings }),
|
|
124
|
+
...(row.search_path === undefined ? {} : { searchPath: row.search_path }),
|
|
125
|
+
visibilityScope: "current-role",
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const runtimeCodecOidQuery = `
|
|
129
|
+
SELECT requested.database_type,
|
|
130
|
+
t.oid::int AS oid,
|
|
131
|
+
NULLIF(t.typarray, 0)::int AS array_oid
|
|
132
|
+
FROM unnest($1::text[]) AS requested(database_type)
|
|
133
|
+
LEFT JOIN pg_catalog.pg_type AS t ON t.oid = pg_catalog.to_regtype(requested.database_type)
|
|
134
|
+
ORDER BY requested.database_type
|
|
135
|
+
`;
|
|
136
|
+
/** Resolves manifest type names to connection-local OIDs for per-query parser installation. */
|
|
137
|
+
export async function resolvePgRuntimeCodecs(queryable, codecs) {
|
|
138
|
+
const names = [...codecs.keys()].sort();
|
|
139
|
+
if (names.length === 0)
|
|
140
|
+
return [];
|
|
141
|
+
const result = await queryable.query(runtimeCodecOidQuery, [names]);
|
|
142
|
+
const rows = new Map(result.rows.map((row) => [row.database_type.toLowerCase(), row]));
|
|
143
|
+
return names.map((databaseType) => {
|
|
144
|
+
const row = rows.get(databaseType);
|
|
145
|
+
const codec = codecs.get(databaseType);
|
|
146
|
+
if (row?.oid === null || row === undefined || !Number.isSafeInteger(row.oid) || row.oid < 1) {
|
|
147
|
+
throw new PostgresExtensionResolutionError([
|
|
148
|
+
{ code: "TSQ407", message: `PostgreSQL extension codec type ${databaseType} is not visible at runtime` },
|
|
149
|
+
]);
|
|
150
|
+
}
|
|
151
|
+
if (row.array_oid !== null && (!Number.isSafeInteger(row.array_oid) || row.array_oid < 1)) {
|
|
152
|
+
throw new PostgresExtensionResolutionError([
|
|
153
|
+
{ code: "TSQ407", message: `PostgreSQL extension codec array type ${databaseType}[] has an invalid OID` },
|
|
154
|
+
]);
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
oid: row.oid,
|
|
158
|
+
...(row.array_oid === null ? {} : { arrayOid: row.array_oid }),
|
|
159
|
+
decode: codec.decode,
|
|
160
|
+
};
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
const POSTGRES_LIVE_VERIFIER_VERSION = "postgres-describe-v2";
|
|
164
|
+
function describePgStatement(client, name, sql) {
|
|
165
|
+
const protocolClient = client;
|
|
166
|
+
if (protocolClient.connection === undefined)
|
|
167
|
+
return undefined;
|
|
168
|
+
return new Promise((resolve, reject) => {
|
|
169
|
+
let parameters = [];
|
|
170
|
+
let columns = [];
|
|
171
|
+
let connection;
|
|
172
|
+
let settled = false;
|
|
173
|
+
const parameterDescription = (message) => {
|
|
174
|
+
parameters = [...message.dataTypeIDs];
|
|
175
|
+
};
|
|
176
|
+
const finish = (error) => {
|
|
177
|
+
if (settled)
|
|
178
|
+
return;
|
|
179
|
+
settled = true;
|
|
180
|
+
connection?.off("parameterDescription", parameterDescription);
|
|
181
|
+
if (error === undefined)
|
|
182
|
+
resolve({ parameters, columns });
|
|
183
|
+
else
|
|
184
|
+
reject(error);
|
|
185
|
+
};
|
|
186
|
+
const query = {
|
|
187
|
+
name,
|
|
188
|
+
text: sql,
|
|
189
|
+
callback: undefined,
|
|
190
|
+
submit(value) {
|
|
191
|
+
connection = value;
|
|
192
|
+
value.on("parameterDescription", parameterDescription);
|
|
193
|
+
value.parse({ text: sql, name, types: [] });
|
|
194
|
+
value.describe({ type: "S", name });
|
|
195
|
+
value.sync();
|
|
196
|
+
},
|
|
197
|
+
handleRowDescription(message) {
|
|
198
|
+
columns = message.fields.map(({ name: fieldName, dataTypeID }) => ({ name: fieldName, dataTypeID }));
|
|
199
|
+
},
|
|
200
|
+
handleError(error) {
|
|
201
|
+
finish(error);
|
|
202
|
+
},
|
|
203
|
+
handleReadyForQuery() {
|
|
204
|
+
finish();
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
client.query(query, (error) => {
|
|
208
|
+
if (error !== undefined)
|
|
209
|
+
finish(error);
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/** Creates a lazy, non-executing adapter over PostgreSQL Parse and Describe metadata. */
|
|
75
214
|
export function createPgLiveVerifier(options) {
|
|
76
215
|
const ownsPool = options.pool === undefined;
|
|
77
216
|
let poolPromise;
|
|
@@ -112,27 +251,52 @@ export function createPgLiveVerifier(options) {
|
|
|
112
251
|
let evidence;
|
|
113
252
|
let failure;
|
|
114
253
|
try {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
254
|
+
const protocol = describePgStatement(client, name, request.sql);
|
|
255
|
+
let parameterTypes;
|
|
256
|
+
let resultTypes;
|
|
257
|
+
let unavailable;
|
|
258
|
+
if (protocol === undefined) {
|
|
259
|
+
await client.query(`PREPARE ${name} AS ${request.sql}`);
|
|
260
|
+
prepared = true;
|
|
261
|
+
const major = Number.parseInt((await server()).version.split(".")[0] ?? "0", 10);
|
|
262
|
+
const metadata = await client.query(major >= 18
|
|
263
|
+
? `SELECT parameter_types::text[] AS "parameterTypes", result_types::text[] AS "resultTypes" FROM pg_prepared_statements WHERE name = '${name}'`
|
|
264
|
+
: `SELECT parameter_types::text[] AS "parameterTypes" FROM pg_prepared_statements WHERE name = '${name}'`);
|
|
265
|
+
const row = metadata.rows[0];
|
|
266
|
+
if (row === undefined)
|
|
267
|
+
throw new Error("Prepared statement metadata was not returned");
|
|
268
|
+
parameterTypes = row.parameterTypes;
|
|
269
|
+
resultTypes = (row.resultTypes ?? []).map((databaseType) => ({ databaseType }));
|
|
270
|
+
if (major < 18)
|
|
271
|
+
unavailable = ["columns"];
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
const description = await protocol;
|
|
275
|
+
prepared = true;
|
|
276
|
+
const oids = [
|
|
277
|
+
...new Set([...description.parameters, ...description.columns.map(({ dataTypeID }) => dataTypeID)]),
|
|
278
|
+
];
|
|
279
|
+
const types = await client.query(`SELECT oid, format_type(oid, NULL) AS "databaseType" FROM pg_type WHERE oid = ANY($1::oid[])`, [oids]);
|
|
280
|
+
const names = new Map(types.rows.map(({ oid, databaseType }) => [oid, databaseType]));
|
|
281
|
+
parameterTypes = description.parameters.map((oid) => names.get(oid) ?? `oid:${oid}`);
|
|
282
|
+
resultTypes = description.columns.map(({ name: fieldName, dataTypeID }) => ({
|
|
283
|
+
name: fieldName,
|
|
284
|
+
databaseType: names.get(dataTypeID) ?? `oid:${dataTypeID}`,
|
|
285
|
+
}));
|
|
286
|
+
}
|
|
124
287
|
const policy = options.typePolicy ?? defaultPostgresTypePolicy;
|
|
125
|
-
const fields = (types) =>
|
|
288
|
+
const fields = (types) => types.map(({ name: fieldName, databaseType }, offset) => ({
|
|
126
289
|
index: offset + 1,
|
|
127
290
|
databaseType,
|
|
291
|
+
...(fieldName === undefined ? {} : { name: fieldName }),
|
|
128
292
|
...(isKnownPostgresType(databaseType, options.schema)
|
|
129
293
|
? { tsType: mapPostgresType(databaseType, policy, options.schema) }
|
|
130
294
|
: {}),
|
|
131
295
|
}));
|
|
132
296
|
evidence = {
|
|
133
|
-
parameters: fields(
|
|
134
|
-
columns: fields(
|
|
135
|
-
...(
|
|
297
|
+
parameters: fields(parameterTypes.map((databaseType) => ({ databaseType }))),
|
|
298
|
+
columns: fields(resultTypes),
|
|
299
|
+
...(unavailable === undefined ? {} : { unavailable }),
|
|
136
300
|
};
|
|
137
301
|
}
|
|
138
302
|
catch (error) {
|
|
@@ -162,7 +326,7 @@ export function createPgLiveVerifier(options) {
|
|
|
162
326
|
},
|
|
163
327
|
};
|
|
164
328
|
}
|
|
165
|
-
const POSTGRES_PLAN_INSPECTOR_VERSION = "postgres-explain-json-
|
|
329
|
+
const POSTGRES_PLAN_INSPECTOR_VERSION = "postgres-explain-json-v2";
|
|
166
330
|
const postgresPlanSettings = [
|
|
167
331
|
"cpu_index_tuple_cost",
|
|
168
332
|
"cpu_operator_cost",
|
|
@@ -289,9 +453,42 @@ export function createPgPlanInspector(options) {
|
|
|
289
453
|
const client = await (await acquirePool()).connect();
|
|
290
454
|
let failure;
|
|
291
455
|
try {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
456
|
+
if (request.values !== undefined) {
|
|
457
|
+
const result = await client.query(`EXPLAIN (FORMAT JSON) ${request.sql}`, request.values);
|
|
458
|
+
return postgresPlan(result.rows[0]?.["QUERY PLAN"]);
|
|
459
|
+
}
|
|
460
|
+
const major = Number.parseInt((await this.environment()).version.split(".")[0] ?? "0", 10);
|
|
461
|
+
if (major >= 16) {
|
|
462
|
+
const result = await client.query(`EXPLAIN (GENERIC_PLAN TRUE, FORMAT JSON) ${request.sql}`);
|
|
463
|
+
return postgresPlan(result.rows[0]?.["QUERY PLAN"]);
|
|
464
|
+
}
|
|
465
|
+
const name = `typed_sql_plan_${request.fingerprint.replace(/^sha256:/u, "").slice(0, 32)}`;
|
|
466
|
+
const quotedName = quotePreparedStatementName(name);
|
|
467
|
+
let transaction = false;
|
|
468
|
+
let prepared = false;
|
|
469
|
+
try {
|
|
470
|
+
await client.query("BEGIN");
|
|
471
|
+
transaction = true;
|
|
472
|
+
await client.query("SET LOCAL plan_cache_mode = force_generic_plan");
|
|
473
|
+
await client.query(`PREPARE ${quotedName} AS ${request.sql}`);
|
|
474
|
+
prepared = true;
|
|
475
|
+
const parameters = request.parameterCount === 0
|
|
476
|
+
? ""
|
|
477
|
+
: `(${Array.from({ length: request.parameterCount }, () => "NULL").join(", ")})`;
|
|
478
|
+
const result = await client.query(`EXPLAIN (FORMAT JSON) EXECUTE ${quotedName}${parameters}`);
|
|
479
|
+
await client.query(`DEALLOCATE ${quotedName}`);
|
|
480
|
+
prepared = false;
|
|
481
|
+
await client.query("ROLLBACK");
|
|
482
|
+
transaction = false;
|
|
483
|
+
return postgresPlan(result.rows[0]?.["QUERY PLAN"]);
|
|
484
|
+
}
|
|
485
|
+
catch (error) {
|
|
486
|
+
if (transaction)
|
|
487
|
+
await client.query("ROLLBACK").catch(() => undefined);
|
|
488
|
+
if (prepared)
|
|
489
|
+
await client.query(`DEALLOCATE ${quotedName}`).catch(() => undefined);
|
|
490
|
+
throw error;
|
|
491
|
+
}
|
|
295
492
|
}
|
|
296
493
|
catch (error) {
|
|
297
494
|
failure = error;
|
|
@@ -314,6 +511,21 @@ function validatePoolConfig(poolConfig) {
|
|
|
314
511
|
throw new TypeError("@typed-sql/postgres/pg owns poolConfig.types so decoded values match typePolicy; remove that option");
|
|
315
512
|
}
|
|
316
513
|
}
|
|
514
|
+
function statementCacheSize(value) {
|
|
515
|
+
const size = value ?? 256;
|
|
516
|
+
if (!Number.isSafeInteger(size) || size < 1) {
|
|
517
|
+
throw new TypeError("PostgreSQL statementCacheSize must be a positive safe integer");
|
|
518
|
+
}
|
|
519
|
+
return size;
|
|
520
|
+
}
|
|
521
|
+
function changesPreparedStatementIdentity(source) {
|
|
522
|
+
const sql = source.replace(/^\s*(?:(?:--[^\n]*(?:\n|$))|(?:\/\*[\s\S]*?\*\/))*/u, "").trimStart();
|
|
523
|
+
return (/^(?:ALTER|COMMENT|CREATE|DISCARD|DROP|GRANT|REINDEX|REVOKE|TRUNCATE)\b/iu.test(sql) ||
|
|
524
|
+
/^(?:RESET\s+search_path|SET(?:\s+(?:LOCAL|SESSION))?\s+search_path\b)/iu.test(sql));
|
|
525
|
+
}
|
|
526
|
+
function quotePreparedStatementName(name) {
|
|
527
|
+
return `"${name.replaceAll('"', '""')}"`;
|
|
528
|
+
}
|
|
317
529
|
function validateConnectionStringQueryTimeout(value) {
|
|
318
530
|
try {
|
|
319
531
|
const url = new URL(value);
|
|
@@ -336,12 +548,23 @@ function queryConfig(config) {
|
|
|
336
548
|
...(config.types === undefined ? {} : { types: config.types }),
|
|
337
549
|
};
|
|
338
550
|
}
|
|
339
|
-
export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copyStreamsImporter = defaultPgCopyStreamsImporter) {
|
|
551
|
+
export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copyStreamsImporter = defaultPgCopyStreamsImporter, adapterOptions = {}) {
|
|
340
552
|
const options = pool.options;
|
|
341
553
|
if (options !== undefined && "query_timeout" in options)
|
|
342
554
|
throw new TypeError(queryTimeoutError);
|
|
343
555
|
if (typeof options?.connectionString === "string")
|
|
344
556
|
validateConnectionStringQueryTimeout(options.connectionString);
|
|
557
|
+
const maximumPreparedStatements = statementCacheSize(adapterOptions.statementCacheSize);
|
|
558
|
+
let preparedGeneration = 0;
|
|
559
|
+
const preparedConnections = new WeakMap();
|
|
560
|
+
const preparedState = (client) => {
|
|
561
|
+
const existing = preparedConnections.get(client);
|
|
562
|
+
if (existing !== undefined)
|
|
563
|
+
return existing;
|
|
564
|
+
const created = { generation: preparedGeneration, statements: new Map() };
|
|
565
|
+
preparedConnections.set(client, created);
|
|
566
|
+
return created;
|
|
567
|
+
};
|
|
345
568
|
let cursorConstructorPromise;
|
|
346
569
|
const loadCursor = () => {
|
|
347
570
|
cursorConstructorPromise ??= loadPgCursorDriver(cursorImporter);
|
|
@@ -353,6 +576,7 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
|
|
|
353
576
|
return copyStreamsPromise;
|
|
354
577
|
};
|
|
355
578
|
const wrapClient = (client) => {
|
|
579
|
+
const statementState = preparedState(client);
|
|
356
580
|
let fatalError;
|
|
357
581
|
let rejectFatal;
|
|
358
582
|
const fatalSettlement = new Promise((_resolve, reject) => {
|
|
@@ -363,8 +587,8 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
|
|
|
363
587
|
const recordFatal = (error) => {
|
|
364
588
|
if (fatalError !== undefined)
|
|
365
589
|
return;
|
|
366
|
-
fatalError = error;
|
|
367
|
-
rejectFatal(
|
|
590
|
+
fatalError = normalizePostgresAdapterError(error);
|
|
591
|
+
rejectFatal(fatalError);
|
|
368
592
|
};
|
|
369
593
|
const onError = (error) => recordFatal(error);
|
|
370
594
|
const onEnd = () => recordFatal(new Error("The PostgreSQL connection ended while it was leased"));
|
|
@@ -373,10 +597,38 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
|
|
|
373
597
|
return {
|
|
374
598
|
pipeline: client.pipeline,
|
|
375
599
|
async query(config) {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
600
|
+
try {
|
|
601
|
+
if (statementState.generation !== preparedGeneration) {
|
|
602
|
+
await client.query("DEALLOCATE ALL");
|
|
603
|
+
statementState.statements.clear();
|
|
604
|
+
statementState.generation = preparedGeneration;
|
|
605
|
+
}
|
|
606
|
+
if (typeof config !== "string" && config.name !== undefined) {
|
|
607
|
+
const cachedText = statementState.statements.get(config.name);
|
|
608
|
+
if (cachedText !== undefined) {
|
|
609
|
+
statementState.statements.delete(config.name);
|
|
610
|
+
statementState.statements.set(config.name, cachedText);
|
|
611
|
+
}
|
|
612
|
+
else if (statementState.statements.size >= maximumPreparedStatements) {
|
|
613
|
+
const oldest = statementState.statements.keys().next().value;
|
|
614
|
+
await client.query(`DEALLOCATE ${quotePreparedStatementName(oldest)}`);
|
|
615
|
+
statementState.statements.delete(oldest);
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
const result = typeof config === "string"
|
|
619
|
+
? await client.query(config)
|
|
620
|
+
: await client.query(queryConfig(config));
|
|
621
|
+
if (typeof config !== "string" && config.name !== undefined) {
|
|
622
|
+
statementState.statements.set(config.name, config.text);
|
|
623
|
+
}
|
|
624
|
+
const text = typeof config === "string" ? config : config.text;
|
|
625
|
+
if (changesPreparedStatementIdentity(text))
|
|
626
|
+
preparedGeneration += 1;
|
|
627
|
+
return { rows: result.rows };
|
|
628
|
+
}
|
|
629
|
+
catch (error) {
|
|
630
|
+
throw normalizePostgresAdapterError(error);
|
|
631
|
+
}
|
|
380
632
|
},
|
|
381
633
|
async openCursor(config) {
|
|
382
634
|
const Cursor = await loadCursor();
|
|
@@ -480,10 +732,38 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
|
|
|
480
732
|
return {
|
|
481
733
|
executionCapabilities: Object.freeze({ cancellation: true, deadlines: true }),
|
|
482
734
|
async query(config) {
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
735
|
+
if (typeof config !== "string" && config.name !== undefined) {
|
|
736
|
+
let client;
|
|
737
|
+
try {
|
|
738
|
+
client = wrapClient(await pool.connect());
|
|
739
|
+
}
|
|
740
|
+
catch (error) {
|
|
741
|
+
throw normalizePostgresAdapterError(error);
|
|
742
|
+
}
|
|
743
|
+
let failure;
|
|
744
|
+
try {
|
|
745
|
+
return await client.query(config);
|
|
746
|
+
}
|
|
747
|
+
catch (error) {
|
|
748
|
+
failure = error;
|
|
749
|
+
throw error;
|
|
750
|
+
}
|
|
751
|
+
finally {
|
|
752
|
+
client.release(failure instanceof Error ? failure : failure === undefined ? undefined : true);
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
try {
|
|
756
|
+
const result = typeof config === "string"
|
|
757
|
+
? await pool.query(config)
|
|
758
|
+
: await pool.query(queryConfig(config));
|
|
759
|
+
const text = typeof config === "string" ? config : config.text;
|
|
760
|
+
if (changesPreparedStatementIdentity(text))
|
|
761
|
+
preparedGeneration += 1;
|
|
762
|
+
return { rows: result.rows };
|
|
763
|
+
}
|
|
764
|
+
catch (error) {
|
|
765
|
+
throw normalizePostgresAdapterError(error);
|
|
766
|
+
}
|
|
487
767
|
},
|
|
488
768
|
async ensureCursor() {
|
|
489
769
|
await loadCursor();
|
|
@@ -492,7 +772,12 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
|
|
|
492
772
|
await loadCopyStreams();
|
|
493
773
|
},
|
|
494
774
|
async connect() {
|
|
495
|
-
|
|
775
|
+
try {
|
|
776
|
+
return wrapClient(await pool.connect());
|
|
777
|
+
}
|
|
778
|
+
catch (error) {
|
|
779
|
+
throw normalizePostgresAdapterError(error);
|
|
780
|
+
}
|
|
496
781
|
},
|
|
497
782
|
async end() {
|
|
498
783
|
await pool.end();
|
|
@@ -501,19 +786,48 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
|
|
|
501
786
|
}
|
|
502
787
|
export async function createPgDatabase(options) {
|
|
503
788
|
validatePoolConfig(options.poolConfig);
|
|
789
|
+
if ((options.extensionManifests?.length ?? 0) > 0 && options.compatibilitySnapshot === undefined) {
|
|
790
|
+
throw new TypeError("PostgreSQL runtime extension manifests require a compatibilitySnapshot file");
|
|
791
|
+
}
|
|
792
|
+
const snapshot = options.compatibilitySnapshot === undefined
|
|
793
|
+
? undefined
|
|
794
|
+
: parsePostgresRuntimeSnapshot(JSON.parse(await readFile(options.compatibilitySnapshot, "utf8")));
|
|
504
795
|
const resolvedConnectionString = await connectionString(options.connectionString);
|
|
505
796
|
validateConnectionStringQueryTimeout(resolvedConnectionString);
|
|
506
797
|
const driver = await loadPgDriver();
|
|
507
798
|
const { Pool } = driver;
|
|
508
799
|
const pool = new Pool({ ...options.poolConfig, connectionString: resolvedConnectionString });
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
800
|
+
try {
|
|
801
|
+
let codecs = [];
|
|
802
|
+
if (snapshot !== undefined) {
|
|
803
|
+
const evidence = await readPgRuntimeServerEvidence(pool);
|
|
804
|
+
validatePostgresRuntimeCompatibility(snapshot, evidence, options.typePolicy);
|
|
805
|
+
if ((options.extensionManifests?.length ?? 0) > 0) {
|
|
806
|
+
const extensions = resolvePostgresExtensionManifests(snapshot, options.extensionManifests ?? []);
|
|
807
|
+
if (extensions.issues.length > 0)
|
|
808
|
+
throw new PostgresExtensionResolutionError(extensions.issues);
|
|
809
|
+
codecs = await resolvePgRuntimeCodecs(pool, extensions.codecs);
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
return createPostgresDatabase({
|
|
813
|
+
pool: adaptPgPool(pool, options.cursorImporter, options.copyStreamsImporter, {
|
|
814
|
+
...(options.statementCacheSize === undefined ? {} : { statementCacheSize: options.statementCacheSize }),
|
|
815
|
+
}),
|
|
816
|
+
ownsPool: true,
|
|
817
|
+
fallbackTypeParsers: driver.types,
|
|
818
|
+
...(options.typePolicy === undefined ? {} : { typePolicy: options.typePolicy }),
|
|
819
|
+
...(options.decimal === undefined ? {} : { decimal: options.decimal }),
|
|
820
|
+
...(codecs.length === 0 ? {} : { codecs }),
|
|
821
|
+
...(options.observer === undefined ? {} : { observer: options.observer }),
|
|
822
|
+
...(options.preparedCardinalityVariantLimit === undefined
|
|
823
|
+
? {}
|
|
824
|
+
: { preparedCardinalityVariantLimit: options.preparedCardinalityVariantLimit }),
|
|
825
|
+
});
|
|
826
|
+
}
|
|
827
|
+
catch (error) {
|
|
828
|
+
await pool.end();
|
|
829
|
+
throw error;
|
|
830
|
+
}
|
|
517
831
|
}
|
|
518
832
|
export function pg(options) {
|
|
519
833
|
return {
|
|
@@ -525,6 +839,7 @@ export function pg(options) {
|
|
|
525
839
|
...(options.client === undefined ? {} : { client: options.client }),
|
|
526
840
|
...(options.schemas === undefined ? {} : { includeSchemas: options.schemas }),
|
|
527
841
|
...(options.typePolicy === undefined ? {} : { typePolicy: options.typePolicy }),
|
|
842
|
+
...(options.extensionManifests === undefined ? {} : { extensionManifests: options.extensionManifests }),
|
|
528
843
|
});
|
|
529
844
|
if (options.client !== undefined)
|
|
530
845
|
return (await provider.introspect({}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.js","sourceRoot":"","sources":["../../../../src/pg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,OAAO,EAA0B,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EACL,sBAAsB,GASvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,GAEhB,MAAM,kBAAkB,CAAC;AAqB1B,MAAM,eAAe,GAAG,WAAW,CAAC;AACpC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAC/C,MAAM,iBAAiB,GACrB,kKAAkK,CAAC;AAErK,KAAK,UAAU,uBAAuB;IACpC,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,4BAA4B;IACzC,OAAO,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAe;IAC1C,MAAM,SAAS,GACb,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,MAAM;QAClE,CAAC,CAAE,MAAyC,CAAC,OAAO;QACpD,CAAC,CAAC,MAAM,CAAC;IACb,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,sFAAsF,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,SAAgC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAQ,GAAqB,uBAAuB;IAEpD,IAAI,CAAC;QACH,OAAO,mBAAmB,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACvF,MAAM,IAAI,KAAK,CACb,wHAAwH,EACxH,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAQ,GAA0B,4BAA4B;IAE9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,KAAK,IAAI;YACf,OAAQ,MAAuC,CAAC,IAAI,KAAK,UAAU;YACnE,OAAQ,MAAuC,CAAC,EAAE,KAAK,UAAU,EACjE,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,qFAAqF,CAAC,CAAC;QAC7G,CAAC;QACD,OAAO,MAA6B,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACvF,MAAM,IAAI,KAAK,CACb,+HAA+H,EAC/H,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAuED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAQ,GAAuC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;IAEjE,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,+FAA+F,EAAE;gBAC/G,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,KAAoC;IAClE,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACrE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IAChG,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,8BAA8B,GAAG,qBAAqB,CAAC;AAE7D,iFAAiF;AACjF,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;IAC5C,IAAI,WAAoD,CAAC;IACzD,IAAI,aAAkE,CAAC;IACvE,MAAM,WAAW,GAAG,GAAgC,EAAE;QACpD,WAAW,KAAK,CAAC,KAAK,IAAI,EAAE;YAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC,IAAI,CAAC;YACpD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACxC,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAC;YACxF,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC5D,OAAO,IAAI,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAkC,CAAC;QACvG,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,aAAa,KAAK,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAC9B,qDAAqD,CACtD,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,qFAAqF,CACtF,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACnH,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,cAAc,EAAE,8BAA8B;QAC9C,MAAM;QACN,KAAK,CAAC,MAAM,CAAC,OAAO;YAClB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,aAAa,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACtF,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,QAAsE,CAAC;YAC3E,IAAI,OAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxD,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBACjF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAIjC,KAAK,IAAI,EAAE;oBACT,CAAC,CAAC,uIAAuI,IAAI,GAAG;oBAChJ,CAAC,CAAC,gGAAgG,IAAI,GAAG,CAC5G,CAAC;gBACF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,GAAG,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBACvF,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,IAAI,yBAAyB,CAAC;gBAC/D,MAAM,MAAM,GAAG,CAAC,KAA2C,EAAE,EAAE,CAC7D,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;oBAC3C,KAAK,EAAE,MAAM,GAAG,CAAC;oBACjB,YAAY;oBACZ,GAAG,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC;wBACnD,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;wBACnE,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CAAC,CAAC;gBACN,QAAQ,GAAG;oBACT,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;oBACtC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;oBAChC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,SAAS,CAAU,EAAE,CAAC;iBAC9D,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;YACD,IAAI,cAAuB,CAAC;YAC5B,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,cAAc,GAAG,KAAK,CAAC;gBACzB,CAAC;YACH,CAAC;YACD,MAAM,CAAC,OAAO,CACZ,cAAc,YAAY,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACnG,CAAC;YACF,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,OAAO,CAAC;YACzC,IAAI,cAAc,KAAK,SAAS;gBAAE,MAAM,cAAc,CAAC;YACvD,IAAI,QAAQ,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC5F,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,KAAK;YACT,IAAI,QAAQ,IAAI,WAAW,KAAK,SAAS;gBAAE,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,+BAA+B,GAAG,0BAA0B,CAAC;AACnE,MAAM,oBAAoB,GAAG;IAC3B,sBAAsB;IACtB,mBAAmB;IACnB,gBAAgB;IAChB,uBAAuB;IACvB,2BAA2B;IAC3B,sBAAsB;IACtB,0BAA0B;IAC1B,mBAAmB;IACnB,oBAAoB;IACpB,gBAAgB;IAChB,iBAAiB;IACjB,yBAAyB;IACzB,sBAAsB;IACtB,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,kBAAkB;IAClB,iBAAiB;IACjB,wBAAwB;IACxB,sBAAsB;IACtB,0BAA0B;IAC1B,gCAAgC;IAChC,2BAA2B;IAC3B,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,KAAK;IACL,iCAAiC;IACjC,8BAA8B;IAC9B,8BAA8B;IAC9B,qBAAqB;IACrB,qBAAqB;IACrB,iBAAiB;IACjB,kBAAkB;IAClB,UAAU;CACF,CAAC;AAEX,SAAS,YAAY,CAAC,KAAc;IAClC,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAa,CAAC,CAAC,CAAC,KAAK,CAAC;IAClF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,IAAI,GACR,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,IAAI,QAAQ;QACrE,CAAC,CAAE,QAAwC,CAAC,IAAI;QAChD,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,UAAU,GAAG,IAAyC,CAAC;IAC7D,MAAM,KAAK,GAAyC,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,CAAC,KAAwC,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC3G,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QAClC,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,GAAG,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxE,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;gBAC1D,CAAC;gBACD,KAAK,CAAC,KAA0C,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,OAAO;QACL,GAAG,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,GAAG,CAAC,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,KAAK;KACN,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;IAC5C,IAAI,WAAqD,CAAC;IAC1D,IAAI,kBAA6E,CAAC;IAClF,MAAM,WAAW,GAAG,GAAiC,EAAE;QACrD,WAAW,KAAK,CAAC,KAAK,IAAI,EAAE;YAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC,IAAI,CAAC;YACpD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAC3C,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC5D,OAAO,IAAI,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAmC,CAAC;QACxG,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,cAAc,EAAE,+BAA+B;QAC/C,aAAa,EAAE,YAAY;QAC3B,KAAK,CAAC,WAAW;YACf,kBAAkB,KAAK,CAAC,KAAK,IAAI,EAAE;gBACjC,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;gBACjC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CACpC,qDAAqD,CACtD,CAAC;gBACF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CACpC,kFAAkF,EAClF,CAAC,oBAAoB,CAAC,CACvB,CAAC;gBACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,8RAA8R,CAC/R,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,SAAS;oBACpD,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;oBACtF,qBAAqB,EAAE,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC9G,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;YACL,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,OAAO;YACnB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC;gBACrF,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,OAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBACxG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAA0B,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBACtG,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM,KAAK,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,OAAO,CAAC,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;QACD,KAAK,CAAC,KAAK;YACT,IAAI,QAAQ,IAAI,WAAW,KAAK,SAAS;gBAAE,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAmC;IAC7D,IAAI,UAAU,KAAK,SAAS,IAAI,eAAe,IAAI,UAAU;QAAE,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACtG,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;QACtD,MAAM,IAAI,SAAS,CACjB,qGAAqG,CACtG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oCAAoC,CAAC,KAAa;IACzD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3C,IAAI,IAAI,KAAK,eAAe;gBAAE,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,iBAAiB;YAAE,MAAM,KAAK,CAAC;QACnF,4FAA4F;IAC9F,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAA2B;IAC9C,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,cAAc,GAAqB,uBAAuB,EAC1D,mBAAmB,GAA0B,4BAA4B;IAEzE,MAAM,OAAO,GACX,IAGD,CAAC,OAAO,CAAC;IACV,IAAI,OAAO,KAAK,SAAS,IAAI,eAAe,IAAI,OAAO;QAAE,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAChG,IAAI,OAAO,OAAO,EAAE,gBAAgB,KAAK,QAAQ;QAAE,oCAAoC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClH,IAAI,wBAAkE,CAAC;IACvE,MAAM,UAAU,GAAG,GAAiC,EAAE;QACpD,wBAAwB,KAAK,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAChE,OAAO,wBAAwB,CAAC;IAClC,CAAC,CAAC;IACF,IAAI,kBAA4D,CAAC;IACjE,MAAM,eAAe,GAAG,GAAiC,EAAE;QACzD,kBAAkB,KAAK,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;QAC9D,OAAO,kBAAkB,CAAC;IAC5B,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,MAAkB,EAAsB,EAAE;QAC5D,IAAI,UAA6B,CAAC;QAClC,IAAI,WAAoC,CAAC;QACzC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;YAC9D,WAAW,GAAG,MAAM,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,6FAA6F;QAC7F,KAAK,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,CAAC,KAAY,EAAQ,EAAE;YACzC,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO;YACrC,UAAU,GAAG,KAAK,CAAC;YACnB,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,KAAY,EAAQ,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,GAAS,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACxG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAExB,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,CAAC,KAAK,CAAC,MAAoC;gBAC9C,MAAM,MAAM,GACV,OAAO,MAAM,KAAK,QAAQ;oBACxB,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAA0B,MAAM,CAAC;oBACrD,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAqC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClF,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/B,CAAC;YACD,KAAK,CAAC,UAAU,CAAC,MAA2B;gBAC1C,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;gBAClC,sFAAsF;gBACtF,4EAA4E;gBAC5E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;oBACpD,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;iBAC/D,CAAC,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAsD,CAAC;gBACnG,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzC,OAAO;oBACL,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC/C,KAAK,CAAC,KAAK;wBACT,IAAI,UAAU,KAAK,SAAS;4BAAE,MAAM,UAAU,CAAC;wBAC/C,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;wBACzC,8EAA8E;wBAC9E,KAAK,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;wBACxC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;oBACrD,CAAC;iBACF,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,YAAY,CAAC,SAAiB;gBAClC,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;gBACrC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAA4C,CAAC;gBACzF,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACpC,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACrC,OAAO;oBACL,KAAK,CAAC,KAAK,CAAC,KAAK;wBACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;4BAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAC5D,CAAC;oBACD,KAAK,CAAC,MAAM;wBACV,QAAQ,CAAC,GAAG,EAAE,CAAC;wBACf,MAAM,QAAQ,CAAC;oBACjB,CAAC;oBACD,KAAK,CAAC,KAAK,CAAC,KAAK;wBACf,QAAQ,CAAC,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;wBAC7F,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBACxC,CAAC;iBACF,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,UAAU,CAAC,SAAiB;gBAChC,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;gBACrC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAA4C,CAAC;gBACzF,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACpC,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClD,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;oBACtC,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC;oBACxB,QAAQ,GAAG,IAAI,CAAC;oBAChB,IAAI,KAAK;wBAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;oBAC9B,IAAI,KAAK;wBAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;;wBAC5C,MAAM,QAAQ,CAAC;gBACtB,CAAC,CAAC;gBACF,MAAM,MAAM,GAAyB;oBACnC,CAAC,MAAM,CAAC,aAAa,CAAC;wBACpB,OAAO,MAAM,CAAC;oBAChB,CAAC;oBACD,KAAK,CAAC,IAAI;wBACR,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;wBACrC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;4BACzB,QAAQ,GAAG,IAAI,CAAC;4BAChB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;wBAC1C,CAAC;wBACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;wBAC3B,OAAO;4BACL,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC;yBAC1E,CAAC;oBACJ,CAAC;oBACD,KAAK,CAAC,MAAM;wBACV,MAAM,KAAK,EAAE,CAAC;wBACd,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;oBAC1C,CAAC;oBACD,KAAK;oBACL,KAAK,CAAC,KAAK,CAAC,KAAK;wBACf,QAAQ,CAAC,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;wBAC3F,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;wBACtC,QAAQ,GAAG,IAAI,CAAC;oBAClB,CAAC;oBACD,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;wBACzB,MAAM,KAAK,EAAE,CAAC;oBAChB,CAAC;iBACF,CAAC;gBACF,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,CAAC,KAAuB;gBAC7B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACxC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACpC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3D,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;IACF,OAAO;QACL,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7E,KAAK,CAAC,KAAK,CAAC,MAAoC;YAC9C,MAAM,MAAM,GACV,OAAO,MAAM,KAAK,QAAQ;gBACxB,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAA0B,MAAM,CAAC;gBACnD,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAqC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YAChF,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QACD,KAAK,CAAC,YAAY;YAChB,MAAM,UAAU,EAAE,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,UAAU;YACd,MAAM,eAAe,EAAE,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,OAAO;YACX,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,GAAG;YACP,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAkB;IACvD,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,wBAAwB,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClF,oCAAoC,CAAC,wBAAwB,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAC7F,OAAO,sBAAsB,CAAC;QAC5B,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,mBAAmB,CAAC;QAC5E,QAAQ,EAAE,IAAI;QACd,mBAAmB,EAAE,MAAM,CAAC,KAAK;QACjC,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/E,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;KAC1E,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,EAAE,CAAC,OAAgC;IACjD,OAAO;QACL,KAAK,CAAC,UAAU;YACd,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3E,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAC;gBAC1C,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnE,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC7E,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;aAChF,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAA2B,CAAC;YACnG,OAAO,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC;gBAChC,GAAG,EAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAiB,CAAC;aACvD,CAAC,CAA2B,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"pg.js","sourceRoot":"","sources":["../../../../src/pg.ts"],"names":[],"mappings":"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"}
|