aboutsummaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/idb-bridge/src/index.ts')
-rw-r--r--packages/idb-bridge/src/index.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/index.ts b/packages/idb-bridge/src/index.ts
new file mode 100644
index 000000000..a65458748
--- /dev/null
+++ b/packages/idb-bridge/src/index.ts
@@ -0,0 +1,60 @@
+import { BridgeIDBFactory } from "./BridgeIDBFactory";
+import { BridgeIDBCursor } from "./BridgeIDBCursor";
+import { BridgeIDBIndex } from "./BridgeIDBIndex";
+import BridgeIDBDatabase from "./BridgeIDBDatabase";
+import BridgeIDBKeyRange from "./BridgeIDBKeyRange";
+import BridgeIDBObjectStore from "./BridgeIDBObjectStore";
+import BridgeIDBOpenDBRequest from "./BridgeIDBOpenDBRequest";
+import BridgeIDBRequest from "./BridgeIDBRequest";
+import BridgeIDBTransaction from "./BridgeIDBTransaction";
+import BridgeIDBVersionChangeEvent from "./BridgeIDBVersionChangeEvent";
+
+export { BridgeIDBFactory, BridgeIDBCursor };
+
+export { MemoryBackend } from "./MemoryBackend";
+
+// globalThis polyfill, see https://mathiasbynens.be/notes/globalthis
+(function() {
+ if (typeof globalThis === "object") return;
+ Object.defineProperty(Object.prototype, "__magic__", {
+ get: function() {
+ return this;
+ },
+ configurable: true, // This makes it possible to `delete` the getter later.
+ });
+ // @ts-ignore: polyfill magic
+ __magic__.globalThis = __magic__; // lolwat
+ // @ts-ignore: polyfill magic
+ delete Object.prototype.__magic__;
+})();
+
+/**
+ * Populate the global name space such that the given IndexedDB factory is made
+ * available globally.
+ */
+export function shimIndexedDB(factory: BridgeIDBFactory): void {
+ // @ts-ignore: shimming
+ globalThis.indexedDB = factory;
+ // @ts-ignore: shimming
+ globalThis.IDBCursor = BridgeIDBCursor;
+ // @ts-ignore: shimming
+ globalThis.IDBKeyRange = BridgeIDBKeyRange;
+ // @ts-ignore: shimming
+ globalThis.IDBDatabase = BridgeIDBDatabase;
+ // @ts-ignore: shimming
+ globalThis.IDBFactory = BridgeIDBFactory;
+ // @ts-ignore: shimming
+ globalThis.IDBIndex = BridgeIDBIndex;
+ // @ts-ignore: shimming
+ globalThis.IDBKeyRange = BridgeIDBKeyRange;
+ // @ts-ignore: shimming
+ globalThis.IDBObjectStore = BridgeIDBObjectStore;
+ // @ts-ignore: shimming
+ globalThis.IDBOpenDBRequest = BridgeIDBOpenDBRequest;
+ // @ts-ignore: shimming
+ globalThis.IDBRequest = BridgeIDBRequest;
+ // @ts-ignore: shimming
+ globalThis.IDBTransaction = BridgeIDBTransaction;
+ // @ts-ignore: shimming
+ globalThis.IDBVersionChangeEvent = BridgeIDBVersionChangeEvent;
+}