Dexie v3.2.0
Dexie.js has become Reactive
After one year in alpha, beta and RC, Dexie.js with liveQuery() is now officially released. The main reason for this new feature is better integration with frontend libraries like React, Svelte, Vue and Angular.
Together with this release, the website https://dexie.org also got a face lift with tutorials for React, Svelte, Vue and Angular.
dexie.org
Take a look past the updated website. Old tutorials are replaced with modern relevant framework specific ones. We've added React, Svelte, Vue and Angular samples on the landing page.
All changes since 3.0.3 in chronological order
- PR 1104: dbName follows dependencies.indexedDB (II)
- Option
{allKeys: true}
to bulkPut() and bulkAdd() will be equally fast as not providing that option. - Code cleanup and optimizations.
- Expose IDB 'close' event: #1212
- BulkError: Possible to track individual errors. Add failuresByPos property: #1209
- Dexie.getDatabaseNames(): Small optimization for our workaround for non-chromium browsers lacking the IDBFactory.databases(). commit.
- Argument to on.ready() callback will get a special Dexie instance that is not blocked (vip Dexie). This was the case also before but then we had to rely on zone state. This change makes it possible to perform non-dexie operations in on.read() callback (such as fetch()), loosing the zone state (PSD) but still have VIP access to the Dexie instance. This makes the code in a on.ready() callback not having to deal with wrapping all non-Dexie calls with Promise.resolve().
- Allow multiple calls to Version.upgrade() on the same version - will run all of them instead just of the latest registered.
- Retiring old workaround for safari 8 bug not allowing array argument to IDBDatabase.transaction().
- Dexie.delete() specifies an empty addons list to ensure no addons are involved when deleting a database using that static method.
- Minor extended the DBCore interface to make it possible for Dexie Cloud to sync certain operations consistently. Specifically, middlewares that implement the DBCoreTable.mutate() endpoint now also gets information on the where-critera and the update specification when originating from Collection.modify() or Collection.delete().
- Support for Chrome's transaction durability option in Dexie constructor. PR #1367
- Official event Dexie.on('storagemutated')
- Typings: Stop exporting Dexie as namespace. Enables VSCode's ergonomic auto-import feature for dexie. The namespace export was not even working as expected. The intent had been to support those that code Typescript without using modules. But even they must have been disappointed because the typings did not only reveal parts of the Dexie API.
- Let liveQuery() be type-wise compable with RxJS (PR #1417)
- Switch to JS implementation of indexedDB.cmp() (PR #1412)
Fixed Bugs since 3.0.3 in chronological order
- #1195 The 'update' crud-hook interpreted array properties as object with number keys.
- #1280 Cannot add CryptoKeys to table with auto-incrementing primary key
- Typing correction: Fix version signatures (PR #1287)
- Fix #1236 - problems updating FileSystemFileHandle properties.
- Bugfix: Transaction.abort() does not rollback changes (filed as a repro PR in #1329). Fixed in PR #1330.
- Bugfix in Virtual Indexes (the reuse of compound indexes as plain indexes): Couldn't reuse parts of primary keys - only parts of indexes.
- PR #1379 fix(bulk-delete): correctly define keys type. Fixes #1364.
- Bugfix for #1381 Collection.delete() fails silently for queries on virtual indexes that use .filter().
- Deleting multiple tables in a new version using null (#1418)
- (Another) mysterious MissingAPI error (#1400)