limbo/bindings/javascript/packages/wasm
Pekka Enberg 9bf6e6efd9
Merge 'use i64 for registers p1,p2,p3,p5 in EXPLAIN output' from Mikaël Francoeur
To avoid overflows, use i64 for p1,p2,p3,p5 in EXPLAIN output. This
matches SQLite's behaviour (https://github.com/sqlite/sqlite/blob/master
/src/vdbeaux.c#L2460-L2476).
I also changed the column type string for p4, there was a preexisting
mismatch between the value type and the explicit type string.
Closes https://github.com/tursodatabase/turso/issues/3944

Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #3961
2025-11-23 09:47:22 +02:00
..
index-bundle.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
index-default.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
index-turbopack-hack.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
index-vite-dev-hack.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
package.json Turso 0.4.0-pre.3 2025-11-22 09:56:18 +02:00
promise-bundle.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
promise-default.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
promise-turbopack-hack.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
promise-vite-dev-hack.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
promise.test.ts use i64 for register values p1,p2,p3,p5 2025-11-16 09:58:05 -05:00
README.md Beta 2025-10-01 07:18:25 +03:00
tsconfig.json javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
vite javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
vite.config.js javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
vitest.config.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
wasm-inline.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00
worker.ts javascript: Rename "browser" packages to "wasm" 2025-09-29 17:02:34 +03:00

Turso Database for JavaScript in Browser

npm

Chat with other users of Turso on Discord


About

This package is the Turso embedded database library for JavaScript in Browser.

⚠️ Warning: This software is in BETA. It may still contain bugs and unexpected behavior. Use caution with production data and ensure you have backups.

Features

  • SQLite compatible: SQLite query language and file format support (status).
  • In-process: No network overhead, runs directly in your Node.js process
  • TypeScript support: Full TypeScript definitions included

Installation

npm install @tursodatabase/database-wasm

Getting Started

In-Memory Database

import { connect } from '@tursodatabase/database-wasm';

// Create an in-memory database
const db = await connect(':memory:');

// Create a table
await db.exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)');

// Insert data
const insert = db.prepare('INSERT INTO users (name, email) VALUES (?, ?)');
await insert.run('Alice', 'alice@example.com');
await insert.run('Bob', 'bob@example.com');

// Query data
const users = await db.prepare('SELECT * FROM users').all();
console.log(users);
// Output: [
//   { id: 1, name: 'Alice', email: 'alice@example.com' },
//   { id: 2, name: 'Bob', email: 'bob@example.com' }
// ]

File-Based Database

import { connect } from '@tursodatabase/database-wasm';

// Create or open a database file
const db = await connect('my-database.db');

// Create a table
await db.exec(`
  CREATE TABLE IF NOT EXISTS posts (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    content TEXT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
  )
`);

// Insert a post
const insertPost = db.prepare('INSERT INTO posts (title, content) VALUES (?, ?)');
const result = await insertPost.run('Hello World', 'This is my first blog post!');

console.log(`Inserted post with ID: ${result.lastInsertRowid}`);

Transactions

import { connect } from '@tursodatabase/database-wasm';

const db = await connect('transactions.db');

// Using transactions for atomic operations
const transaction = db.transaction(async (users) => {
  const insert = db.prepare('INSERT INTO users (name, email) VALUES (?, ?)');
  for (const user of users) {
    await insert.run(user.name, user.email);
  }
});

// Execute transaction
await transaction([
  { name: 'Alice', email: 'alice@example.com' },
  { name: 'Bob', email: 'bob@example.com' }
]);

API Reference

For complete API documentation, see JavaScript API Reference.

License

This project is licensed under the MIT license.

Support