@typed-sql/mysql 1.0.0-rc.0 → 2.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +136 -0
- package/README.md +45 -56
- package/dist/packages/mysql/src/bulk.d.ts +22 -0
- package/dist/packages/mysql/src/bulk.d.ts.map +1 -0
- package/dist/packages/mysql/src/bulk.js +205 -0
- package/dist/packages/mysql/src/bulk.js.map +1 -0
- package/dist/packages/mysql/src/decoding.d.ts +26 -0
- package/dist/packages/mysql/src/decoding.d.ts.map +1 -0
- package/dist/packages/mysql/src/decoding.js +172 -0
- package/dist/packages/mysql/src/decoding.js.map +1 -0
- package/dist/packages/mysql/src/index.d.ts +5 -1
- package/dist/packages/mysql/src/index.d.ts.map +1 -1
- package/dist/packages/mysql/src/index.js +16 -3
- package/dist/packages/mysql/src/index.js.map +1 -1
- package/dist/packages/mysql/src/mysql2.d.ts +60 -1
- package/dist/packages/mysql/src/mysql2.d.ts.map +1 -1
- package/dist/packages/mysql/src/mysql2.js +402 -1
- package/dist/packages/mysql/src/mysql2.js.map +1 -1
- package/dist/packages/mysql/src/prepared.d.ts +20 -0
- package/dist/packages/mysql/src/prepared.d.ts.map +1 -0
- package/dist/packages/mysql/src/prepared.js +47 -0
- package/dist/packages/mysql/src/prepared.js.map +1 -0
- package/dist/packages/mysql/src/provider.d.ts.map +1 -1
- package/dist/packages/mysql/src/provider.js +8 -1
- package/dist/packages/mysql/src/provider.js.map +1 -1
- package/dist/packages/mysql/src/resolver.d.ts.map +1 -1
- package/dist/packages/mysql/src/resolver.js +20 -1
- package/dist/packages/mysql/src/resolver.js.map +1 -1
- package/dist/packages/mysql/src/routing.d.ts +22 -0
- package/dist/packages/mysql/src/routing.d.ts.map +1 -0
- package/dist/packages/mysql/src/routing.js +72 -0
- package/dist/packages/mysql/src/routing.js.map +1 -0
- package/dist/packages/mysql/src/runtime.d.ts +22 -8
- package/dist/packages/mysql/src/runtime.d.ts.map +1 -1
- package/dist/packages/mysql/src/runtime.js +530 -70
- package/dist/packages/mysql/src/runtime.js.map +1 -1
- package/dist/packages/mysql/src/semantics.d.ts +5 -0
- package/dist/packages/mysql/src/semantics.d.ts.map +1 -0
- package/dist/packages/mysql/src/semantics.js +203 -0
- package/dist/packages/mysql/src/semantics.js.map +1 -0
- package/dist/packages/mysql/src/stream.d.ts +32 -0
- package/dist/packages/mysql/src/stream.d.ts.map +1 -0
- package/dist/packages/mysql/src/stream.js +175 -0
- package/dist/packages/mysql/src/stream.js.map +1 -0
- package/dist/packages/mysql/src/version.d.ts +2 -0
- package/dist/packages/mysql/src/version.d.ts.map +1 -0
- package/dist/packages/mysql/src/version.js +2 -0
- package/dist/packages/mysql/src/version.js.map +1 -0
- package/package.json +4 -4
|
@@ -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,7 +1,9 @@
|
|
|
1
1
|
import { type DialectPlugin } from "@typed-sql/core";
|
|
2
2
|
import { type SchemaSnapshot } from "@typed-sql/schema";
|
|
3
3
|
import { type MySqlTypePolicy } from "./type-policy.js";
|
|
4
|
-
export
|
|
4
|
+
export type { MySqlBulkCapability, MySqlBulkProgress, MySqlBulkResult, MySqlLoadDataOptions, } from "./bulk.js";
|
|
5
|
+
export { mysqlBulk } from "./bulk.js";
|
|
6
|
+
export { MYSQL_DIALECT_VERSION } from "./version.js";
|
|
5
7
|
export type MySqlSchemaSnapshot = SchemaSnapshot & {
|
|
6
8
|
readonly dialect: "mysql";
|
|
7
9
|
};
|
|
@@ -14,6 +16,8 @@ export type { SchemaSnapshot } from "@typed-sql/schema";
|
|
|
14
16
|
export { parseSchemaSnapshot } from "@typed-sql/schema";
|
|
15
17
|
export type { MySqlQueryable, MySqlSchemaProviderOptions } from "./provider.js";
|
|
16
18
|
export { introspectMySql, MySqlSchemaProvider, mysqlCatalogQueries } from "./provider.js";
|
|
19
|
+
export type { MySqlQuerySemanticResolverOptions, MySqlRoutedDatabaseOptions } from "./routing.js";
|
|
20
|
+
export { createMySqlQuerySemanticResolver, createMySqlRoutedDatabase, isMySqlRetryableTransactionError, } from "./routing.js";
|
|
17
21
|
export type { MySqlTypePolicy } from "./type-policy.js";
|
|
18
22
|
export { defaultMySqlTypePolicy, defaultMySqlTypePolicy as typePolicy, isKnownMySqlType, mapMySqlType, } from "./type-policy.js";
|
|
19
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,aAAa,EAAyB,MAAM,iBAAiB,CAAC;AACtG,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG7E,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGhF,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;CACvC;AAyBD,wBAAgB,KAAK,CAAC,OAAO,GAAE,mBAAwB,GAAG,aAAa,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAsC5G;AAED,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EAAE,iCAAiC,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAClG,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,IAAI,UAAU,EACpC,gBAAgB,EAChB,YAAY,GACb,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { parseStatement, SqlParseError } from "@typed-sql/ast";
|
|
2
|
-
import { DIALECT_CONTRACT_VERSION } from "@typed-sql/core";
|
|
2
|
+
import { DIALECT_CONTRACT_VERSION, unknownQuerySemantics } from "@typed-sql/core";
|
|
3
3
|
import { parseSchemaSnapshot } from "@typed-sql/schema";
|
|
4
4
|
import { resolveMySqlStatement } from "./resolver.js";
|
|
5
|
+
import { analyzeMySqlSemantics } from "./semantics.js";
|
|
5
6
|
import { defaultMySqlTypePolicy } from "./type-policy.js";
|
|
6
|
-
|
|
7
|
+
import { MYSQL_DIALECT_VERSION } from "./version.js";
|
|
8
|
+
export { mysqlBulk } from "./bulk.js";
|
|
9
|
+
export { MYSQL_DIALECT_VERSION } from "./version.js";
|
|
7
10
|
const capabilities = Object.freeze({
|
|
8
11
|
aggregateFilter: false,
|
|
9
12
|
arrays: false,
|
|
10
13
|
distinctOn: false,
|
|
11
14
|
fullJoins: false,
|
|
15
|
+
lockingReads: true,
|
|
12
16
|
recursiveCtes: false,
|
|
13
17
|
returning: false,
|
|
14
18
|
setOperations: false,
|
|
@@ -41,7 +45,14 @@ export function mysql(options = {}) {
|
|
|
41
45
|
},
|
|
42
46
|
analyze(sql, snapshot, policy = defaultTypePolicy) {
|
|
43
47
|
try {
|
|
44
|
-
|
|
48
|
+
const statement = parseStatement(sql, { syntax: "mysql" });
|
|
49
|
+
const resolved = resolveMySqlStatement(statement, snapshot, { typePolicy: policy });
|
|
50
|
+
return {
|
|
51
|
+
...resolved,
|
|
52
|
+
semantics: resolved.diagnostics.some(({ severity }) => severity === "error")
|
|
53
|
+
? unknownQuerySemantics(statement.range, "MySQL semantic analysis reported an error.")
|
|
54
|
+
: analyzeMySqlSemantics(statement, snapshot),
|
|
55
|
+
};
|
|
45
56
|
}
|
|
46
57
|
catch (error) {
|
|
47
58
|
if (!(error instanceof SqlParseError))
|
|
@@ -50,6 +61,7 @@ export function mysql(options = {}) {
|
|
|
50
61
|
columns: [],
|
|
51
62
|
parameters: [],
|
|
52
63
|
diagnostics: [{ code: error.code, message: error.message, severity: "error", range: error.range }],
|
|
64
|
+
semantics: unknownQuerySemantics(error.range, "The SQL could not be parsed by the MySQL grammar."),
|
|
53
65
|
};
|
|
54
66
|
}
|
|
55
67
|
},
|
|
@@ -59,5 +71,6 @@ export function mysql(options = {}) {
|
|
|
59
71
|
export { sql } from "@typed-sql/core";
|
|
60
72
|
export { parseSchemaSnapshot } from "@typed-sql/schema";
|
|
61
73
|
export { introspectMySql, MySqlSchemaProvider, mysqlCatalogQueries } from "./provider.js";
|
|
74
|
+
export { createMySqlQuerySemanticResolver, createMySqlRoutedDatabase, isMySqlRetryableTransactionError, } from "./routing.js";
|
|
62
75
|
export { defaultMySqlTypePolicy, defaultMySqlTypePolicy as typePolicy, isKnownMySqlType, mapMySqlType, } from "./type-policy.js";
|
|
63
76
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAsB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { DatabaseObserver, LiveQueryVerifier, QueryPlanInspector } from "@typed-sql/core";
|
|
1
2
|
import type { Pool, PoolOptions } from "mysql2/promise";
|
|
2
3
|
import type { MySqlSchemaSnapshot } from "./index.js";
|
|
3
4
|
import { type MySqlQueryable } from "./provider.js";
|
|
4
5
|
import { type MySqlDatabase, type MySqlPoolLike } from "./runtime.js";
|
|
5
|
-
import type
|
|
6
|
+
import { type MySqlTypePolicy } from "./type-policy.js";
|
|
6
7
|
export interface MySql2Options {
|
|
7
8
|
readonly connectionUri: string | (() => string | Promise<string>);
|
|
8
9
|
readonly poolConfig?: Omit<PoolOptions, "uri" | "supportBigNumbers" | "bigNumberStrings" | "decimalNumbers" | "dateStrings" | "jsonStrings" | "typeCast" | "rowsAsArray">;
|
|
@@ -10,6 +11,7 @@ export interface MySql2Options {
|
|
|
10
11
|
readonly decimal?: (value: string) => unknown;
|
|
11
12
|
/** Test or host-injected loader. Applications normally leave this unset. */
|
|
12
13
|
readonly driverImporter?: () => Promise<typeof import("mysql2/promise")>;
|
|
14
|
+
readonly observer?: DatabaseObserver;
|
|
13
15
|
}
|
|
14
16
|
export interface MySql2SchemaProviderOptions {
|
|
15
17
|
readonly connectionUri?: string | (() => string | Promise<string>);
|
|
@@ -20,10 +22,67 @@ export interface MySql2SchemaProviderOptions {
|
|
|
20
22
|
/** Test or host-injected loader. Applications normally leave this unset. */
|
|
21
23
|
readonly driverImporter?: () => Promise<typeof import("mysql2/promise")>;
|
|
22
24
|
}
|
|
25
|
+
interface MySql2VerificationField {
|
|
26
|
+
readonly name?: string;
|
|
27
|
+
readonly orgName?: string;
|
|
28
|
+
readonly table?: string;
|
|
29
|
+
readonly orgTable?: string;
|
|
30
|
+
readonly db?: string;
|
|
31
|
+
readonly schema?: string;
|
|
32
|
+
readonly columnType?: number;
|
|
33
|
+
readonly type?: number;
|
|
34
|
+
readonly columnLength?: number;
|
|
35
|
+
readonly length?: number;
|
|
36
|
+
readonly flags?: number | readonly string[];
|
|
37
|
+
}
|
|
38
|
+
interface MySql2VerificationStatement {
|
|
39
|
+
readonly statement?: {
|
|
40
|
+
readonly columns?: readonly MySql2VerificationField[];
|
|
41
|
+
readonly parameters?: readonly MySql2VerificationField[];
|
|
42
|
+
};
|
|
43
|
+
close(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
export interface MySql2LiveVerifierConnection {
|
|
46
|
+
prepare(sql: string): Promise<MySql2VerificationStatement>;
|
|
47
|
+
release(): void;
|
|
48
|
+
}
|
|
49
|
+
export interface MySql2LiveVerifierPool {
|
|
50
|
+
query<Row extends Record<string, unknown>[]>(sql: string): Promise<readonly [Row, unknown]>;
|
|
51
|
+
getConnection(): Promise<MySql2LiveVerifierConnection>;
|
|
52
|
+
end(): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
export interface MySql2LiveVerifierOptions {
|
|
55
|
+
readonly connectionUri?: string | (() => string | Promise<string>);
|
|
56
|
+
readonly pool?: MySql2LiveVerifierPool;
|
|
57
|
+
readonly poolConfig?: Omit<PoolOptions, "uri">;
|
|
58
|
+
readonly typePolicy?: MySqlTypePolicy;
|
|
59
|
+
readonly schema?: MySqlSchemaSnapshot;
|
|
60
|
+
readonly driverImporter?: () => Promise<typeof import("mysql2/promise")>;
|
|
61
|
+
}
|
|
62
|
+
export interface MySql2PlanInspectorConnection {
|
|
63
|
+
query<Row extends Record<string, unknown>[]>(sql: string, values?: readonly unknown[]): Promise<readonly [Row, unknown]>;
|
|
64
|
+
release(): void;
|
|
65
|
+
}
|
|
66
|
+
export interface MySql2PlanInspectorPool {
|
|
67
|
+
query<Row extends Record<string, unknown>[]>(sql: string): Promise<readonly [Row, unknown]>;
|
|
68
|
+
getConnection(): Promise<MySql2PlanInspectorConnection>;
|
|
69
|
+
end(): Promise<void>;
|
|
70
|
+
}
|
|
71
|
+
export interface MySql2PlanInspectorOptions {
|
|
72
|
+
readonly connectionUri?: string | (() => string | Promise<string>);
|
|
73
|
+
readonly pool?: MySql2PlanInspectorPool;
|
|
74
|
+
readonly poolConfig?: Omit<PoolOptions, "uri">;
|
|
75
|
+
readonly driverImporter?: () => Promise<typeof import("mysql2/promise")>;
|
|
76
|
+
}
|
|
23
77
|
export declare function loadMySql2Driver(importer?: () => Promise<typeof import("mysql2/promise")>): Promise<typeof import("mysql2/promise")>;
|
|
78
|
+
/** Creates a lazy adapter over MySQL's binary COM_STMT_PREPARE metadata. */
|
|
79
|
+
export declare function createMySql2LiveVerifier(options: MySql2LiveVerifierOptions): LiveQueryVerifier;
|
|
80
|
+
/** Creates a lazy, non-executing adapter over MySQL structured EXPLAIN. */
|
|
81
|
+
export declare function createMySql2PlanInspector(options: MySql2PlanInspectorOptions): QueryPlanInspector;
|
|
24
82
|
export declare function adaptMySql2Pool(pool: Pool): MySqlPoolLike;
|
|
25
83
|
export declare function createMySql2Database(options: MySql2Options): Promise<MySqlDatabase>;
|
|
26
84
|
export declare function mysql2(options: MySql2SchemaProviderOptions): {
|
|
27
85
|
introspect(): Promise<MySqlSchemaSnapshot>;
|
|
28
86
|
};
|
|
87
|
+
export {};
|
|
29
88
|
//# sourceMappingURL=mysql2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql2.d.ts","sourceRoot":"","sources":["../../../../src/mysql2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mysql2.d.ts","sourceRoot":"","sources":["../../../../src/mysql2.ts"],"names":[],"mappings":"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"}
|