Skip to content

Commit 667bfc1

Browse files
committed
chore: make turso driver optional, add graceful error handling
1 parent f50cd0f commit 667bfc1

5 files changed

Lines changed: 34 additions & 6 deletions

File tree

packages/cli/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
"@objectstack/driver-mongodb": "workspace:^",
4949
"@objectstack/driver-sql": "workspace:^",
5050
"@objectstack/driver-sqlite-wasm": "workspace:^",
51-
"@objectstack/driver-turso": "workspace:^",
5251
"@objectstack/objectql": "workspace:^",
5352
"@objectstack/observability": "workspace:^",
5453
"@objectstack/plugin-approvals": "workspace:*",
@@ -89,6 +88,9 @@
8988
"peerDependencies": {
9089
"@objectstack/core": "workspace:^"
9190
},
91+
"optionalDependencies": {
92+
"@objectstack/driver-turso": "workspace:^"
93+
},
9294
"devDependencies": {
9395
"@oclif/plugin-help": "^6.2.49",
9496
"@oclif/plugin-plugins": "^5.4.69",

packages/cli/src/commands/serve.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,16 @@ export default class Serve extends Command {
575575
resolvedDriverLabel = 'SqlDriver(mysql2)';
576576
resolvedDatabaseUrl = databaseUrl;
577577
} else if (driverType === 'turso' || driverType === 'libsql') {
578-
const { TursoDriver } = await import('@objectstack/driver-turso');
578+
let TursoDriver: any;
579+
try {
580+
({ TursoDriver } = await import('@objectstack/driver-turso'));
581+
} catch (err: any) {
582+
throw new Error(
583+
`libsql/turso driver selected but @objectstack/driver-turso is not installed. ` +
584+
`Install it with: npm install @objectstack/driver-turso (or use a file: URL to default to better-sqlite3). ` +
585+
`(${err?.message ?? err})`
586+
);
587+
}
579588
await kernel.use(new DriverPlugin(new TursoDriver({
580589
url: databaseUrl ?? 'file:./local.db',
581590
authToken: process.env.OS_DATABASE_AUTH_TOKEN,

packages/runtime/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
"@objectstack/driver-memory": "workspace:*",
2424
"@objectstack/driver-sql": "workspace:*",
2525
"@objectstack/driver-sqlite-wasm": "workspace:*",
26-
"@objectstack/driver-turso": "workspace:*",
2726
"@objectstack/formula": "workspace:*",
2827
"@objectstack/metadata": "workspace:*",
2928
"@objectstack/objectql": "workspace:*",
@@ -39,7 +38,8 @@
3938
"zod": "^4.4.3"
4039
},
4140
"optionalDependencies": {
42-
"@objectstack/driver-mongodb": "workspace:*"
41+
"@objectstack/driver-mongodb": "workspace:*",
42+
"@objectstack/driver-turso": "workspace:*"
4343
},
4444
"devDependencies": {
4545
"typescript": "^6.0.3",

packages/runtime/src/cloud/artifact-environment-registry.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,15 @@ async function createDriver(driverType: string, databaseUrl: string, authToken:
242242
}
243243
case 'libsql':
244244
case 'turso': {
245-
const { TursoDriver } = await import('@objectstack/driver-turso');
245+
let TursoDriver: any;
246+
try {
247+
({ TursoDriver } = await import('@objectstack/driver-turso'));
248+
} catch (err: any) {
249+
throw new Error(
250+
`[ArtifactEnvironmentRegistry] libsql/turso driver requested but @objectstack/driver-turso is not installed. ` +
251+
`Install it with: npm install @objectstack/driver-turso. (${err?.message ?? err})`
252+
);
253+
}
246254
return new TursoDriver({ url: databaseUrl, authToken }) as unknown as IDataDriver;
247255
}
248256
case 'postgres':

packages/runtime/src/standalone-stack.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,16 @@ export async function createStandaloneStack(config?: StandaloneStackConfig): Pro
127127
const { InMemoryDriver } = await import('@objectstack/driver-memory');
128128
driverPlugin = new DriverPlugin(new InMemoryDriver());
129129
} else if (dbDriver === 'turso') {
130-
const { TursoDriver } = await import('@objectstack/driver-turso');
130+
let TursoDriver: any;
131+
try {
132+
({ TursoDriver } = await import('@objectstack/driver-turso'));
133+
} catch (err: any) {
134+
throw new Error(
135+
`[StandaloneStack] libsql/turso URL detected ("${dbUrl}") but @objectstack/driver-turso is not installed. ` +
136+
`Install it with: npm install @objectstack/driver-turso (or use a file: URL to default to better-sqlite3). ` +
137+
`(${err?.message ?? err})`
138+
);
139+
}
131140
driverPlugin = new DriverPlugin(
132141
new TursoDriver({ url: dbUrl, authToken: dbAuthToken }) as any,
133142
);

0 commit comments

Comments
 (0)