surrealdb.js

SurrealDB SDK for JavaScript

APACHE-2.0 License

Downloads
15.5K
Stars
294
Committers
25

Bot releases are hidden (Show)

surrealdb.js - Release v1.0.0-beta.8

Published by kearfy 5 months ago

surrealdb.js - Release v1.0.0-beta.7

Published by kearfy 5 months ago

What's Changed

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v1.0.0-beta.6...v1.0.0-beta.7

surrealdb.js - Release v1.0.0-beta.6

Published by kearfy 5 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v1.0.0-beta.5...v1.0.0-beta.6

surrealdb.js - Release v1.0.0-beta.5

Published by kearfy 6 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v1.0.0-beta.4...v1.0.0-beta.5

surrealdb.js - Release v1.0.0-beta.4

Published by kearfy 6 months ago

surrealdb.js - v1.0.0-beta.3

Published by kearfy 6 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v1.0.0-beta.2...v1.0.0-beta.3

surrealdb.js - v1.0.0-beta.2

Published by kearfy 6 months ago

What's Changed

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v1.0.0-beta.1...v1.0.0-beta.2

surrealdb.js - v1.0.0-beta.1

Published by kearfy 6 months ago

surrealdb.js - Release v0.11.1

Published by kearfy 6 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v0.11.0...v0.11.1

surrealdb.js - Release v0.11.0

Published by kearfy 12 months ago

Overview

Simplified .query() method

To further align our JS landscape, the current .query() method is renamed to .query_raw(), and a new and simplified .query() method is introduced. This new method either throws an error or gives back an array of response values.

await db.query<boolean, number>(`true; 123`);
// [true, 123]
// This would previously be an array with query response objects, containing the result.

await db.query(`THROW "some error"`);
// Throws: "An error occurred: some error"

Tagged template literals

  • We now expose a PreparedQuery class which can be passed to the .query() and .query_raw() methods.
  • We now expose a surrealql (and surql as a shortcut) function which can be used as a tagged template literal.
const name = "John Doe";
const age = 44;

// With PreparedQuery
const query = new PreparedQuery(
	/* surql */`RETURN $name; RETURN $age`,
	{ name, age }
);

const prepared = await db.query(query);

// With a tagged template literal
const templated = await db.query(
	surrealql`RETURN ${name}; RETURN ${age}`
);

What's Changed

New Contributors

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v0.10.1...v0.11.0

surrealdb.js - Release v0.10.1

Published by kearfy 12 months ago

surrealdb.js - Release v0.10.0

Published by kearfy 12 months ago

Overview

ns/db/sc/user/pass renamed to namespace/database/scope/username/password

This change was introduced to better align the JS SDK with the Rust SDK and the rest of our JavaScript landscape

Old behaviour

await db.use({ 
  ns: 'test', 
  db: 'test' 
});

await db.signin({ 
  ns: 'test', 
  db: 'test', 
  user: 'root', 
  pass: 'root' 
});

await db.signin({ 
  ns: 'test', 
  db: 'test', 
  sc: 'user', 
  ... 
});

New behaviour

await db.use({ 
  namespace: 'test', 
  database: 'test' 
});

await db.signin({ 
  namespace: 'test', 
  database: 'test', 
  username: 'root', 
  password: 'root' 
});

await db.signin({ 
  namespace: 'test', 
  database: 'test', 
  scope: 'user', 
  ... 
});

What's Changed

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v0.9.1...v0.10.0

surrealdb.js - Release v0.9.1

Published by kearfy about 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v0.9.0...v0.9.1

surrealdb.js - Release v0.9.0

Published by kearfy about 1 year ago

Overview

  • The constructor method of the Surreal class does not accept a URL and configuration options anymore. This, because if an error would be thrown from the promise based function it invoked (like an unreachable address), it would be impossible to catch it. Aside from that, this streamlines the JS and WASM libraries towards eachother. Any arguments previously passed to the contructor method will now need to be separately passed to the .connect() function (which can be awaited by the way!)
  • .authenticate() now returns a boolean indicating success or not success. Be aware that authentication errors will still result in an error being thrown!
  • Improved promise and error handling in general
  • Removed Bun tests as their websocket implementation is currently experimental and not working properly.

What's Changed

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v0.8.4...v0.9.0

