From 38530eb35a97fb6b887d84520f6c81ed149cd33e Mon Sep 17 00:00:00 2001 From: "D.V.D" Date: Fri, 22 Oct 2021 11:28:27 +0300 Subject: [PATCH 01/10] chore: add workspace --- .vscode/fucr.code-workspace | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .vscode/fucr.code-workspace diff --git a/.vscode/fucr.code-workspace b/.vscode/fucr.code-workspace new file mode 100644 index 0000000..b1b825a --- /dev/null +++ b/.vscode/fucr.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": ".." + } + ], + "settings": {} +} From a2b7185bed7d10174f0482efa3e485ec7a19e762 Mon Sep 17 00:00:00 2001 From: "D.V.D" Date: Fri, 22 Oct 2021 11:59:45 +0300 Subject: [PATCH 02/10] feat: add Affinidy login request --- docker-compose.yml | 6 +- web/package-lock.json | 1352 ++++++++++++++++++++- web/package.json | 1 + web/src/auth/forms/AffinidiSignInForm.tsx | 77 ++ web/src/pages/auth/signin.tsx | 35 + web/src/pages/index.tsx | 4 + 6 files changed, 1443 insertions(+), 32 deletions(-) create mode 100644 web/src/auth/forms/AffinidiSignInForm.tsx create mode 100644 web/src/pages/auth/signin.tsx diff --git a/docker-compose.yml b/docker-compose.yml index b5cf010..5ede95f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,8 @@ # production config -version: '3.4' +version: "3.4" services: web: - image: 'fucr_web' + image: "fucr_web" build: context: ./web dockerfile: ./Dockerfile @@ -11,3 +11,5 @@ services: - NODE_ENV=production - DEBUG - WEBSITE_URL + - NEXT_PUBLIC_AFFINIDI_ENV + - NEXT_PUBLIC_AFFINIDI_API_KEY diff --git a/web/package-lock.json b/web/package-lock.json index e78937f..d9a7e62 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -4,6 +4,226 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@affinidi/affinidi-did-auth-lib": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@affinidi/affinidi-did-auth-lib/-/affinidi-did-auth-lib-2.0.0-beta.1.tgz", + "integrity": "sha512-I/0vmbvsvTQ0+WDhMfu4fgZvtuziZAHJihCxLZi8RIoDWiWnMZ45H92kkzeotGTnSQ+qoreDNUmPb9aLTyUpxg==", + "requires": { + "@affinidi/common": "^2.0.0-beta.20", + "@affinidi/internal-api-clients": "^1.0.0-beta.14", + "@affinidi/tools-common": "^1.0.0-beta.1", + "did-resolver": "^2.0.1" + } + }, + "@affinidi/affinity-metrics-lib": { + "version": "0.0.25", + "resolved": "https://registry.npmjs.org/@affinidi/affinity-metrics-lib/-/affinity-metrics-lib-0.0.25.tgz", + "integrity": "sha512-Bc1duaex2WYGxdJfbkvgsTEPglBFx7gl5Ak/CjqrI9rPynuXloGE+PP5DcfdYWgLrERFG4EO4QvtzqrHosdyHQ==", + "requires": { + "keccak256": "^1.0.0", + "node-fetch": "^2.6.0" + } + }, + "@affinidi/common": { + "version": "2.0.0-beta.20", + "resolved": "https://registry.npmjs.org/@affinidi/common/-/common-2.0.0-beta.20.tgz", + "integrity": "sha512-fvKtrR7cjCSVpEaJNq4X76OLT+IQEt2fDE1riVo0M7ubNR81L9kE7iLyVAknkFWLjrHvmtypNJZ/81guMn/8yg==", + "requires": { + "@affinidi/affinity-metrics-lib": "^0.0.25", + "@affinidi/internal-api-clients": "^1.0.0-beta.14", + "@affinidi/tiny-lds-ecdsa-secp256k1-2019": "^1.1.1", + "@affinidi/tools-common": "^1.0.0-beta.2", + "@affinidi/vc-common": "^1.4.2", + "base64url": "^3.0.1", + "bip32": "^2.0.5", + "browserify-aes": "^1.2.0", + "create-hash": "^1.2.0", + "did-resolver": "^2.0.1", + "ethereumjs-util": "^5.0.0", + "jsonld": "^4.0.1", + "keccak256": "^1.0.0", + "multihashes": "^3.0.0", + "node-fetch": "^2.6.0", + "randombytes": "^2.1.0", + "secp256k1": "^4.0.1", + "tiny-secp256k1": "^1.1.5", + "tslib": "^2.2.0", + "vc-revocation-list": "^3.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@affinidi/internal-api-clients": { + "version": "1.0.0-beta.14", + "resolved": "https://registry.npmjs.org/@affinidi/internal-api-clients/-/internal-api-clients-1.0.0-beta.14.tgz", + "integrity": "sha512-NERsv9ExjeHxeUGhfDz6JilvKSBxoU0tZ2DJ8SZiJl6KOvf4Poa0orf2i2mxUwJVlDrjUT4/84VdGinDAHBPHw==", + "requires": { + "@affinidi/tools-common": "^1.0.0-beta.2", + "lodash.keyby": "^4.6.0", + "lodash.mapvalues": "^4.6.0", + "node-fetch": "^2.6.0" + } + }, + "@affinidi/issuer-email-ses-client": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@affinidi/issuer-email-ses-client/-/issuer-email-ses-client-0.1.1.tgz", + "integrity": "sha512-8IifJVcmvBT9f9PN5CnTiu2/oY3mA5HtTJFbT8i1PWm7QW/rlVpphED+yvqJyUVXAePWkxOX/yfJzhZwBBvSTQ==", + "requires": { + "axios": "0.21.1" + } + }, + "@affinidi/issuer-phone-twilio-client": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@affinidi/issuer-phone-twilio-client/-/issuer-phone-twilio-client-0.1.1.tgz", + "integrity": "sha512-WQverPIihktjQt2aJ/xw+EC8h4XRjD1yt6zfTCrEzsmLcTVOe3G/rr3EAR3rtCu+uV3OAH8z/O9HtOe9GzpMNQ==", + "requires": { + "axios": "^0.21.1" + } + }, + "@affinidi/tiny-lds-ecdsa-secp256k1-2019": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@affinidi/tiny-lds-ecdsa-secp256k1-2019/-/tiny-lds-ecdsa-secp256k1-2019-1.1.1.tgz", + "integrity": "sha512-9WWI/KUj6EV2mAA/6VtSym5HwzcgSD8o8ZOABY7nXkNleq9I2d7Sw7p8IvflmWCue9+uD1UbqLG1XqRx7KRFcw==", + "requires": { + "base64url": "^3.0.1", + "create-hash": "^1.2.0", + "jsonld": "^4.0.1", + "jsonld-signatures": "^7.0.0", + "tiny-secp256k1": "^1.1.6", + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@affinidi/tools-common": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/@affinidi/tools-common/-/tools-common-1.0.0-beta.2.tgz", + "integrity": "sha512-qZ1LpSOmTlbldH2phTTzz6bglB1ykI/MrVuKZl1aSGrgTSQaH7vzLSepeYdze3w/ZOAVj1oj4nJPPU8F7pTe9g==", + "requires": { + "base64url": "^3.0.1", + "jsontokens": "^3.0.0", + "randombytes": "^2.1.0", + "tslib": "^2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@affinidi/vc-common": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@affinidi/vc-common/-/vc-common-1.4.2.tgz", + "integrity": "sha512-ixzop8uirqnd7suJPs+TMcFPhQfUysNahz5M5e1PHgy7wf/E3O0ux4r8UdQKCVxuxP8rRl4meFC0eggTGvpB6w==", + "requires": { + "did-resolver": "^3.1.0", + "jsonld-signatures": "^7.0.0", + "tiny-warning": "^1.0.3", + "tslib": "^2.0.1" + }, + "dependencies": { + "did-resolver": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-3.1.2.tgz", + "integrity": "sha512-z0F571S95ZKES452sLyFSfUtQrvcW5OgZVCFq7D6gKReonTflgzdD6dcs27HbjUPXwTaXR9lzGFrA3mUd2K6uw==" + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@affinidi/vc-data": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@affinidi/vc-data/-/vc-data-1.4.1.tgz", + "integrity": "sha512-dc3JCnALL8kWyYDgoGAplMDdHFoaU19EkPtiiwSrkFBGyrcGngZxaQkHzmPyOfM9gNiwzNBxB7/OlFdDxJdMMw==", + "requires": { + "@affinidi/vc-common": "^1.3.0", + "@ahryman40k/ts-fhir-types": "^4.0.34", + "ts-toolbelt": "^6.4.2", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@affinidi/wallet-browser-sdk": { + "version": "6.0.0-beta.20", + "resolved": "https://registry.npmjs.org/@affinidi/wallet-browser-sdk/-/wallet-browser-sdk-6.0.0-beta.20.tgz", + "integrity": "sha512-pytbM6UXefpBNSYLKzsqfgnBSdWlqVxNZXVR+L22J5GAhyMtC+GoEazPUsWgCuj9vTSuAFIL38KEeaWpfT15bA==", + "requires": { + "@affinidi/wallet-core-sdk": "^6.0.0-beta.20", + "eccrypto-js": "^5.0.0", + "randombytes": "^2.1.0" + } + }, + "@affinidi/wallet-core-sdk": { + "version": "6.0.0-beta.20", + "resolved": "https://registry.npmjs.org/@affinidi/wallet-core-sdk/-/wallet-core-sdk-6.0.0-beta.20.tgz", + "integrity": "sha512-7YCdXgESh+KBeFoOI4ZN2uPHQGFAMyeyNyHXD8XhaWoND33RiMAwE9PV8smwAEuTrDrdfC04VGdWHF4ROmH1oQ==", + "requires": { + "@affinidi/affinidi-did-auth-lib": "^2.0.0-beta.1", + "@affinidi/affinity-metrics-lib": "^0.0.25", + "@affinidi/common": "^2.0.0-beta.20", + "@affinidi/internal-api-clients": "^1.0.0-beta.14", + "@affinidi/issuer-email-ses-client": "^0.1.1", + "@affinidi/issuer-phone-twilio-client": "^0.1.1", + "@affinidi/tools-common": "^1.0.0-beta.2", + "@affinidi/vc-common": "^1.4.2", + "@affinidi/vc-data": "^1.3.3", + "ajv": "^6.12.3", + "async-retry": "^1.3.1", + "aws-sdk": "^2.721.0", + "bip32": "^2.0.5", + "class-validator": "^0.13.1", + "create-hash": "^1.2.0", + "did-resolver": "^2.0.1", + "ethereumjs-util": "^5.0.0", + "fluent-schema": "^1.0.4", + "keccak256": "^1.0.0", + "lodash.keyby": "^4.6.0", + "lodash.uniq": "^4.5.0", + "node-fetch": "^2.6.0", + "randombytes": "^2.1.0", + "secp256k1": "^4.0.2", + "tslib": "^2.0.0", + "uuid": "^8.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@ahryman40k/ts-fhir-types": { + "version": "4.0.36", + "resolved": "https://registry.npmjs.org/@ahryman40k/ts-fhir-types/-/ts-fhir-types-4.0.36.tgz", + "integrity": "sha512-MuTxKnhpdwh4HEHML+HbZxYKlFdl7ikiTk8o3sDy98cnN2IuNSsodkWMbr6R2qOiTjCPsY5B1vcY6AkH6AY03Q==", + "requires": { + "fp-ts": "^2.8.3", + "io-ts": "^2.0.0", + "reflect-metadata": "^0.1.13" + } + }, "@babel/code-frame": { "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", @@ -619,6 +839,80 @@ "minimist": "^1.2.0" } }, + "@digitalbazaar/bitstring": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/bitstring/-/bitstring-1.2.0.tgz", + "integrity": "sha512-l+/LPBeikkIorRXTwRgzbnE09cMzV1MXNc52kFw4guIQy30MPAdoj8i+ajvyv/2saCnebXgM4jsDXlJSseGV7A==", + "requires": { + "base64url-universal": "^1.1.0", + "esm": "^3.2.25", + "pako": "^1.0.11" + } + }, + "@digitalbazaar/http-client": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-1.2.0.tgz", + "integrity": "sha512-W9KQQ5pUJcaR0I4c2HPJC0a7kRbZApIorZgPnEDwMBgj16iQzutGLrCXYaZOmxqVLVNqqlQ4aUJh+HBQZy4W6Q==", + "requires": { + "esm": "^3.2.22", + "ky": "^0.25.1", + "ky-universal": "^0.8.2" + } + }, + "@digitalbazaar/vc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/vc/-/vc-1.0.0.tgz", + "integrity": "sha512-DCbCEuKtoGzgEg48VHGbbFPJukqH/GgXx18iCqhMnzeBaqq7AhhxJ8AcgvqDiBZ2vpx4EVq851wO8iKFR6DDaQ==", + "requires": { + "credentials-context": "^1.0.0", + "jsonld": "^5.2.0", + "jsonld-signatures": "^9.0.2" + }, + "dependencies": { + "jsonld": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-5.2.0.tgz", + "integrity": "sha512-JymgT6Xzk5CHEmHuEyvoTNviEPxv6ihLWSPu1gFdtjSAyM6cFqNrv02yS/SIur3BBIkCf0HjizRc24d8/FfQKw==", + "requires": { + "@digitalbazaar/http-client": "^1.1.0", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.0.0" + } + }, + "jsonld-signatures": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/jsonld-signatures/-/jsonld-signatures-9.3.0.tgz", + "integrity": "sha512-I52f8AmCoaUuM7gbFUGu9Ir3odGWOmQPlNPE/VYbiRrC3UfIRig0hYhNFkcVhe0ZXsE5L0if6Fo5SutKFqs3uQ==", + "requires": { + "jsonld": "^5.0.0", + "security-context": "^4.0.0", + "serialize-error": "^8.0.1" + } + }, + "rdf-canonize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.0.0.tgz", + "integrity": "sha512-LXRkhab1QaPJnhUIt1gtXXKswQCZ9zpflsSZFczG7mCLAkMvVjdqCGk9VXCUss0aOUeEyV2jtFxGcdX8DSkj9w==", + "requires": { + "setimmediate": "^1.0.5" + } + }, + "serialize-error": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", + "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + } + } + }, "@eslint/eslintrc": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", @@ -1197,6 +1491,11 @@ } } }, + "@multiformats/base-x": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", + "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" + }, "@next/env": { "version": "10.2.3", "resolved": "https://registry.npmjs.org/@next/env/-/env-10.2.3.tgz", @@ -1402,6 +1701,14 @@ "@babel/types": "^7.3.0" } }, + "@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "requires": { + "@types/node": "*" + } + }, "@types/body-parser": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", @@ -1442,6 +1749,14 @@ "integrity": "sha512-7fDOJFA/x8B+sO1901BmHlf5dE1cxBU8mRXj8QOEDnn16hhGJv/IHxJtZhvsabZsIMn0eLIyeOKAeqSNJJYTpA==", "dev": true }, + "@types/elliptic": { + "version": "6.4.13", + "resolved": "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.13.tgz", + "integrity": "sha512-e8iyLJ8vMLpWxXpVWrIt0ujqsfHWgVe5XAz9IMhBYoDirK6th7J+mHjzp797OLc62ZX419nrlwwzsNAA0a0mKg==", + "requires": { + "@types/bn.js": "*" + } + }, "@types/express": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", @@ -1546,8 +1861,7 @@ "@types/node": { "version": "14.17.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==", - "dev": true + "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -1595,6 +1909,14 @@ "@types/passport": "*" } }, + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "requires": { + "@types/node": "*" + } + }, "@types/pg": { "version": "7.14.11", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-7.14.11.tgz", @@ -1661,6 +1983,14 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, + "@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "requires": { + "@types/node": "*" + } + }, "@types/serve-static": { "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", @@ -1677,6 +2007,11 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "@types/validator": { + "version": "13.6.4", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.6.4.tgz", + "integrity": "sha512-M9Lk74A8hjJIxnSW1+TcPo7Iv4arXBUvd91HuucGPjXVKRAhFHWP5HFpWjxhNWrm7HYoJwuyWpB+BKLgFYHq4w==" + }, "@types/warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", @@ -1801,12 +2136,26 @@ "eslint-visitor-keys": "^2.0.0" } }, + "@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "optional": true + }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -1835,6 +2184,11 @@ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, + "aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -1848,7 +2202,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1970,6 +2323,14 @@ "function-bind": "^1.1.1" } }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, "asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -1999,6 +2360,11 @@ "util": "^0.12.0" } }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -2016,11 +2382,18 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, + "async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "requires": { + "retry": "0.13.1" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { "version": "2.1.2", @@ -2033,6 +2406,86 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz", "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==" }, + "aws-sdk": { + "version": "2.1012.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1012.0.tgz", + "integrity": "sha512-5F/tC+mOJSTq4BTWqg6DepDIC7h+OeUycCYsFU6fMblQCUEBuI11o8z/+2DxGt4c40f52OstalYNiSlP2RuZvw==", + "requires": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.15.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "uuid": "3.3.2", + "xml2js": "0.4.19" + }, + "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, "babel-jest": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", @@ -2221,6 +2674,14 @@ } } }, + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -2231,6 +2692,22 @@ "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" }, + "base64url-universal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/base64url-universal/-/base64url-universal-1.1.0.tgz", + "integrity": "sha512-WyftvZqye29YQ10ZnuiBeEj0lk8SN8xHU9hOznkLc85wS1cLTp6RpzlMrHxMPD9nH7S55gsBqMqgGyz93rqmkA==", + "requires": { + "base64url": "^3.0.0" + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -2241,6 +2718,48 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bip32": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", + "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", + "requires": { + "@types/node": "10.12.18", + "bs58check": "^2.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "tiny-secp256k1": "^1.1.3", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "dependencies": { + "@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + } + } + }, + "bip66": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", + "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "blakejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", + "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==" + }, "bn.js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", @@ -2373,6 +2892,24 @@ "fast-json-stable-stringify": "2.x" } }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, "bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -2455,6 +2992,11 @@ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==" }, + "canonicalize": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.5.tgz", + "integrity": "sha512-mAjKJPIyP0xqqv6IAkvso07StOmz6cmGtNDg3pXCSzXVZOqka7StIkAhJl/zHOi4M2CgpYfD6aeRWbnrmtvBEA==" + }, "capture-exit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", @@ -2464,6 +3006,11 @@ "rsvp": "^4.8.4" } }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -2539,6 +3086,16 @@ } } }, + "class-validator": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.1.tgz", + "integrity": "sha512-zWIeYFhUitvAHBwNhDdCRK09hWx+P0HUwFE8US8/CxFpMVzkUK8RJl7yOIE+BVu2lxyPNgeOaFv78tLE47jBIg==", + "requires": { + "@types/validator": "^13.1.3", + "libphonenumber-js": "^1.9.7", + "validator": "^13.5.2" + } + }, "classnames": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", @@ -2604,7 +3161,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -2761,6 +3317,11 @@ "sha.js": "^2.4.8" } }, + "credentials-context": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/credentials-context/-/credentials-context-1.0.0.tgz", + "integrity": "sha512-rF3GPhTUGY58xlpuVRif/1i0BxVpynpmFdGNS81S2ezdKPSKoFke5ZOZWB8ZUvGi8bV8CuDM+ZcM/uf4z0PQVQ==" + }, "cross-fetch": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", @@ -2799,6 +3360,18 @@ "randomfill": "^1.0.3" } }, + "crypto-ld": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/crypto-ld/-/crypto-ld-3.9.0.tgz", + "integrity": "sha512-PFE7V6A2QNnUp6iiPVEZI4p8wsztkEWLbY1BAXVnclm/aw4KGwpJ+1Ds4vQUCJ5BsWxj15fwE5rHQ8AWaWB2nw==", + "requires": { + "base64url-universal": "^1.0.1", + "bs58": "^4.0.1", + "node-forge": "~0.10.0", + "semver": "^6.2.0", + "sodium-native": "^3.2.0" + } + }, "css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", @@ -2848,6 +3421,14 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "data-uri-to-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", @@ -2947,8 +3528,7 @@ "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" }, "define-properties": { "version": "1.1.3", @@ -3002,8 +3582,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "denque": { "version": "1.5.0", @@ -3035,6 +3614,11 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, + "did-resolver": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-2.2.0.tgz", + "integrity": "sha512-/u7dSTZFGfKepEx7mi9JOMWJzUUxnJ+8M5OqB/JeVGvhWBp/PwriB7Z/2ke00biPNOUmS6oEpHxbm8b0/4uHjg==" + }, "diff-sequences": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", @@ -3112,6 +3696,69 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" }, + "drbg.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", + "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", + "requires": { + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "eccrypto-js": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eccrypto-js/-/eccrypto-js-5.4.0.tgz", + "integrity": "sha512-W4xBr0UANgpkSIu2FBHG5wjhvOR4L19HwAUm9xiA4c3bzB9gGbH8+E9hSMTNF+QbmEi+TDvt373JHKA6NnW38A==", + "requires": { + "aes-js": "3.1.2", + "enc-utils": "2.1.0", + "hash.js": "1.1.7", + "js-sha3": "0.8.0", + "pbkdf2": "^3.0.17", + "randombytes": "2.1.0", + "secp256k1": "3.8.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "secp256k1": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", + "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", + "requires": { + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.5.2", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" + } + } + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, "electron-to-chromium": { "version": "1.3.779", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.779.tgz", @@ -3155,6 +3802,23 @@ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, + "enc-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/enc-utils/-/enc-utils-2.1.0.tgz", + "integrity": "sha512-VD0eunGDyzhojePzkORWDnW88gi6tIeGb5Z6QVHugux6mMAPiXyw94fb/7WdDQEWhKMSoYRyzFFUebCqeH20PA==", + "requires": { + "bn.js": "4.11.8", + "is-typedarray": "1.0.0", + "typedarray-to-buffer": "3.1.5" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + } + } + }, "encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", @@ -3535,6 +4199,11 @@ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" + }, "espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -3610,6 +4279,63 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -3792,6 +4518,11 @@ } } }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -3878,6 +4609,11 @@ } } }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3905,8 +4641,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -3932,6 +4667,11 @@ "bser": "2.1.1" } }, + "fetch-blob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-2.1.2.tgz", + "integrity": "sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==" + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -3941,6 +4681,11 @@ "flat-cache": "^3.0.4" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -3984,6 +4729,19 @@ "integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==", "dev": true }, + "fluent-schema": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fluent-schema/-/fluent-schema-1.1.0.tgz", + "integrity": "sha512-nj30FPdDFpoQmS3LtFbgozLpe+Y7cKBBK9ym564lHk1agUIwo4zV3dqygGe3l1NZek0uEtbz6EpCeNBt3wTcTQ==", + "requires": { + "deepmerge": "^4.2.2" + } + }, + "follow-redirects": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -3995,6 +4753,11 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, "form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -4006,6 +4769,11 @@ "mime-types": "^2.1.12" } }, + "fp-ts": { + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.11.5.tgz", + "integrity": "sha512-OqlwJq1BdpB83BZXTqI+dNcA6uYk6qk4u9Cgnt64Y+XS7dwdbp/mobx8S2KXf2AXH+scNmA/UVK3SEFHR3vHZA==" + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -4089,6 +4857,14 @@ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -4164,6 +4940,20 @@ "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -4329,6 +5119,16 @@ "debug": "4" } }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -4429,6 +5229,11 @@ "loose-envify": "^1.0.0" } }, + "io-ts": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-2.2.16.tgz", + "integrity": "sha512-y5TTSa6VP6le0hhmIyN0dqEXkrZeJLeC5KApJq6VLci3UEKF80lZ+KuoUs02RhBxNWlrqSNxzfI7otLX1Euv8Q==" + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -4600,6 +5405,11 @@ "is-extglob": "^2.1.1" } }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" + }, "is-nan": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", @@ -4682,8 +5492,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-windows": { "version": "1.0.2", @@ -4727,6 +5536,11 @@ "unfetch": "^4.2.0" } }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, "istanbul-lib-coverage": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", @@ -6077,11 +6891,21 @@ } } }, + "jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" + }, "js-cookie": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6097,6 +6921,11 @@ "esprima": "^4.0.0" } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, "jsdom": { "version": "16.6.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz", @@ -6178,11 +7007,15 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -6190,6 +7023,11 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -6198,6 +7036,71 @@ "minimist": "^1.2.0" } }, + "jsonld": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-4.0.1.tgz", + "integrity": "sha512-ltEqMQB37ZxZnsgmI+9rqHYkz1M6PqUykuS1t2aQNuH1oiLrUDYz5nyVkHQDgjFd7CFKTIWeLiNhwdwFrH5o5A==", + "requires": { + "canonicalize": "^1.0.1", + "lru-cache": "^5.1.1", + "object.fromentries": "^2.0.2", + "rdf-canonize": "^2.0.1", + "request": "^2.88.0", + "semver": "^6.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "jsonld-signatures": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jsonld-signatures/-/jsonld-signatures-7.0.0.tgz", + "integrity": "sha512-J/nA+llcYYjErPHG9WFpXvR82TOg5fbHk/7rXbx4Ts854DPReaKAAd0hAZ+s5/P2WIIAZPIHCqA+iz1QrOqeiQ==", + "requires": { + "base64url": "^3.0.1", + "crypto-ld": "^3.7.0", + "jsonld": "^4.0.1", + "node-forge": "^0.10.0", + "security-context": "^4.0.0", + "serialize-error": "^5.0.0" + } + }, + "jsontokens": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsontokens/-/jsontokens-3.0.0.tgz", + "integrity": "sha512-P0QZC5AjOkn3t1ej6OuI7+XqoEctYj83UK4pw0WpHY4/z6a5PpZCJSpp5NZodq94GFkw2PfB9DPFoDM5qpyp/g==", + "requires": { + "@types/elliptic": "^6.4.9", + "asn1.js": "^5.0.1", + "base64url": "^3.0.1", + "ecdsa-sig-formatter": "^1.0.11", + "elliptic": "^6.4.1", + "sha.js": "^2.4.11" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, "jsx-ast-utils": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", @@ -6208,6 +7111,32 @@ "object.assign": "^4.1.2" } }, + "keccak": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + } + }, + "keccak256": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.3.tgz", + "integrity": "sha512-EkF/4twuPm1V/gn75nejOUrKfDUJn87RMLzDWosXF3pXuOvesiSgX35GcmbqzdImCASEkE/WaklWGWSa+Ha5bQ==", + "requires": { + "bn.js": "^4.11.8", + "keccak": "^3.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, "keygrip": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", @@ -6228,6 +7157,31 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, + "ky": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.25.1.tgz", + "integrity": "sha512-PjpCEWlIU7VpiMVrTwssahkYXX1by6NCT0fhTUX34F3DTinARlgMpriuroolugFPcMgpPWrOW4mTb984Qm1RXA==" + }, + "ky-universal": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.8.2.tgz", + "integrity": "sha512-xe0JaOH9QeYxdyGLnzUOVGK4Z6FGvDVzcXFTdrYA1f33MZdEa45sUDaMBy98xQMcsd2XIBrTXRrRYnegcSdgVQ==", + "requires": { + "abort-controller": "^3.0.0", + "node-fetch": "3.0.0-beta.9" + }, + "dependencies": { + "node-fetch": { + "version": "3.0.0-beta.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0-beta.9.tgz", + "integrity": "sha512-RdbZCEynH2tH46+tj0ua9caUHVWrd/RHnRfvly2EVdqGmI3ndS1Vn/xjm5KuGejDt2RNDQsVRLPNd2QPwcewVg==", + "requires": { + "data-uri-to-buffer": "^3.0.1", + "fetch-blob": "^2.1.1" + } + } + } + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -6244,6 +7198,11 @@ "type-check": "~0.4.0" } }, + "libphonenumber-js": { + "version": "1.9.38", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.38.tgz", + "integrity": "sha512-7CCl9NZPYtX4JNXdvV5RnrQqrXp7LsLOTpYSUfEJBiySEnC5hysdwouXAuWgPDB55D/fpKm4RjM2/tUUh8kuoA==" + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -6298,6 +7257,16 @@ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, + "lodash.keyby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.keyby/-/lodash.keyby-4.6.0.tgz", + "integrity": "sha1-f2oavak/0k4icopNNh7YvLpaQ1Q=" + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -6315,6 +7284,11 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, "lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", @@ -6333,7 +7307,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -6426,14 +7399,12 @@ "mime-db": { "version": "1.48.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", - "dev": true + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" }, "mime-types": { "version": "2.1.31", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", - "dev": true, "requires": { "mime-db": "1.48.0" } @@ -6500,6 +7471,35 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "multibase": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.1.2.tgz", + "integrity": "sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw==", + "requires": { + "@multiformats/base-x": "^4.0.1", + "web-encoding": "^1.0.6" + } + }, + "multiformats": { + "version": "9.4.9", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.4.9.tgz", + "integrity": "sha512-zA84TTJcRfRMpjvYqy63piBbSEdqlIGqNNSpP6kspqtougqjo60PRhIFo+oAxrjkof14WMCImvr7acK6rPpXLw==" + }, + "multihashes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-3.1.2.tgz", + "integrity": "sha512-AP4IoV/YzkNrfbQKZE3OMPibrmy350OmCd6cJkwyM8oExaXIlOY4UnOOVSQtAEuq/LR01XfXKCESidzZvSwHCQ==", + "requires": { + "multibase": "^3.1.0", + "uint8arrays": "^2.0.5", + "varint": "^6.0.0" + } + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" + }, "nanoid": { "version": "3.1.23", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", @@ -6609,11 +7609,26 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + }, "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + }, + "node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" + }, "node-html-parser": { "version": "1.4.9", "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz", @@ -6885,6 +7900,11 @@ "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE=" }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6975,7 +7995,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -7293,6 +8312,11 @@ "sha.js": "^2.4.8" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "pg-int8": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", @@ -7532,8 +8556,7 @@ "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "public-encrypt": { "version": "4.0.3", @@ -7570,6 +8593,11 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, "querystring": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", @@ -7646,6 +8674,15 @@ } } }, + "rdf-canonize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-2.0.1.tgz", + "integrity": "sha512-/GVELjrfW8G/wS4QfDZ5Kq68cS1belVNJqZlcwiErerexeBUsgOINCROnP7UumWIBNdeCwTVLE9NVXMnRYK0lA==", + "requires": { + "semver": "^6.3.0", + "setimmediate": "^1.0.5" + } + }, "react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -7946,6 +8983,11 @@ "redis-errors": "^1.0.0" } }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, "regenerator-runtime": { "version": "0.13.7", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", @@ -8000,6 +9042,59 @@ "integrity": "sha1-EwBR4qzligLqy/ydRIV3pzapJzo=", "dev": true }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -8063,6 +9158,11 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -8087,6 +9187,14 @@ "inherits": "^2.0.1" } }, + "rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "requires": { + "bn.js": "^5.2.0" + } + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -8271,6 +9379,11 @@ "chokidar": ">=3.0.0 <4.0.0" } }, + "sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" + }, "saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", @@ -8297,11 +9410,46 @@ "compute-scroll-into-view": "^1.0.17" } }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "secp256k1": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "requires": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "security-context": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/security-context/-/security-context-4.0.0.tgz", + "integrity": "sha512-yiDCS7tpKQl6p4NG57BdKLTSNLFfj5HosBIzXBl4jZf/qorJzSzbEUIdLhN+vVYgyLlvjixY8DPPTgqI8zvNCA==" + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, + "serialize-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz", + "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==", + "requires": { + "type-fest": "^0.8.0" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -8576,6 +9724,15 @@ } } }, + "sodium-native": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.3.0.tgz", + "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, "source-map": { "version": "0.8.0-beta.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", @@ -8668,6 +9825,22 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", @@ -8861,6 +10034,14 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -9015,6 +10196,30 @@ "setimmediate": "^1.0.4" } }, + "tiny-secp256k1": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz", + "integrity": "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==", + "requires": { + "bindings": "^1.3.0", + "bn.js": "^4.11.8", + "create-hmac": "^1.1.7", + "elliptic": "^6.4.0", + "nan": "^2.13.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, "tlds": { "version": "1.221.1", "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.221.1.tgz", @@ -9149,6 +10354,11 @@ "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" }, + "ts-toolbelt": { + "version": "6.15.5", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz", + "integrity": "sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==" + }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -9174,6 +10384,19 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -9203,11 +10426,15 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, "requires": { "is-typedarray": "^1.0.0" } }, + "typeforce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", + "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" + }, "typescript": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", @@ -9224,6 +10451,14 @@ "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" }, + "uint8arrays": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz", + "integrity": "sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==", + "requires": { + "multiformats": "^9.4.2" + } + }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -9327,7 +10562,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -9399,9 +10633,7 @@ "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "optional": true + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "v8-compile-cache": { "version": "2.3.0", @@ -9438,6 +10670,36 @@ "spdx-expression-parse": "^3.0.0" } }, + "validator": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", + "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==" + }, + "varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" + }, + "vc-revocation-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vc-revocation-list/-/vc-revocation-list-3.0.0.tgz", + "integrity": "sha512-Y4MnRO88idfeZWlxgAD6xd3+B/T5JfTyp0Vp9/pFAJF35SWi6MNp8DRhiwsfAMEZQDieZ4A3nlNgnScUcC5H+g==", + "requires": { + "@digitalbazaar/bitstring": "^1.1.0", + "@digitalbazaar/vc": "^1.0.0", + "esm": "^3.2.25" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -9487,6 +10749,15 @@ "graceful-fs": "^4.1.2" } }, + "web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "requires": { + "@zxing/text-encoding": "0.9.0", + "util": "^0.12.3" + } + }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -9569,6 +10840,14 @@ "is-typed-array": "^1.1.3" } }, + "wif": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", + "integrity": "sha1-CNP1IFbGZnkplyb63g1DKudLRwQ=", + "requires": { + "bs58check": "<3.0.0" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -9642,6 +10921,20 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -9662,8 +10955,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { "version": "15.4.1", diff --git a/web/package.json b/web/package.json index 70aef9c..abccec0 100644 --- a/web/package.json +++ b/web/package.json @@ -17,6 +17,7 @@ "check": "npm run lint-only-errors && npm run type-check" }, "dependencies": { + "@affinidi/wallet-browser-sdk": "^6.0.0-beta.20", "@cloudfour/simple-svg-placeholder": "^1.0.2", "@storeon/localstorage": "^1.4.0", "bootstrap": "^4.6.0", diff --git a/web/src/auth/forms/AffinidiSignInForm.tsx b/web/src/auth/forms/AffinidiSignInForm.tsx new file mode 100644 index 0000000..691eb58 --- /dev/null +++ b/web/src/auth/forms/AffinidiSignInForm.tsx @@ -0,0 +1,77 @@ +import { AffinidiWallet } from '@affinidi/wallet-browser-sdk' +import clsx from 'clsx' +import React, { ReactElement, ReactNode } from 'react' +import { useForm } from 'react-hook-form' +import { SubmitButton } from '~/lib/forms/SubmitButton' + +type FormData = { + username: string // email or phone number +} + +const options = { + env: process.env.NEXT_PUBLIC_AFFINIDI_ENV, + apiKey: process.env.NEXT_PUBLIC_AFFINIDI_API_KEY +} + +export function AffinidiSignInForm({ + onFinish +}: { + onFinish: (result: { + username: string + signInToken?: string + error?: Error + }) => void +}): ReactElement { + const { + register, + formState: { errors }, + handleSubmit + } = useForm({ defaultValues: {} }) + const isInvalid = errors.username + + // TODO: add email validation + const onSubmit = async ({ username }: FormData) => { + if (errors.username || !username) return + + try { + console.log('token') + const signInToken = await AffinidiWallet.initiateSignInPasswordless( + options, + username + ) + onFinish({ username, signInToken }) + } catch (error) { + console.error('AffinidiSignInForm', error) + onFinish({ username, error: error as Error }) + } + } + + return ( +
+
+ +
+ + + + +
+ ) +} + +function FormFooter({ children }: { children: ReactNode }) { + return ( +
+ {children} +
+ ) +} diff --git a/web/src/pages/auth/signin.tsx b/web/src/pages/auth/signin.tsx new file mode 100644 index 0000000..14fb2bf --- /dev/null +++ b/web/src/pages/auth/signin.tsx @@ -0,0 +1,35 @@ +import * as React from 'react' +import Layout from '~/ui/Layout' +import Button from 'react-bootstrap/Button' +import { useRouter } from 'next/router' +import { useMe } from '~/store' + +import { AffinidiSignInForm } from '~/auth/forms/AffinidiSignInForm' + +const LoginPage: React.FunctionComponent = () => { + const router = useRouter() + const { dispatch } = useMe() + function login(user) { + //TODO: check code + console.log('login', user) + if (!user) return + // TODO: prompt user to export account first + dispatch('me/init') + router.push('/') + } + + return ( + +

+ Sign in (managed by Affinidi) +

+ +

+ If you have user account created early, you can import it from file. +

+ +
+ ) +} + +export default LoginPage diff --git a/web/src/pages/index.tsx b/web/src/pages/index.tsx index 4b16db9..8681b26 100644 --- a/web/src/pages/index.tsx +++ b/web/src/pages/index.tsx @@ -45,6 +45,10 @@ function Setup() {

To start publishing and reading you need an account.

Please + + or {' '} From e4eeddf3c76381659d0c22b741420e7eb86bd899 Mon Sep 17 00:00:00 2001 From: "D.V.D" Date: Fri, 22 Oct 2021 15:27:29 +0300 Subject: [PATCH 03/10] chore: import Affinidi types --- .vscode/fucr.code-workspace | 6 +++++- web/src/auth/forms/AffinidiSignInForm.tsx | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.vscode/fucr.code-workspace b/.vscode/fucr.code-workspace index b1b825a..27bae6a 100644 --- a/.vscode/fucr.code-workspace +++ b/.vscode/fucr.code-workspace @@ -4,5 +4,9 @@ "path": ".." } ], - "settings": {} + "settings": { + "cSpell.words": [ + "Affinidi" + ] + } } diff --git a/web/src/auth/forms/AffinidiSignInForm.tsx b/web/src/auth/forms/AffinidiSignInForm.tsx index 691eb58..bd9c97c 100644 --- a/web/src/auth/forms/AffinidiSignInForm.tsx +++ b/web/src/auth/forms/AffinidiSignInForm.tsx @@ -3,13 +3,13 @@ import clsx from 'clsx' import React, { ReactElement, ReactNode } from 'react' import { useForm } from 'react-hook-form' import { SubmitButton } from '~/lib/forms/SubmitButton' - +import { Types as AffinidiTypes } from '@affinidi/wallet-browser-sdk' type FormData = { username: string // email or phone number } const options = { - env: process.env.NEXT_PUBLIC_AFFINIDI_ENV, + env: process.env.NEXT_PUBLIC_AFFINIDI_ENV as AffinidiTypes.Env, apiKey: process.env.NEXT_PUBLIC_AFFINIDI_API_KEY } From 52e71d544667e61aac339bd5d1db0fd5e014d133 Mon Sep 17 00:00:00 2001 From: "D.V.D" Date: Fri, 22 Oct 2021 18:31:18 +0300 Subject: [PATCH 04/10] feat: add confirmation code support --- .vscode/fucr.code-workspace | 3 +- docker-compose.yml | 1 + .../forms/AffinidiConfirmationCodeForm.tsx | 72 +++++++++++++++++++ web/src/auth/forms/AffinidiSignInForm.tsx | 24 +++---- web/src/config.ts | 10 ++- web/src/pages/auth/signin.tsx | 22 +++++- 6 files changed, 111 insertions(+), 21 deletions(-) create mode 100644 web/src/auth/forms/AffinidiConfirmationCodeForm.tsx diff --git a/.vscode/fucr.code-workspace b/.vscode/fucr.code-workspace index 27bae6a..441887a 100644 --- a/.vscode/fucr.code-workspace +++ b/.vscode/fucr.code-workspace @@ -6,7 +6,8 @@ ], "settings": { "cSpell.words": [ - "Affinidi" + "Affinidi", + "Passwordless" ] } } diff --git a/docker-compose.yml b/docker-compose.yml index 5ede95f..d8edf10 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,3 +13,4 @@ services: - WEBSITE_URL - NEXT_PUBLIC_AFFINIDI_ENV - NEXT_PUBLIC_AFFINIDI_API_KEY + - NEXT_PUBLIC_AFFINIDI_API_KEY_HASH diff --git a/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx b/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx new file mode 100644 index 0000000..4967473 --- /dev/null +++ b/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx @@ -0,0 +1,72 @@ +import { AffinidiWallet } from '@affinidi/wallet-browser-sdk' +import clsx from 'clsx' +import React, { ReactElement, ReactNode } from 'react' +import { useForm } from 'react-hook-form' +import { SubmitButton } from '~/lib/forms/SubmitButton' +import { dispatchError } from '~/store' +import { AFFINIDI_OPTIONS } from '~/config' + +type FormData = { + code: string // email or phone number +} + +export function AffinidiConfirmationCodeForm({ + userToken, + onFinish +}: { + userToken: string + onFinish: (result: { wallet?: unknown; error?: Error }) => void +}): ReactElement { + const { + register, + formState: { errors }, + handleSubmit + } = useForm({ defaultValues: {} }) + const isInvalid = errors.code + + // TODO: add email validation + const onSubmit = async ({ code }: FormData) => { + if (errors.code || !code) return + + try { + console.log('token') + const wallet = await AffinidiWallet.confirmSignIn( + userToken, + code, + AFFINIDI_OPTIONS + ) + onFinish({ wallet }) + } catch (error) { + dispatchError(error as Error) + } + } + + return ( +

+
+ +
+ + + + +
+ ) +} + +function FormFooter({ children }: { children: ReactNode }) { + return ( +
+ {children} +
+ ) +} diff --git a/web/src/auth/forms/AffinidiSignInForm.tsx b/web/src/auth/forms/AffinidiSignInForm.tsx index bd9c97c..af272b4 100644 --- a/web/src/auth/forms/AffinidiSignInForm.tsx +++ b/web/src/auth/forms/AffinidiSignInForm.tsx @@ -3,24 +3,17 @@ import clsx from 'clsx' import React, { ReactElement, ReactNode } from 'react' import { useForm } from 'react-hook-form' import { SubmitButton } from '~/lib/forms/SubmitButton' -import { Types as AffinidiTypes } from '@affinidi/wallet-browser-sdk' +import { dispatchError } from '~/store' +import { AFFINIDI_OPTIONS } from '~/config' + type FormData = { username: string // email or phone number } -const options = { - env: process.env.NEXT_PUBLIC_AFFINIDI_ENV as AffinidiTypes.Env, - apiKey: process.env.NEXT_PUBLIC_AFFINIDI_API_KEY -} - export function AffinidiSignInForm({ onFinish }: { - onFinish: (result: { - username: string - signInToken?: string - error?: Error - }) => void + onFinish: (result: { username: string; token: string }) => void }): ReactElement { const { register, @@ -35,14 +28,13 @@ export function AffinidiSignInForm({ try { console.log('token') - const signInToken = await AffinidiWallet.initiateSignInPasswordless( - options, + const token = await AffinidiWallet.initiateSignInPasswordless( + AFFINIDI_OPTIONS, username ) - onFinish({ username, signInToken }) + onFinish({ username, token }) } catch (error) { - console.error('AffinidiSignInForm', error) - onFinish({ username, error: error as Error }) + dispatchError(error as Error) } } diff --git a/web/src/config.ts b/web/src/config.ts index 1289cc0..73a3327 100644 --- a/web/src/config.ts +++ b/web/src/config.ts @@ -1,6 +1,14 @@ export const NS = 'fucr' import makeDebug from 'debug' - +import { Types as AffinidiTypes } from '@affinidi/wallet-browser-sdk' export const debug = makeDebug(NS) export const logger = (scope: string): Function => debug.extend(scope) export * from './meta' + +export const AFFINIDI_OPTIONS: AffinidiTypes.SdkOptions = { + env: process.env.NEXT_PUBLIC_AFFINIDI_ENV as AffinidiTypes.Env, + apiKey: process.env.NEXT_PUBLIC_AFFINIDI_API_KEY_HASH + //accessApiKey: process.env.NEXT_PUBLIC_AFFINIDI_API_KEY_HASH +} + +console.log(AFFINIDI_OPTIONS) diff --git a/web/src/pages/auth/signin.tsx b/web/src/pages/auth/signin.tsx index 14fb2bf..7fbbab6 100644 --- a/web/src/pages/auth/signin.tsx +++ b/web/src/pages/auth/signin.tsx @@ -3,11 +3,15 @@ import Layout from '~/ui/Layout' import Button from 'react-bootstrap/Button' import { useRouter } from 'next/router' import { useMe } from '~/store' - import { AffinidiSignInForm } from '~/auth/forms/AffinidiSignInForm' +import { AffinidiConfirmationCodeForm } from '~/auth/forms/AffinidiConfirmationCodeForm' + +type Screen = 'username' | 'code' const LoginPage: React.FunctionComponent = () => { const router = useRouter() + const [screen, setScreen] = React.useState('username') + const [token, setToken] = React.useState() const { dispatch } = useMe() function login(user) { //TODO: check code @@ -17,13 +21,25 @@ const LoginPage: React.FunctionComponent = () => { dispatch('me/init') router.push('/') } - + function onUsername({ username, token }) { + console.log('onUser', { username, token }) + setToken(token) + setScreen('code') + } return (

Sign in (managed by Affinidi)

- + + {screen === 'username' && } + {screen === 'code' ? ( + + ) : null} +

If you have user account created early, you can import it from file.

From ef1e6c36cc9b95459557d541a6add0089e3f702c Mon Sep 17 00:00:00 2001 From: "D.V.D" Date: Fri, 22 Oct 2021 18:44:00 +0300 Subject: [PATCH 05/10] chore: --- .vscode/fucr.code-workspace | 4 +++- web/src/auth/forms/AffinidiConfirmationCodeForm.tsx | 1 - web/src/pages/auth/signin.tsx | 3 +-- web/src/pages/index.tsx | 4 ---- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.vscode/fucr.code-workspace b/.vscode/fucr.code-workspace index 441887a..03069a3 100644 --- a/.vscode/fucr.code-workspace +++ b/.vscode/fucr.code-workspace @@ -7,7 +7,9 @@ "settings": { "cSpell.words": [ "Affinidi", - "Passwordless" + "FUCR", + "Passwordless", + "storeon" ] } } diff --git a/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx b/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx index 4967473..8db022e 100644 --- a/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx +++ b/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx @@ -29,7 +29,6 @@ export function AffinidiConfirmationCodeForm({ if (errors.code || !code) return try { - console.log('token') const wallet = await AffinidiWallet.confirmSignIn( userToken, code, diff --git a/web/src/pages/auth/signin.tsx b/web/src/pages/auth/signin.tsx index 7fbbab6..6da8635 100644 --- a/web/src/pages/auth/signin.tsx +++ b/web/src/pages/auth/signin.tsx @@ -11,10 +11,9 @@ type Screen = 'username' | 'code' const LoginPage: React.FunctionComponent = () => { const router = useRouter() const [screen, setScreen] = React.useState('username') - const [token, setToken] = React.useState() + const [token, setToken] = React.useState() const { dispatch } = useMe() function login(user) { - //TODO: check code console.log('login', user) if (!user) return // TODO: prompt user to export account first diff --git a/web/src/pages/index.tsx b/web/src/pages/index.tsx index 8681b26..5aec70b 100644 --- a/web/src/pages/index.tsx +++ b/web/src/pages/index.tsx @@ -49,10 +49,6 @@ function Setup() { Sign in using Affinidi or - {' '} - or From 11fe0ce02213c6fef2fc0b9b663ddc88ebc66fe7 Mon Sep 17 00:00:00 2001 From: "D.V.D" Date: Sat, 23 Oct 2021 00:39:21 +0300 Subject: [PATCH 06/10] fix: use completeSignInPasswordless --- web/src/auth/forms/AffinidiConfirmationCodeForm.tsx | 6 +++--- web/src/config.ts | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx b/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx index 8db022e..7a32091 100644 --- a/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx +++ b/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx @@ -29,10 +29,10 @@ export function AffinidiConfirmationCodeForm({ if (errors.code || !code) return try { - const wallet = await AffinidiWallet.confirmSignIn( + const { wallet } = await AffinidiWallet.completeSignInPasswordless( + AFFINIDI_OPTIONS, userToken, - code, - AFFINIDI_OPTIONS + code ) onFinish({ wallet }) } catch (error) { diff --git a/web/src/config.ts b/web/src/config.ts index 73a3327..abb2ba1 100644 --- a/web/src/config.ts +++ b/web/src/config.ts @@ -7,8 +7,7 @@ export * from './meta' export const AFFINIDI_OPTIONS: AffinidiTypes.SdkOptions = { env: process.env.NEXT_PUBLIC_AFFINIDI_ENV as AffinidiTypes.Env, - apiKey: process.env.NEXT_PUBLIC_AFFINIDI_API_KEY_HASH - //accessApiKey: process.env.NEXT_PUBLIC_AFFINIDI_API_KEY_HASH + apiKey: process.env.NEXT_PUBLIC_AFFINIDI_API_KEY } console.log(AFFINIDI_OPTIONS) From 2bf5d6bedfd947e2fae88bac9941b5545f188097 Mon Sep 17 00:00:00 2001 From: "D.V.D" Date: Sat, 23 Oct 2021 13:45:57 +0300 Subject: [PATCH 07/10] feat: add resendCode --- .../forms/AffinidiConfirmationCodeForm.tsx | 34 ++++++++++++++++--- web/src/auth/forms/AffinidiSignInForm.tsx | 4 ++- web/src/pages/auth/signin.tsx | 20 +++++++---- 3 files changed, 47 insertions(+), 11 deletions(-) diff --git a/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx b/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx index 7a32091..2138968 100644 --- a/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx +++ b/web/src/auth/forms/AffinidiConfirmationCodeForm.tsx @@ -3,19 +3,27 @@ import clsx from 'clsx' import React, { ReactElement, ReactNode } from 'react' import { useForm } from 'react-hook-form' import { SubmitButton } from '~/lib/forms/SubmitButton' -import { dispatchError } from '~/store' +import { dispatchAlert, dispatchError } from '~/store' import { AFFINIDI_OPTIONS } from '~/config' +import { Button } from '~/ui/utils/buttons' type FormData = { code: string // email or phone number } +export type ConfirmationResult = { + wallet?: unknown + error?: Error +} + export function AffinidiConfirmationCodeForm({ + username, userToken, onFinish }: { + username: string userToken: string - onFinish: (result: { wallet?: unknown; error?: Error }) => void + onFinish: (res: ConfirmationResult) => void }): ReactElement { const { register, @@ -35,6 +43,20 @@ export function AffinidiConfirmationCodeForm({ code ) onFinish({ wallet }) + } catch (e) { + const error = e as Error + dispatchError(error) + onFinish({ error }) + } + } + + async function resendCode() { + try { + await AffinidiWallet.resendSignUpConfirmationCode( + username, + AFFINIDI_OPTIONS + ) + dispatchAlert('info', 'Code is sent') } catch (error) { dispatchError(error as Error) } @@ -46,7 +68,7 @@ export function AffinidiConfirmationCodeForm({
- + + +
diff --git a/web/src/auth/forms/AffinidiSignInForm.tsx b/web/src/auth/forms/AffinidiSignInForm.tsx index af272b4..8bcb5f6 100644 --- a/web/src/auth/forms/AffinidiSignInForm.tsx +++ b/web/src/auth/forms/AffinidiSignInForm.tsx @@ -11,15 +11,17 @@ type FormData = { } export function AffinidiSignInForm({ + username, onFinish }: { + username?: string onFinish: (result: { username: string; token: string }) => void }): ReactElement { const { register, formState: { errors }, handleSubmit - } = useForm({ defaultValues: {} }) + } = useForm({ defaultValues: { username } }) const isInvalid = errors.username // TODO: add email validation diff --git a/web/src/pages/auth/signin.tsx b/web/src/pages/auth/signin.tsx index 6da8635..e70557f 100644 --- a/web/src/pages/auth/signin.tsx +++ b/web/src/pages/auth/signin.tsx @@ -4,24 +4,29 @@ import Button from 'react-bootstrap/Button' import { useRouter } from 'next/router' import { useMe } from '~/store' import { AffinidiSignInForm } from '~/auth/forms/AffinidiSignInForm' -import { AffinidiConfirmationCodeForm } from '~/auth/forms/AffinidiConfirmationCodeForm' +import { + AffinidiConfirmationCodeForm, + ConfirmationResult +} from '~/auth/forms/AffinidiConfirmationCodeForm' type Screen = 'username' | 'code' const LoginPage: React.FunctionComponent = () => { const router = useRouter() const [screen, setScreen] = React.useState('username') + const [username, setUsername] = React.useState('') const [token, setToken] = React.useState() const { dispatch } = useMe() - function login(user) { - console.log('login', user) - if (!user) return + + function onConfirmation({ wallet, error }: ConfirmationResult) { + if (error) return setScreen('username') // TODO: prompt user to export account first dispatch('me/init') router.push('/') } function onUsername({ username, token }) { console.log('onUser', { username, token }) + setUsername(username) setToken(token) setScreen('code') } @@ -31,11 +36,14 @@ const LoginPage: React.FunctionComponent = () => { Sign in (managed by Affinidi) - {screen === 'username' && } + {screen === 'username' && ( + + )} {screen === 'code' ? ( ) : null} From e6e566bda5a8ffc68be34ea6ee34918e08072b4d Mon Sep 17 00:00:00 2001 From: "D.V.D" Date: Sat, 23 Oct 2021 16:56:55 +0300 Subject: [PATCH 08/10] copy: --- web/src/pages/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/src/pages/index.tsx b/web/src/pages/index.tsx index 5aec70b..a383125 100644 --- a/web/src/pages/index.tsx +++ b/web/src/pages/index.tsx @@ -42,15 +42,15 @@ export const HomePage: NextPage = () => { function Setup() { return (
-

To start publishing and reading you need an account.

+

To start publishing and reading you need an Affinidi account.

Please or

From c5b8c9cfb2811b7671cf617f6b1c73dbe805becb Mon Sep 17 00:00:00 2001 From: "D.V.D" Date: Sat, 23 Oct 2021 17:08:52 +0300 Subject: [PATCH 09/10] chore: remove gitlab links --- package.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/package.json b/package.json index fb89e4f..5af3f87 100644 --- a/package.json +++ b/package.json @@ -61,12 +61,6 @@ "echo Starting new release..." ], "after:bump": "npm run build", - "after:git:release": [ - "docker tag fucr_web:latest registry.gitlab.com/fucr/fucr/fucr_web:latest", - "docker tag fucr_web:latest registry.gitlab.com/fucr/fucr/fucr_web:${version}", - "docker push registry.gitlab.com/fucr/fucr/fucr_web:${version}", - "docker push registry.gitlab.com/fucr/fucr/fucr_web:latest" - ], "after:release": "echo Successfully released ${name} v${version} to ${repo.repository}." }, "github": { From 62f9520300ac7ea3c870e6399a02ec1920346977 Mon Sep 17 00:00:00 2001 From: "D.V.D" Date: Sat, 23 Oct 2021 19:54:33 +0300 Subject: [PATCH 10/10] feat: change default buttons size --- web/src/lib/forms/SubmitButton.tsx | 6 +----- web/src/ui/utils/buttons.tsx | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/web/src/lib/forms/SubmitButton.tsx b/web/src/lib/forms/SubmitButton.tsx index 607d5e9..6e142ca 100644 --- a/web/src/lib/forms/SubmitButton.tsx +++ b/web/src/lib/forms/SubmitButton.tsx @@ -8,11 +8,7 @@ export function SubmitButton({ disabled?: boolean }): ReactElement { return ( - ) diff --git a/web/src/ui/utils/buttons.tsx b/web/src/ui/utils/buttons.tsx index 803eb09..f769830 100644 --- a/web/src/ui/utils/buttons.tsx +++ b/web/src/ui/utils/buttons.tsx @@ -15,7 +15,7 @@ export function Button({ return (