Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/surrealdb/surrealdb.js

SurrealDB SDK for JavaScript
https://github.com/surrealdb/surrealdb.js

database database-connector deno deno-library deno-module iot-database javascript javascript-library javascript-module realtime-database surreal surrealdb

Last synced: 20 days ago
JSON representation

SurrealDB SDK for JavaScript

Awesome Lists containing this project

README

        




 

The official SurrealDB SDK for JavaScript.




 

 

 

 



 

 

 

# surrealdb

The official SurrealDB SDK for JavaScript.

## Documentation

View the SDK documentation [here](https://surrealdb.com/docs/integration/libraries/javascript).

## How to install

### Install for [JSR/Deno](https://jsr.io/@surrealdb/surrealdb)

Import it with:

```ts
import Surreal from "@surrealdb/surrealdb";
```

### Install for [Node.js](https://www.npmjs.com/package/surrealdb)

Install it with:

```sh
# using npm
npm i surrealdb
# or using pnpm
pnpm i surrealdb
# or using yarn
yarn add surrealdb
```

Next, just import it with:

```ts
const { Surreal } = require("surrealdb");
```

or when you use modules:

```ts
import Surreal from "surrealdb";
```

### Install for the browser

For usage in a browser environment, when using a bundler (e.g. [Rollup](https://rollupjs.org/), [Vite](https://vitejs.dev/), or [webpack](https://webpack.js.org/)) you can install it with:

```sh
# using npm
npm i surrealdb
# or using pnpm
pnpm i surrealdb
# or using yarn
yarn add surrealdb
```

Next, just import it with:

```ts
import Surreal from "surrealdb";
```

or when you use CommonJS:

```ts
const { Surreal } = require("surrealdb");
```

### Install for the browser with a CDN

For fast prototyping we provide a browser-ready bundle. You can import it with:

```ts
import Surreal from "https://unpkg.com/surrealdb";
// or
import Surreal from "https://cdn.jsdelivr.net/npm/surrealdb";
```

_**NOTE: this bundle is not optimized for production! So don't use it in production!**_

## Getting started

In the example below you can see how to connect to a remote instance of SurrealDB, authenticating with the database, and issuing queries for creating, updating, and selecting data from records.

> This example requires SurrealDB to be [installed](https://surrealdb.com/install) and running on port 8000.

> This example makes use of [top level await](https://v8.dev/features/top-level-await), available in [modern browsers](https://caniuse.com/mdn-javascript_operators_await_top_level), [Deno](https://deno.com/) and [Node.js](https://nodejs.org/) >= 14.8.

```ts
import { Surreal, RecordId, Table } from "surrealdb";

const db = new Surreal();

// Connect to the database
await db.connect("http://127.0.0.1:8000/rpc");

// Select a specific namespace / database
await db.use({
namespace: "test",
database: "test"
});

// Signin as a namespace, database, or root user
await db.signin({
username: "root",
password: "root",
});

// Create a new person with a random id
let created = await db.create("person", {
title: "Founder & CEO",
name: {
first: "Tobie",
last: "Morgan Hitchcock",
},
marketing: true,
});

// Update a person record with a specific id
let updated = await db.merge(new RecordId('person', 'jaime'), {
marketing: true,
});

// Select all people records
let people = await db.select("person");

// Perform a custom advanced query
let groups = await db.query(
"SELECT marketing, count() FROM $tb GROUP BY marketing",
{
tb: new Table("person"),
},
);
```

## Contributing

### Local setup

This is a [Bun](https://bun.sh) project, not Node.js. It works across all major runtimes, however.

#### Supported environments

- [Deno](https://deno.land)
- [Node.js](https://nodejs.org)
- [Bun](https://bun.sh)
- Web Browsers

### Requirements

- Bun
- SurrealDB (for testing)

### Build for all supported environments

For Deno, no build is needed. For all other environments run

`bun run build`.

### Code Quality Fixes

`bun quality:apply`

### Code Quality unsafe fixes

`bun quality:apply:unsafe`

### Run tests for WS

`bun test`

### Run tests for HTTP

`SURREAL_PROTOCOL=http bun test`

### PRs

Before you commit, please format and lint your code accordingly to check for
errors, and ensure all tests still pass

### Local setup

For local development the
[Bun extension](https://marketplace.visualstudio.com/items?itemName=oven.bun-vscode) and [Biome extension](https://marketplace.visualstudio.com/items?itemName=biomejs.biome)
for VSCode are helpful.

### Directory structure

- `./biome.json` include settings for code quality.
- `./scripts` include the build scripts for NPM and JSR.
- `./src` includes all source code. `./src/index.ts` is the main entrypoint.
- `./dist` is build by `./scripts/build.ts` and includes the compiled and minified bundles for ESM, CJS and bundled ESM targets.
- `./tests` includes all test files.