Browse Source

In transition ... experimenting

experimental_plugin
Matthew Aaron Raymer 2 years ago
parent
commit
9232afb5af
  1. 1
      .eslintrc.js
  2. 10
      package-lock.json
  3. 1
      package.json
  4. 34
      src/db/index.ts
  5. 15
      src/db/tables/accounts.ts
  6. 1
      src/services/DexieWrapper.ts
  7. 23
      src/views/AccountViewView.vue
  8. 4
      vue.config.js

1
.eslintrc.js

@ -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

@ -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",

1
package.json

@ -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

@ -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

@ -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",
};

1
src/services/DexieWrapper.ts

@ -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
*/ */

23
src/views/AccountViewView.vue

@ -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..."}))

4
vue.config.js

@ -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",
} },
}); });

Loading…
Cancel
Save