@typed-sql/mysql 1.0.0-rc.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,81 @@
1
1
  # @typed-sql/mysql
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 7ca256b: Release the first public typed-sql beta: exact TypeScript 7 row inference from static PostgreSQL and
8
+ MySQL, versioned schema introspection, application-owned drivers, config-driven grammar plugins,
9
+ CLI verification, editor language-server integration, versioned diagnostics, bounded parsing, and
10
+ real-database plus packed-tarball verification.
11
+
12
+ ### Minor Changes
13
+
14
+ - eb16de7: Add grammar-neutral stream and ordered-result type contracts, and add lazy prepared-query factories to the PostgreSQL and MySQL runtime adapters. Prepared factories retain exact query types, validate stable SQL shapes, and remain available inside nested transactions.
15
+ - eb16de7: Add lazy, exactly typed query streams to the PostgreSQL and MySQL runtime adapters. PostgreSQL
16
+ uses an application-owned optional `pg-cursor` installation for bounded cursor reads. MySQL uses
17
+ mysql2's execute-protocol stream and shared decoder plan. Both adapters enforce deterministic
18
+ cleanup, transaction ownership, and positive safe-integer batch sizes.
19
+ - eb16de7: Add a grammar-neutral validated query-batch type and ordered, exactly typed query batches to the
20
+ PostgreSQL and MySQL runtime adapters. Non-empty root batches execute sequentially on one leased
21
+ connection, transaction batches reuse their transaction connection, and empty batches avoid
22
+ connection acquisition. Batch execution preserves prepared metadata and adapter codecs, stops at
23
+ the first failure, and rejects transaction work that escapes its callback.
24
+
25
+ ### Patch Changes
26
+
27
+ - b6389e4: Cache bounded, database-local MySQL row-decoder plans for repeated result metadata across buffered, prepared, transactional, and streaming execution.
28
+ - b6389e4: Cache immutable SQL rendering skeletons for prepared query factories so repeated calls only bind changing values while still rejecting structural drift before driver dispatch.
29
+ - eb16de7: Compile MySQL result-field decoders once per result and avoid copying rows when runtime type-policy
30
+ decoding does not change their values. This removes repeated field scans and makes buffered decoding
31
+ scale linearly with result width.
32
+ - eb16de7: Own in-flight transaction executions through settlement so unawaited work can never race commit, savepoint release, rollback, or connection release.
33
+
34
+ The PostgreSQL adapter now also rejects pg's client-side `query_timeout` option because it can settle before the connection is safe to reuse. Root batches discard checked-out clients after query rejection, while caught transaction query, batch, and stream failures force rollback and discard the lease. Use PostgreSQL's server-enforced `statement_timeout` for statement deadlines.
35
+ - eb16de7: Allow adapters to retain enriched capabilities in transaction callbacks and nested transactions
36
+ through a self-typed core database contract. Transaction cleanup now also preserves the original
37
+ operation error when rollback or connection-release cleanup fails.
38
+ - 1563a7a: Declare and enforce the 1.0 package stability boundary. Core SQL, compiler, schema, config, AST,
39
+ PostgreSQL, MySQL, and CLI packages form the stable train; the TypeScript preview bridge and
40
+ language server remain explicitly experimental. Freeze public entrypoints and query type contracts,
41
+ and remove internal compiler/type helpers from stable package-root exports before 1.0.
42
+ - 9dd6bc4: Finalize dialect contract version 3 with explicit identifier quoting and grammar-owned capability
43
+ declarations. Accept third-party snapshot dialects, validate grammar versions, and document the
44
+ public grammar-authoring and conformance workflow.
45
+ - 16e2475: Prove npm trusted publishing and provenance after the initial registry bootstrap.
46
+ - 642cebd: Prove and document runtime codec fidelity against live PostgreSQL and MySQL values. PostgreSQL now
47
+ delegates non-policy OIDs to the installed pg parser table, MySQL maps BIT to Uint8Array, and the
48
+ mysql2 adapter rejects pool settings that would contradict its type policy.
49
+ - bd26d6e: Replace potentially expensive parser regular expressions with bounded scanners, tighten editor
50
+ completion matching, and prevent releases while high-severity CodeQL alerts remain open.
51
+ - 3e2c75c: Infer ordered query parameter tuples and let TypeScript reject interpolation values that do not
52
+ match their SQL context. Dialect contract version 2 adds explicit parameter analysis; unresolved
53
+ positions remain `unknown`. Add typed nullable predicate composition through `sql.fragment()`,
54
+ `sql.and()`, `sql.or()`, `sql.where()`, and `sql.append()` while preserving row and parameter tuples.
55
+ Direct append fragments are grammar-analyzed cumulatively against their static base, so TypeScript
56
+ rejects fragment interpolation values that disagree with the referenced database columns.
57
+ Add `sql.empty` and SQL-template-native conditional structural fragments. The compiler analyzes
58
+ complete branch variants, preserves literal boolean-dependent result rows, and type-checks nested
59
+ fragment parameters without adding a query-builder DSL. Bound independent structural expansion at
60
+ 64 variants by default, correlate repeated conditions, merge diagnostics and fragment expectations
61
+ across variants, and fail closed on incompatible contexts. Share indexed catalog and conservative
62
+ parameter-resolution primitives across grammars, harden cooked-template scanning, and add runtime,
63
+ resolver, scanner, and structural performance gates.
64
+ - Updated dependencies [eb16de7]
65
+ - Updated dependencies [b6389e4]
66
+ - Updated dependencies [eb16de7]
67
+ - Updated dependencies [b6389e4]
68
+ - Updated dependencies [eb16de7]
69
+ - Updated dependencies [1563a7a]
70
+ - Updated dependencies [9dd6bc4]
71
+ - Updated dependencies [7ca256b]
72
+ - Updated dependencies [16e2475]
73
+ - Updated dependencies [69c7d87]
74
+ - Updated dependencies [3e2c75c]
75
+ - @typed-sql/core@1.0.0
76
+ - @typed-sql/ast@1.0.0
77
+ - @typed-sql/schema@1.0.0
78
+
3
79
  ## 1.0.0-rc.0