surrealdb.js - Release v0.8.4

Published by kearfy about 1 year ago

Overview

  • You can now pass variables to the .query() method for the experimental HTTP strategy
  • Implemented a .insert() method to allow for bulk record insertion
  • Added a third option diff to the .live() method, which allows you to receive back notifications in the form of JSON Patches.
  • Finished off the internals for the live queries implementation and added tests for them (they are now actually functional!!)

As most of this is only available with the nightly version of SurrealDB, I would like to link the nightly docs (all though a bit buggy here and there) aswell: https://deploy-preview-197--coruscating-puppy-14fc4b.netlify.app/

What's Changed

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v0.8.3...v0.8.4

surrealdb.js - Release v0.8.3

Published by kearfy over 1 year ago

Overview

The NS and DB properties are now optional in signin/signup functions for Scope authentication. They are still required for namespace and database user authentication!

What's Changed

New Contributors

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v0.8.2...v0.8.3

surrealdb.js - Release v0.8.2

Published by kearfy over 1 year ago

surrealdb.js - Release v0.8.1

Published by kearfy over 1 year ago

Notes on this release

  • Implemented the .info() method for the websocket strategy
    • The info method will essentially run: SELECT * FROM $auth
    • You can pass a generic type which contains the fields that the above query will return, based on the authenticated scope user
  • Further implemented methods for the experimental HTTP strategy
  • Made this a patch as it only implements new methods :)

What's Changed

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v0.8.0...v0.8.1

surrealdb.js - Release v0.8.0

Published by kearfy over 1 year ago

Notes on this release

  • Breaking: Fix typings for .select(), .create(), .update(), .merge(), .patch(), .delete()

    • After this PR, all of the above mentioned functions will always return an array, regardless of the method or if you are selecting a table or a specific record.
    • The .select() methods now returns an array instead of a single item.
    • The .change() method is renamed to .merge().
    • The .modify() method is renamed to .patch().
    • The above mentioned functions now always return an array, never a single item or undefined.
  • Breaking: The .use() function now accepts an object as an argument .use({ ns, db }).

  • You can now pass an auth property to the second argument of the constructor and connect functions. This can be a token string or an object you would pass to the .signin() function.

  • You can now pass a pair of { ns, db } to the second argument of the constructor and connect functions.

  • The auth state and ns/db combo will now be remembered after a possible WebSocket disconnect and will automatically be restored.

  • Added back the Live Queries implementation (read down below)

Live Queries implementation

Start a live query

const uuid = await surreal.live<{
    id: string;
    prop: number;
}>("query...", (data) => {
    if (data.action === 'CLOSE") return;
    console.log(data.result);
});

Register another listener for an LQ

await surreal.listenLive<{
    id: string;
    prop: number;
}>("uuid...", (data) => {
    if (data.action === 'CLOSE") return;
    console.log("Second listener! ", data.result);
});

Kill a LQ

await surreal.kill("uuid...");

Data in callback

type close = {
    action: "CLOSE",
    detail: "SOCKET_CLOSED" | "QUERY_KILLED"
};

type create = {
    action: "CREATE";
    result: Record<string, unknown>;  // Generic type that was passed, always extends default type
};

type update = {
    action: "UPDATE";
    result: Record<string, unknown>;  // Generic type that was passed, always extends default type
};

type delete = {
    action: "DELETE";
    result: Record<string, unknown>;  // Generic type that was passed, always extends default type
};

What's Changed

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v0.7.3...v0.8.0 (might not completely align with above notes, v0.7.3 was a little bit quirky)

surrealdb.js - Release v0.7.3

Published by kearfy over 1 year ago

Notes on this release

As pointed out by @amaster507, the v0.7.2 release rightfully contained a breaking change by switching out the isomorphic-ws package for unws. I inspected the two packages before the release and concluded that their behaviour was the same, besides unws having fixed some issues the isomorphic-ws was experiencing.

What I did not notice was that the export for commonjs projects was done with the export keyword instead of module.exports. I opened a PR to fix this which got merged. I tested once again to conclude that this fixes the issue that developers working on a commonjs were experiencing, which now technically makes this a patch release based on v0.7.1.

What's Changed

Full Changelog: https://github.com/surrealdb/surrealdb.js/compare/v0.7.2...v0.7.3