import BaseDexie from "dexie"; import { encrypted, Encryption } from "@pvermeer/dexie-encrypted-addon"; import { accountsSchema, AccountsTable } from "./tables/accounts"; type DexieTables = AccountsTable; /** * In order to make the next line be acceptable, the program needs to have its linter suppress a rule: * https://typescript-eslint.io/rules/no-unnecessary-type-constraint/ * * and change *any* to *unknown* * * https://9to5answer.com/how-to-bypass-warning-unexpected-any-specify-a-different-type-typescript-eslint-no-explicit-any */ //export type Dexie = BaseDexie & T; export type Dexie = BaseDexie & T; export const db = new BaseDexie("kickStarter") as Dexie; const schema = Object.assign({}, accountsSchema); // if db already made, skip creation BaseDexie.exists("kickStarter").then(function (exists) { if (exists == false) { // create password and place password in localStorage const secret = localStorage.getItem("secret") || Encryption.createRandomEncryptionKey(); if (localStorage.getItem("secret") == null) { localStorage.setItem("secret", secret); } encrypted(db, { secretKey: secret }); db.version(1).stores(schema); } });