4
80
 
5
81
  ### Patch Changes
package/README.md CHANGED
@@ -1,50 +1,25 @@
1
1
  # @typed-sql/mysql
2
2
 
3
- MySQL grammar, catalog introspection, exact result inference, type policy, runtime codecs, and an
4
- optional application-owned `mysql2` adapter for [typed-sql](https://github.com/Lojhan/typed-sql).
3
+ The stable MySQL grammar for [typed-sql](https://github.com/Lojhan/typed-sql), including catalog
4
+ introspection, row and parameter inference, type policy, runtime codecs, and an optional
5
+ application-owned `mysql2` adapter.
5
6
 
6
7
  ```sh
7
- pnpm add @typed-sql/core@next @typed-sql/mysql@next mysql2
8
- pnpm add -D @typed-sql/cli@next typescript@7.0.2
8
+ pnpm add @typed-sql/core @typed-sql/mysql mysql2
9
+ pnpm add -D @typed-sql/cli typescript@7.0.2
9
10
  ```
10
11
 
11
- `mysql2` is intentionally not a dependency or peer dependency of this package. It is loaded only
12
- when an application imports `@typed-sql/mysql/mysql2`.
13
-
14
- ## Configure and generate
15
-
16
- ```ts
17
- import { defineConfig } from "@typed-sql/core";
18
- import { mysql, typePolicy } from "@typed-sql/mysql";
19
- import { mysql2 } from "@typed-sql/mysql/mysql2";
20
-
21
- export default defineConfig({
22
- dialect: mysql({ typePolicy }),
23
- schema: {
24
- file: "generated/db/schema.json",
25
- provider: mysql2({
26
- connectionUri: () => process.env.DATABASE_URL!,
27
- schemas: ["app"],
28
- typePolicy,
29
- }),
30
- },
31
- outDir: "generated/db",
32
- projects: ["tsconfig.json"],
33
- typePolicy,
34
- });
35
- ```
36
-
37
- ## Query and execute
12
+ `mysql2` is loaded only through `@typed-sql/mysql/mysql2`; it is not a dependency or peer dependency
13
+ of the grammar.
38
14
 
39
15
  ```ts
40
16
  import { sql, typePolicy } from "@typed-sql/mysql";
41
17
  import { createMySql2Database } from "@typed-sql/mysql/mysql2";
42
18
 
43
19
  const query = sql`
44
- SELECT account.id, account.email, account.status, project.budget
20
+ SELECT account.id, account.email, project.budget
45
21
  FROM users AS account
46
22
  LEFT JOIN projects AS project ON project.owner_id = account.id
47
- ORDER BY account.id
48
23
  `;
49
24
 
50
25
  const database = await createMySql2Database({
@@ -53,31 +28,27 @@ const database = await createMySql2Database({
53
28
  });
54
29
 
55
30
  const rows = await database.execute(query);
56
- // readonly {
57
- // id: bigint;
58
- // email: string;
59
- // status: "active" | "suspended";
60
- // budget: string | null;
61
- // }[]
62
- ```
63
31
 
64
- The adapter enables lossless bigint/decimal defaults, explicit alternative codecs, catalog
65
- introspection, and nested savepoints without changing global `mysql2` behavior. It rejects
66
- `poolConfig` options that would contradict the selected type policy. See the tested
67
- [runtime codec matrix](https://github.com/Lojhan/typed-sql/blob/main/docs/CODEC_FIDELITY.md#mysql-and-mysql2).
32
+ const accountById = database.prepare("account-by-id", (id: bigint) => sql`
33
+ SELECT account.id, account.email
34
+ FROM users AS account
35
+ WHERE account.id = ${id}
36
+ `);
37
+
38
+ const [selectedAccounts, allAccounts] = await database.batch([accountById(42n), query]);
68
39
 
69
- ## Supported SQL
40
+ for await (const account of database.stream(accountById(42n), { batchSize: 500 })) {
41
+ // account retains the query's inferred row type
42
+ }
43
+ ```
70
44
 
71
- The grammar targets MySQL 8.4 LTS and supports aliases and stars, inner/outer/cross joins, CTEs,
72
- derived and correlated subqueries, grouping, aggregates, windows, `CASE`, scalar/EXISTS/IN/BETWEEN
73
- expressions, common JSON functions/operators, and `INSERT`/`UPDATE`/`DELETE` command typing. Catalog
74
- inference covers enums, unsigned integers, decimals, JSON, dates, binary values and `tinyint(1)`
75
- policy mapping. Ordered parameters infer from column comparisons, DML targets, casts, ranges,
76
- limits, and cataloged function arguments; positions without enough evidence remain `unknown`.
45
+ The package root exports `sql`, `mysql`, and the MySQL type policy. The `/mysql2` entrypoint exports
46
+ the schema provider and execution adapter; `/runtime` exposes driver-neutral MySQL rendering and
47
+ codecs.
77
48
 
78
- Recursive CTE inference, `FULL JOIN`, array constructors, aggregate `FILTER` and incompatible
79
- `RETURNING` clauses produce `TSQ401`. Commands without a result surface infer
80
- `Query<never, Parameters>`.
81
- Unknown functions warn and infer `unknown`; ambiguous or structurally unsafe queries are errors.
49
+ Read the [MySQL grammar guide](https://github.com/Lojhan/typed-sql/blob/main/docs/dialects/mysql.md),
50
+ [execution guide](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/execution.md),
51
+ [configuration](https://github.com/Lojhan/typed-sql/blob/main/docs/getting-started/configuration.md), and
52
+ [database type mappings](https://github.com/Lojhan/typed-sql/blob/main/docs/reference/type-mappings.md).
82
53
 
83
54
  MIT © typed-sql contributors
@@ -0,0 +1,26 @@
1
+ import type { MySqlTypePolicy } from "./type-policy.js";
2
+ export interface MySqlFieldLike {
3
+ readonly name: string;
4
+ readonly columnType: number;
5
+ readonly columnLength?: number;
6
+ }
7
+ export type MySqlRuntimeTypePolicy = Pick<MySqlTypePolicy, "bigint" | "decimal" | "date" | "json" | "tinyint1">;
8
+ type ValueDecoder = (value: unknown) => unknown;
9
+ export interface MySqlColumnDecoder {
10
+ readonly name: string;
11
+ readonly decode: ValueDecoder;
12
+ }
13
+ export declare function encodeMySqlValue(value: unknown): unknown;
14
+ /** Compiles immutable field metadata into a decoder plan shared by buffered and streamed rows. */
15
+ export declare function compileMySqlRowDecoders(fields: readonly MySqlFieldLike[], typePolicy: MySqlRuntimeTypePolicy, decimal?: (value: string) => unknown): readonly MySqlColumnDecoder[];
16
+ /** Database-local bounded cache for immutable decoder plans derived from native result metadata. */
17
+ export declare class MySqlDecoderPlanCache {
18
+ #private;
19
+ constructor(typePolicy: MySqlRuntimeTypePolicy, decimal?: (value: string) => unknown, capacity?: number);
20
+ get(fields: readonly MySqlFieldLike[]): readonly MySqlColumnDecoder[];
21
+ }
22
+ export declare function decodeMySqlRows(rows: readonly Record<string, unknown>[], decoders: readonly MySqlColumnDecoder[]): readonly Record<string, unknown>[];
23
+ /** Decodes one streamed row without allocating an intermediate one-element array. */
24
+ export declare function decodeMySqlRow(row: Record<string, unknown>, decoders: readonly MySqlColumnDecoder[]): Record<string, unknown>;
25
+ export {};
26
+ //# sourceMappingURL=decoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoding.d.ts","sourceRoot":"","sources":["../../../../src/decoding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;AAEhH,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AAKD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAExD;AAqDD,kGAAkG;AAClG,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,UAAU,EAAE,sBAAsB,EAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GACnC,SAAS,kBAAkB,EAAE,CAW/B;AAgDD,oGAAoG;AACpG,qBAAa,qBAAqB;;IAOhC,YACE,UAAU,EAAE,sBAAsB,EAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,EACpC,QAAQ,SAAkC,EAO3C;IAED,GAAG,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,kBAAkB,EAAE,CA0BpE;CACF;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACxC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GACtC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAYpC;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GACtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB"}
@@ -0,0 +1,172 @@
1
+ const mysqlTypes = { tiny: 1, longlong: 8, date: 10, datetime: 12, timestamp: 7, json: 245, decimal: 246 };
2
+ const defaultDecoderPlanCacheCapacity = 64;
3
+ export function encodeMySqlValue(value) {
4
+ return typeof value === "bigint" ? value.toString() : Array.isArray(value) ? value.map(encodeMySqlValue) : value;
5
+ }
6
+ function finite(value, label) {
7
+ const result = Number(value);
8
+ if (!Number.isFinite(result))
9
+ throw new RangeError(`${label} value ${value} cannot be represented as a finite number`);
10
+ return result;
11
+ }
12
+ function nullable(decoder) {
13
+ return (value) => (value === null || value === undefined ? value : decoder(value));
14
+ }
15
+ function compileValueDecoder(field, typePolicy, decimal) {
16
+ if (field.columnType === mysqlTypes.longlong) {
17
+ if (typePolicy.bigint === "bigint")
18
+ return nullable((value) => BigInt(String(value)));
19
+ if (typePolicy.bigint === "number")
20
+ return nullable((value) => {
21
+ const result = finite(String(value), "bigint");
22
+ if (!Number.isSafeInteger(result))
23
+ throw new RangeError(`bigint value ${value} exceeds JavaScript's safe integer range`);
24
+ return result;
25
+ });
26
+ return nullable((value) => String(value));
27
+ }
28
+ if (field.columnType === mysqlTypes.decimal) {
29
+ if (typePolicy.decimal === "number")
30
+ return nullable((value) => finite(String(value), "decimal"));
31
+ if (typePolicy.decimal === "Decimal") {
32
+ if (decimal === undefined)
33
+ throw new TypeError("decimal=Decimal requires a decimal(value) codec");
34
+ return nullable((value) => decimal(String(value)));
35
+ }
36
+ return nullable((value) => String(value));
37
+ }
38
+ if (field.columnType === mysqlTypes.date ||
39
+ field.columnType === mysqlTypes.datetime ||
40
+ field.columnType === mysqlTypes.timestamp) {
41
+ return typePolicy.date === "string"
42
+ ? nullable((value) => String(value))
43
+ : nullable((value) => (value instanceof Date ? value : new Date(String(value))));
44
+ }
45
+ if (field.columnType === mysqlTypes.json && typePolicy.json === "string")
46
+ return nullable((value) => (typeof value === "string" ? value : JSON.stringify(value)));
47
+ if (field.columnType === mysqlTypes.tiny && field.columnLength === 1 && typePolicy.tinyint1 === "boolean")
48
+ return nullable((value) => value === true || value === 1 || value === "1");
49
+ return undefined;
50
+ }
51
+ /** Compiles immutable field metadata into a decoder plan shared by buffered and streamed rows. */
52
+ export function compileMySqlRowDecoders(fields, typePolicy, decimal) {
53
+ const decoders = [];
54
+ const visited = new Set();
55
+ for (const field of fields) {
56
+ // Preserve established behavior: the first metadata entry for a row property owns its decoding.
57
+ if (visited.has(field.name))
58
+ continue;
59
+ visited.add(field.name);
60
+ const decode = compileValueDecoder(field, typePolicy, decimal);
61
+ if (decode !== undefined)
62
+ decoders.push({ name: field.name, decode });
63
+ }
64
+ return decoders;
65
+ }
66
+ function decoderPlanHash(fields) {
67
+ let hash = fields.length | 0;
68
+ for (const field of fields) {
69
+ const lastIndex = field.name.length - 1;
70
+ hash = Math.imul(hash ^ field.name.length, 16_777_619);
71
+ hash = Math.imul(hash ^ (field.name.charCodeAt(0) || 0), 16_777_619);
72
+ hash = Math.imul(hash ^ (field.name.charCodeAt(lastIndex) || 0), 16_777_619);
73
+ hash = Math.imul(hash ^ field.columnType, 16_777_619);
74
+ hash = Math.imul(hash ^ (field.columnLength ?? -1), 16_777_619);
75
+ }
76
+ return hash;
77
+ }
78
+ function sameDecoderMetadata(left, right) {
79
+ if (left.length !== right.length)
80
+ return false;
81
+ for (let index = 0; index < left.length; index += 1) {
82
+ const leftField = left[index];
83
+ const rightField = right[index];
84
+ if (leftField.name !== rightField.name ||
85
+ leftField.columnType !== rightField.columnType ||
86
+ leftField.columnLength !== rightField.columnLength)
87
+ return false;
88
+ }
89
+ return true;
90
+ }
91
+ function snapshotDecoderMetadata(fields) {
92
+ return Object.freeze(fields.map((field) => Object.freeze({
93
+ name: field.name,
94
+ columnType: field.columnType,
95
+ ...(field.columnLength === undefined ? {} : { columnLength: field.columnLength }),
96
+ })));
97
+ }
98
+ /** Database-local bounded cache for immutable decoder plans derived from native result metadata. */
99
+ export class MySqlDecoderPlanCache {
100
+ #capacity;
101
+ #decimal;
102
+ #entries = [];
103
+ #plans = new Map();
104
+ #typePolicy;
105
+ constructor(typePolicy, decimal, capacity = defaultDecoderPlanCacheCapacity) {
106
+ if (!Number.isSafeInteger(capacity) || capacity <= 0)
107
+ throw new RangeError("MySQL decoder plan cache capacity must be a positive safe integer");
108
+ this.#capacity = capacity;
109
+ this.#decimal = decimal;
110
+ this.#typePolicy = Object.freeze({ ...typePolicy });
111
+ }
112
+ get(fields) {
113
+ const hash = decoderPlanHash(fields);
114
+ const bucket = this.#plans.get(hash);
115
+ const cached = bucket?.find((entry) => sameDecoderMetadata(fields, entry.fields));
116
+ if (cached !== undefined) {
117
+ const index = this.#entries.indexOf(cached);
118
+ this.#entries.splice(index, 1);
119
+ this.#entries.push(cached);
120
+ return cached.plan;
121
+ }
122
+ const entry = {
123
+ fields: snapshotDecoderMetadata(fields),
124
+ hash,
125
+ plan: Object.freeze(compileMySqlRowDecoders(fields, this.#typePolicy, this.#decimal)),
126
+ };
127
+ this.#entries.push(entry);
128
+ if (bucket === undefined)
129
+ this.#plans.set(hash, [entry]);
130
+ else
131
+ bucket.push(entry);
132
+ if (this.#entries.length > this.#capacity) {
133
+ const oldest = this.#entries.shift();
134
+ const oldestBucket = this.#plans.get(oldest.hash);
135
+ oldestBucket.splice(oldestBucket.indexOf(oldest), 1);
136
+ if (oldestBucket.length === 0)
137
+ this.#plans.delete(oldest.hash);
138
+ }
139
+ return entry.plan;
140
+ }
141
+ }
142
+ export function decodeMySqlRows(rows, decoders) {
143
+ if (decoders.length === 0)
144
+ return rows;
145
+ // Keep driver objects intact until a codec produces a different value for that specific row.
146
+ let decodedRows;
147
+ for (let rowIndex = 0; rowIndex < rows.length; rowIndex += 1) {
148
+ const row = rows[rowIndex];
149
+ const decodedRow = decodeMySqlRow(row, decoders);
150
+ if (decodedRow === row)
151
+ continue;
152
+ decodedRows ??= rows.slice();
153
+ decodedRows[rowIndex] = decodedRow;
154
+ }
155
+ return decodedRows ?? rows;
156
+ }
157
+ /** Decodes one streamed row without allocating an intermediate one-element array. */
158
+ export function decodeMySqlRow(row, decoders) {
159
+ let decodedRow;
160
+ for (const column of decoders) {
161
+ if (!Object.prototype.propertyIsEnumerable.call(row, column.name))
162
+ continue;
163
+ const value = row[column.name];
164
+ const decoded = column.decode(value);
165
+ if (Object.is(decoded, value))
166
+ continue;
167
+ decodedRow ??= { ...row };
168
+ decodedRow[column.name] = decoded;
169
+ }
170
+ return decodedRow ?? row;
171
+ }
172
+ //# sourceMappingURL=decoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoding.js","sourceRoot":"","sources":["../../../../src/decoding.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mysql2.d.ts","sourceRoot":"","sources":["../../../../src/mysql2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,IAAI,EAAkB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,eAAe,CAAC;AACzE,OAAO,EAGL,KAAK,aAAa,EAGlB,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CACxB,WAAW,EACT,KAAK,GACL,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,UAAU,GACV,aAAa,CAChB,CAAC;IACF,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,gBAAgB,CAAC,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACtC,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,gBAAgB,CAAC,CAAC,CAAC;CAC1E;AAOD,wBAAsB,gBAAgB,CACpC,QAAQ,GAAE,MAAM,OAAO,CAAC,cAAc,gBAAgB,CAAC,CAAkC,GACxF,OAAO,CAAC,cAAc,gBAAgB,CAAC,CAAC,CAY1C;AAiED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAWzD;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBzF;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,2BAA2B,GAAG;IAAE,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAA;CAAE,CAgC3G"}
1
+ {"version":3,"file":"mysql2.d.ts","sourceRoot":"","sources":["../../../../src/mysql2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,IAAI,EAAkB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,eAAe,CAAC;AACzE,OAAO,EAGL,KAAK,aAAa,EAGlB,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CACxB,WAAW,EACT,KAAK,GACL,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,UAAU,GACV,aAAa,CAChB,CAAC;IACF,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,gBAAgB,CAAC,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACtC,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,gBAAgB,CAAC,CAAC,CAAC;CAC1E;AAOD,wBAAsB,gBAAgB,CACpC,QAAQ,GAAE,MAAM,OAAO,CAAC,cAAc,gBAAgB,CAAC,CAAkC,GACxF,OAAO,CAAC,cAAc,gBAAgB,CAAC,CAAC,CAY1C;AAqLD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAWzD;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBzF;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,2BAA2B,GAAG;IAAE,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAA;CAAE,CAgC3G"}
@@ -49,13 +49,14 @@ async function execute(value, method, sql, values) {
49
49
  const [rows, metadata] = await value[method](sql, values);
50
50
  return {
51
51
  rows: rows,
52
- ...(metadata.length === 0 ? {} : { fields: fields(metadata) }),
52
+ ...(metadata === undefined || metadata.length === 0 ? {} : { fields: fields(metadata) }),
53
53
  };
54
54
  }
55
55
  function connectionAdapter(connection) {
56
56
  const executable = connection;
57
57
  return {
58
58
  execute: (sql, values) => execute(executable, "execute", sql, values),
59
+ stream: (sql, values, options) => createMySql2ProtocolStream(connection.connection, sql, values, options.batchSize),
59
60
  query: (sql) => execute(executable, "query", sql),
60
61
  beginTransaction: () => connection.beginTransaction(),
61
62
  commit: () => connection.commit(),
@@ -63,6 +64,110 @@ function connectionAdapter(connection) {
63
64
  release: () => connection.release(),
64
65
  };
65
66
  }
67
+ function createMySql2ProtocolStream(connection, sql, values, batchSize) {
68
+ // mysql2's promise API buffers execute() results. Its public PoolConnection.connection is the
69
+ // same callback connection, whose Execute command exposes the protocol-backed Readable while
70
+ // retaining mysql2's per-connection prepared statement cache.
71
+ const command = connection.execute(sql, values);
72
+ let resolveFields;
73
+ let rejectFields;
74
+ let fieldsSettled = false;
75
+ const fieldMetadata = new Promise((resolve, reject) => {
76
+ resolveFields = resolve;
77
+ rejectFields = reject;
78
+ });
79
+ // A driver failure can happen before the runtime starts awaiting metadata.
80
+ void fieldMetadata.catch(() => undefined);
81
+ let resolveTerminal;
82
+ const terminal = new Promise((resolve) => {
83
+ resolveTerminal = resolve;
84
+ });
85
+ let protocolError;
86
+ let connectionReusable = false;
87
+ let terminalSettled = false;
88
+ let readable;
89
+ const settleTerminal = (reusable) => {
90
+ if (terminalSettled)
91
+ return;
92
+ terminalSettled = true;
93
+ connectionReusable = reusable;
94
+ connection.removeListener("error", onConnectionError);
95
+ connection.removeListener("end", onConnectionEnd);
96
+ connection.removeListener("close", onConnectionEnd);
97
+ resolveTerminal();
98
+ };
99
+ const onConnectionError = (error) => {
100
+ protocolError ??= error;
101
+ if (!fieldsSettled) {
102
+ fieldsSettled = true;
103
+ rejectFields(error);
104
+ }
105
+ readable?.destroy(error);
106
+ settleTerminal(false);
107
+ };
108
+ const onConnectionEnd = () => {
109
+ const error = new Error("MySQL connection ended before the streaming command completed");
110
+ protocolError ??= error;
111
+ if (!fieldsSettled) {
112
+ fieldsSettled = true;
113
+ rejectFields(error);
114
+ }
115
+ readable?.destroy(error);
116
+ settleTerminal(false);
117
+ };
118
+ connection.once("error", onConnectionError);
119
+ connection.once("end", onConnectionEnd);
120
+ connection.once("close", onConnectionEnd);
121
+ command.once("fields", (value) => {
122
+ if (fieldsSettled)
123
+ return;
124
+ fieldsSettled = true;
125
+ resolveFields(value === undefined ? [] : fields(value));
126
+ });
127
+ command.once("error", (error) => {
128
+ protocolError = error;
129
+ if (!fieldsSettled) {
130
+ fieldsSettled = true;
131
+ rejectFields(error);
132
+ }
133
+ });
134
+ command.once("end", () => {
135
+ if (!fieldsSettled) {
136
+ fieldsSettled = true;
137
+ resolveFields([]);
138
+ }
139
+ settleTerminal(true);
140
+ });
141
+ readable = command.stream({ highWaterMark: batchSize });
142
+ // Query.stream can destroy with an error before next() installs the async iterator's listener.
143
+ // Keep the process safe while preserving the same error for fields/iteration/close.
144
+ readable.on("error", () => undefined);
145
+ const iterator = readable[Symbol.asyncIterator]();
146
+ let closePromise;
147
+ return {
148
+ fields: fieldMetadata,
149
+ get connectionReusable() {
150
+ return connectionReusable;
151
+ },
152
+ [Symbol.asyncIterator]() {
153
+ return this;
154
+ },
155
+ next: () => iterator.next(),
156
+ close() {
157
+ closePromise ??= (async () => {
158
+ // Destroying this Readable stops delivery and resumes the socket. The independently attached
159
+ // command listeners remain until the Execute command really ends, so the connection is never
160
+ // released or reused while protocol packets are still arriving.
161
+ if (!readable.destroyed)
162
+ readable.destroy();
163
+ await terminal;
164
+ if (protocolError !== undefined)
165
+ throw protocolError;
166
+ })();
167
+ return closePromise;
168
+ },
169
+ };
170
+ }
66
171
  export function adaptMySql2Pool(pool) {
67
172
  const executable = pool;
68
173
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"mysql2.js","sourceRoot":"","sources":["../../../../src/mysql2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mysql2.js","sourceRoot":"","sources":["../../../../src/mysql2.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EACL,mBAAmB,GAOpB,MAAM,cAAc,CAAC;AAqCtB,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAQ,GAAmD,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAEzF,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,CACb,wGAAwG,EACxG,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,KAAqC;IACtD,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;IACtF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,kBAAkB,GAAG;IACzB,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,UAAU;IACV,aAAa;CACL,CAAC;AAEX,SAAS,kBAAkB,CAAC,UAAuC;IACjE,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO;IACrC,MAAM,UAAU,GAAG,UAA+C,CAAC;IACnE,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACxC,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;YACzB,MAAM,IAAI,SAAS,CACjB,2CAA2C,MAAM,yDAAyD,CAC3G,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,MAA8B;IAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC;QAC/C,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAChE,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;KAC1D,CAAC,CAAC,CAAC;AACN,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,KAAiB,EACjB,MAA2B,EAC3B,GAAW,EACX,MAA2B;IAE3B,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO;QACL,IAAI,EAAE,IAAoE;QAC1E,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;KACzF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,UAA0B;IACnD,MAAM,UAAU,GAAG,UAAmC,CAAC;IACvD,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;QACrE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAC/B,0BAA0B,CACxB,UAAU,CAAC,UAA2C,EACtD,GAAG,EACH,MAAM,EACN,OAAO,CAAC,SAAS,CAClB;QACH,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC;QACjD,gBAAgB,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAAE;QACrD,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE;QACjC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,UAA8B,EAC9B,GAAW,EACX,MAA0B,EAC1B,SAAiB;IAEjB,8FAA8F;IAC9F,6FAA6F;IAC7F,8DAA8D;IAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,MAAe,CAAkB,CAAC;IAC1E,IAAI,aAA0D,CAAC;IAC/D,IAAI,YAAwC,CAAC;IAC7C,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,MAAM,aAAa,GAAG,IAAI,OAAO,CAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC/E,aAAa,GAAG,OAAO,CAAC;QACxB,YAAY,GAAG,MAAM,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,2EAA2E;IAC3E,KAAK,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,eAA4B,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC7C,eAAe,GAAG,OAAO,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,IAAI,aAAsB,CAAC;IAC3B,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,QAAyD,CAAC;IAC9D,MAAM,cAAc,GAAG,CAAC,QAAiB,EAAE,EAAE;QAC3C,IAAI,eAAe;YAAE,OAAO;QAC5B,eAAe,GAAG,IAAI,CAAC;QACvB,kBAAkB,GAAG,QAAQ,CAAC;QAC9B,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACtD,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAClD,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACpD,eAAe,EAAE,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAE,EAAE;QAC3C,aAAa,KAAK,KAAK,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,IAAI,CAAC;YACrB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,QAAQ,EAAE,OAAO,CAAC,KAAc,CAAC,CAAC;QAClC,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACzF,aAAa,KAAK,KAAK,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,IAAI,CAAC;YACrB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC5C,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACxC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAyC,EAAE,EAAE;QACnE,IAAI,aAAa;YAAE,OAAO;QAC1B,aAAa,GAAG,IAAI,CAAC;QACrB,aAAa,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAc,EAAE,EAAE;QACvC,aAAa,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,IAAI,CAAC;YACrB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,IAAI,CAAC;YACrB,aAAa,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;IACxD,+FAA+F;IAC/F,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAoD,CAAC;IACpG,IAAI,YAAuC,CAAC;IAE5C,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,IAAI,kBAAkB;YACpB,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QACD,CAAC,MAAM,CAAC,aAAa,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC3B,KAAK;YACH,YAAY,KAAK,CAAC,KAAK,IAAI,EAAE;gBAC3B,6FAA6F;gBAC7F,6FAA6F;gBAC7F,gEAAgE;gBAChE,IAAI,CAAC,QAAQ,CAAC,SAAS;oBAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC5C,MAAM,QAAQ,CAAC;gBACf,IAAI,aAAa,KAAK,SAAS;oBAAE,MAAM,aAAa,CAAC;YACvD,CAAC,CAAC,EAAE,CAAC;YACL,OAAO,YAAY,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,MAAM,UAAU,GAAG,IAA6B,CAAC;IACjD,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;QACrE,KAAK,CAAC,aAAa;YACjB,OAAO,iBAAiB,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,CAAC,GAAG;YACP,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAsB;IAC/D,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;QAC7B,GAAG,OAAO,CAAC,UAAU;QACrB,GAAG,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QACrC,iBAAiB,EAAE,IAAI;QACvB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IACH,OAAO,mBAAmB,CAAC;QACzB,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;QAC3B,QAAQ,EAAE,IAAI;QACd,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;KACvE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,OAAoC;IACzD,OAAO;QACL,KAAK,CAAC,UAAU;YACd,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,MAAM,IAAI,mBAAmB,CAAC;oBACpC,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;oBAC7E,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;iBAChF,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAwB,CAAC;YAC5C,CAAC;YACD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS;gBACrC,MAAM,IAAI,SAAS,CAAC,yDAAyD,CAAC,CAAC;YACjF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACjG,MAAM,UAAU,GAAG,IAA6B,CAAC;YACjD,MAAM,MAAM,GAAmB;gBAC7B,KAAK,CAAC,KAAK,CAAsC,GAAW,EAAE,MAA2B;oBACvF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;oBAC/D,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAmB,EAAE,CAAC;gBACrF,CAAC;aACF,CAAC;YACF,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,IAAI,mBAAmB,CAAC;oBACpC,MAAM;oBACN,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;oBAC7E,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;iBAChF,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAwB,CAAC;YAC5C,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type Query, type QueryRenderSkeleton, type RenderedQuery, type SqlRenderer } from "@typed-sql/core";
2
+ export interface MySqlPreparedQueryFactory<Arguments extends readonly unknown[], Row, Params extends readonly unknown[]> {
3
+ (...args: Arguments): Query<Row, Params>;
4
+ readonly statementName: string;
5
+ }
6
+ export interface MySqlPreparedQueryMetadata {
7
+ readonly statementName: string;
8
+ readonly rendered: RenderedQuery;
9
+ }
10
+ interface PreparedStatement {
11
+ skeleton: QueryRenderSkeleton | undefined;
12
+ }
13
+ export interface MySqlPreparedQueryState {
14
+ readonly statements: Map<string, PreparedStatement>;
15
+ readonly queries: WeakMap<object, MySqlPreparedQueryMetadata>;
16
+ }
17
+ export declare function createMySqlPreparedQueryState(): MySqlPreparedQueryState;
18
+ export declare function prepareMySqlQuery<Arguments extends readonly unknown[], Row, Params extends readonly unknown[]>(state: MySqlPreparedQueryState, renderer: SqlRenderer, statementName: string, factory: (...args: Arguments) => Query<Row, Params>): MySqlPreparedQueryFactory<Arguments, Row, Params>;
19
+ export {};
20
+ //# sourceMappingURL=prepared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepared.d.ts","sourceRoot":"","sources":["../../../../src/prepared.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,yBAAyB,CACxC,SAAS,SAAS,SAAS,OAAO,EAAE,EACpC,GAAG,EACH,MAAM,SAAS,SAAS,OAAO,EAAE;IAEjC,CAAC,GAAG,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CAClC;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CAC/D;AAED,wBAAgB,6BAA6B,IAAI,uBAAuB,CAKvE;AAQD,wBAAgB,iBAAiB,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,SAAS,SAAS,OAAO,EAAE,EAC5G,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,WAAW,EACrB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,SAAS,KAAK,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,GAClD,yBAAyB,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAwCnD"}