Skip to content

Releases: tinyplex/tinybase

v5.3.4

16 Oct 14:29
Compare
Choose a tag to compare

This release addresses #186

v5.3.3

15 Oct 05:10
Compare
Choose a tag to compare

This release updates dependencies and makes some internal changes to the PowerSync persister to tackle #187

v5.3.2

04 Oct 05:09
Compare
Choose a tag to compare

This release updates dependencies and annotates some pure functions to improve transpilation.

v5.3.1

23 Sep 18:41
Compare
Choose a tag to compare

This release updates dependencies.

v5.3.0

13 Sep 17:12
Compare
Choose a tag to compare

This release is focussed on a few API improvements and quality-of-life changes. These include:

React SSR support

Thanks to contributor Muhammad Muhajir (@muhajirdev) for ensuring that TinyBase runs in server-side rendering environments!

In the persisters module...

All Persister objects now expose information about whether they are loading or saving. To access this Status, use:

  • The getStatus method, which will return 0 when it is idle, 1 when it is loading, and 2 when it is saving.
  • The addStatusListener method, which lets you add a StatusListener function and which is called whenever the status changes.

These make it possible to track background load and save activities, so that, for example, you can show a status-bar spinner of asynchronous persistence activity.

In the synchronizers module...

Synchronizers are a sub-class of Persister, so all Synchronizer objects now also have:

  • The getStatus method, which will return 0 when it is idle, 1 when it is 'loading' (ie inbound syncing), and 2 when it is 'saving' (ie outbound syncing).
  • The addStatusListener method, which lets you add a StatusListener function and which is called whenever the status changes.

In the ui-react module...

There are corresponding hooks so that you can build these status changes into a React UI easily:

And correspondingly for Synchronizers:

In addition, this module also now includes hooks for injecting objects into the Provider context scope imperatively, much like the existing useProvideStore hook:

All of these new methods have extensive documentation, each with examples to show how to use them.

Please provide feedback on this new release on GitHub!

v5.2.3

06 Sep 17:42
Compare
Choose a tag to compare

This release addresses a rendering bug in the ui-react-inspector when there were multiple tables in a Store

v5.2.2

04 Sep 23:12
Compare
Choose a tag to compare

This fixes a small global React context problem.

v5.2.1

04 Sep 04:39
Compare
Choose a tag to compare

This release updates dependencies, fixes some new lint issues, and updates the type definitions to reflect the removal of the persisters and synchronizers module from the master tinybase module.

v5.2.0

03 Sep 15:40
Compare
Choose a tag to compare

This release introduces new Persisters for... PostgreSQL! TinyBase now has two new Persister modules:

Conceptually, things behave in the same way as they do for the various SQLite persisters. Simply use the createPostgresPersister function (or the similar createPglitePersister function) to persist your TinyBase data:

import postgres from 'postgres';
import {createPostgresPersister} from 'tinybase/persisters/persister-postgres';
import {createStore} from 'tinybase';

// Create a TinyBase Store.
const store = createStore().setTables({pets: {fido: {species: 'dog'}}});

// Create a postgres connection and Persister.
const sql = postgres('postgres://localhost:5432/tinybase');
const pgPersister = await createPostgresPersister(store, sql, 'my_tinybase');

// Save Store to the database.
await pgPersister.save();

console.log(await sql`SELECT * FROM my_tinybase;`);
// -> [{_id: '_', store: '[{"pets":{"fido":{"species":"dog"}}},{}]'}]

And, as per usual, you can update the database and have TinyBase automatically reflect those changes:

// If separately the database gets updated...
const json = '[{"pets":{"felix":{"species":"cat"}}},{}]';
await sql`UPDATE my_tinybase SET store = ${json} WHERE _id = '_';`;

// ... then changes are loaded back. Reactive auto-load is also supported!
await pgPersister.load();
console.log(store.getTables());
// -> {pets: {felix: {species: 'cat'}}}

// As always, don't forget to tidy up.
pgPersister.destroy();
await sql.end();

Note that these two Persister objects support both the json and tabular modes for saving TinyBase data into the database. See the DatabasePersisterConfig type for more details. (Note however that, like the SQLite Persisters, only the json mode is supported for MergeableStore instances, due to their additional CRDT metadata.)

Please provide feedback on this new release on GitHub!

v5.1.5

18 Aug 21:57
Compare
Choose a tag to compare

Updates peer dependencies, fixes resulting lints, and resolves #171.