@syncular/dialect-react-native-nitro-sqlite 0.0.6-159 → 0.0.6-168
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/dist/index.d.ts +3 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -62
- package/dist/index.js.map +1 -1
- package/package.json +5 -3
- package/src/index.ts +24 -91
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @syncular/dialect-react-native-nitro-sqlite - React Native Nitro SQLite dialect for sync
|
|
3
3
|
*
|
|
4
|
-
* Provides a Kysely dialect for React Native Nitro SQLite (react-native-nitro-sqlite)
|
|
4
|
+
* Provides a Kysely dialect for React Native Nitro SQLite (react-native-nitro-sqlite).
|
|
5
5
|
* SQLite-compatible — use with @syncular/server-dialect-sqlite.
|
|
6
|
-
*
|
|
7
|
-
* Implements a custom Kysely Driver that wraps react-native-nitro-sqlite's API
|
|
8
|
-
* into the promise-based interface Kysely expects.
|
|
9
6
|
*/
|
|
10
|
-
import type {
|
|
7
|
+
import type { Dialect } from 'kysely';
|
|
11
8
|
import type { NitroSQLiteConnection, NitroSQLiteConnectionOptions } from 'react-native-nitro-sqlite';
|
|
12
9
|
/** Function type for open from react-native-nitro-sqlite */
|
|
13
10
|
type OpenNitroSqlite = (options: NitroSQLiteConnectionOptions) => NitroSQLiteConnection;
|
|
@@ -27,14 +24,6 @@ export type NitroSqliteOptions = NitroSqliteNameOptions | NitroSqliteInstanceOpt
|
|
|
27
24
|
/**
|
|
28
25
|
* Create the Nitro SQLite dialect directly.
|
|
29
26
|
*/
|
|
30
|
-
export declare function createNitroSqliteDialect(options: NitroSqliteOptions):
|
|
31
|
-
declare class NitroSqliteDialect implements Dialect {
|
|
32
|
-
#private;
|
|
33
|
-
constructor(options: NitroSqliteOptions);
|
|
34
|
-
createAdapter(): DialectAdapter;
|
|
35
|
-
createDriver(): Driver;
|
|
36
|
-
createQueryCompiler(): QueryCompiler;
|
|
37
|
-
createIntrospector(db: Kysely<unknown>): DatabaseIntrospector;
|
|
38
|
-
}
|
|
27
|
+
export declare function createNitroSqliteDialect(options: NitroSqliteOptions): Dialect;
|
|
39
28
|
export {};
|
|
40
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAGV,OAAO,EAER,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAE7B,MAAM,2BAA2B,CAAC;AAEnC,4DAA4D;AAC5D,KAAK,eAAe,GAAG,CACrB,OAAO,EAAE,4BAA4B,KAClC,qBAAqB,CAAC;AAE3B,UAAU,sBAAsB;IAC9B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,IAAI,EAAE,eAAe,CAAC;IACtB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,0BAA0B;IAClC,iDAAiD;IACjD,QAAQ,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,MAAM,kBAAkB,GAC1B,sBAAsB,GACtB,0BAA0B,CAAC;AAE/B;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAE7E"}
|
package/dist/index.js
CHANGED
|
@@ -1,79 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @syncular/dialect-react-native-nitro-sqlite - React Native Nitro SQLite dialect for sync
|
|
3
3
|
*
|
|
4
|
-
* Provides a Kysely dialect for React Native Nitro SQLite (react-native-nitro-sqlite)
|
|
4
|
+
* Provides a Kysely dialect for React Native Nitro SQLite (react-native-nitro-sqlite).
|
|
5
5
|
* SQLite-compatible — use with @syncular/server-dialect-sqlite.
|
|
6
|
-
*
|
|
7
|
-
* Implements a custom Kysely Driver that wraps react-native-nitro-sqlite's API
|
|
8
|
-
* into the promise-based interface Kysely expects.
|
|
9
6
|
*/
|
|
10
|
-
import {
|
|
7
|
+
import { BaseSqliteDialect, BaseSqliteDriver } from 'kysely-generic-sqlite';
|
|
11
8
|
/**
|
|
12
9
|
* Create the Nitro SQLite dialect directly.
|
|
13
10
|
*/
|
|
14
11
|
export function createNitroSqliteDialect(options) {
|
|
15
|
-
return new
|
|
16
|
-
}
|
|
17
|
-
// ---------------------------------------------------------------------------
|
|
18
|
-
// Kysely Dialect implementation for react-native-nitro-sqlite
|
|
19
|
-
// ---------------------------------------------------------------------------
|
|
20
|
-
class NitroSqliteDialect {
|
|
21
|
-
#options;
|
|
22
|
-
constructor(options) {
|
|
23
|
-
this.#options = options;
|
|
24
|
-
}
|
|
25
|
-
createAdapter() {
|
|
26
|
-
return new SqliteAdapter();
|
|
27
|
-
}
|
|
28
|
-
createDriver() {
|
|
29
|
-
return new NitroSqliteDriver(this.#options);
|
|
30
|
-
}
|
|
31
|
-
createQueryCompiler() {
|
|
32
|
-
return new SqliteQueryCompiler();
|
|
33
|
-
}
|
|
34
|
-
createIntrospector(db) {
|
|
35
|
-
return new SqliteIntrospector(db);
|
|
36
|
-
}
|
|
12
|
+
return new BaseSqliteDialect(() => new NitroSqliteDriver(options));
|
|
37
13
|
}
|
|
38
|
-
class NitroSqliteDriver {
|
|
39
|
-
#options;
|
|
14
|
+
class NitroSqliteDriver extends BaseSqliteDriver {
|
|
40
15
|
#db;
|
|
41
16
|
constructor(options) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
async acquireConnection() {
|
|
48
|
-
return new NitroSqliteConnection(this.#db);
|
|
49
|
-
}
|
|
50
|
-
async beginTransaction(connection, _settings) {
|
|
51
|
-
await connection.executeQuery(CompiledQuery.raw('begin'));
|
|
52
|
-
}
|
|
53
|
-
async commitTransaction(connection) {
|
|
54
|
-
await connection.executeQuery(CompiledQuery.raw('commit'));
|
|
55
|
-
}
|
|
56
|
-
async rollbackTransaction(connection) {
|
|
57
|
-
await connection.executeQuery(CompiledQuery.raw('rollback'));
|
|
58
|
-
}
|
|
59
|
-
async releaseConnection(_connection) {
|
|
60
|
-
// Single-connection model — nothing to release.
|
|
17
|
+
super(async () => {
|
|
18
|
+
this.#db = resolveNitroSqliteDatabase(options);
|
|
19
|
+
this.conn = new NitroSqliteConnection(this.#db);
|
|
20
|
+
});
|
|
61
21
|
}
|
|
62
22
|
async destroy() {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
#resolveDatabase() {
|
|
68
|
-
if ('database' in this.#options) {
|
|
69
|
-
return this.#options.database;
|
|
70
|
-
}
|
|
71
|
-
return this.#options.open({
|
|
72
|
-
name: this.#options.name,
|
|
73
|
-
location: this.#options.location,
|
|
74
|
-
});
|
|
23
|
+
const db = this.#db;
|
|
24
|
+
this.#db = undefined;
|
|
25
|
+
db?.close();
|
|
75
26
|
}
|
|
76
27
|
}
|
|
28
|
+
function resolveNitroSqliteDatabase(options) {
|
|
29
|
+
if ('database' in options) {
|
|
30
|
+
return options.database;
|
|
31
|
+
}
|
|
32
|
+
return options.open({
|
|
33
|
+
name: options.name,
|
|
34
|
+
location: options.location,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
77
37
|
class NitroSqliteConnection {
|
|
78
38
|
#db;
|
|
79
39
|
constructor(db) {
|
|
@@ -84,7 +44,6 @@ class NitroSqliteConnection {
|
|
|
84
44
|
const params = parameters;
|
|
85
45
|
const hasReturning = /\breturning\b/i.test(sql);
|
|
86
46
|
const isSelectLike = /^\s*(select|pragma|explain|with)\b/i.test(sql);
|
|
87
|
-
// Execute the query
|
|
88
47
|
const result = this.#db.execute(sql, params);
|
|
89
48
|
if (isSelectLike || hasReturning) {
|
|
90
49
|
const rows = (result.results ?? []);
|
|
@@ -93,7 +52,6 @@ class NitroSqliteConnection {
|
|
|
93
52
|
...(hasReturning ? { numAffectedRows: BigInt(rows.length) } : {}),
|
|
94
53
|
};
|
|
95
54
|
}
|
|
96
|
-
// For INSERT, UPDATE, DELETE — return affected rows info
|
|
97
55
|
return {
|
|
98
56
|
rows: [],
|
|
99
57
|
numAffectedRows: BigInt(result.rowsAffected ?? 0),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA8B5E;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAA2B,EAAW;IAC7E,OAAO,IAAI,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AAAA,CACpE;AAED,MAAM,iBAAkB,SAAQ,gBAAgB;IAC9C,GAAG,CAAoC;IAEvC,YAAY,OAA2B,EAAE;QACvC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAA,CACjD,CAAC,CAAC;IAAA,CACJ;IAED,KAAK,CAAC,OAAO,GAAkB;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACrB,EAAE,EAAE,KAAK,EAAE,CAAC;IAAA,CACb;CACF;AAED,SAAS,0BAA0B,CACjC,OAA2B,EACJ;IACvB,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;AAAA,CACJ;AAED,MAAM,qBAAqB;IAChB,GAAG,CAAwB;IAEpC,YAAY,EAAyB,EAAE;QACrC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAAA,CACf;IAED,KAAK,CAAC,YAAY,CAAI,aAA4B,EAA2B;QAC3E,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;QAC1C,MAAM,MAAM,GAAG,UAA2B,CAAC;QAE3C,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,qCAAqC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAErE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7C,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAQ,CAAC;YAC3C,OAAO;gBACL,IAAI;gBACJ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,EAAE;YACR,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;YACjD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;SACvC,CAAC;IAAA,CACH;IAED,WAAW,CACT,cAA6B,EAC7B,UAAmB,EACoB;QACvC,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IAAA,CACH;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syncular/dialect-react-native-nitro-sqlite",
|
|
3
|
-
"version": "0.0.6-
|
|
3
|
+
"version": "0.0.6-168",
|
|
4
4
|
"description": "React Native Nitro SQLite dialect for the Syncular client",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Benjamin Kniffler",
|
|
@@ -42,14 +42,16 @@
|
|
|
42
42
|
"build": "tsgo",
|
|
43
43
|
"release": "bunx syncular-publish"
|
|
44
44
|
},
|
|
45
|
-
"dependencies": {
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"kysely-generic-sqlite": "^1.2.1"
|
|
47
|
+
},
|
|
46
48
|
"peerDependencies": {
|
|
47
49
|
"kysely": "^0.28.0",
|
|
48
50
|
"react-native-nitro-sqlite": ">=0.1.0"
|
|
49
51
|
},
|
|
50
52
|
"devDependencies": {
|
|
51
53
|
"@syncular/config": "0.0.0",
|
|
52
|
-
"@syncular/core": "0.0.6-
|
|
54
|
+
"@syncular/core": "0.0.6-168",
|
|
53
55
|
"kysely": "*",
|
|
54
56
|
"react-native-nitro-sqlite": "^9.4.0"
|
|
55
57
|
},
|
package/src/index.ts
CHANGED
|
@@ -1,30 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @syncular/dialect-react-native-nitro-sqlite - React Native Nitro SQLite dialect for sync
|
|
3
3
|
*
|
|
4
|
-
* Provides a Kysely dialect for React Native Nitro SQLite (react-native-nitro-sqlite)
|
|
4
|
+
* Provides a Kysely dialect for React Native Nitro SQLite (react-native-nitro-sqlite).
|
|
5
5
|
* SQLite-compatible — use with @syncular/server-dialect-sqlite.
|
|
6
|
-
*
|
|
7
|
-
* Implements a custom Kysely Driver that wraps react-native-nitro-sqlite's API
|
|
8
|
-
* into the promise-based interface Kysely expects.
|
|
9
6
|
*/
|
|
10
7
|
|
|
11
8
|
import type {
|
|
9
|
+
CompiledQuery,
|
|
12
10
|
DatabaseConnection,
|
|
13
|
-
DatabaseIntrospector,
|
|
14
11
|
Dialect,
|
|
15
|
-
DialectAdapter,
|
|
16
|
-
Driver,
|
|
17
|
-
Kysely,
|
|
18
|
-
QueryCompiler,
|
|
19
12
|
QueryResult,
|
|
20
|
-
TransactionSettings,
|
|
21
|
-
} from 'kysely';
|
|
22
|
-
import {
|
|
23
|
-
CompiledQuery,
|
|
24
|
-
SqliteAdapter,
|
|
25
|
-
SqliteIntrospector,
|
|
26
|
-
SqliteQueryCompiler,
|
|
27
13
|
} from 'kysely';
|
|
14
|
+
import { BaseSqliteDialect, BaseSqliteDriver } from 'kysely-generic-sqlite';
|
|
28
15
|
import type {
|
|
29
16
|
NitroSQLiteConnection,
|
|
30
17
|
NitroSQLiteConnectionOptions,
|
|
@@ -57,90 +44,38 @@ export type NitroSqliteOptions =
|
|
|
57
44
|
/**
|
|
58
45
|
* Create the Nitro SQLite dialect directly.
|
|
59
46
|
*/
|
|
60
|
-
export function createNitroSqliteDialect(
|
|
61
|
-
options
|
|
62
|
-
): NitroSqliteDialect {
|
|
63
|
-
return new NitroSqliteDialect(options);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// ---------------------------------------------------------------------------
|
|
67
|
-
// Kysely Dialect implementation for react-native-nitro-sqlite
|
|
68
|
-
// ---------------------------------------------------------------------------
|
|
69
|
-
|
|
70
|
-
class NitroSqliteDialect implements Dialect {
|
|
71
|
-
readonly #options: NitroSqliteOptions;
|
|
72
|
-
|
|
73
|
-
constructor(options: NitroSqliteOptions) {
|
|
74
|
-
this.#options = options;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
createAdapter(): DialectAdapter {
|
|
78
|
-
return new SqliteAdapter();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
createDriver(): Driver {
|
|
82
|
-
return new NitroSqliteDriver(this.#options);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
createQueryCompiler(): QueryCompiler {
|
|
86
|
-
return new SqliteQueryCompiler();
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
createIntrospector(db: Kysely<unknown>): DatabaseIntrospector {
|
|
90
|
-
return new SqliteIntrospector(db);
|
|
91
|
-
}
|
|
47
|
+
export function createNitroSqliteDialect(options: NitroSqliteOptions): Dialect {
|
|
48
|
+
return new BaseSqliteDialect(() => new NitroSqliteDriver(options));
|
|
92
49
|
}
|
|
93
50
|
|
|
94
|
-
class NitroSqliteDriver
|
|
95
|
-
readonly #options: NitroSqliteOptions;
|
|
51
|
+
class NitroSqliteDriver extends BaseSqliteDriver {
|
|
96
52
|
#db: NitroSQLiteConnection | undefined;
|
|
97
53
|
|
|
98
54
|
constructor(options: NitroSqliteOptions) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
this.#db = this.#resolveDatabase();
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
async acquireConnection(): Promise<DatabaseConnection> {
|
|
107
|
-
return new NitroSqliteConnection(this.#db!);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
async beginTransaction(
|
|
111
|
-
connection: DatabaseConnection,
|
|
112
|
-
_settings: TransactionSettings
|
|
113
|
-
): Promise<void> {
|
|
114
|
-
await connection.executeQuery(CompiledQuery.raw('begin'));
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
async commitTransaction(connection: DatabaseConnection): Promise<void> {
|
|
118
|
-
await connection.executeQuery(CompiledQuery.raw('commit'));
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
async rollbackTransaction(connection: DatabaseConnection): Promise<void> {
|
|
122
|
-
await connection.executeQuery(CompiledQuery.raw('rollback'));
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
async releaseConnection(_connection: DatabaseConnection): Promise<void> {
|
|
126
|
-
// Single-connection model — nothing to release.
|
|
55
|
+
super(async () => {
|
|
56
|
+
this.#db = resolveNitroSqliteDatabase(options);
|
|
57
|
+
this.conn = new NitroSqliteConnection(this.#db);
|
|
58
|
+
});
|
|
127
59
|
}
|
|
128
60
|
|
|
129
61
|
async destroy(): Promise<void> {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
62
|
+
const db = this.#db;
|
|
63
|
+
this.#db = undefined;
|
|
64
|
+
db?.close();
|
|
133
65
|
}
|
|
66
|
+
}
|
|
134
67
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
return
|
|
140
|
-
name: this.#options.name,
|
|
141
|
-
location: this.#options.location,
|
|
142
|
-
});
|
|
68
|
+
function resolveNitroSqliteDatabase(
|
|
69
|
+
options: NitroSqliteOptions
|
|
70
|
+
): NitroSQLiteConnection {
|
|
71
|
+
if ('database' in options) {
|
|
72
|
+
return options.database;
|
|
143
73
|
}
|
|
74
|
+
|
|
75
|
+
return options.open({
|
|
76
|
+
name: options.name,
|
|
77
|
+
location: options.location,
|
|
78
|
+
});
|
|
144
79
|
}
|
|
145
80
|
|
|
146
81
|
class NitroSqliteConnection implements DatabaseConnection {
|
|
@@ -157,7 +92,6 @@ class NitroSqliteConnection implements DatabaseConnection {
|
|
|
157
92
|
const hasReturning = /\breturning\b/i.test(sql);
|
|
158
93
|
const isSelectLike = /^\s*(select|pragma|explain|with)\b/i.test(sql);
|
|
159
94
|
|
|
160
|
-
// Execute the query
|
|
161
95
|
const result = this.#db.execute(sql, params);
|
|
162
96
|
|
|
163
97
|
if (isSelectLike || hasReturning) {
|
|
@@ -168,7 +102,6 @@ class NitroSqliteConnection implements DatabaseConnection {
|
|
|
168
102
|
};
|
|
169
103
|
}
|
|
170
104
|
|
|
171
|
-
// For INSERT, UPDATE, DELETE — return affected rows info
|
|
172
105
|
return {
|
|
173
106
|
rows: [],
|
|
174
107
|
numAffectedRows: BigInt(result.rowsAffected ?? 0),
|