kysely-node-native-sqlite 1.0.1 → 1.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/README.md CHANGED
@@ -5,4 +5,10 @@ A dialect for [Kysely](https://www.kysely.dev/) that enables the use of the [nat
5
5
  ```typescript
6
6
  const dialect = new NodeNativeSqliteDialect(dbPath);
7
7
  const db = new Kysely<DatabaseSchema>({ dialect });
8
- ```
8
+ ```
9
+
10
+ ## Requirements
11
+
12
+ - Node >=22.5.0
13
+ - Note: explicit `--experimental-sqlite` flag for `node` is required [until version 23.4.0](https://nodejs.org/en/blog/release/v23.4.0#other-notable-changes).
14
+ - Kysely >=0.27.0
package/dist/index.cjs ADDED
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.mts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ NodeNativeSqliteDialect: () => NodeNativeSqliteDialect_default,
24
+ default: () => NodeNativeSqliteDialect_default
25
+ });
26
+ module.exports = __toCommonJS(index_exports);
27
+
28
+ // src/NodeNativeSqliteDialect.mts
29
+ var import_kysely2 = require("kysely");
30
+
31
+ // src/NodeNativeSqliteDriver.mts
32
+ var import_kysely = require("kysely");
33
+
34
+ // src/Mutex.mts
35
+ var Mutex = class {
36
+ #promise;
37
+ #resolve;
38
+ async lock() {
39
+ while (this.#promise) await this.#promise;
40
+ const { resolve, promise } = Promise.withResolvers();
41
+ this.#promise = promise;
42
+ this.#resolve = resolve;
43
+ }
44
+ unlock() {
45
+ const resolve = this.#resolve;
46
+ this.#promise = void 0;
47
+ this.#resolve = void 0;
48
+ resolve?.();
49
+ }
50
+ };
51
+ var Mutex_default = Mutex;
52
+
53
+ // src/NodeNativeSqliteConnection.mts
54
+ var import_node_sqlite = require("node:sqlite");
55
+ var NodeNativeSqliteConnection = class {
56
+ #db;
57
+ constructor(...args) {
58
+ this.#db = new import_node_sqlite.DatabaseSync(...args);
59
+ }
60
+ [Symbol.dispose]() {
61
+ this.#db.close();
62
+ }
63
+ async executeQuery(compiledQuery) {
64
+ const { sql, parameters, query } = compiledQuery;
65
+ const stmt = this.#db.prepare(sql);
66
+ let useAll = false;
67
+ if (query.kind === "SelectQueryNode") {
68
+ useAll = true;
69
+ } else if (query.kind === "InsertQueryNode" || query.kind === "UpdateQueryNode" || query.kind === "DeleteQueryNode") {
70
+ if (sql.toLowerCase().includes("returning")) {
71
+ useAll = true;
72
+ }
73
+ } else if (query.kind === "RawNode") {
74
+ const lowerSql = sql.toLowerCase().trim();
75
+ if (lowerSql.startsWith("select") || lowerSql.startsWith("pragma") || lowerSql.startsWith("with") || lowerSql.includes("returning")) {
76
+ useAll = true;
77
+ }
78
+ }
79
+ if (useAll) {
80
+ const rows = stmt.all(...parameters);
81
+ return {
82
+ rows
83
+ };
84
+ } else {
85
+ const result = stmt.run(...parameters);
86
+ return {
87
+ rows: [],
88
+ insertId: BigInt(result.lastInsertRowid),
89
+ numAffectedRows: BigInt(result.changes)
90
+ };
91
+ }
92
+ }
93
+ async *streamQuery(compiledQuery, _chunkSize) {
94
+ const result = await this.executeQuery(compiledQuery);
95
+ if (result.rows) {
96
+ yield { rows: result.rows };
97
+ }
98
+ }
99
+ };
100
+ var NodeNativeSqliteConnection_default = NodeNativeSqliteConnection;
101
+
102
+ // src/NodeNativeSqliteDriver.mts
103
+ var NodeNativeSqliteDriver = class {
104
+ #args;
105
+ #connection;
106
+ #mutex = new Mutex_default();
107
+ constructor(...args) {
108
+ this.#args = args;
109
+ }
110
+ get connection() {
111
+ if (typeof this.#connection === "undefined")
112
+ throw new Error("Database was not initialized. Run `init` first");
113
+ return this.#connection;
114
+ }
115
+ async acquireConnection() {
116
+ await this.#mutex.lock();
117
+ return this.connection;
118
+ }
119
+ async beginTransaction(connection, _settings) {
120
+ await connection.executeQuery(import_kysely.CompiledQuery.raw("BEGIN"));
121
+ }
122
+ async commitTransaction(connection) {
123
+ await connection.executeQuery(import_kysely.CompiledQuery.raw("COMMIT"));
124
+ }
125
+ async destroy() {
126
+ this.#connection?.[Symbol.dispose]();
127
+ }
128
+ async [Symbol.asyncDispose]() {
129
+ await this.destroy();
130
+ }
131
+ async init() {
132
+ this.#connection = new NodeNativeSqliteConnection_default(...this.#args);
133
+ }
134
+ async releaseConnection(_connection) {
135
+ this.#mutex.unlock();
136
+ }
137
+ async releaseSavepoint(connection, savepointName, compileQuery) {
138
+ await connection.executeQuery(
139
+ compileQuery(savepointCommand("RELEASE SAVEPOINT", savepointName))
140
+ );
141
+ }
142
+ async rollbackToSavepoint(connection, savepointName, compileQuery) {
143
+ await connection.executeQuery(
144
+ compileQuery(savepointCommand("ROLLBACK TO SAVEPOINT", savepointName))
145
+ );
146
+ }
147
+ async rollbackTransaction(connection) {
148
+ await connection.executeQuery(import_kysely.CompiledQuery.raw("ROLLBACK"));
149
+ }
150
+ async savepoint(connection, savepointName, compileQuery) {
151
+ await connection.executeQuery(compileQuery(savepointCommand("SAVEPOINT", savepointName)));
152
+ }
153
+ };
154
+ var savepointCommand = (command, savepointName) => import_kysely.RawNode.createWithChildren([
155
+ import_kysely.RawNode.createWithSql(command),
156
+ import_kysely.IdentifierNode.create(savepointName)
157
+ ]);
158
+ var NodeNativeSqliteDriver_default = NodeNativeSqliteDriver;
159
+
160
+ // src/NodeNativeSqliteDialect.mts
161
+ var NodeNativeSqliteDialect = class {
162
+ #args;
163
+ constructor(...args) {
164
+ this.#args = args;
165
+ }
166
+ createAdapter() {
167
+ return new import_kysely2.SqliteAdapter();
168
+ }
169
+ createDriver() {
170
+ return new NodeNativeSqliteDriver_default(...this.#args);
171
+ }
172
+ createIntrospector(db) {
173
+ return new import_kysely2.SqliteIntrospector(db);
174
+ }
175
+ createQueryCompiler() {
176
+ return new import_kysely2.SqliteQueryCompiler();
177
+ }
178
+ };
179
+ var NodeNativeSqliteDialect_default = NodeNativeSqliteDialect;
180
+ // Annotate the CommonJS export names for ESM import in node:
181
+ 0 && (module.exports = {
182
+ NodeNativeSqliteDialect
183
+ });
@@ -1,5 +1,6 @@
1
- import { DatabaseSync } from "node:sqlite";
2
- import { type DatabaseIntrospector, type Dialect, type Driver, Kysely, SqliteAdapter, SqliteQueryCompiler } from "kysely";
1
+ import { DatabaseSync } from 'node:sqlite';
2
+ import { Dialect, SqliteAdapter, Driver, Kysely, DatabaseIntrospector, SqliteQueryCompiler } from 'kysely';
3
+
3
4
  declare class NodeNativeSqliteDialect implements Dialect {
4
5
  #private;
5
6
  constructor(...args: ConstructorParameters<typeof DatabaseSync>);
@@ -8,5 +9,5 @@ declare class NodeNativeSqliteDialect implements Dialect {
8
9
  createIntrospector(db: Kysely<unknown>): DatabaseIntrospector;
9
10
  createQueryCompiler(): SqliteQueryCompiler;
10
11
  }
11
- export default NodeNativeSqliteDialect;
12
- //# sourceMappingURL=NodeNativeSqliteDialect.d.ts.map
12
+
13
+ export { NodeNativeSqliteDialect, NodeNativeSqliteDialect as default };
package/dist/index.d.ts CHANGED
@@ -1,2 +1,13 @@
1
- export { default, default as NodeNativeSqliteDialect } from "./NodeNativeSqliteDialect.ts";
2
- //# sourceMappingURL=index.d.ts.map
1
+ import { DatabaseSync } from 'node:sqlite';
2
+ import { Dialect, SqliteAdapter, Driver, Kysely, DatabaseIntrospector, SqliteQueryCompiler } from 'kysely';
3
+
4
+ declare class NodeNativeSqliteDialect implements Dialect {
5
+ #private;
6
+ constructor(...args: ConstructorParameters<typeof DatabaseSync>);
7
+ createAdapter(): SqliteAdapter;
8
+ createDriver(): Driver;
9
+ createIntrospector(db: Kysely<unknown>): DatabaseIntrospector;
10
+ createQueryCompiler(): SqliteQueryCompiler;
11
+ }
12
+
13
+ export { NodeNativeSqliteDialect, NodeNativeSqliteDialect as default };
package/dist/index.js CHANGED
@@ -1,2 +1,160 @@
1
- export { default, default as NodeNativeSqliteDialect } from "./NodeNativeSqliteDialect.js";
2
- //# sourceMappingURL=index.js.map
1
+ // src/NodeNativeSqliteDialect.mts
2
+ import {
3
+ SqliteAdapter,
4
+ SqliteIntrospector,
5
+ SqliteQueryCompiler
6
+ } from "kysely";
7
+
8
+ // src/NodeNativeSqliteDriver.mts
9
+ import { CompiledQuery, IdentifierNode, RawNode } from "kysely";
10
+
11
+ // src/Mutex.mts
12
+ var Mutex = class {
13
+ #promise;
14
+ #resolve;
15
+ async lock() {
16
+ while (this.#promise) await this.#promise;
17
+ const { resolve, promise } = Promise.withResolvers();
18
+ this.#promise = promise;
19
+ this.#resolve = resolve;
20
+ }
21
+ unlock() {
22
+ const resolve = this.#resolve;
23
+ this.#promise = void 0;
24
+ this.#resolve = void 0;
25
+ resolve?.();
26
+ }
27
+ };
28
+ var Mutex_default = Mutex;
29
+
30
+ // src/NodeNativeSqliteConnection.mts
31
+ import { DatabaseSync } from "node:sqlite";
32
+ var NodeNativeSqliteConnection = class {
33
+ #db;
34
+ constructor(...args) {
35
+ this.#db = new DatabaseSync(...args);
36
+ }
37
+ [Symbol.dispose]() {
38
+ this.#db.close();
39
+ }
40
+ async executeQuery(compiledQuery) {
41
+ const { sql, parameters, query } = compiledQuery;
42
+ const stmt = this.#db.prepare(sql);
43
+ let useAll = false;
44
+ if (query.kind === "SelectQueryNode") {
45
+ useAll = true;
46
+ } else if (query.kind === "InsertQueryNode" || query.kind === "UpdateQueryNode" || query.kind === "DeleteQueryNode") {
47
+ if (sql.toLowerCase().includes("returning")) {
48
+ useAll = true;
49
+ }
50
+ } else if (query.kind === "RawNode") {
51
+ const lowerSql = sql.toLowerCase().trim();
52
+ if (lowerSql.startsWith("select") || lowerSql.startsWith("pragma") || lowerSql.startsWith("with") || lowerSql.includes("returning")) {
53
+ useAll = true;
54
+ }
55
+ }
56
+ if (useAll) {
57
+ const rows = stmt.all(...parameters);
58
+ return {
59
+ rows
60
+ };
61
+ } else {
62
+ const result = stmt.run(...parameters);
63
+ return {
64
+ rows: [],
65
+ insertId: BigInt(result.lastInsertRowid),
66
+ numAffectedRows: BigInt(result.changes)
67
+ };
68
+ }
69
+ }
70
+ async *streamQuery(compiledQuery, _chunkSize) {
71
+ const result = await this.executeQuery(compiledQuery);
72
+ if (result.rows) {
73
+ yield { rows: result.rows };
74
+ }
75
+ }
76
+ };
77
+ var NodeNativeSqliteConnection_default = NodeNativeSqliteConnection;
78
+
79
+ // src/NodeNativeSqliteDriver.mts
80
+ var NodeNativeSqliteDriver = class {
81
+ #args;
82
+ #connection;
83
+ #mutex = new Mutex_default();
84
+ constructor(...args) {
85
+ this.#args = args;
86
+ }
87
+ get connection() {
88
+ if (typeof this.#connection === "undefined")
89
+ throw new Error("Database was not initialized. Run `init` first");
90
+ return this.#connection;
91
+ }
92
+ async acquireConnection() {
93
+ await this.#mutex.lock();
94
+ return this.connection;
95
+ }
96
+ async beginTransaction(connection, _settings) {
97
+ await connection.executeQuery(CompiledQuery.raw("BEGIN"));
98
+ }
99
+ async commitTransaction(connection) {
100
+ await connection.executeQuery(CompiledQuery.raw("COMMIT"));
101
+ }
102
+ async destroy() {
103
+ this.#connection?.[Symbol.dispose]();
104
+ }
105
+ async [Symbol.asyncDispose]() {
106
+ await this.destroy();
107
+ }
108
+ async init() {
109
+ this.#connection = new NodeNativeSqliteConnection_default(...this.#args);
110
+ }
111
+ async releaseConnection(_connection) {
112
+ this.#mutex.unlock();
113
+ }
114
+ async releaseSavepoint(connection, savepointName, compileQuery) {
115
+ await connection.executeQuery(
116
+ compileQuery(savepointCommand("RELEASE SAVEPOINT", savepointName))
117
+ );
118
+ }
119
+ async rollbackToSavepoint(connection, savepointName, compileQuery) {
120
+ await connection.executeQuery(
121
+ compileQuery(savepointCommand("ROLLBACK TO SAVEPOINT", savepointName))
122
+ );
123
+ }
124
+ async rollbackTransaction(connection) {
125
+ await connection.executeQuery(CompiledQuery.raw("ROLLBACK"));
126
+ }
127
+ async savepoint(connection, savepointName, compileQuery) {
128
+ await connection.executeQuery(compileQuery(savepointCommand("SAVEPOINT", savepointName)));
129
+ }
130
+ };
131
+ var savepointCommand = (command, savepointName) => RawNode.createWithChildren([
132
+ RawNode.createWithSql(command),
133
+ IdentifierNode.create(savepointName)
134
+ ]);
135
+ var NodeNativeSqliteDriver_default = NodeNativeSqliteDriver;
136
+
137
+ // src/NodeNativeSqliteDialect.mts
138
+ var NodeNativeSqliteDialect = class {
139
+ #args;
140
+ constructor(...args) {
141
+ this.#args = args;
142
+ }
143
+ createAdapter() {
144
+ return new SqliteAdapter();
145
+ }
146
+ createDriver() {
147
+ return new NodeNativeSqliteDriver_default(...this.#args);
148
+ }
149
+ createIntrospector(db) {
150
+ return new SqliteIntrospector(db);
151
+ }
152
+ createQueryCompiler() {
153
+ return new SqliteQueryCompiler();
154
+ }
155
+ };
156
+ var NodeNativeSqliteDialect_default = NodeNativeSqliteDialect;
157
+ export {
158
+ NodeNativeSqliteDialect_default as NodeNativeSqliteDialect,
159
+ NodeNativeSqliteDialect_default as default
160
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kysely-node-native-sqlite",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "description": "Kysely dialect for Node.js native SQLite (node:sqlite)",
6
6
  "keywords": [
@@ -8,11 +8,23 @@
8
8
  "kysely",
9
9
  "dialect"
10
10
  ],
11
+ "engines": {
12
+ "node": "^22.5.0"
13
+ },
11
14
  "license": "ISC",
15
+ "main": "./dist/index.cjs",
16
+ "module": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
12
18
  "exports": {
13
19
  ".": {
14
- "types": "./dist/index.d.ts",
15
- "import": "./dist/index.js"
20
+ "import": {
21
+ "types": "./dist/index.d.ts",
22
+ "default": "./dist/index.js"
23
+ },
24
+ "require": {
25
+ "types": "./dist/index.d.cts",
26
+ "default": "./dist/index.cjs"
27
+ }
16
28
  }
17
29
  },
18
30
  "files": [
@@ -22,12 +34,16 @@
22
34
  "kysely": ">=0.27.0"
23
35
  },
24
36
  "devDependencies": {
25
- "kysely": "^0.27.5",
26
- "typescript": "^5.9.3",
27
- "@types/node": "^24.10.1"
37
+ "@tsconfig/node22": "^22.0.5",
38
+ "@types/node": "^22.5.0",
39
+ "kysely": "0.27.0",
40
+ "prettier": "^3.8.1",
41
+ "tsup": "^8.5.1",
42
+ "typescript": "^5.9.3"
28
43
  },
29
44
  "scripts": {
30
- "build": "tsc",
31
- "test": "node --test src/**/*.test.ts"
45
+ "build": "tsup",
46
+ "format": "prettier --write src/**/*",
47
+ "test": "NODE_OPTIONS=--experimental-sqlite npx tsx src/NodeNativeSqliteDialect.test.mts"
32
48
  }
33
49
  }
package/dist/Mutex.d.ts DELETED
@@ -1,7 +0,0 @@
1
- declare class Mutex {
2
- #private;
3
- lock(): Promise<void>;
4
- unlock(): void;
5
- }
6
- export default Mutex;
7
- //# sourceMappingURL=Mutex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Mutex.d.ts","sourceRoot":"","sources":["../src/Mutex.ts"],"names":[],"mappings":"AAAA,cAAM,KAAK;;IAIH,IAAI;IAOV,MAAM;CAMP;AAED,eAAe,KAAK,CAAC"}
package/dist/Mutex.js DELETED
@@ -1,19 +0,0 @@
1
- class Mutex {
2
- #promise;
3
- #resolve;
4
- async lock() {
5
- while (this.#promise)
6
- await this.#promise;
7
- const { resolve, promise } = Promise.withResolvers();
8
- this.#promise = promise;
9
- this.#resolve = resolve;
10
- }
11
- unlock() {
12
- const resolve = this.#resolve;
13
- this.#promise = undefined;
14
- this.#resolve = undefined;
15
- resolve?.();
16
- }
17
- }
18
- export default Mutex;
19
- //# sourceMappingURL=Mutex.js.map
package/dist/Mutex.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Mutex.js","sourceRoot":"","sources":["../src/Mutex.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK;IACT,QAAQ,CAA4B;IACpC,QAAQ,CAA2B;IAEnC,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,MAAM;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;CACF;AAED,eAAe,KAAK,CAAC"}
@@ -1,12 +0,0 @@
1
- import { DatabaseSync } from "node:sqlite";
2
- import type { DatabaseConnection, QueryResult } from "kysely";
3
- import { CompiledQuery } from "kysely";
4
- declare class NodeNativeSqliteConnection implements DatabaseConnection, Disposable {
5
- #private;
6
- constructor(...args: ConstructorParameters<typeof DatabaseSync>);
7
- [Symbol.dispose](): void;
8
- executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>>;
9
- streamQuery<R>(compiledQuery: CompiledQuery, _chunkSize?: number): AsyncIterableIterator<QueryResult<R>>;
10
- }
11
- export default NodeNativeSqliteConnection;
12
- //# sourceMappingURL=NodeNativeSqliteConnection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeNativeSqliteConnection.d.ts","sourceRoot":"","sources":["../src/NodeNativeSqliteConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,cAAM,0BAA2B,YAAW,kBAAkB,EAAE,UAAU;;gBAG5D,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,YAAY,CAAC;IAI/D,CAAC,MAAM,CAAC,OAAO,CAAC;IAIV,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAoDrE,WAAW,CAAC,CAAC,EAClB,aAAa,EAAE,aAAa,EAC5B,UAAU,CAAC,EAAE,MAAM,GAClB,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAQzC;AAED,eAAe,0BAA0B,CAAC"}
@@ -1,68 +0,0 @@
1
- import { DatabaseSync } from "node:sqlite";
2
- import { CompiledQuery } from "kysely";
3
- class NodeNativeSqliteConnection {
4
- #db;
5
- constructor(...args) {
6
- this.#db = new DatabaseSync(...args);
7
- }
8
- [Symbol.dispose]() {
9
- this.#db[Symbol.dispose]();
10
- }
11
- async executeQuery(compiledQuery) {
12
- const { sql, parameters, query } = compiledQuery;
13
- const stmt = this.#db.prepare(sql);
14
- // Determine if we should use .all() (for SELECT/RETURNING) or .run() (for others)
15
- // We use a heuristic based on the query kind and content.
16
- let useAll = false;
17
- if (query.kind === "SelectQueryNode") {
18
- useAll = true;
19
- }
20
- else if (query.kind === "InsertQueryNode" ||
21
- query.kind === "UpdateQueryNode" ||
22
- query.kind === "DeleteQueryNode") {
23
- // Check if there is a returning clause.
24
- // Kysely's QueryNode structure for these usually has a 'returning' property if it exists.
25
- // However, accessing it might require type guards.
26
- // A simpler robust check for 'RETURNING' in the SQL string is often sufficient and faster
27
- // than traversing the node tree if types are tricky, but let's try to use the node if possible.
28
- // For now, let's rely on the SQL string for the RETURNING clause as a fallback or primary check
29
- // because the node structure might vary.
30
- if (sql.toLowerCase().includes("returning")) {
31
- useAll = true;
32
- }
33
- }
34
- else if (query.kind === "RawNode") {
35
- const lowerSql = sql.toLowerCase().trim();
36
- if (lowerSql.startsWith("select") ||
37
- lowerSql.startsWith("pragma") ||
38
- lowerSql.startsWith("with") ||
39
- lowerSql.includes("returning")) {
40
- useAll = true;
41
- }
42
- }
43
- if (useAll) {
44
- const rows = stmt.all(...parameters);
45
- return {
46
- rows,
47
- };
48
- }
49
- else {
50
- const result = stmt.run(...parameters);
51
- return {
52
- rows: [],
53
- insertId: BigInt(result.lastInsertRowid),
54
- numAffectedRows: BigInt(result.changes),
55
- };
56
- }
57
- }
58
- async *streamQuery(compiledQuery, _chunkSize) {
59
- // node:sqlite is synchronous and doesn't support streaming yet.
60
- // We simulate streaming by executing the query and yielding results.
61
- const result = await this.executeQuery(compiledQuery);
62
- if (result.rows) {
63
- yield { rows: result.rows };
64
- }
65
- }
66
- }
67
- export default NodeNativeSqliteConnection;
68
- //# sourceMappingURL=NodeNativeSqliteConnection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeNativeSqliteConnection.js","sourceRoot":"","sources":["../src/NodeNativeSqliteConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,0BAA0B;IAC9B,GAAG,CAAe;IAElB,YAAY,GAAG,IAAgD;QAC7D,IAAI,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,YAAY,CAAI,aAA4B;QAChD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEnC,kFAAkF;QAClF,0DAA0D;QAC1D,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACrC,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IACL,KAAK,CAAC,IAAI,KAAK,iBAAiB;YAChC,KAAK,CAAC,IAAI,KAAK,iBAAiB;YAChC,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAChC,CAAC;YACD,wCAAwC;YACxC,0FAA0F;YAC1F,mDAAmD;YACnD,0FAA0F;YAC1F,gGAAgG;YAChG,gGAAgG;YAChG,yCAAyC;YACzC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5C,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YAC1C,IACE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAC7B,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAC7B,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC3B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC9B,CAAC;gBACD,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;QACH,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAI,UAA8B,CAAQ,CAAC;YACjE,OAAO;gBACL,IAAI;aACL,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAI,UAA8B,CAAC,CAAC;YAC5D,OAAO;gBACL,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;gBACxC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aACxC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,WAAW,CAChB,aAA4B,EAC5B,UAAmB;QAEnB,gEAAgE;QAChE,qEAAqE;QACrE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAI,aAAa,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AAED,eAAe,0BAA0B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeNativeSqliteDialect.d.ts","sourceRoot":"","sources":["../src/NodeNativeSqliteDialect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,MAAM,EACN,aAAa,EAEb,mBAAmB,EACpB,MAAM,QAAQ,CAAC;AAIhB,cAAM,uBAAwB,YAAW,OAAO;;gBAGlC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,YAAY,CAAC;IAI/D,aAAa,IAAI,aAAa;IAG9B,YAAY,IAAI,MAAM;IAGtB,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,oBAAoB;IAG7D,mBAAmB,IAAI,mBAAmB;CAG3C;AAED,eAAe,uBAAuB,CAAC"}
@@ -1,23 +0,0 @@
1
- import { DatabaseSync } from "node:sqlite";
2
- import { Kysely, SqliteAdapter, SqliteIntrospector, SqliteQueryCompiler, } from "kysely";
3
- import NodeNativeSqliteDriver from "./NodeNativeSqliteDriver.js";
4
- class NodeNativeSqliteDialect {
5
- #args;
6
- constructor(...args) {
7
- this.#args = args;
8
- }
9
- createAdapter() {
10
- return new SqliteAdapter();
11
- }
12
- createDriver() {
13
- return new NodeNativeSqliteDriver(...this.#args);
14
- }
15
- createIntrospector(db) {
16
- return new SqliteIntrospector(db);
17
- }
18
- createQueryCompiler() {
19
- return new SqliteQueryCompiler();
20
- }
21
- }
22
- export default NodeNativeSqliteDialect;
23
- //# sourceMappingURL=NodeNativeSqliteDialect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeNativeSqliteDialect.js","sourceRoot":"","sources":["../src/NodeNativeSqliteDialect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAIL,MAAM,EACN,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,QAAQ,CAAC;AAEhB,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AAEjE,MAAM,uBAAuB;IAClB,KAAK,CAA6C;IAE3D,YAAY,GAAG,IAAgD;QAC7D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,aAAa;QACX,OAAO,IAAI,aAAa,EAAE,CAAC;IAC7B,CAAC;IACD,YAAY;QACV,OAAO,IAAI,sBAAsB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,kBAAkB,CAAC,EAAmB;QACpC,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,mBAAmB;QACjB,OAAO,IAAI,mBAAmB,EAAE,CAAC;IACnC,CAAC;CACF;AAED,eAAe,uBAAuB,CAAC"}
@@ -1,21 +0,0 @@
1
- import { DatabaseSync } from "node:sqlite";
2
- import type { DatabaseConnection, Driver, QueryCompiler, TransactionSettings } from "kysely";
3
- import NodeNativeSqliteConnection from "./NodeNativeSqliteConnection.ts";
4
- declare class NodeNativeSqliteDriver implements Driver, AsyncDisposable {
5
- #private;
6
- constructor(...args: ConstructorParameters<typeof DatabaseSync>);
7
- get connection(): NodeNativeSqliteConnection;
8
- acquireConnection(): Promise<NodeNativeSqliteConnection>;
9
- beginTransaction(connection: NodeNativeSqliteConnection, _settings: TransactionSettings): Promise<void>;
10
- commitTransaction(connection: DatabaseConnection): Promise<void>;
11
- destroy(): Promise<void>;
12
- [Symbol.asyncDispose](): Promise<void>;
13
- init(): Promise<void>;
14
- releaseConnection(_connection: DatabaseConnection): Promise<void>;
15
- releaseSavepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler["compileQuery"]): Promise<void>;
16
- rollbackToSavepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler["compileQuery"]): Promise<void>;
17
- rollbackTransaction(connection: DatabaseConnection): Promise<void>;
18
- savepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler["compileQuery"]): Promise<void>;
19
- }
20
- export default NodeNativeSqliteDriver;
21
- //# sourceMappingURL=NodeNativeSqliteDriver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeNativeSqliteDriver.d.ts","sourceRoot":"","sources":["../src/NodeNativeSqliteDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAI7F,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,cAAM,sBAAuB,YAAW,MAAM,EAAE,eAAe;;gBAKjD,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,YAAY,CAAC;IAI/D,IAAI,UAAU,+BAIb;IAEK,iBAAiB;IAKjB,gBAAgB,CAAC,UAAU,EAAE,0BAA0B,EAAE,SAAS,EAAE,mBAAmB;IAGvF,iBAAiB,CAAC,UAAU,EAAE,kBAAkB;IAIhD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,CAAC,MAAM,CAAC,YAAY,CAAC;IAIrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,gBAAgB,CACpB,UAAU,EAAE,kBAAkB,EAC9B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC;IAOvC,mBAAmB,CACvB,UAAU,EAAE,kBAAkB,EAC9B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC;IAOvC,mBAAmB,CAAC,UAAU,EAAE,kBAAkB;IAIlD,SAAS,CACb,UAAU,EAAE,kBAAkB,EAC9B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC;CAI9C;AAWD,eAAe,sBAAsB,CAAC"}
@@ -1,57 +0,0 @@
1
- import { DatabaseSync } from "node:sqlite";
2
- import { CompiledQuery, IdentifierNode, RawNode } from "kysely";
3
- import Mutex from "./Mutex.js";
4
- import NodeNativeSqliteConnection from "./NodeNativeSqliteConnection.js";
5
- class NodeNativeSqliteDriver {
6
- #args;
7
- #connection;
8
- #mutex = new Mutex();
9
- constructor(...args) {
10
- this.#args = args;
11
- }
12
- get connection() {
13
- if (typeof this.#connection === "undefined")
14
- throw new Error("Database was not initialized. Run `init` first");
15
- return this.#connection;
16
- }
17
- async acquireConnection() {
18
- await this.#mutex.lock();
19
- return this.connection;
20
- }
21
- async beginTransaction(connection, _settings) {
22
- await connection.executeQuery(CompiledQuery.raw("BEGIN"));
23
- }
24
- async commitTransaction(connection) {
25
- await connection.executeQuery(CompiledQuery.raw("COMMIT"));
26
- }
27
- async destroy() {
28
- this.#connection?.[Symbol.dispose]();
29
- }
30
- async [Symbol.asyncDispose]() {
31
- await this.destroy();
32
- }
33
- async init() {
34
- this.#connection = new NodeNativeSqliteConnection(...this.#args);
35
- }
36
- async releaseConnection(_connection) {
37
- this.#mutex.unlock();
38
- }
39
- async releaseSavepoint(connection, savepointName, compileQuery) {
40
- await connection.executeQuery(compileQuery(savepointCommand("RELEASE SAVEPOINT", savepointName)));
41
- }
42
- async rollbackToSavepoint(connection, savepointName, compileQuery) {
43
- await connection.executeQuery(compileQuery(savepointCommand("ROLLBACK TO SAVEPOINT", savepointName)));
44
- }
45
- async rollbackTransaction(connection) {
46
- await connection.executeQuery(CompiledQuery.raw("ROLLBACK"));
47
- }
48
- async savepoint(connection, savepointName, compileQuery) {
49
- await connection.executeQuery(compileQuery(savepointCommand("SAVEPOINT", savepointName)));
50
- }
51
- }
52
- const savepointCommand = (command, savepointName) => RawNode.createWithChildren([
53
- RawNode.createWithSql(command),
54
- IdentifierNode.create(savepointName),
55
- ]);
56
- export default NodeNativeSqliteDriver;
57
- //# sourceMappingURL=NodeNativeSqliteDriver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeNativeSqliteDriver.js","sourceRoot":"","sources":["../src/NodeNativeSqliteDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEhE,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,MAAM,sBAAsB;IAC1B,KAAK,CAA6C;IAClD,WAAW,CAAyC;IACpD,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;IAErB,YAAY,GAAG,IAAgD;QAC7D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW;YACzC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,UAAsC,EAAE,SAA8B;QAC3F,MAAM,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,UAA8B;QACpD,MAAM,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,0BAA0B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAA+B;QACrD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,UAA8B,EAC9B,aAAqB,EACrB,YAA2C;QAE3C,MAAM,UAAU,CAAC,YAAY,CAC3B,YAAY,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC,CACnE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,UAA8B,EAC9B,aAAqB,EACrB,YAA2C;QAE3C,MAAM,UAAU,CAAC,YAAY,CAC3B,YAAY,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC,CACvE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAA8B;QACtD,MAAM,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,SAAS,CACb,UAA8B,EAC9B,aAAqB,EACrB,YAA2C;QAE3C,MAAM,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;CACF;AAED,MAAM,gBAAgB,GAAG,CACvB,OAAoE,EACpE,aAAqB,EACZ,EAAE,CACX,OAAO,CAAC,kBAAkB,CAAC;IACzB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;IAC9B,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;CACrC,CAAC,CAAC;AAEL,eAAe,sBAAsB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}