diff --git a/packages/suite-storage/README.md b/packages/suite-storage/README.md index 617f660e46..d65406f657 100644 --- a/packages/suite-storage/README.md +++ b/packages/suite-storage/README.md @@ -1,5 +1,3 @@ # @trezor/suite-storage This package contains an abstract database definition for Suite. Both [@trezor/suite-desktop](../suite-desktop) and [@trezor/suite-web](../suite-web) use [IndexedDB](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API) for storage. IndexedDB is accessed via [idb](https://github.com/jakearchibald/idb) package. - -The package is split into `./src/native` for `suite-native` and `./src/web` for `suite-desktop` plus `suite-web`. There is no logic in `./src/native/index.ts`, this file is a placeholder for future implementation of storage in `suite-native`. diff --git a/packages/suite-storage/package.json b/packages/suite-storage/package.json index 7565955126..0c05f27756 100644 --- a/packages/suite-storage/package.json +++ b/packages/suite-storage/package.json @@ -14,9 +14,8 @@ "type-check:watch": "yarn type-check -- --watch", "depcheck": "yarn g:depcheck" }, - "main": "./src/web/index.ts", - "react-native": "./src/native/index.ts", - "browser": "./src/web/index.ts", + "main": "./src/index.ts", + "browser": "./src/index.ts", "dependencies": { "@trezor/eslint": "workspace:*", "@trezor/utils": "workspace:*", diff --git a/packages/suite-storage/src/web/index.ts b/packages/suite-storage/src/index.ts similarity index 100% rename from packages/suite-storage/src/web/index.ts rename to packages/suite-storage/src/index.ts diff --git a/packages/suite-storage/src/native/index.ts b/packages/suite-storage/src/native/index.ts deleted file mode 100644 index c42ab7e260..0000000000 --- a/packages/suite-storage/src/native/index.ts +++ /dev/null @@ -1,179 +0,0 @@ -import { - IDBPDatabase, - IDBPTransaction, - IndexKey, - IndexNames, - StoreKey, - StoreNames, - StoreValue, -} from 'idb'; - -export type OnUpgradeFunc = ( - db: IDBPDatabase, - oldVersion: number, - newVersion: number | null, - transaction: IDBPTransaction[], 'versionchange'>, -) => Promise; - -class CommonDB { - private static instance: CommonDB; - dbName!: string; - version!: number; - db!: IDBPDatabase; - broadcastChannel!: any; - supported: boolean | undefined; - blocking = false; - blocked = false; - onUpgrade!: OnUpgradeFunc; - onDowngrade!: () => any; - onBlocked?: () => void; - onBlocking?: () => void; - - constructor( - dbName: string, - version: number, - onUpgrade: OnUpgradeFunc, - onDowngrade: () => any, - onBlocked?: () => void, - onBlocking?: () => void, - ) { - if (CommonDB.instance) { - return CommonDB.instance; - } - - this.dbName = dbName; - this.version = version; - this.onUpgrade = onUpgrade.bind(this); - this.onDowngrade = onDowngrade.bind(this); - this.onBlocked = onBlocked; - this.onBlocking = onBlocking; - this.supported = false; - this.blocking = false; - this.blocked = false; - - // @ts-expect-error - this.db = null; - // create global instance of broadcast channel - this.broadcastChannel = null; - - CommonDB.instance = this; - } - - static isDBAvailable = () => false; - - isSupported = () => { - this.supported = false; - - return false; - }; - - isAccessible = (): Promise => { - const isSupported = this.isSupported(); - - // if the instance is blocking db upgrade, db connection will be closed - return Promise.resolve(isSupported && !this.blocking && !this.blocked); - }; - - getDB = (): Promise> => - // @ts-expect-error - Promise.resolve(); - - addItem = < - TStoreName extends StoreNames, - TItem extends StoreValue, - TKey extends StoreKey, - >( - _store: TStoreName, - _item: TItem, - _key?: TKey, - _upsert?: boolean, - ): Promise> => - // @ts-expect-error - Promise.resolve(); - - addItems = < - TStoreName extends StoreNames, - TItem extends StoreValue, - >( - _store: TStoreName, - _items: TItem[], - _upsert?: boolean, - ) => Promise.resolve(); - - getItemByPK = < - TStoreName extends StoreNames, - TKey extends StoreKey, - >( - _store: TStoreName, - _primaryKey: TKey, - ): Promise | undefined> => - // @ts-expect-error - Promise.resolve(); - - getItemByIndex = < - TStoreName extends StoreNames, - TIndexName extends IndexNames, - TKey extends IndexKey, - >( - _store: TStoreName, - _indexName: TIndexName, - _key: TKey, - ) => Promise.resolve(); - - updateItemByIndex = < - TStoreName extends StoreNames, - TIndexName extends IndexNames, - TKey extends IndexKey, - >( - _store: TStoreName, - _indexName: TIndexName, - _key: TKey, - _updateObject: { [key: string]: any }, - ) => Promise.resolve(); - - removeItemByPK = < - TStoreName extends StoreNames, - TKey extends StoreKey, - >( - _store: TStoreName, - _key: TKey, - ) => Promise.resolve(); - - removeItemByIndex = < - TStoreName extends StoreNames, - TIndexName extends IndexNames, - TKey extends IndexKey, - >( - _store: TStoreName, - _indexName: TIndexName, - _key: TKey, - ) => Promise.resolve(); - - getItemsExtended = < - TStoreName extends StoreNames, - TIndexName extends IndexNames, - >( - _store: TStoreName, - _indexName?: TIndexName, - _filters?: { key?: any; offset?: number; count?: number; reverse?: boolean }, - ) => Promise.resolve() as unknown as Promise[]>; - - getItemsWithKeys = >(_store: TStoreName) => - Promise.resolve() as unknown as Promise< - { - key: unknown extends IndexNames - ? IndexKey> - : StoreKey; - value: StoreValue; - }[] - >; - - clearStores = >(_storeNames?: TStoreName[]) => - Promise.resolve(); - - static removeStores = (_db: IDBPDatabase) => Promise.resolve(); - - removeDatabase = () => Promise.resolve(); -} - -export default CommonDB;