@typed-sql/mysql 1.0.0-beta.2 → 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.
@@ -0,0 +1,47 @@
1
+ import { bindQueryRenderSkeleton, compileQueryRenderSkeleton, } from "@typed-sql/core";
2
+ export function createMySqlPreparedQueryState() {
3
+ return {
4
+ statements: new Map(),
5
+ queries: new WeakMap(),
6
+ };
7
+ }
8
+ function validateStatementName(statementName) {
9
+ if (typeof statementName !== "string" || statementName.length === 0 || statementName.includes("\0")) {
10
+ throw new TypeError("Prepared statement names must be non-empty and cannot contain NUL");
11
+ }
12
+ }
13
+ export function prepareMySqlQuery(state, renderer, statementName, factory) {
14
+ validateStatementName(statementName);
15
+ if (state.statements.has(statementName)) {
16
+ throw new TypeError(`Prepared statement name ${JSON.stringify(statementName)} is already registered`);
17
+ }
18
+ const statement = { skeleton: undefined };
19
+ state.statements.set(statementName, statement);
20
+ const prepared = (...args) => {
21
+ const query = factory(...args);
22
+ const existing = state.queries.get(query);
23
+ if (existing !== undefined && existing.statementName !== statementName) {
24
+ throw new TypeError(`A query cannot use both prepared statement ${JSON.stringify(existing.statementName)} and ${JSON.stringify(statementName)}`);
25
+ }
26
+ let rendered = existing?.rendered;
27
+ const skeleton = statement.skeleton;
28
+ if (rendered === undefined) {
29
+ if (skeleton === undefined) {
30
+ const compiled = compileQueryRenderSkeleton(query, renderer);
31
+ statement.skeleton = compiled.skeleton;
32
+ rendered = compiled.rendered;
33
+ }
34
+ else {
35
+ rendered = bindQueryRenderSkeleton(query, skeleton);
36
+ }
37
+ }
38
+ if (rendered === undefined) {
39
+ throw new TypeError(`Prepared statement ${JSON.stringify(statementName)} must always render the same SQL text and structure`);
40
+ }
41
+ if (existing === undefined)
42
+ state.queries.set(query, { statementName, rendered });
43
+ return query;
44
+ };
45
+ return Object.freeze(Object.assign(prepared, { statementName }));
46
+ }
47
+ //# sourceMappingURL=prepared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepared.js","sourceRoot":"","sources":["../../../../src/prepared.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAK3B,MAAM,iBAAiB,CAAC;AAyBzB,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,OAAO,EAAE,IAAI,OAAO,EAAE;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,aAAqB;IAClD,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpG,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAA8B,EAC9B,QAAqB,EACrB,aAAqB,EACrB,OAAmD;IAEnD,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACxG,CAAC;IAED,MAAM,SAAS,GAAsB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC7D,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAe,EAAsB,EAAE;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,aAAa,KAAK,aAAa,EAAE,CAAC;YACvE,MAAM,IAAI,SAAS,CACjB,8CAA8C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAC5H,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC;QAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC7D,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACvC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CACjB,sBAAsB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,qDAAqD,CACzG,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS;YAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -1,15 +1,16 @@
1
- import { type Database, type SqlRenderer } from "@typed-sql/core";
1
+ import { type Database, type Query, type QueryBatch, type QueryResults, type QueryStream, type SqlRenderer, type StreamOptions } from "@typed-sql/core";
2
+ import { type MySqlFieldLike } from "./decoding.js";
3
+ import { type MySqlPreparedQueryFactory } from "./prepared.js";
4
+ import { type MySqlStreamingConnection } from "./stream.js";
2
5
  import { type MySqlTypePolicy } from "./type-policy.js";
3
- export interface MySqlFieldLike {
4
- readonly name: string;
5
- readonly columnType: number;
6
- readonly columnLength?: number;
7
- }
6
+ export type { MySqlFieldLike } from "./decoding.js";
7
+ export type { MySqlPreparedQueryFactory } from "./prepared.js";
8
+ export type { MySqlProtocolStream } from "./stream.js";
8
9
  export interface MySqlExecutionResult {
9
10
  readonly rows: readonly Record<string, unknown>[] | Record<string, unknown>;
10
11
  readonly fields?: readonly MySqlFieldLike[];
11
12
  }
