Browse Source

Debloating (move Ethereum Identity Provider to separate package)

develop
Ezerous 4 years ago
parent
commit
9cf76dbfe7
  1. 3
      packages/concordia-app/package.json
  2. 4
      packages/concordia-app/src/options/breezeOptions.js
  3. 23
      packages/concordia-app/src/orbit/levelUtils.js
  4. 136
      packages/concordia-app/src/orbit/ΕthereumIdentityProvider.js
  5. 8
      packages/concordia-app/src/redux/sagas/orbitSaga.js
  6. 2
      packages/concordia-app/src/redux/sagas/peerDbReplicationSaga.js
  7. 4
      packages/concordia-app/src/utils/orbitUtils.js
  8. 215
      yarn.lock

3
packages/concordia-app/package.json

@ -26,15 +26,14 @@
"dependencies": {
"@ezerous/breeze": "~0.4.0",
"@ezerous/drizzle": "~0.4.0",
"@ezerous/eth-identity-provider": "^0.1.0",
"@reduxjs/toolkit": "~1.4.0",
"@welldone-software/why-did-you-render": "^6.0.0-rc.1",
"concordia-contracts": "~0.1.0",
"i18next": "^19.8.3",
"i18next-browser-languagedetector": "^6.0.1",
"i18next-http-backend": "^1.0.21",
"level": "~6.0.1",
"lodash": "^4.17.20",
"orbit-db-identity-provider": "~0.3.1",
"prop-types": "~15.7.2",
"react": "~16.13.1",
"react-dom": "~16.13.1",

4
packages/concordia-app/src/options/breezeOptions.js

@ -1,4 +1,4 @@
import EthereumIdentityProvider from '../orbit/ΕthereumIdentityProvider';
import { EthereumContractIdentityProvider } from '@ezerous/eth-identity-provider';
const breezeOptions = {
ipfs: {
@ -23,7 +23,7 @@ const breezeOptions = {
},
},
orbit: {
identityProvider: EthereumIdentityProvider,
identityProvider: EthereumContractIdentityProvider,
databases: [
{
address: 'topics',

23
packages/concordia-app/src/orbit/levelUtils.js

@ -1,23 +0,0 @@
import level from 'level';
/* Used in development only to store the identity.signatures.publicKey so developers don't have to
repeatedly sign theOrbitDB creation transaction in MetaMask when React development server reloads
the app */
const concordiaDB = level('./concordia/identities');
async function storeIdentitySignaturePubKey(key, signaturePubKey) {
await concordiaDB.put(key, signaturePubKey);
}
// If it exists, it returns the identity.signatures.publicKey for the given key (key is the
// concatenation of identity.publicKey + identity.signatures.id)
async function getIdentitySignaturePubKey(key) {
try {
return await concordiaDB.get(key);
} catch (err) {
if (err && err.notFound) return null; // Not found
throw err;
}
}
export { storeIdentitySignaturePubKey, getIdentitySignaturePubKey };

136
packages/concordia-app/src/orbit/ΕthereumIdentityProvider.js

@ -1,136 +0,0 @@
/* eslint-disable no-console */
/* eslint-disable no-return-await */
import IdentityProvider from 'orbit-db-identity-provider';
import { getIdentitySignaturePubKey, storeIdentitySignaturePubKey } from './levelUtils';
const LOGGING_PREFIX = 'EthereumIdentityProvider: ';
class EthereumIdentityProvider extends IdentityProvider {
constructor(options = {}) {
if (!EthereumIdentityProvider.web3) {
throw new Error(`${LOGGING_PREFIX}Couldn't create identity, because web3 wasn't set. `
+ 'Please use setWeb3(web3) first!');
}
if (!EthereumIdentityProvider.contractAddress) {
throw new Error(`${LOGGING_PREFIX}Couldn't create identity, because contractAddress wasn't set. `
+ 'Please use setContractAddress(contractAddress) first!');
}
super(options);
// Orbit's Identity Id (user's Ethereum address) - Optional (will be grabbed later if omitted)
const { id } = options;
if (id) {
const { userAddress, contractAddress } = EthereumIdentityProvider.splitId(id);
if (EthereumIdentityProvider.web3.utils.isAddress(userAddress)
&& EthereumIdentityProvider.contractAddress === contractAddress) {
this.id = id;
this.userAddress = userAddress;
} else throw new Error(`${LOGGING_PREFIX}Couldn't create identity, because an invalid id was supplied.`);
}
}
static get type() { return 'ethereum'; }
async getId() {
// Id wasn't in the constructor, grab it now
if (!this.id) {
const accounts = await EthereumIdentityProvider.web3.eth.getAccounts();
if (!accounts[0]) {
throw new Error(`${LOGGING_PREFIX}Couldn't create identity, because no web3 accounts were found (
locked Metamask?).`);
}
[this.userAddress] = accounts;
this.id = this.userAddress + EthereumIdentityProvider.contractAddress;
}
return this.id;
}
async signIdentity(data) {
if (process.env.NODE_ENV === 'development') { // Don't sign repeatedly while in development
console.debug(`${LOGGING_PREFIX}Attempting to find stored Orbit identity data...`);
const signaturePubKey = await getIdentitySignaturePubKey(data);
if (signaturePubKey) {
const identityInfo = {
userAddress: this.userAddress,
pubKeySignId: data,
signaturePubKey,
};
if (await EthereumIdentityProvider.verifyIdentityInfo(identityInfo)) {
console.debug(`${LOGGING_PREFIX}Found and verified stored Orbit identity data!`);
return signaturePubKey;
}
console.debug(`${LOGGING_PREFIX}Stored Orbit identity data couldn't be verified.`);
} else console.debug(`${LOGGING_PREFIX}No stored Orbit identity data were found.`);
}
return await this.doSignIdentity(data);
}
// eslint-disable-next-line consistent-return
async doSignIdentity(data) {
try {
const signaturePubKey = await EthereumIdentityProvider.web3.eth.personal.sign(data, this.userAddress, '');
if (process.env.NODE_ENV === 'development') {
storeIdentitySignaturePubKey(data, signaturePubKey)
.then(() => {
console.debug(`${LOGGING_PREFIX}Successfully stored current Orbit identity data.`);
})
.catch(() => {
console.warn(`${LOGGING_PREFIX}Couldn't store current Orbit identity data...`);
});
}
return signaturePubKey; // Password not required for MetaMask
} catch (error) {
if (error.code && error.code === 4001) {
console.debug(`${LOGGING_PREFIX}User denied message signature.`);
return await this.doSignIdentity(data);
}
console.error(`${LOGGING_PREFIX}Failed to sign data.`);
console.error(error);
}
}
static async verifyIdentity(identity) {
const { userAddress } = EthereumIdentityProvider.splitId(identity.id);
// Verify that identity was signed by the ID
return new Promise((resolve) => {
resolve(EthereumIdentityProvider.web3.eth.accounts.recover(identity.publicKey + identity.signatures.id,
identity.signatures.publicKey) === userAddress);
});
}
static async verifyIdentityInfo(identityInfo) {
// Verify that identity was signed by the ID
return new Promise((resolve) => {
resolve(EthereumIdentityProvider.web3.eth.accounts.recover(identityInfo.pubKeySignId,
identityInfo.signaturePubKey) === identityInfo.userAddress);
});
}
// Initialize by supplying a web3 object
static setWeb3(web3) {
EthereumIdentityProvider.web3 = web3;
}
// Initialize by supplying a contract's address (to be used as a point of reference)
static setContractAddress(contractAddress) {
EthereumIdentityProvider.contractAddress = contractAddress;
}
static splitId(id) {
const regex = /(0x.*)(0x.*)/g;
const match = regex.exec(id);
if (match && match.length === 3) {
return { userAddress: match[1], contractAddress: match[2] };
}
throw new Error(`${LOGGING_PREFIX}Invalid id ${id}! Couldn't split it to userAddress, contractAddress.`);
}
}
EthereumIdentityProvider.web3 = {};
EthereumIdentityProvider.contractAddress = {};
export default EthereumIdentityProvider;

8
packages/concordia-app/src/redux/sagas/orbitSaga.js

@ -6,11 +6,11 @@ import { breezeActions } from '@ezerous/breeze';
import { drizzleActions } from '@ezerous/drizzle';
import { forumContract } from 'concordia-contracts';
import EthereumIdentityProvider from '../../orbit/ΕthereumIdentityProvider';
import { EthereumContractIdentityProvider } from '@ezerous/eth-identity-provider';
function* initOrbitDatabases(action) {
const { account, breeze } = action;
yield put(breezeActions.orbit.orbitInit(breeze, account + EthereumIdentityProvider.contractAddress)); // same as breeze.initOrbit(account);
yield put(breezeActions.orbit.orbitInit(breeze, account + EthereumContractIdentityProvider.contractAddress)); // same as breeze.initOrbit(account);
}
function* orbitSaga() {
@ -24,8 +24,8 @@ function* orbitSaga() {
const networkId = yield call([web3.eth.net, web3.eth.net.getId]);
const contractAddress = forumContract.networks[networkId].address;
EthereumIdentityProvider.setContractAddress(contractAddress);
EthereumIdentityProvider.setWeb3(web3);
EthereumContractIdentityProvider.setContractAddress(contractAddress);
EthereumContractIdentityProvider.setWeb3(web3);
yield initOrbitDatabases({ breeze: res[1].breeze, account: res[2].accounts[0] });
}

2
packages/concordia-app/src/redux/sagas/peerDbReplicationSaga.js

@ -7,7 +7,7 @@ import {
ORBIT_DB_REPLICATED,
ORBIT_DB_WRITE,
} from '@ezerous/breeze/src/orbit/orbitActions';
import determineKVAddress from '../../orbit/orbitUtils';
import determineKVAddress from '../../utils/orbitUtils';
import { FETCH_USER_DATABASE, UPDATE_ORBIT_DATA } from '../actions/peerDbReplicationActions';
function* fetchUserDb({ orbit, userAddress }) {

4
packages/concordia-app/src/orbit/orbitUtils.js → packages/concordia-app/src/utils/orbitUtils.js

@ -1,5 +1,5 @@
// https://github.com/orbitdb/orbit-db/blob/master/GUIDE.md#address
import EthereumIdentityProvider from './ΕthereumIdentityProvider';
import { EthereumContractIdentityProvider } from '@ezerous/eth-identity-provider';
async function determineDBAddress({
orbit, dbName, type, identityId,
@ -12,7 +12,7 @@ async function determineDBAddress({
async function determineKVAddress({ orbit, dbName, userAddress }) {
return determineDBAddress({
orbit, dbName, type: 'keyvalue', identityId: userAddress + EthereumIdentityProvider.contractAddress,
orbit, dbName, type: 'keyvalue', identityId: userAddress + EthereumContractIdentityProvider.contractAddress,
});
}

215
yarn.lock

@ -1547,6 +1547,14 @@
redux-saga "~1.1.3"
web3 "~1.3.0"
"@ezerous/eth-identity-provider@^0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@ezerous/eth-identity-provider/-/eth-identity-provider-0.1.0.tgz#061bdffe9835dd3a9424799fe36e609e57cee162"
integrity sha512-2RwxzMGdimvxoqzpPJJCpzX3kaDzUn7reJOOlclKNtpTOp8X8RK1rooUDRZDObo6I5mdntoYyL8gEXV2ypzJIQ==
dependencies:
level "~6.0.1"
orbit-db-identity-provider "~0.3.1"
"@fluentui/react-component-event-listener@~0.51.0":
version "0.51.2"
resolved "https://registry.yarnpkg.com/@fluentui/react-component-event-listener/-/react-component-event-listener-0.51.2.tgz#bb403c96acfa9fb4ea338f3f2bf66e672085a4c7"
@ -1660,9 +1668,9 @@
integrity sha512-WSrlgpvEqgPWkI18kkGELEZfXr0bYLtr16iIN4Krh9sRnzBZN6nnWxHFxtsnP684wueEySBbXPDg/WfA9xJdBQ==
"@hapi/hapi@^20.0.0":
version "20.0.1"
resolved "https://registry.yarnpkg.com/@hapi/hapi/-/hapi-20.0.1.tgz#005dd0414182090b4f60851207e38ac389cf844e"
integrity sha512-v8NapLf5vkKWIJoBCUBIOk6ZdH9vrxZco4GZbjdM3ROQBDl4eXwW3pySTBL7xWANYp3Nzdn+fiFWjDwdgsSoQg==
version "20.0.2"
resolved "https://registry.yarnpkg.com/@hapi/hapi/-/hapi-20.0.2.tgz#654315d2e1a25cf41d0f8cb6a306e82bc74710d1"
integrity sha512-F59cZOZhEXpOL+o7RT76M/QDUwSn3u+RBkB+9l2NqTPEA11+inaiEZ0Z2DrRoo9g5EzWVU/gygdP4uo5aXQNHg==
dependencies:
"@hapi/accept" "^5.0.1"
"@hapi/ammo" "^5.0.1"
@ -2344,9 +2352,9 @@
"@babel/types" "^7.0.0"
"@types/babel__template@*":
version "7.0.3"
resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.3.tgz#b8aaeba0a45caca7b56a5de9459872dde3727214"
integrity sha512-uCoznIPDmnickEi6D0v11SBpW0OuVqHJCa7syXqQHy5uktSCreIlt0iglsCnmvz8yCb38hGcWeseA8cWJSwv5Q==
version "7.4.0"
resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be"
integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==
dependencies:
"@babel/parser" "^7.1.0"
"@babel/types" "^7.0.0"
@ -2431,14 +2439,14 @@
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*":
version "14.14.6"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.6.tgz#146d3da57b3c636cc0d1769396ce1cfa8991147f"
integrity sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==
version "14.14.7"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.7.tgz#8ea1e8f8eae2430cf440564b98c6dfce1ec5945d"
integrity sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==
"@types/node@^12.12.6":
version "12.19.3"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.3.tgz#a6e252973214079155f749e8bef99cc80af182fa"
integrity sha512-8Jduo8wvvwDzEVJCOvS/G6sgilOLvvhn1eMmK3TW8/T217O7u1jdrK6ImKLv80tVryaPSVeKu6sjDEiFjd4/eg==
version "12.19.4"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.4.tgz#cdfbb62e26c7435ed9aab9c941393cc3598e9b46"
integrity sha512-o3oj1bETk8kBwzz1WlO6JWL/AfAA3Vm6J1B3C9CsdxHYp7XgPiH7OEXPUbZTndHlRaIElrANkQfe6ZmfJb3H2w==
"@types/node@^13.7.0":
version "13.13.30"
@ -3451,9 +3459,9 @@ base64-arraybuffer@0.1.5:
integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg=
base64-js@^1.0.2, base64-js@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
base64id@2.0.0:
version "2.0.0"
@ -3592,7 +3600,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
bn.js@^5.1.1:
bn.js@^5.0.0, bn.js@^5.1.1:
version "5.1.3"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b"
integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==
@ -3752,11 +3760,11 @@ browserify-des@^1.0.0:
safe-buffer "^5.1.2"
browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
version "4.1.0"
resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
dependencies:
bn.js "^4.1.0"
bn.js "^5.0.0"
randombytes "^2.0.1"
browserify-sign@^4.0.0:
@ -3792,14 +3800,15 @@ browserslist@4.10.0:
pkg-up "^3.1.0"
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.14.6, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1:
version "4.14.6"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.6.tgz#97702a9c212e0c6b6afefad913d3a1538e348457"
integrity sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A==
version "4.14.7"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6"
integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==
dependencies:
caniuse-lite "^1.0.30001154"
electron-to-chromium "^1.3.585"
caniuse-lite "^1.0.30001157"
colorette "^1.2.1"
electron-to-chromium "^1.3.591"
escalade "^3.1.1"
node-releases "^1.1.65"
node-releases "^1.1.66"
bs58@^4.0.0, bs58@^4.0.1:
version "4.0.1"
@ -3871,6 +3880,14 @@ buffer@^5.0.5, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
buffer@^6.0.1:
version "6.0.2"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.2.tgz#ca9ab87dffd0e864977f541f09844f06a60a8acd"
integrity sha512-XeXCUm+F7uY7fIzq4pKy+BLbZk4SgYS5xwlZOFYD3UEcAD+PwOoTaFr/SaXvhR1yRa8SKyPSZ7LNX4N65w7h8A==
dependencies:
base64-js "^1.3.1"
ieee754 "^1.2.1"
bufferutil@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.2.tgz#79f68631910f6b993d870fc77dc0a2894eb96cd5"
@ -4046,10 +4063,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001154:
version "1.0.30001156"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001156.tgz#75c20937b6012fe2b02ab58b30d475bf0718de97"
integrity sha512-z7qztybA2eFZTB6Z3yvaQBIoJpQtsewRD74adw2UbRWwsRq3jIPvgrQGawBMbfafekQaD21FWuXNcywtTDGGCw==
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157:
version "1.0.30001157"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz#2d11aaeb239b340bc1aa730eca18a37fdb07a9ab"
integrity sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==
capture-exit@^2.0.0:
version "2.0.0"
@ -4323,9 +4340,9 @@ cliui@^6.0.0:
wrap-ansi "^6.2.0"
cliui@^7.0.2:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.3.tgz#ef180f26c8d9bff3927ee52428bfec2090427981"
integrity sha512-Gj3QHTkVMPKqwP3f7B4KPkBZRMR9r4rfi5bXFpg1a+Svvj8l7q5CnkBkVQzfxT5DFSsGk2+PascOgL0JYkL2kw==
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
dependencies:
string-width "^4.2.0"
strip-ansi "^6.0.0"
@ -4880,9 +4897,9 @@ css-tree@1.0.0-alpha.37:
source-map "^0.6.1"
css-tree@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0.tgz#21993fa270d742642a90409a2c0cb3ac0298adf6"
integrity sha512-CdVYz/Yuqw0VdKhXPBIgi8DO3NicJVYZNWeX9XcIuSp9ZoFT5IcleVRW07O5rMjdcx1mb+MEJPknTTEW7DdsYw==
version "1.0.1"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.1.tgz#7726678dfe2a57993a018d9dce519bf1760e3b6d"
integrity sha512-WroX+2MvsYcRGP8QA0p+rxzOniT/zpAoQ/DTKDSJzh5T3IQKUkFHeIIfgIapm2uaP178GWY3Mime1qbk8GO/tA==
dependencies:
mdn-data "2.0.12"
source-map "^0.6.1"
@ -5057,23 +5074,23 @@ data-urls@^1.0.0, data-urls@^1.1.0:
whatwg-url "^7.0.0"
datastore-core@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/datastore-core/-/datastore-core-2.0.0.tgz#49e3c96cdfc4729fcd5c92d64b3b614429cb4472"
integrity sha512-E6SS3GEZNMCRZScWO98qQ14MIb7+3MLsJtcgla/ULCjfnhThsUE21HN+wT0+QLoYrKR54puWy/3XKp5N+5+zyA==
version "2.0.1"
resolved "https://registry.yarnpkg.com/datastore-core/-/datastore-core-2.0.1.tgz#604065d0d2f3128d33498da3c019489375ea41a1"
integrity sha512-er9DVcug5aM/qJFaG7pFmYah1f5XvUsHZ5nf9+MOFUKB3pCLlQIrClSu+Nl9hfROS9yiou6i5dFZu9PL9IQ+gQ==
dependencies:
debug "^4.1.1"
interface-datastore "^2.0.0"
ipfs-utils "^2.3.1"
ipfs-utils "^4.0.1"
datastore-fs@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/datastore-fs/-/datastore-fs-2.0.1.tgz#3ccb036fbdb3d2bc16d7a3ff4f24296b8ea0f38a"
integrity sha512-W0qOEJDHVmzSfCXMBcgnHI7n0SROQ7vpD24v9AicVWE/DPju4CUWl/1NHSQO3RR3ooaFdG31c1J2OjDKJO6+Fg==
version "2.0.2"
resolved "https://registry.yarnpkg.com/datastore-fs/-/datastore-fs-2.0.2.tgz#69d708024bbd1b12bff0d3c3ef0675852c2d7c4a"
integrity sha512-OA1jKopZy5fMMIJNASRRJoj36AgD/v1TIp843o+3B7x4ffSiUArHUzbLRIBchD6VGLklz/3i4mtZeIaALsh/ZQ==
dependencies:
datastore-core "^2.0.0"
fast-write-atomic "^0.2.0"
interface-datastore "^2.0.0"
it-glob "0.0.8"
it-glob "0.0.10"
mkdirp "^1.0.4"
datastore-level@^2.0.0:
@ -5371,9 +5388,9 @@ dns-equal@^1.0.0:
integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
dns-over-http-resolver@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.1.0.tgz#9b49d3ec30ea439729864d88c77e180e8892367d"
integrity sha512-0ltD/8BLqLfZMiTaudwj/DJQK/1RmXBv0SGHyhxtuOVKXw5hqlPVFQI5zOU+FIOlM2JBOfpRgH9BlAO8MN57vQ==
version "1.2.0"
resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.0.tgz#1f9c808c88810b9ffe5c4a6ece449764e9658002"
integrity sha512-LJ1sEbQgwY+qmL6z3kNIKi0vHA9nSUdZb8vf3G6z43ZVIF6WhhNHXztLMOOvaMIvtCsCZBjAie11MtUD3+H0YA==
dependencies:
debug "^4.2.0"
native-fetch "^2.0.1"
@ -5563,10 +5580,10 @@ ejs@^3.1.5:
dependencies:
jake "^10.6.1"
electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.585:
version "1.3.591"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.591.tgz#a18892bf1acb93f7b6e4da402705d564bc235017"
integrity sha512-ol/0WzjL4NS4Kqy9VD6xXQON91xIihDT36sYCew/G/bnd1v0/4D+kahp26JauQhgFUjrdva3kRSo7URcUmQ+qw==
electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.591:
version "1.3.595"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.595.tgz#e8a9e7c6919963419f892ea981d7b3438ccb834d"
integrity sha512-JpaBIhdBkF9FLG7x06ONfe0f5bxPrxRcq0X+Sc8vsCt+OPWIzxOD+qM71NEHLGbDfN9Q6hbtHRv4/dnvcOxo6g==
elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3:
version "6.5.3"
@ -7735,7 +7752,7 @@ idna-uts46-hx@^2.3.1:
dependencies:
punycode "2.1.0"
ieee754@^1.1.13, ieee754@^1.1.4:
ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@ -7936,13 +7953,13 @@ inquirer@^7.0.0:
through "^2.3.6"
interface-datastore@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-2.0.0.tgz#a0c2de1df9e42553e4723428c02242d9c47a2cc9"
integrity sha512-wOImix5uVEZWo+8zPSRMJ9nHbszZi3PhZ14KHLN7oRQjaYQtjtOpYj6n5EXTjDAfIQI8KN9vntHXxyAw1lcRIA==
version "2.0.1"
resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-2.0.1.tgz#a2d6ed22ca00082ef6a11b1bffb25934a74d0bde"
integrity sha512-a4xHvVE8JCG8UItP0CCq+UJyBHZxhMp3esuFNjb3U9rP+tzKiG0HZXz8gIIwic6VbuE0Gui2whbJyJOFpMxhLg==
dependencies:
class-is "^1.1.0"
err-code "^2.0.1"
ipfs-utils "^2.3.1"
ipfs-utils "^4.0.1"
iso-random-stream "^1.1.1"
it-all "^1.0.2"
it-drain "^1.0.1"
@ -8459,7 +8476,7 @@ ipfs-unixfs@^2.0.3, ipfs-unixfs@^2.0.4:
err-code "^2.0.0"
protons "^2.0.0"
ipfs-utils@^2.2.0, ipfs-utils@^2.3.1:
ipfs-utils@^2.2.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-2.4.0.tgz#113db5f5625b1bf0411a6d6dbd5317dfff5287f9"
integrity sha512-0RH8rMIEhrXyrbh87V8SQC6E6/5EJs+YionqZGAXnVoTzkpFhxC3x3FlsxwZ9s72yaieGP1Mx1tRYgfCFM/mJg==
@ -8496,20 +8513,20 @@ ipfs-utils@^3.0.0:
node-fetch "^2.6.0"
stream-to-it "^0.2.0"
ipfs-utils@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-4.0.0.tgz#f53b79294f500e43661cb6b2a9d7fa301d3fa3d3"
integrity sha512-HVeDUm4K4fYb44O1y2l4sNvDuzIB3+K6ZqYj45Bv3oqGmpBkm+ELq2Sssghpwk5b4ppsfOzSUoupMFdlg+Fk7w==
ipfs-utils@^4.0.0, ipfs-utils@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-4.0.1.tgz#8856ba3ee7251f0a8f08f2f33ca5b62a2691da4d"
integrity sha512-6mg+S1sbjj+Ff+uoHOhVeC4myfV2tb2sHcdYwfpJ4ZcBo9WfdxSMnWFLiC5bIqByyJuN/g5aWgz3ozjKDzND1Q==
dependencies:
"@achingbrain/electron-fetch" "^1.7.2"
abort-controller "^3.0.0"
any-signal "^2.1.0"
buffer "^5.6.0"
buffer "^6.0.1"
err-code "^2.0.0"
fs-extra "^9.0.1"
is-electron "^2.2.0"
iso-url "^0.4.7"
it-glob "0.0.8"
iso-url "^1.0.0"
it-glob "0.0.10"
merge-options "^2.0.0"
nanoid "^3.1.3"
native-abort-controller "0.0.3"
@ -8702,7 +8719,7 @@ is-color-stop@^1.0.0:
rgb-regex "^1.0.1"
rgba-regex "^1.0.0"
is-core-module@^2.0.0:
is-core-module@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946"
integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==
@ -10441,9 +10458,9 @@ libp2p-floodsub@^0.23.1:
uint8arrays "^1.1.0"
libp2p-gossipsub@^0.6.1:
version "0.6.4"
resolved "https://registry.yarnpkg.com/libp2p-gossipsub/-/libp2p-gossipsub-0.6.4.tgz#7f4f2d525d7a997f02d3586126c47f65e46bfea4"
integrity sha512-zCS2Ze0ZgxcpL0jkkfV6SJM8sV3SfeOjfMH02G7OrVQYksFKXH//F3ZbksWjUeoAggdpP9+a66IWPBkj16CfCA==
version "0.6.6"
resolved "https://registry.yarnpkg.com/libp2p-gossipsub/-/libp2p-gossipsub-0.6.6.tgz#24f24fc26ff5f41303c662fbf48f6b37389b5735"
integrity sha512-oW/d7Y099RmxJ8KKWSlzuh3giuKb94d/VpKCxTqUJlsuA3SHjiOiKCO3oadrK5pkYgFMBXxYEnbZ84tft3MtRQ==
dependencies:
"@types/debug" "^4.1.5"
debug "^4.1.1"
@ -11889,7 +11906,7 @@ node-pre-gyp@^0.13.0:
semver "^5.3.0"
tar "^4"
node-releases@^1.1.52, node-releases@^1.1.65:
node-releases@^1.1.52, node-releases@^1.1.66:
version "1.1.66"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.66.tgz#609bd0dc069381015cd982300bae51ab4f1b1814"
integrity sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==
@ -14572,9 +14589,9 @@ regexpu-core@^4.7.1:
unicode-match-property-value-ecmascript "^1.2.0"
registry-auth-token@^4.0.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da"
integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==
version "4.2.1"
resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==
dependencies:
rc "^1.2.8"
@ -14756,11 +14773,11 @@ resolve@1.15.0:
path-parse "^1.0.6"
resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.8.1:
version "1.18.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130"
integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==
version "1.19.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
dependencies:
is-core-module "^2.0.0"
is-core-module "^2.1.0"
path-parse "^1.0.6"
responselike@^1.0.2:
@ -16072,9 +16089,9 @@ tdigest@^0.1.1:
bintrees "1.0.1"
temp@^0.9.1:
version "0.9.2"
resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.2.tgz#06728e6e4b847e3ea5579c69c44bcc3ee6a47100"
integrity sha512-KLVd6CXeUYsqmI/LBWDLg3bFkdZPg0Xr/Gn79GUuPNiISzp6v/EKUaCOrxqeH1w/wVNmrljyDRgKxhZV9JzyJA==
version "0.9.4"
resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620"
integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==
dependencies:
mkdirp "^0.5.1"
rimraf "~2.6.2"
@ -16311,9 +16328,9 @@ tr46@^1.0.1:
punycode "^2.1.0"
truffle@~5.1.45:
version "5.1.52"
resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.52.tgz#2fdae57d849e8d90d429a5252a4f8dbeb744f972"
integrity sha512-8KwPuHumZnfDBJOoUEdXo7BFr1a/RSh1CDI4AoHsIC+STajJnr7EvJdaniJRlA3S+6Hn12b3PY8Zaarba8VSvQ==
version "5.1.53"
resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.53.tgz#3c984317d092f230d84b7d138d69dace106b5c2b"
integrity sha512-JXuuhPOsh/K9K9PJTcZDRy6ByxreOrchMIM1SgEVRi85MF6XWQSZwwV1kXF+JRtP938lfRmmpgWQb1MzFBY7qw==
dependencies:
app-module-path "^2.2.0"
mocha "8.1.2"
@ -16352,9 +16369,9 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tsparticles@^1.18.10:
version "1.18.10"
resolved "https://registry.yarnpkg.com/tsparticles/-/tsparticles-1.18.10.tgz#d2e80af398ba90e2fdeb29dff9afdf65a7fb6be4"
integrity sha512-0OIGYwbXVJjd48GUdcTkv7Cn/BIoTOxUleeMhKqbFL5tV1CJevyhfXkMtGrY4FwRYxcNorxeaOE4dH1MO9AONQ==
version "1.18.11"
resolved "https://registry.yarnpkg.com/tsparticles/-/tsparticles-1.18.11.tgz#924d74cf40656727f5df047b53c4761463a4f6e7"
integrity sha512-F5czk8foRoywWHDYDT0eZhQwCXOHz7OGhJCsoybThTUIT+nwc1Eclltm/TMrnnxZZghF3Fo0VL8nN4inf+pQbA==
optionalDependencies:
pathseg "^1.2.0"
@ -16861,23 +16878,23 @@ warning@^4.0.2, warning@^4.0.3:
dependencies:
loose-envify "^1.0.0"
watchpack-chokidar2@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0"
integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==
watchpack-chokidar2@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957"
integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==
dependencies:
chokidar "^2.1.8"
watchpack@^1.6.0:
version "1.7.4"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b"
integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==
version "1.7.5"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453"
integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
dependencies:
graceful-fs "^4.1.2"
neo-async "^2.5.0"
optionalDependencies:
chokidar "^3.4.1"
watchpack-chokidar2 "^2.0.0"
watchpack-chokidar2 "^2.0.1"
wbuf@^1.1.0, wbuf@^1.7.3:
version "1.7.3"
@ -17592,9 +17609,9 @@ ws@^6.1.2, ws@^6.2.1:
async-limiter "~1.0.0"
ws@^7.1.2, ws@^7.3.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8"
integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==
version "7.4.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7"
integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==
ws@~6.1.0:
version "6.1.4"
@ -17742,9 +17759,9 @@ yargs-parser@^18.1.2:
decamelize "^1.2.0"
yargs-parser@^20.2.2:
version "20.2.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.3.tgz#92419ba867b858c868acf8bae9bf74af0dd0ce26"
integrity sha512-emOFRT9WVHw03QSvN5qor9QQT9+sw5vwxfYweivSMHTcAXPefwVae2FjO7JJjj8hCE4CzPOPeFM83VwT29HCww==
version "20.2.4"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
yargs-unparser@1.6.1:
version "1.6.1"

Loading…
Cancel
Save