@typed-sql/sqlite 2.0.0-rc.2 → 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 +122 -0
- package/README.md +3 -3
- package/dist/packages/sqlite/src/capabilities.d.ts +18 -0
- package/dist/packages/sqlite/src/capabilities.d.ts.map +1 -0
- package/dist/packages/sqlite/src/capabilities.js +155 -0
- package/dist/packages/sqlite/src/capabilities.js.map +1 -0
- package/dist/packages/sqlite/src/catalog/coercions.d.ts +6 -0
- package/dist/packages/sqlite/src/catalog/coercions.d.ts.map +1 -0
- package/dist/packages/sqlite/src/catalog/coercions.js +41 -0
- package/dist/packages/sqlite/src/catalog/coercions.js.map +1 -0
- package/dist/packages/sqlite/src/catalog/date-time.d.ts +5 -0
- package/dist/packages/sqlite/src/catalog/date-time.d.ts.map +1 -0
- package/dist/packages/sqlite/src/catalog/date-time.js +20 -0
- package/dist/packages/sqlite/src/catalog/date-time.js.map +1 -0
- package/dist/packages/sqlite/src/catalog/extensions.d.ts +5 -0
- package/dist/packages/sqlite/src/catalog/extensions.d.ts.map +1 -0
- package/dist/packages/sqlite/src/catalog/extensions.js +65 -0
- package/dist/packages/sqlite/src/catalog/extensions.js.map +1 -0
- package/dist/packages/sqlite/src/catalog/functions.d.ts +57 -0
- package/dist/packages/sqlite/src/catalog/functions.d.ts.map +1 -0
- package/dist/packages/sqlite/src/catalog/functions.js +165 -0
- package/dist/packages/sqlite/src/catalog/functions.js.map +1 -0
- package/dist/packages/sqlite/src/catalog/index.d.ts +8 -0
- package/dist/packages/sqlite/src/catalog/index.d.ts.map +1 -0
- package/dist/packages/sqlite/src/catalog/index.js +8 -0
- package/dist/packages/sqlite/src/catalog/index.js.map +1 -0
- package/dist/packages/sqlite/src/catalog/json.d.ts +5 -0
- package/dist/packages/sqlite/src/catalog/json.d.ts.map +1 -0
- package/dist/packages/sqlite/src/catalog/json.js +146 -0
- package/dist/packages/sqlite/src/catalog/json.js.map +1 -0
- package/dist/packages/sqlite/src/catalog/math.d.ts +4 -0
- package/dist/packages/sqlite/src/catalog/math.d.ts.map +1 -0
- package/dist/packages/sqlite/src/catalog/math.js +44 -0
- package/dist/packages/sqlite/src/catalog/math.js.map +1 -0
- package/dist/packages/sqlite/src/catalog/operators.d.ts +10 -0
- package/dist/packages/sqlite/src/catalog/operators.d.ts.map +1 -0
- package/dist/packages/sqlite/src/catalog/operators.js +52 -0
- package/dist/packages/sqlite/src/catalog/operators.js.map +1 -0
- package/dist/packages/sqlite/src/index.d.ts +5 -2
- package/dist/packages/sqlite/src/index.d.ts.map +1 -1
- package/dist/packages/sqlite/src/index.js +15 -16
- package/dist/packages/sqlite/src/index.js.map +1 -1
- package/dist/packages/sqlite/src/node-sqlite.d.ts +18 -3
- package/dist/packages/sqlite/src/node-sqlite.d.ts.map +1 -1
- package/dist/packages/sqlite/src/node-sqlite.js +136 -25
- package/dist/packages/sqlite/src/node-sqlite.js.map +1 -1
- package/dist/packages/sqlite/src/parser/index.d.ts +8 -0
- package/dist/packages/sqlite/src/parser/index.d.ts.map +1 -0
- package/dist/packages/sqlite/src/parser/index.js +4 -0
- package/dist/packages/sqlite/src/parser/index.js.map +1 -0
- package/dist/packages/sqlite/src/parser/parser.d.ts +14 -0
- package/dist/packages/sqlite/src/parser/parser.d.ts.map +1 -0
- package/dist/packages/sqlite/src/parser/parser.js +1122 -0
- package/dist/packages/sqlite/src/parser/parser.js.map +1 -0
- package/dist/packages/sqlite/src/parser/tokenizer.d.ts +14 -0
- package/dist/packages/sqlite/src/parser/tokenizer.d.ts.map +1 -0
- package/dist/packages/sqlite/src/parser/tokenizer.js +375 -0
- package/dist/packages/sqlite/src/parser/tokenizer.js.map +1 -0
- package/dist/packages/sqlite/src/parser/types.d.ts +313 -0
- package/dist/packages/sqlite/src/parser/types.d.ts.map +1 -0
- package/dist/packages/sqlite/src/parser/types.js +9 -0
- package/dist/packages/sqlite/src/parser/types.js.map +1 -0
- package/dist/packages/sqlite/src/parser/walk.d.ts +13 -0
- package/dist/packages/sqlite/src/parser/walk.d.ts.map +1 -0
- package/dist/packages/sqlite/src/parser/walk.js +180 -0
- package/dist/packages/sqlite/src/parser/walk.js.map +1 -0
- package/dist/packages/sqlite/src/prepared.d.ts +4 -3
- package/dist/packages/sqlite/src/prepared.d.ts.map +1 -1
- package/dist/packages/sqlite/src/prepared.js +7 -14
- package/dist/packages/sqlite/src/prepared.js.map +1 -1
- package/dist/packages/sqlite/src/provider.d.ts +27 -5
- package/dist/packages/sqlite/src/provider.d.ts.map +1 -1
- package/dist/packages/sqlite/src/provider.js +345 -14
- package/dist/packages/sqlite/src/provider.js.map +1 -1
- package/dist/packages/sqlite/src/resolver.d.ts +1 -1
- package/dist/packages/sqlite/src/resolver.d.ts.map +1 -1
- package/dist/packages/sqlite/src/resolver.js +989 -124
- package/dist/packages/sqlite/src/resolver.js.map +1 -1
- package/dist/packages/sqlite/src/runtime.d.ts +2 -0
- package/dist/packages/sqlite/src/runtime.d.ts.map +1 -1
- package/dist/packages/sqlite/src/runtime.js +1 -1
- package/dist/packages/sqlite/src/runtime.js.map +1 -1
- package/dist/packages/sqlite/src/schema-sql.d.ts +8 -0
- package/dist/packages/sqlite/src/schema-sql.d.ts.map +1 -0
- package/dist/packages/sqlite/src/schema-sql.js +157 -0
- package/dist/packages/sqlite/src/schema-sql.js.map +1 -0
- package/dist/packages/sqlite/src/semantics.d.ts +1 -1
- package/dist/packages/sqlite/src/semantics.d.ts.map +1 -1
- package/dist/packages/sqlite/src/semantics.js +44 -6
- package/dist/packages/sqlite/src/semantics.js.map +1 -1
- package/dist/packages/sqlite/src/snapshot.d.ts +10 -4
- package/dist/packages/sqlite/src/snapshot.d.ts.map +1 -1
- package/dist/packages/sqlite/src/snapshot.js +136 -3
- package/dist/packages/sqlite/src/snapshot.js.map +1 -1
- package/dist/packages/sqlite/src/support.d.ts +19 -0
- package/dist/packages/sqlite/src/support.d.ts.map +1 -0
- package/dist/packages/sqlite/src/support.js +59 -0
- package/dist/packages/sqlite/src/support.js.map +1 -0
- package/dist/packages/sqlite/src/type-policy.d.ts +3 -2
- package/dist/packages/sqlite/src/type-policy.d.ts.map +1 -1
- package/dist/packages/sqlite/src/type-policy.js +2 -12
- package/dist/packages/sqlite/src/type-policy.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { PathLike } from "node:fs";
|
|
2
|
+
import type { DialectServerEvidence } from "@typed-sql/core";
|
|
3
|
+
import { type SchemaSnapshotV2 } from "@typed-sql/schema";
|
|
2
4
|
import { SqliteSchemaProvider } from "./provider.js";
|
|
3
5
|
import { type SqliteConnectionLike, type SqliteDatabase } from "./runtime.js";
|
|
4
|
-
import type
|
|
6
|
+
import { type SqliteSchemaSnapshotV2 } from "./snapshot.js";
|
|
5
7
|
import { type SqliteTypePolicy } from "./type-policy.js";
|
|
6
8
|
type SqliteInput = null | number | bigint | string | ArrayBufferView;
|
|
7
9
|
export interface NodeSqliteStatementLike {
|
|
@@ -21,16 +23,29 @@ export interface NodeSqliteDatabaseOptions {
|
|
|
21
23
|
readonly path: PathLike;
|
|
22
24
|
readonly databaseOptions?: Readonly<Record<string, unknown>>;
|
|
23
25
|
readonly typePolicy?: SqliteTypePolicy;
|
|
26
|
+
/** Generated snapshot whose server and type-policy evidence must match this connection. */
|
|
27
|
+
readonly snapshot?: SchemaSnapshotV2;
|
|
24
28
|
readonly statementCacheSize?: number;
|
|
29
|
+
readonly preparedCardinalityVariantLimit?: number;
|
|
25
30
|
/** Test or host-injected loader. Applications normally leave this unset. */
|
|
26
31
|
readonly driverImporter?: () => Promise<NodeSqliteModuleLike>;
|
|
27
32
|
}
|
|
28
|
-
export
|
|
33
|
+
export type NodeSqliteCompatibilityReason = "compile-options" | "type-policy" | "version";
|
|
34
|
+
/** Fail-closed mismatch between compiler evidence and the SQLite library opened for execution. */
|
|
35
|
+
export declare class NodeSqliteCompatibilityError extends Error {
|
|
36
|
+
readonly code = "SQLITE_RUNTIME_INCOMPATIBLE";
|
|
37
|
+
readonly reason: NodeSqliteCompatibilityReason;
|
|
38
|
+
constructor(reason: NodeSqliteCompatibilityReason, message: string);
|
|
39
|
+
}
|
|
40
|
+
export interface NodeSqliteSchemaProviderOptions extends Omit<NodeSqliteDatabaseOptions, "path" | "snapshot"> {
|
|
29
41
|
readonly path?: PathLike;
|
|
30
42
|
readonly database?: NodeSqliteDatabaseLike;
|
|
31
43
|
readonly schemas?: readonly string[];
|
|
32
44
|
readonly functions?: ConstructorParameters<typeof SqliteSchemaProvider>[0]["functions"];
|
|
45
|
+
readonly routines?: ConstructorParameters<typeof SqliteSchemaProvider>[0]["routines"];
|
|
33
46
|
}
|
|
47
|
+
/** Reads canonical, non-secret capability evidence from an opened node:sqlite connection. */
|
|
48
|
+
export declare function readNodeSqliteServerEvidence(database: NodeSqliteDatabaseLike): DialectServerEvidence;
|
|
34
49
|
export declare function adaptNodeSqliteDatabase(database: NodeSqliteDatabaseLike, options?: {
|
|
35
50
|
readonly typePolicy?: SqliteTypePolicy;
|
|
36
51
|
readonly statementCacheSize?: number;
|
|
@@ -38,7 +53,7 @@ export declare function adaptNodeSqliteDatabase(database: NodeSqliteDatabaseLike
|
|
|
38
53
|
export declare function loadNodeSqlite(importer?: () => Promise<NodeSqliteModuleLike>): Promise<NodeSqliteModuleLike>;
|
|
39
54
|
export declare function createNodeSqliteDatabase(options: NodeSqliteDatabaseOptions): Promise<SqliteDatabase>;
|
|
40
55
|
export declare function nodeSqlite(options: NodeSqliteSchemaProviderOptions): {
|
|
41
|
-
introspect(): Promise<
|
|
56
|
+
introspect(): Promise<SqliteSchemaSnapshotV2>;
|
|
42
57
|
};
|
|
43
58
|
export {};
|
|
44
59
|
//# sourceMappingURL=node-sqlite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-sqlite.d.ts","sourceRoot":"","sources":["../../../../src/node-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAwB,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAwB,KAAK,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"node-sqlite.d.ts","sourceRoot":"","sources":["../../../../src/node-sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
import { fileURLToPath } from "node:url";
|
|
2
|
+
import { calculateTypePolicyHash } from "@typed-sql/schema";
|
|
3
|
+
import { sqliteServerEvidence } from "./capabilities.js";
|
|
2
4
|
import { SqliteSchemaProvider } from "./provider.js";
|
|
3
5
|
import { createSqliteDatabase } from "./runtime.js";
|
|
6
|
+
import { parseSqliteSchemaSnapshot } from "./snapshot.js";
|
|
7
|
+
import { isNodeSqliteRuntimeSupported, NODE_SQLITE_RUNTIME_SUPPORT } from "./support.js";
|
|
4
8
|
import { defaultSqliteTypePolicy } from "./type-policy.js";
|
|
9
|
+
/** Fail-closed mismatch between compiler evidence and the SQLite library opened for execution. */
|
|
10
|
+
export class NodeSqliteCompatibilityError extends Error {
|
|
11
|
+
code = "SQLITE_RUNTIME_INCOMPATIBLE";
|
|
12
|
+
reason;
|
|
13
|
+
constructor(reason, message) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = "NodeSqliteCompatibilityError";
|
|
16
|
+
this.reason = reason;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
5
19
|
function validateCacheSize(value) {
|
|
6
20
|
const size = value ?? 256;
|
|
7
21
|
if (!Number.isSafeInteger(size) || size < 1) {
|
|
@@ -17,7 +31,7 @@ function validateDatabaseOptions(options) {
|
|
|
17
31
|
throw new TypeError("node:sqlite readBigInts is owned by @typed-sql/sqlite typePolicy and cannot be configured");
|
|
18
32
|
}
|
|
19
33
|
}
|
|
20
|
-
function input(value) {
|
|
34
|
+
function input(value, policy) {
|
|
21
35
|
if (value === null ||
|
|
22
36
|
typeof value === "number" ||
|
|
23
37
|
typeof value === "bigint" ||
|
|
@@ -25,47 +39,131 @@ function input(value) {
|
|
|
25
39
|
ArrayBuffer.isView(value)) {
|
|
26
40
|
return value;
|
|
27
41
|
}
|
|
28
|
-
if (typeof value === "boolean")
|
|
29
|
-
return value ? 1n : 0n;
|
|
42
|
+
if (typeof value === "boolean") {
|
|
43
|
+
return policy.integer === "bigint" ? (value ? 1n : 0n) : value ? 1 : 0;
|
|
44
|
+
}
|
|
30
45
|
throw new TypeError(`node:sqlite cannot bind ${value === undefined ? "undefined" : typeof value}`);
|
|
31
46
|
}
|
|
47
|
+
function output(value) {
|
|
48
|
+
if (value === null ||
|
|
49
|
+
typeof value === "number" ||
|
|
50
|
+
typeof value === "bigint" ||
|
|
51
|
+
typeof value === "string" ||
|
|
52
|
+
value instanceof Uint8Array) {
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
if (ArrayBuffer.isView(value)) {
|
|
56
|
+
return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
|
|
57
|
+
}
|
|
58
|
+
throw new TypeError(`node:sqlite returned unsupported ${typeof value} storage value`);
|
|
59
|
+
}
|
|
60
|
+
function row(source) {
|
|
61
|
+
return Object.fromEntries(Object.entries(source).map(([key, value]) => [key, output(value)]));
|
|
62
|
+
}
|
|
32
63
|
function statementCache(database, policy, maximum) {
|
|
33
64
|
const statements = new Map();
|
|
34
|
-
return
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
65
|
+
return {
|
|
66
|
+
get(sql) {
|
|
67
|
+
const cached = statements.get(sql);
|
|
68
|
+
if (cached !== undefined) {
|
|
69
|
+
statements.delete(sql);
|
|
70
|
+
statements.set(sql, cached);
|
|
71
|
+
return cached;
|
|
72
|
+
}
|
|
73
|
+
const prepared = database.prepare(sql);
|
|
74
|
+
prepared.setReadBigInts(policy.integer === "bigint");
|
|
75
|
+
statements.set(sql, prepared);
|
|
76
|
+
if (statements.size > maximum)
|
|
77
|
+
statements.delete(statements.keys().next().value);
|
|
78
|
+
return prepared;
|
|
79
|
+
},
|
|
80
|
+
invalidate() {
|
|
81
|
+
statements.clear();
|
|
82
|
+
},
|
|
47
83
|
};
|
|
48
84
|
}
|
|
85
|
+
function changesStatementIdentity(sql) {
|
|
86
|
+
const normalized = sql.replace(/^\s*(?:(?:--[^\n]*(?:\n|$))|(?:\/\*[\s\S]*?\*\/))*/u, "").trimStart();
|
|
87
|
+
return (/^(?:ALTER|ANALYZE|ATTACH|CREATE|DETACH|DROP|PRAGMA|REINDEX|VACUUM)\b/iu.test(normalized) ||
|
|
88
|
+
/\bload_extension\s*\(/iu.test(normalized));
|
|
89
|
+
}
|
|
90
|
+
function sortedEqual(left, right) {
|
|
91
|
+
return left.length === right.length && left.every((value, index) => value === right[index]);
|
|
92
|
+
}
|
|
93
|
+
function versionRow(rows) {
|
|
94
|
+
const version = rows[0]?.version;
|
|
95
|
+
if (typeof version !== "string")
|
|
96
|
+
throw new TypeError("node:sqlite did not return sqlite_version() evidence");
|
|
97
|
+
return version;
|
|
98
|
+
}
|
|
99
|
+
/** Reads canonical, non-secret capability evidence from an opened node:sqlite connection. */
|
|
100
|
+
export function readNodeSqliteServerEvidence(database) {
|
|
101
|
+
const version = versionRow(database.prepare("SELECT sqlite_version() AS version").all());
|
|
102
|
+
const compileOptions = database
|
|
103
|
+
.prepare("PRAGMA compile_options")
|
|
104
|
+
.all()
|
|
105
|
+
.map(({ compile_options: option }, index) => {
|
|
106
|
+
if (typeof option !== "string") {
|
|
107
|
+
throw new TypeError(`node:sqlite PRAGMA compile_options row ${index} is invalid`);
|
|
108
|
+
}
|
|
109
|
+
return option;
|
|
110
|
+
});
|
|
111
|
+
return sqliteServerEvidence(version, compileOptions);
|
|
112
|
+
}
|
|
113
|
+
function validateSnapshotCompatibility(snapshotValue, actual, policy) {
|
|
114
|
+
const snapshot = parseSqliteSchemaSnapshot(snapshotValue);
|
|
115
|
+
if (snapshot.formatVersion !== 2) {
|
|
116
|
+
throw new TypeError("node:sqlite runtime compatibility requires a schema format 2 snapshot");
|
|
117
|
+
}
|
|
118
|
+
if (snapshot.server.versionKey !== actual.versionKey) {
|
|
119
|
+
throw new NodeSqliteCompatibilityError("version", `SQLite snapshot version ${snapshot.server.versionKey} does not match connection version ${actual.versionKey}`);
|
|
120
|
+
}
|
|
121
|
+
if (!sortedEqual(snapshot.server.features, actual.features)) {
|
|
122
|
+
throw new NodeSqliteCompatibilityError("compile-options", "SQLite snapshot compile options do not match the opened connection");
|
|
123
|
+
}
|
|
124
|
+
if (snapshot.metadata !== undefined && snapshot.metadata.typePolicyHash !== calculateTypePolicyHash(policy ?? {})) {
|
|
125
|
+
throw new NodeSqliteCompatibilityError("type-policy", "SQLite snapshot type-policy evidence does not match the Node adapter policy");
|
|
126
|
+
}
|
|
127
|
+
}
|
|
49
128
|
export function adaptNodeSqliteDatabase(database, options = {}) {
|
|
50
|
-
const
|
|
129
|
+
const policy = options.typePolicy ?? defaultSqliteTypePolicy;
|
|
130
|
+
const prepared = statementCache(database, policy, validateCacheSize(options.statementCacheSize));
|
|
51
131
|
return {
|
|
52
132
|
all(sql, values = []) {
|
|
53
|
-
|
|
133
|
+
const rows = prepared
|
|
134
|
+
.get(sql)
|
|
135
|
+
.all(...values.map((value) => input(value, policy)))
|
|
136
|
+
.map(row);
|
|
137
|
+
if (changesStatementIdentity(sql))
|
|
138
|
+
prepared.invalidate();
|
|
139
|
+
return rows;
|
|
54
140
|
},
|
|
55
141
|
exec(sql) {
|
|
56
142
|
database.exec(sql);
|
|
143
|
+
if (changesStatementIdentity(sql))
|
|
144
|
+
prepared.invalidate();
|
|
57
145
|
},
|
|
58
146
|
iterate(sql, values = []) {
|
|
59
|
-
const statement = prepared(sql);
|
|
60
|
-
const inputs = values.map(input);
|
|
61
|
-
|
|
147
|
+
const statement = prepared.get(sql);
|
|
148
|
+
const inputs = values.map((value) => input(value, policy));
|
|
149
|
+
const rows = statement.iterate?.(...inputs) ?? statement.all(...inputs)[Symbol.iterator]();
|
|
150
|
+
if (changesStatementIdentity(sql))
|
|
151
|
+
prepared.invalidate();
|
|
152
|
+
return (function* () {
|
|
153
|
+
for (const value of rows)
|
|
154
|
+
yield row(value);
|
|
155
|
+
})();
|
|
62
156
|
},
|
|
63
157
|
close() {
|
|
158
|
+
prepared.invalidate();
|
|
64
159
|
database.close();
|
|
65
160
|
},
|
|
66
161
|
};
|
|
67
162
|
}
|
|
68
163
|
export async function loadNodeSqlite(importer = () => import("node:sqlite")) {
|
|
164
|
+
if (!isNodeSqliteRuntimeSupported(process.versions.node)) {
|
|
165
|
+
throw new Error(`@typed-sql/sqlite/node-sqlite supports Node.js ${NODE_SQLITE_RUNTIME_SUPPORT.minimum}+ on line 22, plus lines 24 and 26`);
|
|
166
|
+
}
|
|
69
167
|
try {
|
|
70
168
|
return await importer();
|
|
71
169
|
}
|
|
@@ -88,10 +186,22 @@ async function open(options) {
|
|
|
88
186
|
}
|
|
89
187
|
export async function createNodeSqliteDatabase(options) {
|
|
90
188
|
const database = await open(options);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
189
|
+
try {
|
|
190
|
+
const server = readNodeSqliteServerEvidence(database);
|
|
191
|
+
if (options.snapshot !== undefined)
|
|
192
|
+
validateSnapshotCompatibility(options.snapshot, server, options.typePolicy);
|
|
193
|
+
return createSqliteDatabase({
|
|
194
|
+
connection: adaptNodeSqliteDatabase(database, options),
|
|
195
|
+
ownsConnection: true,
|
|
196
|
+
...(options.preparedCardinalityVariantLimit === undefined
|
|
197
|
+
? {}
|
|
198
|
+
: { preparedCardinalityVariantLimit: options.preparedCardinalityVariantLimit }),
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
database.close();
|
|
203
|
+
throw error;
|
|
204
|
+
}
|
|
95
205
|
}
|
|
96
206
|
export function nodeSqlite(options) {
|
|
97
207
|
return {
|
|
@@ -112,6 +222,7 @@ export function nodeSqlite(options) {
|
|
|
112
222
|
client,
|
|
113
223
|
...(options.schemas === undefined ? {} : { schemas: options.schemas }),
|
|
114
224
|
...(options.functions === undefined ? {} : { functions: options.functions }),
|
|
225
|
+
...(options.routines === undefined ? {} : { routines: options.routines }),
|
|
115
226
|
...(options.typePolicy === undefined ? {} : { typePolicy: options.typePolicy }),
|
|
116
227
|
}).introspect();
|
|
117
228
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-sqlite.js","sourceRoot":"","sources":["../../../../src/node-sqlite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"node-sqlite.js","sourceRoot":"","sources":["../../../../src/node-sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { ParseOptions } from "./parser.js";
|
|
2
|
+
export { DEFAULT_MAX_PARSE_DEPTH, parseSelect, parseStatement, SqlParseError } from "./parser.js";
|
|
3
|
+
export type { TokenizeOptions } from "./tokenizer.js";
|
|
4
|
+
export { DEFAULT_MAX_SQL_LENGTH, DEFAULT_MAX_TOKENS, SqlTokenizeError, tokenize } from "./tokenizer.js";
|
|
5
|
+
export type { ArrayExpression, BetweenExpression, BinaryExpression, CallExpression, CaseBranch, CaseExpression, CastExpression, ColumnExpression, CommonTableExpression, CompoundSelect, DefaultValuesClause, DeleteStatement, ExistsExpression, Expression, FunctionTableReference, Identifier, InExpression, InsertStatement, JoinClause, JoinKind, LiteralExpression, NamedTableReference, NamedWindow, OrderByItem, ParameterExpression, RowExpression, SelectItem, SelectLockingClause, SelectStatement, SourceRange, SqlDiagnostic, StarExpression, Statement, SubqueryExpression, SubqueryTableReference, TableReference, Token, TokenKind, TypeName, UnaryExpression, UpdateAssignment, UpdateStatement, ValuesClause, WindowSpecification, WithClause, } from "./types.js";
|
|
6
|
+
export type { SqlAstContext, SqlAstVisitor } from "./walk.js";
|
|
7
|
+
export { walkStatement } from "./walk.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/parser/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClG,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxG,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,sBAAsB,EACtB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,aAAa,EACb,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,KAAK,EACL,SAAS,EACT,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { DEFAULT_MAX_PARSE_DEPTH, parseSelect, parseStatement, SqlParseError } from "./parser.js";
|
|
2
|
+
export { DEFAULT_MAX_SQL_LENGTH, DEFAULT_MAX_TOKENS, SqlTokenizeError, tokenize } from "./tokenizer.js";
|
|
3
|
+
export { walkStatement } from "./walk.js";
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/parser/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAElG,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAiDxG,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type TokenizeOptions } from "./tokenizer.js";
|
|
2
|
+
import { type SelectStatement, type SourceRange, type Statement } from "./types.js";
|
|
3
|
+
export declare const DEFAULT_MAX_PARSE_DEPTH = 128;
|
|
4
|
+
export interface ParseOptions extends TokenizeOptions {
|
|
5
|
+
readonly maxDepth?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class SqlParseError extends Error {
|
|
8
|
+
readonly code: string;
|
|
9
|
+
readonly range: SourceRange;
|
|
10
|
+
constructor(message: string, range: SourceRange, code?: string);
|
|
11
|
+
}
|
|
12
|
+
export declare function parseStatement(source: string, options?: ParseOptions): Statement;
|
|
13
|
+
export declare function parseSelect(source: string, options?: ParseOptions): SelectStatement;
|
|
14
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../../src/parser/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,eAAe,EAAY,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAoBL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,SAAS,EAUf,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAE5B,YAAY,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,SAAW,EAK/D;CACF;AA+jCD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,SAAS,CAEpF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,eAAe,CAKvF"}
|