12
- export interface MySqlConnectionLike {
13
+ export interface MySqlConnectionLike extends MySqlStreamingConnection {
13
14
  execute(sql: string, values?: readonly unknown[]): Promise<MySqlExecutionResult>;
14
15
  query(sql: string): Promise<MySqlExecutionResult>;
15
16
  beginTransaction(): Promise<void>;
@@ -22,7 +23,15 @@ export interface MySqlPoolLike {
22
23
  getConnection(): Promise<MySqlConnectionLike>;
23
24
  end(): Promise<void>;
24
25
  }
25
- export interface MySqlDatabase extends Database {
26
+ export interface MySqlTransaction extends Database<MySqlTransaction> {
27
+ batch<const Queries extends readonly unknown[]>(queries: QueryBatch<Queries>): Promise<QueryResults<Queries>>;
28
+ stream<Row, Params extends readonly unknown[]>(query: Query<Row, Params>, options?: StreamOptions): QueryStream<Row>;
29
+ prepare<Arguments extends readonly unknown[], Row, Params extends readonly unknown[]>(statementName: string, factory: (...args: Arguments) => Query<Row, Params>): MySqlPreparedQueryFactory<Arguments, Row, Params>;
30
+ }
31
+ export interface MySqlDatabase extends Database<MySqlTransaction> {
32
+ batch<const Queries extends readonly unknown[]>(queries: QueryBatch<Queries>): Promise<QueryResults<Queries>>;
33
+ stream<Row, Params extends readonly unknown[]>(query: Query<Row, Params>, options?: StreamOptions): QueryStream<Row>;
34
+ prepare<Arguments extends readonly unknown[], Row, Params extends readonly unknown[]>(statementName: string, factory: (...args: Arguments) => Query<Row, Params>): MySqlPreparedQueryFactory<Arguments, Row, Params>;
26
35
  close(): Promise<void>;
27
36
  }
28
37
  export interface MySqlDatabaseOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAA2B,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEhF,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,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5E,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjF,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClD,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjF,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;IACjG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC/C;AAMD,eAAO,MAAM,aAAa,EAAE,WAG1B,CAAC;AAoIH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAYhF"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,118 +1,292 @@
1
1
  var _a;
2
- import { renderQuery } from "@typed-sql/core";
2
+ import { renderQuery, } from "@typed-sql/core";
3
+ import { decodeMySqlRows, encodeMySqlValue, MySqlDecoderPlanCache, } from "./decoding.js";
4
+ import { createMySqlPreparedQueryState, prepareMySqlQuery, } from "./prepared.js";
5
+ import { createMySqlQueryStream, validateMySqlStreamBatchSize } from "./stream.js";
3
6
  import { defaultMySqlTypePolicy } from "./type-policy.js";
4
- const defaultRuntimePolicy = defaultMySqlTypePolicy;
5
- const mysqlTypes = { tiny: 1, longlong: 8, date: 10, datetime: 12, timestamp: 7, json: 245, decimal: 246 };
7
+ const defaultRuntimeTypePolicy = defaultMySqlTypePolicy;
8
+ const emptyBatchResults = Object.freeze([]);
6
9
  export const mysqlRenderer = Object.freeze({
7
10
  placeholder: () => "?",
8
11
  quoteIdentifier: (identifier) => `\`${identifier.replaceAll("`", "``")}\``,
9
12
  });
10
- function encoded(value) {
11
- return typeof value === "bigint" ? value.toString() : Array.isArray(value) ? value.map(encoded) : value;
12
- }
13
- function finite(value, label) {
14
- const result = Number(value);
15
- if (!Number.isFinite(result))
16
- throw new RangeError(`${label} value ${value} cannot be represented as a finite number`);
17
- return result;
18
- }
19
- function decode(value, field, policy, decimal) {
20
- if (value === null || value === undefined)
21
- return value;
22
- if (field.columnType === mysqlTypes.longlong) {
23
- if (policy.bigint === "bigint")
24
- return BigInt(String(value));
25
- if (policy.bigint === "number") {
26
- const result = finite(String(value), "bigint");
27
- if (!Number.isSafeInteger(result))
28
- throw new RangeError(`bigint value ${value} exceeds JavaScript's safe integer range`);
29
- return result;
30
- }
31
- return String(value);
32
- }
33
- if (field.columnType === mysqlTypes.decimal) {
34
- if (policy.decimal === "number")
35
- return finite(String(value), "decimal");
36
- if (policy.decimal === "Decimal") {
37
- if (decimal === undefined)
38
- throw new TypeError("decimal=Decimal requires a decimal(value) codec");
39
- return decimal(String(value));
40
- }
41
- return String(value);
42
- }
43
- if ([mysqlTypes.date, mysqlTypes.datetime, mysqlTypes.timestamp].includes(field.columnType)) {
44
- return policy.date === "string" ? String(value) : value instanceof Date ? value : new Date(String(value));
45
- }
46
- if (field.columnType === mysqlTypes.json && policy.json === "string")
47
- return typeof value === "string" ? value : JSON.stringify(value);
48
- if (field.columnType === mysqlTypes.tiny && field.columnLength === 1 && policy.tinyint1 === "boolean")
49
- return value === true || value === 1 || value === "1";
50
- return value;
13
+ function createMySqlConnectionOperation() {
14
+ let finish;
15
+ const completion = new Promise((resolve) => {
16
+ finish = resolve;
17
+ });
18
+ return { completion, finish };
51
19
  }
52
20
  class MySqlDatabaseImplementation {
53
21
  #pool;
54
22
  #connection;
55
23
  #ownsPool;
56
- #policy;
57
- #decimal;
58
24
  #depth;
59
- constructor(pool, connection, ownsPool, policy, decimal, depth) {
25
+ #prepared;
26
+ #decoderPlans;
27
+ #executes;
28
+ #streams;
29
+ #transactionState;
30
+ #scopeOpen = true;
31
+ constructor(pool, connection, ownsPool, depth, prepared, decoderPlans, transactionState) {
60
32
  this.#pool = pool;
61
33
  this.#connection = connection;
62
34
  this.#ownsPool = ownsPool;
63
- this.#policy = policy;
64
- this.#decimal = decimal;
65
35
  this.#depth = depth;
36
+ this.#prepared = prepared;
37
+ this.#decoderPlans = decoderPlans;
38
+ this.#executes = connection === undefined ? undefined : new Set();
39
+ this.#streams = connection === undefined ? undefined : new Set();
40
+ this.#transactionState = transactionState;
66
41
  }
67
42
  async execute(query) {
68
- const rendered = renderQuery(query, mysqlRenderer);
69
- const result = await (this.#connection ?? this.#pool).execute(rendered.text, rendered.values.map(encoded));
43
+ this.#assertScopeOpen();
44
+ this.#assertConnectionAvailable("execute a query");
45
+ if (this.#connection === undefined)
46
+ return this.#executeOn(this.#pool, query);
47
+ const operation = createMySqlConnectionOperation();
48
+ this.#executes.add(operation);
49
+ this.#transactionState.execute = operation;
50
+ try {
51
+ return await this.#executeOn(this.#connection, query);
52
+ }
53
+ finally {
54
+ this.#executes.delete(operation);
55
+ if (this.#transactionState?.execute === operation)
56
+ this.#transactionState.execute = undefined;
57
+ operation.finish();
58
+ }
59
+ }
60
+ async #executeOn(executor, query) {
61
+ const prepared = this.#prepared.queries.get(query);
62
+ const rendered = prepared?.rendered ?? renderQuery(query, mysqlRenderer);
63
+ const result = await executor.execute(rendered.text, rendered.values.map(encodeMySqlValue));
70
64
  if (!Array.isArray(result.rows))
71
65
  return [];
72
- const fields = result.fields ?? [];
73
- return result.rows.map((row) => Object.fromEntries(Object.entries(row).map(([key, value]) => {
74
- const field = fields.find((candidate) => candidate.name === key);
75
- return [key, field === undefined ? value : decode(value, field, this.#policy, this.#decimal)];
76
- })));
66
+ const decoders = this.#decoderPlans.get(result.fields ?? []);
67
+ return decodeMySqlRows(result.rows, decoders);
68
+ }
69
+ async batch(queries) {
70
+ this.#assertScopeOpen();
71
+ this.#assertConnectionAvailable("execute a batch");
72
+ if (queries.length === 0)
73
+ return emptyBatchResults;
74
+ const orderedQueries = [...queries];
75
+ if (this.#connection !== undefined) {
76
+ const operation = createMySqlConnectionOperation();
77
+ this.#transactionState.batch = operation;
78
+ try {
79
+ return await this.#executeBatchOn(this.#connection, orderedQueries, () => this.#assertBatchCanContinue(operation));
80
+ }
81
+ finally {
82
+ if (this.#transactionState?.batch === operation)
83
+ this.#transactionState.batch = undefined;
84
+ operation.finish();
85
+ }
86
+ }
87
+ const connection = await this.#pool.getConnection();
88
+ let results;
89
+ try {
90
+ results = await this.#executeBatchOn(connection, orderedQueries);
91
+ }
92
+ catch (error) {
93
+ try {
94
+ connection.release();
95
+ }
96
+ catch {
97
+ /* Preserve the batch execution failure. */
98
+ }
99
+ throw error;
100
+ }
101
+ connection.release();
102
+ return results;
103
+ }
104
+ async #executeBatchOn(connection, queries, beforeEach) {
105
+ const results = [];
106
+ for (const query of queries) {
107
+ beforeEach?.();
108
+ results.push(await this.#executeOn(connection, query));
109
+ }
110
+ return results;
111
+ }
112
+ stream(query, options = {}) {
113
+ this.#assertScopeOpen();
114
+ const prepared = this.#prepared.queries.get(query);
115
+ const rendered = prepared?.rendered ?? renderQuery(query, mysqlRenderer);
116
+ const batchSize = validateMySqlStreamBatchSize(options.batchSize);
117
+ let queryStream;
118
+ queryStream = createMySqlQueryStream({
119
+ openConnection: async () => {
120
+ if (this.#connection !== undefined) {
121
+ this.#assertScopeOpen();
122
+ this.#assertConnectionAvailable("start another query stream");
123
+ this.#transactionState.active = queryStream;
124
+ return { connection: this.#connection, release: false };
125
+ }
126
+ return { connection: await this.#pool.getConnection(), release: true };
127
+ },
128
+ text: rendered.text,
129
+ values: rendered.values.map(encodeMySqlValue),
130
+ batchSize,
131
+ decoderPlans: this.#decoderPlans,
132
+ onClose: () => {
133
+ this.#streams?.delete(queryStream);
134
+ if (this.#transactionState?.active === queryStream)
135
+ this.#transactionState.active = undefined;
136
+ },
137
+ });
138
+ this.#streams?.add(queryStream);
139
+ return queryStream;
140
+ }
141
+ prepare(statementName, factory) {
142
+ this.#assertScopeOpen();
143
+ return prepareMySqlQuery(this.#prepared, mysqlRenderer, statementName, factory);
77
144
  }
78
145
  async transaction(fn) {
146
+ this.#assertScopeOpen();
79
147
  if (this.#connection !== undefined)
80
148
  return this.#nested(fn);
81
149
  const connection = await this.#pool.getConnection();
150
+ let transaction;
151
+ let result;
82
152
  try {
83
153
  await connection.beginTransaction();
84
- const result = await fn(new _a(this.#pool, connection, false, this.#policy, this.#decimal, 1));
154
+ transaction = new _a(this.#pool, connection, false, 1, this.#prepared, this.#decoderPlans, { active: undefined, batch: undefined, execute: undefined, usable: true });
155
+ result = await fn(transaction);
156
+ transaction.#scopeOpen = false;
157
+ transaction.#transactionState.usable = false;
158
+ await transaction.#assertTransactionReadyForFinalize(true);
85
159
  await connection.commit();
86
- return result;
87
160
  }
88
161
  catch (error) {
162
+ if (transaction !== undefined) {
163
+ transaction.#scopeOpen = false;
164
+ transaction.#transactionState.usable = false;
165
+ await transaction.#invalidateScope();
166
+ }
89
167
  try {
90
168
  await connection.rollback();
91
169
  }
92
170
  catch {
93
171
  /* Preserve the original failure. */
94
172
  }
173
+ try {
174
+ connection.release();
175
+ }
176
+ catch {
177
+ /* Preserve the original failure. */
178
+ }
95
179
  throw error;
96
180
  }
97
- finally {
98
- connection.release();
99
- }
181
+ connection.release();
182
+ return result;
100
183
  }
101
184
  async #nested(fn) {
185
+ this.#assertScopeOpen();
186
+ this.#assertConnectionAvailable("start a nested transaction");
102
187
  const connection = this.#connection;
103
188
  const depth = this.#depth + 1;
104
189
  const savepoint = `typed_sql_${depth}`;
105
190
  await connection.query(`SAVEPOINT ${savepoint}`);
191
+ let transaction;
106
192
  try {
107
- const result = await fn(new _a(this.#pool, connection, false, this.#policy, this.#decimal, depth));
193
+ transaction = new _a(this.#pool, connection, false, depth, this.#prepared, this.#decoderPlans, this.#transactionState);
194
+ const result = await fn(transaction);
195
+ transaction.#scopeOpen = false;
196
+ await transaction.#assertTransactionReadyForFinalize();
108
197
  await connection.query(`RELEASE SAVEPOINT ${savepoint}`);
109
198
  return result;
110
199
  }
111
200
  catch (error) {
112
- await connection.query(`ROLLBACK TO SAVEPOINT ${savepoint}`);
201
+ if (transaction !== undefined)
202
+ await transaction.#invalidateScope();
203
+ if (this.#transactionState?.usable !== false) {
204
+ try {
205
+ await connection.query(`ROLLBACK TO SAVEPOINT ${savepoint}`);
206
+ }
207
+ catch {
208
+ /* Preserve the original failure. */
209
+ }
210
+ }
113
211
  throw error;
114
212
  }
115
213
  }
214
+ async #rejectActiveStreams() {
215
+ if (this.#streams === undefined || this.#streams.size === 0)
216
+ return;
217
+ const active = [...this.#streams];
218
+ await Promise.allSettled(active.map((stream) => stream.close()));
219
+ throw new Error(`MySQL transaction callback returned with ${active.length} active query stream${active.length === 1 ? "" : "s"}; consume or close every stream before returning`);
220
+ }
221
+ async #closeStreams() {
222
+ const streams = new Set(this.#streams);
223
+ if (this.#transactionState?.active !== undefined)
224
+ streams.add(this.#transactionState.active);
225
+ if (streams.size === 0)
226
+ return;
227
+ await Promise.allSettled([...streams].map((stream) => stream.close()));
228
+ }
229
+ async #invalidateScope() {
230
+ this.#scopeOpen = false;
231
+ await this.#closeStreams();
232
+ await this.#settleExecutes();
233
+ await this.#settleBatch();
234
+ }
235
+ async #assertTransactionReadyForFinalize(connectionFinalizing = false) {
236
+ const leakedExecutes = new Set(this.#executes);
237
+ if (this.#transactionState?.execute !== undefined)
238
+ leakedExecutes.add(this.#transactionState.execute);
239
+ const leakedBatch = this.#transactionState?.batch;
240
+ await this.#rejectActiveStreams();
241
+ const active = this.#transactionState?.active;
242
+ if (active !== undefined) {
243
+ await Promise.allSettled([active.close()]);
244
+ throw new Error("MySQL transaction callback returned while a nested query stream owned its connection; await nested work and close every stream before returning");
245
+ }
246
+ if (leakedExecutes.size > 0) {
247
+ await this.#settleExecuteOperations(leakedExecutes);
248
+ throw new Error("MySQL transaction callback returned while an execute operation owned its connection; await execute before returning");
249
+ }
250
+ if (leakedBatch !== undefined) {
251
+ await leakedBatch.completion;
252
+ throw new Error("MySQL transaction callback returned while an ordered batch owned its connection; await the batch before returning");
253
+ }
254
+ if (!connectionFinalizing && this.#transactionState?.usable === false)
255
+ throw new Error("This MySQL transaction connection is no longer active");
256
+ }
257
+ #assertConnectionAvailable(action) {
258
+ if (this.#transactionState?.active !== undefined)
259
+ throw new Error(`Cannot ${action} while a MySQL query stream owns the transaction connection`);
260
+ if (this.#transactionState?.batch !== undefined)
261
+ throw new Error(`Cannot ${action} while a MySQL ordered batch owns the transaction connection`);
262
+ if (this.#transactionState?.execute !== undefined)
263
+ throw new Error(`Cannot ${action} while a MySQL execute operation owns the transaction connection`);
264
+ }
265
+ #assertBatchCanContinue(operation) {
266
+ this.#assertScopeOpen();
267
+ if (this.#transactionState?.batch !== operation)
268
+ throw new Error("This MySQL ordered batch no longer owns the transaction connection");
269
+ }
270
+ async #settleBatch() {
271
+ const batch = this.#transactionState?.batch;
272
+ if (batch !== undefined)
273
+ await batch.completion;
274
+ }
275
+ async #settleExecutes() {
276
+ const operations = new Set(this.#executes);
277
+ if (this.#transactionState?.execute !== undefined)
278
+ operations.add(this.#transactionState.execute);
279
+ await this.#settleExecuteOperations(operations);
280
+ }
281
+ async #settleExecuteOperations(operations) {
282
+ for (const operation of operations) {
283
+ await operation.completion;
284
+ }
285
+ }
286
+ #assertScopeOpen() {
287
+ if (this.#connection !== undefined && (!this.#scopeOpen || this.#transactionState?.usable === false))
288
+ throw new Error("This MySQL transaction scope is no longer active");
289
+ }
116
290
  async close() {
117
291
  if (this.#connection !== undefined)
118
292
  throw new Error("Cannot close a database from inside a transaction");
@@ -122,9 +296,9 @@ class MySqlDatabaseImplementation {
122
296
  }
123
297
  _a = MySqlDatabaseImplementation;
124
298
  export function createMySqlDatabase(options) {
125
- const policy = { ...defaultRuntimePolicy, ...options.typePolicy };
126
- if (policy.decimal === "Decimal" && options.decimal === undefined)
299
+ const typePolicy = { ...defaultRuntimeTypePolicy, ...options.typePolicy };
300
+ if (typePolicy.decimal === "Decimal" && options.decimal === undefined)
127
301
  throw new TypeError("decimal=Decimal requires a decimal(value) codec");
128
- return new MySqlDatabaseImplementation(options.pool, undefined, options.ownsPool ?? false, policy, options.decimal, 0);
302
+ return new MySqlDatabaseImplementation(options.pool, undefined, options.ownsPool ?? false, 0, createMySqlPreparedQueryState(), new MySqlDecoderPlanCache(typePolicy, options.decimal));
129
303
  }
130
304
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { QueryStream } from "@typed-sql/core";
2
+ import { type MySqlDecoderPlanCache, type MySqlFieldLike } from "./decoding.js";
3
+ /** A protocol-level MySQL row stream supplied by an execution adapter. */
4
+ export interface MySqlProtocolStream extends AsyncIterableIterator<Record<string, unknown>> {
5
+ /** Resolves once result metadata is available, before the first row is decoded. */
6
+ readonly fields: Promise<readonly MySqlFieldLike[]>;
7
+ /** Whether the leased connection may safely return to its pool after close. */
8
+ readonly connectionReusable: boolean;
9
+ /** Stops row delivery and resolves only after the underlying protocol operation terminates. */
10
+ close(): Promise<void>;
11
+ }
12
+ export interface MySqlStreamingConnection {
13
+ stream?(sql: string, values: readonly unknown[], options: {
14
+ readonly batchSize: number;
15
+ }): MySqlProtocolStream;
16
+ release(): void;
17
+ }
18
+ interface OpenMySqlStream {
19
+ readonly connection: MySqlStreamingConnection;
20
+ readonly release: boolean;
21
+ }
22
+ export declare function validateMySqlStreamBatchSize(value: number | undefined): number;
23
+ export declare function createMySqlQueryStream<Row>(options: {
24
+ readonly openConnection: () => Promise<OpenMySqlStream>;
25
+ readonly text: string;
26
+ readonly values: readonly unknown[];
27
+ readonly batchSize: number;
28
+ readonly decoderPlans: MySqlDecoderPlanCache;
29
+ readonly onClose: () => void;
30
+ }): QueryStream<Row>;
31
+ export {};
32
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAkB,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAEhG,0EAA0E;AAC1E,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzF,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;IACpD,+EAA+E;IAC/E,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,+FAA+F;IAC/F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB,CAAC;IAC/G,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAQD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAK9E;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,GAAG,WAAW,CAAC,GAAG,CAAC,CAEnB"}