wallet-core/packages/idb-bridge/src/index.ts

138 lines
3.6 KiB
TypeScript
Raw Normal View History

import { BridgeIDBFactory, DatabaseList } 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";
import {
Value,
CursorSource,
CursorRange,
BridgeIDBCursorDirection,
Key,
KeyPath,
TransactionMode,
FakeDOMStringList,
RequestObj,
BridgeIDBDatabaseInfo,
EventType,
} from "./util/types";
import {
DatabaseTransaction,
RecordGetResponse,
RecordGetRequest,
Schema,
Backend,
RecordStoreRequest,
RecordStoreResponse,
DatabaseConnection,
ObjectStoreProperties,
StoreLevel,
ResultLevel,
IndexProperties,
} from "./backend-interface";
import FakeEventTarget, { Listener } from "./util/FakeEventTarget";
import { DatabaseDump, ObjectStoreDump, IndexDump, IndexRecord, ObjectStoreRecord, MemoryBackendDump } from "./MemoryBackend";
import { Event } from "./idbtypes";
export {
BridgeIDBCursor,
BridgeIDBCursorDirection,
BridgeIDBDatabase,
BridgeIDBDatabaseInfo,
BridgeIDBFactory,
BridgeIDBIndex,
BridgeIDBKeyRange,
BridgeIDBObjectStore,
BridgeIDBOpenDBRequest,
BridgeIDBRequest,
BridgeIDBTransaction,
Value,
CursorSource,
CursorRange,
Key,
DatabaseTransaction,
RecordGetRequest,
RecordGetResponse,
KeyPath,
Schema,
Backend,
TransactionMode,
DatabaseList,
RecordStoreRequest,
RecordStoreResponse,
FakeEventTarget,
DatabaseConnection,
FakeDOMStringList,
ObjectStoreProperties,
RequestObj,
StoreLevel,
ResultLevel,
DatabaseDump,
ObjectStoreDump,
IndexDump,
IndexRecord,
ObjectStoreRecord,
EventType,
IndexProperties,
MemoryBackendDump,
Event,
Listener,
};
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.
*
* @public
*/
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;
}
export * from "./idbtypes";