Skip to content

Commit 5ac31da

Browse files
committed
fix: block experimental sqlite warning on node
1 parent 26c2664 commit 5ac31da

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import sqliteConnector from 'db0/connectors/node-sqlite'
2+
3+
// When using the SQLite Node.js prints warnings about the experimental feature
4+
// This is workaround to surpass the SQLite warning
5+
// Inspired by Yarn https://github.com/yarnpkg/berry/blob/182046546379f3b4e111c374946b32d92be5d933/packages/yarnpkg-pnp/sources/loader/applyPatch.ts#L307-L328
6+
const originalEmit = process.emit
7+
// @ts-expect-error - TS complains about the return type of originalEmit.apply
8+
process.emit = function (...args) {
9+
const name = args[0]
10+
const data = args[1] as { name: string, message: string }
11+
if (
12+
name === `warning`
13+
&& typeof data === `object`
14+
&& data.name === `ExperimentalWarning`
15+
&& data.message.includes(`SQLite is an experimental feature`)
16+
) {
17+
return false
18+
}
19+
return originalEmit.apply(process, args as unknown as Parameters<typeof process.emit>)
20+
}
21+
22+
export default sqliteConnector

src/utils/database.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export async function refineDatabaseConfig(database: ModuleOptions['database'],
3939
export async function resolveDatabaseAdapter(adapter: 'sqlite' | 'bunsqlite' | 'postgres' | 'libsql' | 'd1' | 'nodesqlite', opts: { resolver: Resolver, sqliteConnector?: SQLiteConnector }) {
4040
const databaseConnectors = {
4141
nodesqlite: 'db0/connectors/node-sqlite',
42-
bunsqlite: opts.resolver.resolve('./runtime/internal/connectors/bunsqlite'),
42+
bunsqlite: opts.resolver.resolve('./runtime/internal/connectors/bun-sqlite'),
4343
postgres: 'db0/connectors/postgresql',
4444
libsql: 'db0/connectors/libsql/web',
4545
d1: 'db0/connectors/cloudflare-d1',
@@ -51,7 +51,7 @@ export async function resolveDatabaseAdapter(adapter: 'sqlite' | 'bunsqlite' | '
5151
}
5252

5353
if (adapter === 'sqlite') {
54-
return await findBestSqliteAdapter({ sqliteConnector: opts.sqliteConnector })
54+
return await findBestSqliteAdapter({ sqliteConnector: opts.sqliteConnector, resolver: opts.resolver })
5555
}
5656

5757
return databaseConnectors[adapter]
@@ -165,14 +165,14 @@ export async function getLocalDatabase(database: SqliteDatabaseConfig | D1Databa
165165
}
166166
}
167167

168-
async function findBestSqliteAdapter(opts: { sqliteConnector?: SQLiteConnector }) {
168+
async function findBestSqliteAdapter(opts: { sqliteConnector?: SQLiteConnector, resolver?: Resolver }) {
169169
if (process.versions.bun) {
170-
return 'db0/connectors/bun-sqlite'
170+
return opts.resolver ? opts.resolver.resolve('./runtime/internal/connectors/bun-sqlite') : 'db0/connectors/bun-sqlite'
171171
}
172172

173173
// if node:sqlite is available, use it
174174
if (opts.sqliteConnector === 'native' && isNodeSqliteAvailable()) {
175-
return 'db0/connectors/node-sqlite'
175+
return opts.resolver ? opts.resolver.resolve('./runtime/internal/connectors/node-sqlite') : 'db0/connectors/node-sqlite'
176176
}
177177

178178
if (opts.sqliteConnector === 'sqlite3') {

0 commit comments

Comments
 (0)