0.35.3

drizzle-team/drizzle-orm0.35.3Oct 21, 2024by github-actions[bot]

AI Summary

This release adds native support for all `@libsql/client` driver variations in Drizzle ORM, enabling connectivity to LibSQL/Turso databases across different platforms and protocols.

Key Highlights

  • Added support for `@libsql/client` - default module that auto-detects platform (node/web) based on bundler settings
  • Added `@libsql/client/node` module for Node.js environments supporting :memory:, file, wss, http and turso protocols
  • Added `@libsql/client/web` module for fullstack web frameworks (Next.js, Nuxt, Astro)
  • Added protocol-specific modules: `@libsql/client/http` (http/https), `@libsql/client/ws` (ws/wss), and `@libsql/client/sqlite3` (file/:memory:)
  • Added separate experimental `@libsql/client-wasm` package for WASM-based connections

New Features

  • Native LibSQL driver with automatic platform detection
  • Node.js compatible LibSQL driver module
  • Web framework compatible LibSQL driver module (Next.js, Nuxt, Astro)
  • HTTP/HTTPS protocol support via dedicated module
  • WebSocket (ws/wss) protocol support via dedicated module
  • SQLite3 file and in-memory database support
  • Experimental WASM-based LibSQL driver

Full Release Notes

# New LibSQL driver modules

Drizzle now has native support for all `@libsql/client` driver variations:

1. `@libsql/client` - defaults to node import, automatically changes to web if target or platform is set for bundler, e.g. `esbuild --platform=browser`

```ts
import { drizzle } from 'drizzle-orm/libsql';

const db = drizzle({ connection: {
  url: process.env.DATABASE_URL, 
  authToken: process.env.DATABASE_AUTH_TOKEN 
}});
```

2. `@libsql/client/node`  node compatible module, supports :memory:, file, wss, http and turso connection protocols

```ts
import { drizzle } from 'drizzle-orm/libsql/node';

const db = drizzle({ connection: {
  url: process.env.DATABASE_URL, 
  authToken: process.env.DATABASE_AUTH_TOKEN 
}});
```

3. `@libsql/client/web`  module for fullstack web frameworks like next, nuxt, astro, etc.

```ts
import { drizzle } from 'drizzle-orm/libsql/web';

const db = drizzle({ connection: {
  url: process.env.DATABASE_URL, 
  authToken: process.env.DATABASE_AUTH_TOKEN 
}});
```

4. `@libsql/client/http`  module for http and https connection protocols

```ts
import { drizzle } from 'drizzle-orm/libsql/http';

const db = drizzle({ connection: {
  url: process.env.DATABASE_URL, 
  authToken: process.env.DATABASE_AUTH_TOKEN 
}});
```

5. `@libsql/client/ws`  module for ws and wss connection protocols

```ts
import { drizzle } from 'drizzle-orm/libsql/ws';

const db = drizzle({ connection: {
  url: process.env.DATABASE_URL, 
  authToken: process.env.DATABASE_AUTH_TOKEN 
}});
```

6. `@libsql/client/sqlite3`  module for :memory: and file connection protocols

```ts
import { drizzle } from 'drizzle-orm/libsql/wasm';

const db = drizzle({ connection: {
  url: process.env.DATABASE_URL, 
  authToken: process.env.DATABASE_AUTH_TOKEN 
}});
```

7. `@libsql/client-wasm`  Separate experimental package for WASM

```ts
import { drizzle } from 'drizzle-orm/libsql';

const db = drizzle({ connection: {
  url: process.env.DATABASE_URL, 
  authToken: process.env.DATABASE_AUTH_TOKEN 
}});
```