From ab51f50bddc33bc895af1eaee2499341f62e3c48 Mon Sep 17 00:00:00 2001 From: Szymon Chmal Date: Mon, 11 May 2026 10:08:52 +0200 Subject: [PATCH 1/2] feat(sqlite-plugin): export SQL and bridge helpers for custom adapters --- packages/sqlite-plugin/react-native.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/sqlite-plugin/react-native.ts b/packages/sqlite-plugin/react-native.ts index 15a02290..3a1bb1b0 100644 --- a/packages/sqlite-plugin/react-native.ts +++ b/packages/sqlite-plugin/react-native.ts @@ -18,6 +18,7 @@ export type { CreateExpoSqliteAdapterOptions, ExpoSqliteLike, } from './src/react-native/adapters/expo-sqlite'; +export type { SqlStatementSegment } from './src/shared/sql'; type CreateSqliteAdapter = typeof import('./src/react-native/adapters').createSqliteAdapter; @@ -27,6 +28,12 @@ type CreateExpoSqliteAdapter = export let createSqliteAdapter: CreateSqliteAdapter; export let createExpoSqliteAdapter: CreateExpoSqliteAdapter; export let useRozeniteSqlitePlugin: typeof import('./src/react-native/useRozeniteSqlitePlugin').useRozeniteSqlitePlugin; +export let classifySqlStatement: typeof import('./src/shared/sql').classifySqlStatement; +export let normalizeSingleStatementSql: typeof import('./src/shared/sql').normalizeSingleStatementSql; +export let splitSqlStatements: typeof import('./src/shared/sql').splitSqlStatements; +export let statementReturnsRows: typeof import('./src/shared/sql').statementReturnsRows; +export let decodeSqliteBridgeValue: typeof import('./src/shared/bridge-values').decodeSqliteBridgeValue; +export let formatSqliteError: typeof import('./src/shared/bridge-values').formatSqliteError; const isDev = process.env.NODE_ENV !== 'production'; const isWeb = @@ -40,6 +47,14 @@ if (isDev && !isWeb && !isServer) { require('./src/react-native/adapters').createExpoSqliteAdapter; useRozeniteSqlitePlugin = require('./src/react-native/useRozeniteSqlitePlugin').useRozeniteSqlitePlugin; + classifySqlStatement = require('./src/shared/sql').classifySqlStatement; + normalizeSingleStatementSql = + require('./src/shared/sql').normalizeSingleStatementSql; + splitSqlStatements = require('./src/shared/sql').splitSqlStatements; + statementReturnsRows = require('./src/shared/sql').statementReturnsRows; + decodeSqliteBridgeValue = + require('./src/shared/bridge-values').decodeSqliteBridgeValue; + formatSqliteError = require('./src/shared/bridge-values').formatSqliteError; } else { createSqliteAdapter = (options) => ({ id: options.adapterId ?? 'sqlite', @@ -52,4 +67,10 @@ if (isDev && !isWeb && !isServer) { databases: [], }); useRozeniteSqlitePlugin = () => null; + classifySqlStatement = () => 'other'; + normalizeSingleStatementSql = (sql) => sql; + splitSqlStatements = () => []; + statementReturnsRows = (_type): _type is never => false; + decodeSqliteBridgeValue = (value) => value; + formatSqliteError = () => 'Unknown SQLite error.'; } From f7cda6282bb35b340995756c8978be782289d53c Mon Sep 17 00:00:00 2001 From: Szymon Chmal Date: Mon, 11 May 2026 10:42:43 +0200 Subject: [PATCH 2/2] chore: add changeset for sqlite-plugin SQL and bridge helper exports --- .changeset/sqlite-plugin-export-sql-bridge-helpers.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/sqlite-plugin-export-sql-bridge-helpers.md diff --git a/.changeset/sqlite-plugin-export-sql-bridge-helpers.md b/.changeset/sqlite-plugin-export-sql-bridge-helpers.md new file mode 100644 index 00000000..ab63b287 --- /dev/null +++ b/.changeset/sqlite-plugin-export-sql-bridge-helpers.md @@ -0,0 +1,5 @@ +--- +'@rozenite/sqlite-plugin': minor +--- + +`classifySqlStatement`, `normalizeSingleStatementSql`, `splitSqlStatements`, `statementReturnsRows`, `decodeSqliteBridgeValue`, and `formatSqliteError` are now exported from `@rozenite/sqlite-plugin`. These are the building blocks you need when writing a custom SQLite adapter — to parse and classify SQL before execution, and to decode values coming back over the native bridge.