fake-indexeddb
Version:
Fake IndexedDB: a pure JS in-memory implementation of the IndexedDB API
53 lines (49 loc) • 2.45 kB
JavaScript
const fakeIndexedDB = require("../build/cjs/fakeIndexedDB.js");
const FDBCursor = require("../build/cjs/FDBCursor.js");
const FDBCursorWithValue = require("../build/cjs/FDBCursorWithValue.js");
const FDBDatabase = require("../build/cjs/FDBDatabase.js");
const FDBFactory = require("../build/cjs/FDBFactory.js");
const FDBIndex = require("../build/cjs/FDBIndex.js");
const FDBKeyRange = require("../build/cjs/FDBKeyRange.js");
const FDBObjectStore = require("../build/cjs/FDBObjectStore.js");
const FDBRecord = require("../build/cjs/FDBRecord.js");
const FDBOpenDBRequest = require("../build/cjs/FDBOpenDBRequest.js");
const FDBRequest = require("../build/cjs/FDBRequest.js");
const FDBTransaction = require("../build/cjs/FDBTransaction.js");
const FDBVersionChangeEvent = require("../build/cjs/FDBVersionChangeEvent.js");
// http://stackoverflow.com/a/33268326/786644 - works in browser, worker, and Node.js
var globalVar =
typeof window !== "undefined"
? window
: typeof WorkerGlobalScope !== "undefined"
? self
: typeof global !== "undefined"
? global
: Function("return this;")();
// Partly match the native behavior for `globalThis.indexedDB`, `globalThis.IDBCursor`, etc.
// Per the IDL, `indexedDB` is readonly but the others are readwrite. For us, though, we want it to still
// be overwritable with `globalThis.<global> = ...`, so we make them all readwrite.
// https://w3c.github.io/IndexedDB/#idl-index
const createPropertyDescriptor = (value) => {
return {
value,
enumerable: true,
configurable: true,
writable: true,
};
};
Object.defineProperties(globalVar, {
indexedDB: createPropertyDescriptor(fakeIndexedDB),
IDBCursor: createPropertyDescriptor(FDBCursor),
IDBCursorWithValue: createPropertyDescriptor(FDBCursorWithValue),
IDBDatabase: createPropertyDescriptor(FDBDatabase),
IDBFactory: createPropertyDescriptor(FDBFactory),
IDBIndex: createPropertyDescriptor(FDBIndex),
IDBKeyRange: createPropertyDescriptor(FDBKeyRange),
IDBObjectStore: createPropertyDescriptor(FDBObjectStore),
IDBOpenDBRequest: createPropertyDescriptor(FDBOpenDBRequest),
IDBRecord: createPropertyDescriptor(FDBRecord),
IDBRequest: createPropertyDescriptor(FDBRequest),
IDBTransaction: createPropertyDescriptor(FDBTransaction),
IDBVersionChangeEvent: createPropertyDescriptor(FDBVersionChangeEvent),
});