diff --git a/sample.txt b/sample.txt new file mode 100644 index 00000000..efe20be6 --- /dev/null +++ b/sample.txt @@ -0,0 +1,177 @@ + +> kickstart-for-time-pwa@0.1.0 build +> vue-cli-service build + +All browser targets in the browserslist configuration have supported ES module. +Therefore we don't build two separate bundles for differential loading. + + + WARNING Compiled with 5 warnings6:06:43 PM + +[eslint] +/home/matthew/projects/kick-starter-for-time-pwa/src/components/World/components/objects/landmarks.js + 98:11 warning Unexpected console statement no-console + 133:7 warning Unexpected console statement no-console + 144:5 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/router/index.ts + 210:3 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/AccountViewView.vue + 362:7 warning Unexpected console statement no-console + 375:7 warning Unexpected console statement no-console + 404:7 warning Unexpected console statement no-console + 516:7 warning Unexpected console statement no-console + 536:7 warning Unexpected console statement no-console + 630:5 warning Unexpected console statement no-console + 682:7 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/ContactAmountsView.vue + 206:9 warning Unexpected console statement no-console + 233:9 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/ContactGiftingView.vue + 244:9 warning Unexpected console statement no-console + 267:7 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/ContactsView.vue + 340:9 warning Unexpected console statement no-console + 577:9 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/DiscoverView.vue + 315:9 warning Unexpected console statement no-console + 343:7 warning Unexpected console statement no-console + 390:9 warning Unexpected console statement no-console + 423:7 warning Unexpected console statement no-console + 532:9 warning Unexpected console statement no-console + 575:7 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/HomeView.vue + 349:9 warning Unexpected console statement no-console + 498:9 warning Unexpected console statement no-console + 521:7 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/IdentitySwitcherView.vue + 142:7 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/ImportAccountView.vue + 123:9 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/ImportDerivedAccountView.vue + 159:7 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/NewEditProjectView.vue + 183:9 warning Unexpected console statement no-console + 215:7 warning Unexpected console statement no-console + 297:13 warning Unexpected console statement no-console + 320:11 warning Unexpected console statement no-console + 345:7 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/ProjectViewView.vue + 387:9 warning Unexpected console statement no-console + 421:7 warning Unexpected console statement no-console + 457:7 warning Unexpected console statement no-console + 552:9 warning Unexpected console statement no-console + 554:11 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/ProjectsView.vue + 131:9 warning Unexpected console statement no-console + 144:7 warning Unexpected console statement no-console + 221:9 warning Unexpected console statement no-console + 237:7 warning Unexpected console statement no-console + +/home/matthew/projects/kick-starter-for-time-pwa/src/views/SeedBackupView.vue + 94:7 warning Unexpected console statement no-console + +✖ 44 problems (0 errors, 44 warnings) + + +You may use special comments to disable some warnings. +Use // eslint-disable-next-line to ignore the next line. +Use /* eslint-disable */ to ignore all warnings in a file. + warning + +/models/lupine_plant/textures/lambert2SG_baseColor.png is 3.75 MB, and won't be precached. Configure maximumFileSizeToCacheInBytes to change this limit. + + warning + +/models/lupine_plant/textures/lambert2SG_normal.png is 4.91 MB, and won't be precached. Configure maximumFileSizeToCacheInBytes to change this limit. + + warning + +asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). +This can impact web performance. +Assets: + js/project.44f30c9f.js (318 KiB) + js/statistics.8a97010a.js (586 KiB) + js/chunk-vendors.a4845bfb.js (411 KiB) + js/705.f6a6ce2a.js (252 KiB) + img/textures/leafy-autumn-forest-floor.jpg (705 KiB) + models/lupine_plant/textures/lambert2SG_baseColor.png (3.58 MiB) + models/lupine_plant/textures/lambert2SG_normal.png (4.69 MiB) + + warning + +entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance. +Entrypoints: + app (447 KiB) + js/chunk-vendors.a4845bfb.js + css/app.8f21529c.css + js/app.8833cebc.js + + + File Size Gzipped + + dist/js/statistics.8a97010a.js 585.72 KiB 148.80 KiB + dist/js/chunk-vendors.a4845bfb.js 411.44 KiB 137.82 KiB + dist/js/project.44f30c9f.js 317.61 KiB 78.67 KiB + dist/js/705.f6a6ce2a.js 251.66 KiB 87.12 KiB + dist/js/891.33615e4f.js 147.32 KiB 42.09 KiB + dist/js/153.e2c8e249.js 146.26 KiB 42.21 KiB + dist/js/820.13565d16.js 66.10 KiB 18.33 KiB + dist/js/contact-qr.e170ec33.js 54.85 KiB 15.63 KiB + dist/js/772.7b4c53a7.js 30.29 KiB 7.21 KiB + dist/js/361.898a4525.js 27.40 KiB 8.19 KiB + dist/js/account.77d86130.js 17.51 KiB 5.93 KiB + dist/js/app.8833cebc.js 17.31 KiB 5.84 KiB + dist/js/contacts.3fc90ff8.js 16.94 KiB 5.52 KiB + dist/js/discover.24106939.js 15.30 KiB 5.22 KiB + dist/js/536.3bb13201.js 15.23 KiB 4.84 KiB + dist/workbox-5b385ed2.js 14.11 KiB 4.93 KiB + dist/js/home.218b99dd.js 13.89 KiB 4.97 KiB + dist/js/help.50d3117b.js 12.49 KiB 4.38 KiB + dist/js/projects.417a6cb7.js 8.71 KiB 3.00 KiB + dist/js/contact-amounts.a32b0ccd.js 8.44 KiB 3.25 KiB + dist/js/229.120e09bf.js 7.99 KiB 2.72 KiB + dist/js/identity-switcher.c7937333.js 7.44 KiB 2.52 KiB + dist/js/new-edit-project.0552181b.js 7.36 KiB 3.11 KiB + dist/js/300.dcaeb2a3.js 6.56 KiB 3.24 KiB + dist/js/seed-backup.76a0f7b3.js 3.99 KiB 1.97 KiB + dist/js/import-derive.c688d4b8.js 3.81 KiB 1.82 KiB + dist/js/import-account.c3fa35fd.js 3.54 KiB 1.66 KiB + dist/js/new-edit-account.bb763be2.js 3.39 KiB 1.51 KiB + dist/js/431.5a6d64e0.js 3.38 KiB 2.56 KiB + dist/service-worker.js 3.37 KiB 1.38 KiB + dist/js/scan-contact.46be989a.js 2.79 KiB 1.18 KiB + dist/js/start.091a7740.js 2.70 KiB 1.30 KiB + dist/js/new-identifier.bb379420.js 2.12 KiB 1.18 KiB + dist/js/93.b873dbbf.js 2.08 KiB 1.61 KiB + dist/js/new-edit-commitment.9248d367.j 1.96 KiB 1.05 KiB + s + dist/js/confirm-contact.02004d1d.js 1.89 KiB 1.04 KiB + dist/js/858.ae4c08ec.js 0.97 KiB 0.78 KiB + dist/css/app.8f21529c.css 18.41 KiB 4.39 KiB + dist/css/discover.73ee9bd3.css 14.77 KiB 6.25 KiB + dist/css/new-edit-project.73ee9bd3.css 14.77 KiB 6.25 KiB + dist/css/contacts.abb5e493.css 0.40 KiB 0.23 KiB + dist/css/contact-amounts.5b26ccd4.css 0.31 KiB 0.20 KiB + dist/css/home.828bc66e.css 0.25 KiB 0.19 KiB + dist/css/project.828bc66e.css 0.25 KiB 0.19 KiB + dist/css/statistics.828bc66e.css 0.25 KiB 0.19 KiB + + Images and other types of assets omitted. + Build at: 2023-09-07T10:06:43.972Z - Hash: 2b39fcd4d0e78263 - Time: 32016ms + + DONE Build complete. The dist directory is ready to be deployed. + INFO Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html + diff --git a/src/db/tables/accounts.ts b/src/db/tables/accounts.ts index d31f1608..63f4c6a5 100644 --- a/src/db/tables/accounts.ts +++ b/src/db/tables/accounts.ts @@ -1,17 +1,50 @@ +/** + * Represents an account stored in the database. + */ export type Account = { - id?: number; // auto-generated by Dexie + /** + * Auto-generated ID by Dexie. + */ + id?: number; + + /** + * The date the account was created. + */ dateCreated: string; + + /** + * The derivation path for the account. + */ derivationPath: string; + + /** + * Decentralized Identifier (DID) for the account. + */ did: string; - // stringified JSON containing underlying key material of type IIdentifier - // https://github.com/uport-project/veramo/blob/next/packages/core-types/src/types/IIdentifier.ts + + /** + * Stringified JSON containing underlying key material. + * Based on the IIdentifier type from Veramo. + * @see {@link https://github.com/uport-project/veramo/blob/next/packages/core-types/src/types/IIdentifier.ts} + */ identity: string; + + /** + * The public key in hexadecimal format. + */ publicKeyHex: string; + + /** + * The mnemonic passphrase for the account. + */ mnemonic: string; }; -// mark encrypted field by starting with a $ character -// see https://github.com/PVermeer/dexie-addon-suite-monorepo/tree/master/packages/dexie-encrypted-addon +/** + * Schema for the accounts table in the database. + * Fields starting with a $ character are encrypted. + * @see {@link https://github.com/PVermeer/dexie-addon-suite-monorepo/tree/master/packages/dexie-encrypted-addon} + */ export const AccountsSchema = { accounts: "++id, dateCreated, derivationPath, did, $identity, $mnemonic, publicKeyHex", diff --git a/src/libs/endorserServer.ts b/src/libs/endorserServer.ts index 4aab30a8..ce7093a9 100644 --- a/src/libs/endorserServer.ts +++ b/src/libs/endorserServer.ts @@ -115,24 +115,20 @@ export function isHiddenDid(did: string) { export function didInfo( did: string, activeDid: string, - allMyDids: Array, - contacts: Array, + allMyDids: string[], + contacts: Contact[], ): string { - const myId: string | undefined = R.find(R.equals(did), allMyDids); - if (myId) { - return "You" + (myId !== activeDid ? " (Alt ID)" : ""); - } else { - const contact: Contact | undefined = R.find((c) => c.did === did, contacts); - if (contact) { - return contact.name || "Someone Unnamed in Contacts"; - } else if (!did) { - return "Unspecified Person"; - } else if (isHiddenDid(did)) { - return "Someone Not In Network"; - } else { - return "Someone Not In Contacts"; - } - } + const myId = R.find(R.equals(did), allMyDids); + if (myId) return `You${myId !== activeDid ? " (Alt ID)" : ""}`; + + const contact = R.find((c) => c.did === did, contacts); + return contact + ? contact.name || "Someone Unnamed in Contacts" + : !did + ? "Unspecified Person" + : isHiddenDid(did) + ? "Someone Not In Network" + : "Someone Not In Contacts"; } export interface ResultWithType { @@ -171,30 +167,18 @@ export async function createAndSubmitGive( fulfillsProjectHandleId?: string, ): Promise { try { - // Make a claim const vcClaim: GiveVerifiableCredential = { "@context": "https://schema.org", "@type": "GiveAction", + recipient: toDid ? { identifier: toDid } : undefined, + agent: fromDid ? { identifier: fromDid } : undefined, + description: description || undefined, + object: hours ? { amountOfThisGood: hours, unitCode: "HUR" } : undefined, + fulfills: fulfillsProjectHandleId + ? { "@type": "PlanAction", identifier: fulfillsProjectHandleId } + : undefined, }; - if (toDid) { - vcClaim.recipient = { identifier: toDid }; - } - if (fromDid) { - vcClaim.agent = { identifier: fromDid }; - } - if (description) { - vcClaim.description = description; - } - if (hours) { - vcClaim.object = { amountOfThisGood: hours, unitCode: "HUR" }; - } - if (fulfillsProjectHandleId) { - vcClaim.fulfills = { - "@type": "PlanAction", - identifier: fulfillsProjectHandleId, - }; - } - // Make a payload for the claim + const vcPayload = { vc: { "@context": ["https://www.w3.org/2018/credentials/v1"], @@ -205,14 +189,7 @@ export async function createAndSubmitGive( // Create a signature using private key of identity const firstKey = identity.keys[0]; - if (!firstKey || !firstKey.privateKeyHex) { - throw { - error: "No private key", - message: `Your identifier ${identity.did} is not configured correctly. Use a different identifier.`, - }; - } - - const privateKeyHex = firstKey.privateKeyHex; + const privateKeyHex = firstKey?.privateKeyHex; if (!privateKeyHex) { throw { @@ -222,48 +199,35 @@ export async function createAndSubmitGive( } const signer = await SimpleSigner(privateKeyHex); - const alg = undefined; // Create a JWT for the request - const vcJwt: string = await didJwt.createJWT(vcPayload, { - alg: alg, issuer: identity.did, - signer: signer, + signer, }); // Make the xhr request payload - const payload = JSON.stringify({ jwtEncoded: vcJwt }); - const url = apiServer + "/api/v2/claim"; + const url = `${apiServer}/api/v2/claim`; const token = await accessToken(identity); - const headers = { - "Content-Type": "application/json", - Authorization: "Bearer " + token, - }; - const response = await axios.post(url, payload, { headers }); - return { - type: "success", - response, - }; + const response = await axios.post(url, payload, { + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + return { type: "success", response }; } catch (error: unknown) { - let errorMessage: string; - - if (error instanceof Error) { - // If it's a JavaScript Error object - errorMessage = error.message; - } else if ( - typeof error === "object" && - error !== null && - "message" in error - ) { - // If it's an object that has a 'message' property - errorMessage = (error as { message: string }).message; - } else { - // Unknown error shape, default message - errorMessage = "Unknown error"; - } + const errorMessage: string = + error === null + ? "Null error" + : error instanceof Error + ? error.message + : typeof error === "object" && error !== null && "message" in error + ? (error as { message: string }).message + : "Unknown error"; return { type: "error", diff --git a/src/views/AccountViewView.vue b/src/views/AccountViewView.vue index 54f00d2c..a46e9ffc 100644 --- a/src/views/AccountViewView.vue +++ b/src/views/AccountViewView.vue @@ -334,7 +334,7 @@