In transition ... experimenting
This commit is contained in:
@@ -15,5 +15,6 @@ module.exports = {
|
|||||||
rules: {
|
rules: {
|
||||||
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
|
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
|
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
|
"@typescript-eslint/no-unnecessary-type-constraint": "off",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
10
package-lock.json
generated
10
package-lock.json
generated
@@ -41,6 +41,7 @@
|
|||||||
"register-service-worker": "^1.7.2",
|
"register-service-worker": "^1.7.2",
|
||||||
"vue": "^3.2.45",
|
"vue": "^3.2.45",
|
||||||
"vue-class-component": "^8.0.0-0",
|
"vue-class-component": "^8.0.0-0",
|
||||||
|
"vue-property-decorator": "^9.1.2",
|
||||||
"vue-router": "^4.1.6",
|
"vue-router": "^4.1.6",
|
||||||
"web-did-resolver": "^2.0.21"
|
"web-did-resolver": "^2.0.21"
|
||||||
},
|
},
|
||||||
@@ -25420,6 +25421,15 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/vue-property-decorator": {
|
||||||
|
"version": "9.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz",
|
||||||
|
"integrity": "sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ==",
|
||||||
|
"peerDependencies": {
|
||||||
|
"vue": "*",
|
||||||
|
"vue-class-component": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/vue-router": {
|
"node_modules/vue-router": {
|
||||||
"version": "4.1.6",
|
"version": "4.1.6",
|
||||||
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz",
|
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz",
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
"register-service-worker": "^1.7.2",
|
"register-service-worker": "^1.7.2",
|
||||||
"vue": "^3.2.45",
|
"vue": "^3.2.45",
|
||||||
"vue-class-component": "^8.0.0-0",
|
"vue-class-component": "^8.0.0-0",
|
||||||
|
"vue-property-decorator": "^9.1.2",
|
||||||
"vue-router": "^4.1.6",
|
"vue-router": "^4.1.6",
|
||||||
"web-did-resolver": "^2.0.21"
|
"web-did-resolver": "^2.0.21"
|
||||||
},
|
},
|
||||||
|
|||||||
34
src/db/index.ts
Normal file
34
src/db/index.ts
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
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<T extends any = DexieTables> = BaseDexie & T;
|
||||||
|
export type Dexie<T extends unknown = DexieTables> = 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);
|
||||||
|
}
|
||||||
|
});
|
||||||
15
src/db/tables/accounts.ts
Normal file
15
src/db/tables/accounts.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { Table } from "dexie";
|
||||||
|
|
||||||
|
export type Account = {
|
||||||
|
id?: number;
|
||||||
|
publicKey: string;
|
||||||
|
identity: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type AccountsTable = {
|
||||||
|
accounts: Table<Account>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const accountsSchema = {
|
||||||
|
accounts: "++id, publicKey, $identity",
|
||||||
|
};
|
||||||
@@ -25,7 +25,6 @@ if (localStorage.getItem("secret") == null) {
|
|||||||
localStorage.setItem("secret", secret);
|
localStorage.setItem("secret", secret);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("secret", secret);
|
|
||||||
/**
|
/**
|
||||||
* Preconfigured DexieWrapper
|
* Preconfigured DexieWrapper
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -172,9 +172,7 @@ import { useAccountStore } from "../store/account";
|
|||||||
import { createIdentifier, deriveAddress, newIdentifier } from "../libs/crypto";
|
import { createIdentifier, deriveAddress, newIdentifier } from "../libs/crypto";
|
||||||
import { IIdentifier } from "@veramo/core";
|
import { IIdentifier } from "@veramo/core";
|
||||||
import * as R from "ramda";
|
import * as R from "ramda";
|
||||||
import useDBAccounts from "@/use/useDBAccounts";
|
import { db } from "../db";
|
||||||
|
|
||||||
const { addAccount } = useDBAccounts();
|
|
||||||
|
|
||||||
@Options({
|
@Options({
|
||||||
components: {},
|
components: {},
|
||||||
@@ -222,8 +220,23 @@ export default class AccountViewView extends Vue {
|
|||||||
privateHex,
|
privateHex,
|
||||||
UPORT_ROOT_DERIVATION_PATH
|
UPORT_ROOT_DERIVATION_PATH
|
||||||
);
|
);
|
||||||
console.log(newId);
|
db.open().catch(function (err) {
|
||||||
addAccount("me", "you", "identity");
|
console.error("Failed to open db: " + (err.stack || err));
|
||||||
|
});
|
||||||
|
db.accounts
|
||||||
|
.add({
|
||||||
|
publicKey: newId.keys[0].publicKeyHex,
|
||||||
|
identity: JSON.stringify(newId),
|
||||||
|
})
|
||||||
|
.then(function () {
|
||||||
|
db.accounts.each(function (account) {
|
||||||
|
console.log("Found close friend: " + account.publicKey);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(function (e) {
|
||||||
|
// Something failed. It may be already in the open() call.
|
||||||
|
console.error(e.stack || e);
|
||||||
|
});
|
||||||
//appStore.dispatch(appSlice.actions.addLog({log: false, msg: "... created new ID..."}))
|
//appStore.dispatch(appSlice.actions.addLog({log: false, msg: "... created new ID..."}))
|
||||||
accountStore.account = JSON.stringify(newId);
|
accountStore.account = JSON.stringify(newId);
|
||||||
//appStore.dispatch(appSlice.actions.addLog({log: false, msg: "... stored new ID..."}))
|
//appStore.dispatch(appSlice.actions.addLog({log: false, msg: "... stored new ID..."}))
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ const { defineConfig } = require("@vue/cli-service");
|
|||||||
module.exports = defineConfig({
|
module.exports = defineConfig({
|
||||||
transpileDependencies: true,
|
transpileDependencies: true,
|
||||||
configureWebpack: {
|
configureWebpack: {
|
||||||
devtool: 'source-map'
|
devtool: "source-map",
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user