@syncular/dialect-react-native-nitro-sqlite 0.0.6-159 → 0.0.6-165

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 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 { DatabaseIntrospector, Dialect, DialectAdapter, Driver, Kysely, QueryCompiler } from 'kysely';
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): NitroSqliteDialect;
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEV,oBAAoB,EACpB,OAAO,EACP,cAAc,EACd,MAAM,EACN,MAAM,EACN,aAAa,EAGd,MAAM,QAAQ,CAAC;AAOhB,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,CACtC,OAAO,EAAE,kBAAkB,GAC1B,kBAAkB,CAEpB;AAMD,cAAM,kBAAmB,YAAW,OAAO;;IAGzC,YAAY,OAAO,EAAE,kBAAkB,EAEtC;IAED,aAAa,IAAI,cAAc,CAE9B;IAED,YAAY,IAAI,MAAM,CAErB;IAED,mBAAmB,IAAI,aAAa,CAEnC;IAED,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAE5D;CACF"}
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 { CompiledQuery, SqliteAdapter, SqliteIntrospector, SqliteQueryCompiler, } from 'kysely';
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 NitroSqliteDialect(options);
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
- this.#options = options;
43
- }
44
- async init() {
45
- this.#db = this.#resolveDatabase();
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
- if (this.#db) {
64
- this.#db.close();
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":"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"}
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-159",
3
+ "version": "0.0.6-165",
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-159",
54
+ "@syncular/core": "0.0.6-165",
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: NitroSqliteOptions
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 implements Driver {
95
- readonly #options: NitroSqliteOptions;
51
+ class NitroSqliteDriver extends BaseSqliteDriver {
96
52
  #db: NitroSQLiteConnection | undefined;
97
53
 
98
54
  constructor(options: NitroSqliteOptions) {
99
- this.#options = options;
100
- }
101
-
102
- async init(): Promise<void> {
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
- if (this.#db) {
131
- this.#db.close();
132
- }
62
+ const db = this.#db;
63
+ this.#db = undefined;
64
+ db?.close();
133
65
  }
66
+ }
134
67
 
135
- #resolveDatabase(): NitroSQLiteConnection {
136
- if ('database' in this.#options) {
137
- return this.#options.database;
138
- }
139
- return this.#options.open({
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),