Releases: dumbmatter/fakeIndexedDB
v6.0.0
I made this a new major version because it includes a few changes that could in theory break something in some weird situations. But I think the vast majority of users (possibly all users?) won't have any issue upgrading.
-
#48 - Switched to using
DOMException
errors rather than normal errors, since that's what the IndexedDB spec says to use, and Node.js now has a built-in DOMException in all supported versions. -
#93 - @bryan-codaio made the latest tweak to event scheduling, this time improving how
setImmediate
is used in some situations where people are mocking timers. -
#99 - @sjnho fixed handling of
Date
objects to account for some edge cases, including jsdom overriding the nativeDate
constructor.
v5.0.2
v5.0.1
v5.0.0
- Dropped support for Node.js 16, which allows me to get rid of the structuredClone polyfill, which reduces the package size by roughly 50%.
v4.0.2
v4.0.1
- #79 - Added missing
request
accessor to theFDBCursor
object. Thank you @mmacfadden for the PR!
v4.0.0
TLDR: Most users can upgrade without doing any extra work, but you might need to change require("fake-indexeddb")
to require("fake-indexeddb").default
. All other ways of importing fake-indexeddb (such as with import
, or requiring sub-modules like require("fake-indexeddb/auto")
or require("fake-indexeddb/lib/FDBKeyRange")
) should continue working like normal.
Details:
-
#23 - TypeScript support! As of version 4, fake-indexeddb includes TypeScript types. As you can see in types.d.ts, it's just using TypeScript's built-in IndexedDB types, rather than generating types from the fake-indexeddb code base. The reason I did this is for compatibility with your application code that may already be using TypeScript's IndexedDB types, so if I used something different for fake-indexeddb, it could lead to spurious type errors. In theory this could lead to other errors if there are differences between Typescript's IndexedDB types and fake-indexeddb's API, but currently I'm not aware of any difference.
-
Added support for ES modules in addition to CommonJS modules. That means you can
import
orrequire
and it should just work. -
Breaking change: The easiest way to use this module is still to import/require
"fake-indexeddb/auto"
. If instead you want to import an individual variable rather than populate the global scope with all of them, previously you would doconst indexedDB = require("fake-indexeddb");
for the mainindexedDB
variable andconst IDBKeyRange = require("fake-indexeddb/lib/FDBKeyRange");
for any of the other IndexedDB variables. In this release, I made everything a named export of the main package, so you can do:import { indexedDB, IDBKeyRange } from "fake-indexeddb";
or
const { indexedDB, IDBKeyRange } = require("fake-indexeddb");
For backwards compatibility, the
require("fake-indexeddb/lib/FDBKeyRange")
syntax still is supported, but the new exports of the main module are a breaking change.indexedDB
is still the default export, but in CommonJS you can't have both default and named exports, so the default export is really just an property named"default"
. This may requrie changing requires of the root module likerequire("fake-indexeddb")
torequire("fake-indexeddb").default
. Or switch to ES modules andimport
it :) -
Breaking change: Dropped support for versions of Node.js older than Node 12.
-
Breaking change: For environments with a built-in
structuredClone
function (such as Node.js 17+), that is used rather than therealistic-structured-clone
NPM module. There are some differences between the two implementations of the structured cloning algorithm, but probably nothing noticable, and probably all is in the direction of better spec compliance such as this or this. There is also a minor performance increase with the built-in function - the test suite of fake-indexeddb runs about 5% faster.
v3.1.8
- #74 - Fixed error when adding undefined or null children in indexed objects, by @lukebrody