Dexie@4 accepts upgrading schema WITHOUT incrementing the version number.
Dexie@4 is now able to open a previous version of the database without throwing VersionError.
It's still recommended to increment version number when schema has been updated before publishing new versions of an application since it can make opening the db fractions of ms faster. But it's not required.
(If the native version has diverged from the declared version - which happen when extending schema without incrementing version, dexie need to increment the native version to extend schema - and after a page refresh dexie will detect diverged version by catching VersionError and will redo open with the exact installed version under the hood. When measuring the extra time to open an older version in indexedDB and catch VersionError 10,000 times, it only took 1000 ms - 0.1 ms per try (on a macbook pro), so it should be negligible (https://jsfiddle.net/dfahlander/9tg13fwk/19/))
Cache
Non-transactional live queries utilize memory cache to assist in query resolution. It is possible to opt-out from using the cache using the option {cache: 'disabled'}. The cache can greatly improve simple pure range-based live queries and reduce the queries towards IndexedDB by reusing common queries from different components. The cache will be continously developed and optimized further to improve the new paging support in Dexie 5.0.
Workarounds for flaky browsers
Dexie 4 catches various issues in the IndexedDB support for Chrome and Safari. Without dexie@4 tranasactions and write operations can suddenly fail in modern versions of Chrome and Safari but dexie makes sure to protect the end user from experience any issues. It does this by reopening the database or redoing the transaction when these things happen - all without the developer having to worry about it. See issues #543 and #613. (A close upcoming release on the 4.0-track will also address #1660 and #1829).
Supports Dexie Cloud
With Dexie 4.0, you can optionally use dexie-cloud-addon and connect your local database with a cloud based database. Dexie Cloud is a complete solution for authorization and synchronization of personal data with support for sharing data between users.
The type passed to db.table.add() can be different from the type returned from db.table.get() and tb.table.toArray(). This mirrors reality better since some properties may be optional when adding (such as an auto-incremented primary key or dexie-cloud properties realmId and owner).
The generic type Table<T, TKey> is extended with a 3rd optional parameter TInsertType making it possible to declare a table as such:
class MyDB extends Dexie {
friends!: Table<
{ id: number; name: string; age: number }, // T (id is always there)
number, // TKey (type of primary key)
{ id?: number; name: string; age: number } // TInsertType (id is optional)
>;
}
A new helper generic EntityTable<T> also exists as a "don't repeat yourself" sugar on top of this, and will also omit any method on the type. In case the type is a mapped class with helper methods, you are still able to pass simple POJO objects
to add() and put() with only data properties.
Support TypeScript experimental decorators on abstract class fields (#3684)
With this release, you can now use TypeScript experimental decorators on abstract class fields. This was silently compiled incorrectly in esbuild 0.19.7 and below, and was an error from esbuild 0.19.8 to esbuild 0.20.1. Code such as the following should now work correctly:
// Original code
const log = (x: any, y: string) => console.log(y)
abstract class Foo { @log abstract foo: string }
new class extends Foo { foo = '' }
// Old output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
new class extends Foo {
foo = "";
}();
// New output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
__decorateClass([
log
], Foo.prototype, "foo", 2);
new class extends Foo {
foo = "";
}();
JSON loader now preserves __proto__ properties (#3700)
Copying JSON source code into a JavaScript file will change its meaning if a JSON object contains the __proto__ key. A literal __proto__ property in a JavaScript object literal sets the prototype of the object instead of adding a property named __proto__, while a literal __proto__ property in a JSON object literal just adds a property named __proto__. With this release, esbuild will now work around this problem by converting JSON to JavaScript with a computed property key in this case:
// Original code
import data from 'data:application/json,{"__proto__":{"fail":true}}'
if (Object.getPrototypeOf(data)?.fail) throw 'fail'
// Old output (with --bundle)
(() => {
// <data:application/json,{"proto":{"fail":true}}>
var json_proto_fail_true_default = { proto: { fail: true } };
// entry.js
if (Object.getPrototypeOf(json_proto_fail_true_default)?.fail)
throw "fail";
})();
Support TypeScript experimental decorators on abstract class fields (#3684)
With this release, you can now use TypeScript experimental decorators on abstract class fields. This was silently compiled incorrectly in esbuild 0.19.7 and below, and was an error from esbuild 0.19.8 to esbuild 0.20.1. Code such as the following should now work correctly:
// Original code
const log = (x: any, y: string) => console.log(y)
abstract class Foo { @log abstract foo: string }
new class extends Foo { foo = '' }
// Old output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
new class extends Foo {
foo = "";
}();
// New output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
__decorateClass([
log
], Foo.prototype, "foo", 2);
new class extends Foo {
foo = "";
}();
JSON loader now preserves __proto__ properties (#3700)
Copying JSON source code into a JavaScript file will change its meaning if a JSON object contains the __proto__ key. A literal __proto__ property in a JavaScript object literal sets the prototype of the object instead of adding a property named __proto__, while a literal __proto__ property in a JSON object literal just adds a property named __proto__. With this release, esbuild will now work around this problem by converting JSON to JavaScript with a computed property key in this case:
// Original code
import data from 'data:application/json,{"__proto__":{"fail":true}}'
if (Object.getPrototypeOf(data)?.fail) throw 'fail'
// Old output (with --bundle)
(() => {
// <data:application/json,{"proto":{"fail":true}}>
var json_proto_fail_true_default = { proto: { fail: true } };
// entry.js
if (Object.getPrototypeOf(json_proto_fail_true_default)?.fail)
throw "fail";
})();
This version was pushed to npm by voxpelli, a new releaser for mocha since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Bumps the external-dependencies group with 10 updates:
3.2.5
4.0.1
23.10.0
23.10.1
6.1.11
6.1.16
0.0.262
0.0.263
20.11.24
20.12.2
0.20.1
0.20.2
10.3.10
10.3.12
1.71.1
1.72.0
5.3.3
5.4.3
10.3.0
10.4.0
Updates
dexie
from 3.2.5 to 4.0.1Release notes
Sourced from dexie's releases.
... (truncated)
Commits
396b884
Build output5894f19
Merge remote-tracking branch 'origin/releases'f7d3708
Releasing v4.0.177a7f59
Releasing dexie-cloud-addon@4.0.1 (stable)cc4962b
Releasing dexie-cloud-addon@4.0.1-rc.31c4328e
Restart websocket flow if persistedSyncState isnt loaded33fdadd
Fix tmp error on logout: cannot read undefined (serverRevision)3265585
Releasing dexie-cloud-addon@4.0.1-rc.1057b257
Remove yarn.lock from todo-app example03b027d
Build outputUpdates
i18next
from 23.10.0 to 23.10.1Release notes
Sourced from i18next's releases.
Changelog
Sourced from i18next's changelog.
Commits
da6d654
23.10.1f7b8176
optimize getBestMatchFromCodes for https://github.com/i18next/i18next-browser...4685bea
test: move ts tests in a separate workspace, add test for ts v4, collect cove...3a247e1
ci: addcodeQuality
andbuild
jobs (#2146)Updates
tldts
from 6.1.11 to 6.1.16Release notes
Sourced from tldts's releases.
... (truncated)
Changelog
Sourced from tldts's changelog.
... (truncated)
Commits
4825629
Bump version to: v6.1.16 [skip ci]b583e5e
Update CHANGELOG.md [skip ci]92e3d92
Update upstream public suffix list (#1998)1429176
Bump rollup from 4.13.1 to 4.13.2 (#1999)fc0931f
Bump rollup from 4.13.0 to 4.13.1 (#1997)01596de
Bump@typescript-eslint/eslint-plugin
from 7.3.1 to 7.4.0 (#1994)dd48ea7
Bump version to: v6.1.15 [skip ci]24329cb
Update CHANGELOG.md [skip ci]9f86c86
Update upstream public suffix list (#1996)99fae85
Bump mocha from 10.3.0 to 10.4.0 (#1995)Updates
@types/chrome
from 0.0.262 to 0.0.263Commits
Updates
@types/node
from 20.11.24 to 20.12.2Commits
Updates
esbuild
from 0.20.1 to 0.20.2Release notes
Sourced from esbuild's releases.
... (truncated)
Changelog
Sourced from esbuild's changelog.
... (truncated)
Commits
617edda
publish 0.20.2 to npm4780075
fix #3700: json loader preserves__proto__
keys30bed2d
better errors for invalid js decorator syntax300eeb7
ts: allow non-null assertions in js decorators4d997d9
fix #3698: yarn pnp edge case withtsconfig.json
cf42954
resolver: improve some debug loggingb0765ae
fix some lintsdfa6206
fix some comments (closes #3683)ae5cc17
fix #3684:abstract
experimental decoratorsc809af0
fix #2388: allow consuming types without dom types (#3679)Updates
glob
from 10.3.10 to 10.3.12Commits
d5b6b5d
10.3.12e775a78
strip leading ./ from ignore patterns7e927b2
update changeloge667dcb
10.3.11b1d8105
document follow+nodirb5d0f64
drop node 16 from ciea7cf5f
Exclude symlinks to directories with follow+nodir97611cd
remove FUNDING.yml (coming from .github repo now)0862a79
docs(README): typo (eiher
=>either
).c1b4675
remove makework gh actionsUpdates
sass
from 1.71.1 to 1.72.0Release notes
Sourced from sass's releases.
Changelog
Sourced from sass's changelog.
Commits
ce16b35
Cut a release (#2194)9af6bbf
Properly handlepkg:
imports with args (#2193)0330491
Update to node 20 (#2192)48e2d0c
Preserve underscores inVariableExpression.toString()
(#2185)6e2d637
Allow adjacent forward slashes in plain CSS expressions (#2190)fa4d909
Bump softprops/action-gh-release from 1 to 2 (#2191)fd67fe6
[Hotfix Node Package Importer]- Handle subpath without extensions (#2184)Updates
typescript
from 5.3.3 to 5.4.3Release notes
Sourced from typescript's releases.
... (truncated)
Commits
6ea273c
Update LKGcd06f92
🤖 Pick PR #57853 (Revert PR 56161) into release-5.4 (#57854)ca8e720
Update LKG010b188
release-5.4: Revert PR 56087 (#57850)fc7006c
Update LKGb45a418
🤖 Pick PR #57801 (Distribute mapped types over array/...) into release-5.4 (#...609560f
Bump version to 5.4.3 and LKGf42605f
🤖 Pick PR #57746 (Revert "Defer processing of nested ...) into release-5.4 (#...485c7c5
Revert "Allow (non-assert) type predicates to narrow by discriminant"… (#57795)7f11456
🤖 Pick PR #57751 (Exclude generic string-like types f...) into release-5.4 (#...Updates
mocha
from 10.3.0 to 10.4.0Release notes
Sourced from mocha's releases.
Changelog
Sourced from mocha's changelog.
Commits
ffd9557
Release v10.4.07ac67f3
build(deps): bump the github-actions group with 2 updates (#5125)7a2781c
chore: activate dependabot for workflows (#5123)97dcbb2
fix: harden error handling inlib/cli/run.js
(#5074)6f3f45e
fix: xunit integration test (#5122)a5b5652
docs: fix documentation concerning glob expansion on UNIX (#4869)efbb147
feat: add file path to xunit reporter (#4985)a2e600d
fix: closes #5115 (#5116)3735873
feat: include.cause
stacks in the error stack traces (#4829)b88978d
chore: bump ESLint ecmaVersion to 2020 (#5104)Maintainer changes
This version was pushed to npm by voxpelli, a new releaser for mocha since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show