diff --git a/package.json b/package.json index 70431e2b6..3138a98cb 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,10 @@ "@ant-design/icons": "^4.5.0", "@davatar/react": "^1.8.1", "@ethersproject/providers": "^5.5.2", - "@feathersjs/authentication-client": "^4.5.11", - "@feathersjs/feathers": "^4.5.11", - "@feathersjs/rest-client": "^4.5.11", + "@feathersjs/authentication-client": "^4.5.13", + "@feathersjs/feathers": "^4.5.12", + "@feathersjs/rest-client": "^4.5.12", + "@feathersjs/socketio-client": "^4.5.13", "@giveth/bridge-contract": "^1.0.6", "@giveth/liquidpledging-contract": "^2.0.0-beta.6", "@giveth/lpp-campaign": "^2.0.0-beta.1", @@ -23,7 +24,6 @@ "bnc-onboard": "^1.29.0", "feathers-hooks-common": "^5.0.5", "feathers-reactive": "^0.8.2", - "feathers-socketio": "^2.0.1", "file-saver": "^2.0.5", "history": "^4.9.0", "jwt-decode": "^3.1.2", @@ -100,7 +100,7 @@ "author": { "name": "Giveth", "email": "info@giveth.io", - "url": "http://giveth.io" + "url": "https://giveth.io" }, "license": "GPL-3.0", "browserslist": { diff --git a/src/components/Editor.jsx b/src/components/Editor.jsx index edb4dce23..3a7cdefb6 100644 --- a/src/components/Editor.jsx +++ b/src/components/Editor.jsx @@ -103,7 +103,7 @@ function Editor(props) { quill.setSelection(range.index + 1); quill.disable(); - saveToServer(e.target.result, range); + saveToServer(file, range); imageUploader.current.value = ''; }; reader.readAsDataURL(compressFile); diff --git a/src/components/UploadPicture.jsx b/src/components/UploadPicture.jsx index 19f7f5b7d..bb85b88f3 100644 --- a/src/components/UploadPicture.jsx +++ b/src/components/UploadPicture.jsx @@ -21,9 +21,6 @@ const UploadPicture = ({ picture, setPicture, imgAlt, disabled, aspectRatio, lab }, onChange(info) { const { status } = info.file; - if (status !== 'uploading') { - console.log(info.file, info.fileList); - } if (status === 'done') { console.log('file uploaded successfully.', info.file.response); setPicture(info.file.response); diff --git a/src/components/views/CreateBounty.jsx b/src/components/views/CreateBounty.jsx index 46b6c1bf5..589e5e76c 100644 --- a/src/components/views/CreateBounty.jsx +++ b/src/components/views/CreateBounty.jsx @@ -44,7 +44,17 @@ function CreateBounty(props) { const [loading, setLoading] = useState(false); const [userIsCampaignOwner, setUserIsOwner] = useState(false); + function goBack() { + history.goBack(); + } + useEffect(() => { + if (currentUser.address) { + authenticateUser(currentUser, false, web3).then(auth => { + if (!auth) history.goBack(); + }); + } + setUserIsOwner( campaign && currentUser.address && @@ -67,10 +77,6 @@ function CreateBounty(props) { }); } - function goBack() { - history.goBack(); - } - const submit = async () => { const authenticated = await authenticateUser(currentUser, false, web3); diff --git a/src/components/views/CreateExpense.jsx b/src/components/views/CreateExpense.jsx index 4dc718624..a12bebc11 100644 --- a/src/components/views/CreateExpense.jsx +++ b/src/components/views/CreateExpense.jsx @@ -77,6 +77,12 @@ function CreateExpense(props) { const itemAmountMap = useRef({}); useEffect(() => { + if (currentUser.address) { + authenticateUser(currentUser, false, web3).then(auth => { + if (!auth) history.goBack(); + }); + } + if (currentUser.address && !expenseForm.recipientAddress) { setExpenseForm({ ...expenseForm, diff --git a/src/components/views/CreateMilestone.jsx b/src/components/views/CreateMilestone.jsx index 80275f5c5..49d2fd0be 100644 --- a/src/components/views/CreateMilestone.jsx +++ b/src/components/views/CreateMilestone.jsx @@ -47,6 +47,12 @@ function CreateMilestone(props) { const [userIsCampaignOwner, setUserIsOwner] = useState(false); useEffect(() => { + if (currentUser.address) { + authenticateUser(currentUser, false, web3).then(auth => { + if (!auth) history.goBack(); + }); + } + setUserIsOwner( campaign && currentUser.address && diff --git a/src/components/views/CreatePayment.jsx b/src/components/views/CreatePayment.jsx index 004cd0bb3..e405f00ba 100644 --- a/src/components/views/CreatePayment.jsx +++ b/src/components/views/CreatePayment.jsx @@ -21,7 +21,7 @@ import { Context as UserContext } from '../../contextProviders/UserProvider'; import { Context as ConversionRateContext } from '../../contextProviders/ConversionRateProvider'; import { Context as Web3Context } from '../../contextProviders/Web3Provider'; import { Context as NotificationContext } from '../../contextProviders/NotificationModalProvider'; -import { convertEthHelper, getStartOfDayUTC, ZERO_ADDRESS } from '../../lib/helpers'; +import { convertEthHelper, getStartOfDayUTC, ZERO_ADDRESS, history } from '../../lib/helpers'; import ErrorHandler from '../../lib/ErrorHandler'; import { authenticateUser } from '../../lib/middleware'; import BridgedTrace from '../../models/BridgedTrace'; @@ -108,6 +108,12 @@ function CreatePayment(props) { }, []); useEffect(() => { + if (currentUser.address) { + authenticateUser(currentUser, false, web3).then(auth => { + if (!auth) history.goBack(); + }); + } + if (currentUser.address && !payment.recipientAddress) { setPayment({ ...payment, diff --git a/src/components/views/EditBounty.jsx b/src/components/views/EditBounty.jsx index 42fee781b..d6c83658d 100644 --- a/src/components/views/EditBounty.jsx +++ b/src/components/views/EditBounty.jsx @@ -66,6 +66,12 @@ function EditBounty(props) { }; useEffect(() => { + if (currentUser.address) { + authenticateUser(currentUser, false, web3).then(auth => { + if (!auth) history.goBack(); + }); + } + if (trace) { setUserIsOwner( [campaign.ownerAddress, campaign.coownerAddress].includes(currentUser.address), diff --git a/src/components/views/EditCampaign.jsx b/src/components/views/EditCampaign.jsx index caa4bf01e..826cb3107 100644 --- a/src/components/views/EditCampaign.jsx +++ b/src/components/views/EditCampaign.jsx @@ -68,63 +68,64 @@ const EditCampaign = () => { }, []); useEffect(() => { - if (userIsLoading || whitelistIsLoading || !currentUser.address) return () => {}; - - if (isNew) { - if (!currentUser.isProjectOwner && projectOwnersWhitelistEnabled) { - const modal = Modal.error({ - title: 'Permission Denied', - content: 'You are not allowed to create a campaign', - closable: false, - centered: true, - onOk: () => history.replace('/'), - }); - - return () => { - modal.destroy(); - }; + const checks = async () => { + const authenticated = await authenticateUser(currentUser, false, web3); + if (!authenticated) { + goBack(); + return; } - - checkProfile(currentUser).then(() => { - setCampaign({ - owner: currentUser, - ownerAddress: currentUser.address, - }); - setIsLoading(false); - }); - } else { - CampaignService.get(campaignId) - .then(camp => { - if (isOwner(camp.ownerAddress, currentUser)) { - const imageIpfsPath = camp.image.match(/\/ipfs\/.*/); + if (isNew) { + if (!currentUser.isProjectOwner && projectOwnersWhitelistEnabled) { + Modal.error({ + title: 'Permission Denied', + content: 'You are not allowed to create a campaign', + closable: false, + centered: true, + onOk: () => history.replace('/'), + }); + } else + checkProfile(currentUser).then(() => { setCampaign({ - title: camp.title, - description: camp.description, - communityUrl: camp.communityUrl, - reviewerAddress: camp.reviewerAddress, - picture: imageIpfsPath ? imageIpfsPath[0] : camp.image, + owner: currentUser, + ownerAddress: currentUser.address, }); - campaignObject.current = camp; setIsLoading(false); - } else { - ErrorHandler({}, 'You are not allowed to edit this Campaign.'); - goBack(); - } - }) - .catch(err => { - if (err.status === 404) { - history.push('/notfound'); - } else { - setIsLoading(false); - ErrorHandler( - err, - 'There has been a problem loading the Campaign. Please refresh the page and try again.', - ); - } - }); - } + }); + } else { + CampaignService.get(campaignId) + .then(camp => { + if (isOwner(camp.ownerAddress, currentUser)) { + const imageIpfsPath = camp.image.match(/\/ipfs\/.*/); + setCampaign({ + title: camp.title, + description: camp.description, + communityUrl: camp.communityUrl, + reviewerAddress: camp.reviewerAddress, + picture: imageIpfsPath ? imageIpfsPath[0] : camp.image, + }); + campaignObject.current = camp; + setIsLoading(false); + } else { + ErrorHandler({}, 'You are not allowed to edit this Campaign.'); + goBack(); + } + }) + .catch(err => { + if (err.status === 404) { + history.push('/notfound'); + } else { + setIsLoading(false); + ErrorHandler( + err, + 'There has been a problem loading the Campaign. Please refresh the page and try again.', + ); + } + }); + } + }; - return () => {}; + if (userIsLoading || whitelistIsLoading || !currentUser.address) return; + checks().then(); }, [userIsLoading, currentUser, whitelistIsLoading]); // TODO: Check if user Changes (in Class components checked in didUpdate) diff --git a/src/components/views/EditCommunity.jsx b/src/components/views/EditCommunity.jsx index 01a7b63dd..582e1404a 100644 --- a/src/components/views/EditCommunity.jsx +++ b/src/components/views/EditCommunity.jsx @@ -69,65 +69,68 @@ const EditCommunity = ({ isNew, match }) => { }, []); useEffect(() => { - if (userIsLoading || whitelistIsLoading || !currentUser.address) return () => {}; - - if (isNew) { - if (!currentUser.isDelegator && projectOwnersWhitelistEnabled) { - const modal = Modal.error({ - title: 'Permission Denied', - content: 'You are not allowed to create a Community', - closable: false, - centered: true, - onOk: () => history.replace('/'), - }); - - return () => { - modal.destroy(); - }; + const checks = async () => { + const authenticated = await authenticateUser(currentUser, false, web3); + if (!authenticated) { + goBack(); + return; } - checkProfile(currentUser).then(() => { - setCommunity({ - owner: currentUser, - ownerAddress: currentUser.address, - }); - setIsLoading(false); - }); - } else { - CommunityService.get(match.params.id) - .then(communityItem => { - if (isOwner(communityItem.ownerAddress, currentUser)) { + if (isNew) { + if (!currentUser.isDelegator && projectOwnersWhitelistEnabled) { + Modal.error({ + title: 'Permission Denied', + content: 'You are not allowed to create a Community', + closable: false, + centered: true, + onOk: () => history.replace('/'), + }); + } else { + checkProfile(currentUser).then(() => { setCommunity({ - title: communityItem.title, - description: communityItem.description, - communityUrl: communityItem.communityUrl, - id: match.params.id, - slug: communityItem.slug, - reviewerAddress: communityItem.reviewerAddress, - ownerAddress: communityItem.ownerAddress, - picture: communityItem.image.match(/\/ipfs\/.*/)[0], + owner: currentUser, + ownerAddress: currentUser.address, }); - communityObject.current = communityItem; - setIsLoading(false); - } else { - ErrorHandler({}, 'You are not allowed to edit this Community.'); - goBack(); - } - }) - .catch(err => { - if (err.status === 404) { - history.push('/notfound'); - } else { setIsLoading(false); - ErrorHandler( - err, - 'There has been a problem loading the Community. Please refresh the page and try again.', - ); - } - }); - } + }); + } + } else { + CommunityService.get(match.params.id) + .then(communityItem => { + if (isOwner(communityItem.ownerAddress, currentUser)) { + setCommunity({ + title: communityItem.title, + description: communityItem.description, + communityUrl: communityItem.communityUrl, + id: match.params.id, + slug: communityItem.slug, + reviewerAddress: communityItem.reviewerAddress, + ownerAddress: communityItem.ownerAddress, + picture: communityItem.image.match(/\/ipfs\/.*/)[0], + }); + communityObject.current = communityItem; + setIsLoading(false); + } else { + ErrorHandler({}, 'You are not allowed to edit this Community.'); + goBack(); + } + }) + .catch(err => { + if (err.status === 404) { + history.push('/notfound'); + } else { + setIsLoading(false); + ErrorHandler( + err, + 'There has been a problem loading the Community. Please refresh the page and try again.', + ); + } + }); + } + }; - return () => {}; + if (userIsLoading || whitelistIsLoading || !currentUser.address) return; + checks().then(); }, [userIsLoading, currentUser, whitelistIsLoading]); // TODO: Check if user Changes (in Class components checked in didUpdate) diff --git a/src/components/views/EditExpense.jsx b/src/components/views/EditExpense.jsx index a536006f6..302f85c6b 100644 --- a/src/components/views/EditExpense.jsx +++ b/src/components/views/EditExpense.jsx @@ -160,6 +160,12 @@ function EditExpense(props) { }; useEffect(() => { + if (currentUser.address) { + authenticateUser(currentUser, false, web3).then(auth => { + if (!auth) history.goBack(); + }); + } + if (trace) { setUserIsOwner( [campaign.ownerAddress, campaign.coownerAddress].includes(currentUser.address), diff --git a/src/components/views/EditMilestone.jsx b/src/components/views/EditMilestone.jsx index 8c312f2bf..7bbdc37f3 100644 --- a/src/components/views/EditMilestone.jsx +++ b/src/components/views/EditMilestone.jsx @@ -72,6 +72,12 @@ function EditMilestone(props) { }; useEffect(() => { + if (currentUser.address) { + authenticateUser(currentUser, false, web3).then(auth => { + if (!auth) history.goBack(); + }); + } + if (trace) { setUserIsOwner( [campaign.ownerAddress, campaign.coownerAddress].includes(currentUser.address), diff --git a/src/components/views/EditPayment.jsx b/src/components/views/EditPayment.jsx index ad4c03eba..857821b99 100644 --- a/src/components/views/EditPayment.jsx +++ b/src/components/views/EditPayment.jsx @@ -111,6 +111,12 @@ function EditPayment(props) { }; useEffect(() => { + if (currentUser.address) { + authenticateUser(currentUser, false, web3).then(auth => { + if (!auth) history.goBack(); + }); + } + if (trace) { setUserIsOwner( [campaign.ownerAddress, campaign.coownerAddress].includes(currentUser.address), diff --git a/src/components/views/EditTraceOld.jsx b/src/components/views/EditTraceOld.jsx index 8fded7f76..245bc4bf8 100644 --- a/src/components/views/EditTraceOld.jsx +++ b/src/components/views/EditTraceOld.jsx @@ -251,6 +251,11 @@ function EditTraceOld(props) { }, [editedForm.token, editedForm.fiatAmount, editedForm.date, editedForm.currency]); useEffect(() => { + if (currentUser.address) { + authenticateUser(currentUser, false, web3).then(auth => { + if (!auth) history.goBack(); + }); + } if (trace) { setUserIsOwner( [campaign.ownerAddress, campaign.coownerAddress].includes(currentUser.address), diff --git a/src/configuration.js b/src/configuration.js index 841f51afe..d5adc700b 100644 --- a/src/configuration.js +++ b/src/configuration.js @@ -42,7 +42,7 @@ const configurations = { homeNetworkName: 'Home Ganache', homeNetworkId: 66, // ipfsGateway: 'http://localhost:8080/ipfs/', - ipfsGateway: 'https://ipfs.giveth.io/ipfs/', + ipfsGateway: 'https://giveth.mypinata.cloud/ipfs/', homeUrl: 'http://localhost:3010', // sendErrors: false, analytics: { @@ -76,7 +76,7 @@ const configurations = { homeNetworkName: 'Ropsten', homeNetworkId: 3, homeNetworkChainId: '0x3', - ipfsGateway: 'https://ipfs.giveth.io/ipfs/', + ipfsGateway: 'https://giveth.mypinata.cloud/ipfs/', homeUrl: 'https://develop.giveth.io', analytics: { ga_UA: 'UA-103956937-5', @@ -109,7 +109,7 @@ const configurations = { homeNetworkName: 'Ropsten', homeNetworkId: 3, homeNetworkChainId: '0x3', - ipfsGateway: 'https://ipfs.giveth.io/ipfs/', + ipfsGateway: 'https://giveth.mypinata.cloud/ipfs/', homeUrl: 'https://release.giveth.io', analytics: { ga_UA: 'UA-103956937-4', @@ -139,7 +139,7 @@ const configurations = { homeNetworkName: 'Mainnet', homeNetworkId: 1, homeNetworkChainId: '0x1', - ipfsGateway: 'https://ipfs.giveth.io/ipfs/', + ipfsGateway: 'https://giveth.mypinata.cloud/ipfs/', homeUrl: 'https://trace.giveth.io', analytics: { ga_UA: 'UA-103956937-2', diff --git a/src/lib/ErrorHandler.jsx b/src/lib/ErrorHandler.jsx index 28c3a13dc..9405e8266 100644 --- a/src/lib/ErrorHandler.jsx +++ b/src/lib/ErrorHandler.jsx @@ -2,6 +2,7 @@ import { notification } from 'antd'; import ErrorPopup from '../components/ErrorPopup'; export default (err, message, forcePopup = false, onCancel = () => {}, onError = () => {}) => { + console.error(err); let _message = ''; let _description = ''; diff --git a/src/lib/feathersClient.js b/src/lib/feathersClient.js index 15a283dcc..73d81edf9 100644 --- a/src/lib/feathersClient.js +++ b/src/lib/feathersClient.js @@ -1,6 +1,6 @@ import localforage from 'localforage'; import rx from 'feathers-reactive'; -import socketio from 'feathers-socketio/client'; +import socketio from '@feathersjs/socketio-client'; import * as Sentry from '@sentry/react'; import config from '../configuration'; @@ -28,6 +28,9 @@ socket.on('connect_error', e => { console.log('send Feathers connection error to sentry'); } }); +socket.on('disconnect', _e => { + console.log('Could not connect to FeatherJS: Disconnect'); +}); socket.on('connect_timeout', _e => { console.log('Could not connect to FeatherJS: Timeout'); }); @@ -45,9 +48,9 @@ export const feathersRest = feathers() export const feathersClient = feathers() .configure( socketio(socket, { - timeout: 30000, - pingTimeout: 30000, - upgradeTimeout: 30000, + timeout: 90000, + pingTimeout: 90000, + upgradeTimeout: 90000, }), ) .configure(auth({ storage: localforage })) @@ -57,5 +60,5 @@ export const feathersClient = feathers() }), ); // .on('authenticated', feathersRest.passport.setJWT); // set token on feathersRest whenever it is changed -feathersClient.service('uploads').timeout = 10000; -feathersRest.service('uploads').timeout = 10000; +feathersClient.service('uploadByImpactGraph').timeout = 90000; +feathersRest.service('uploadByImpactGraph').timeout = 90000; diff --git a/src/services/IPFSService.js b/src/services/IPFSService.js index 659fe0431..7976c09a1 100644 --- a/src/services/IPFSService.js +++ b/src/services/IPFSService.js @@ -1,6 +1,7 @@ import config from '../configuration'; import ImageTools from '../lib/ImageResizer'; -import ErrorPopup from '../components/ErrorPopup'; +import { feathersClient } from '../lib/feathersClient'; +import ErrorHandler from '../lib/ErrorHandler'; class IPFSService { /** @@ -8,14 +9,13 @@ class IPFSService { * * @param {object|Blob|string} obj Object/Blob to upload to ipfsGateway. The only valid string is a base64 encoded image. */ - static upload(obj) { + static async upload(obj) { const { ipfsGateway } = config; if (!ipfsGateway || ipfsGateway === '') { console.log('not uploading to ipfs. missing ipfsGateway url'); return Promise.resolve(); } - let body; if (typeof obj === 'string') { if (obj.match(/^\/ipfs\/[^/]+$/) !== null) { return Promise.resolve(obj); @@ -23,20 +23,20 @@ class IPFSService { if (!ImageTools.isImage(obj)) { throw new Error('Cant upload string to ipfs'); } - body = ImageTools.toBlob(obj); - } else { - body = - obj instanceof Blob ? obj : new Blob([JSON.stringify(obj)], { type: 'application/json' }); } - return fetch(`${ipfsGateway}`, { - method: 'POST', - body, - }).then(res => { - if (res.ok) return `/ipfs/${res.headers.get('Ipfs-Hash')}`; - ErrorPopup('Something went wrong with the upload.', 'IPFS upload unsuccessful'); - throw new Error('IPFS upload unsuccessful', res); + const reader = new FileReader(); + reader.readAsDataURL(obj); + await new Promise(resolve => { + reader.onloadend = resolve; }); + + try { + return await feathersClient.service('uploadByImpactGraph').create({ uri: reader.result }); + } catch (e) { + ErrorHandler(e, 'Something went wrong with the upload.', true); + throw new Error('IPFS upload unsuccessful'); + } } } diff --git a/yarn.lock b/yarn.lock index 8420f454e..5e1b294f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2173,37 +2173,42 @@ "@feathersjs/errors" "^4.5.11" "@feathersjs/feathers" "^4.5.11" -"@feathersjs/authentication-client@^4.5.11": - version "4.5.11" - resolved "https://registry.yarnpkg.com/@feathersjs/authentication-client/-/authentication-client-4.5.11.tgz#e43ba3dc1030519507f4795416e1f8bffbfb5f4e" - integrity sha512-yONvXZb09eg4bBOPi6jDJZw/ANA7fsQwOlcf4M0feqFjsulFpsRlmEv77fzakMZtY7Nq6Ax5i2iqZP+zZr5hgA== - dependencies: - "@feathersjs/authentication" "^4.5.11" - "@feathersjs/commons" "^4.5.11" - "@feathersjs/errors" "^4.5.11" - "@feathersjs/feathers" "^4.5.11" - debug "^4.3.1" - -"@feathersjs/authentication@^4.5.11": - version "4.5.11" - resolved "https://registry.yarnpkg.com/@feathersjs/authentication/-/authentication-4.5.11.tgz#6fa356fedbf877eb1b722d2fa5bc7af349818da2" - integrity sha512-zLPbz+NIV6wYLstjZtLfozO7koJyzJTj+GyZYDsIK3N4GDhQc1mqWskuwWQtgeYZVpDdEsxPEohJ/7f576pFQQ== - dependencies: - "@feathersjs/errors" "^4.5.11" - "@feathersjs/feathers" "^4.5.11" - "@feathersjs/transport-commons" "^4.5.11" - "@types/jsonwebtoken" "^8.5.0" - debug "^4.3.1" +"@feathersjs/authentication-client@^4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@feathersjs/authentication-client/-/authentication-client-4.5.13.tgz#975e48f2d2789f29e7c15b3da880c28cbe05fac3" + integrity sha512-qcrgJ+fRy11Gs7H0BVp8wy1NV3SSSDmWlLr3R5bEii2UBY0TSJu39swUpypDw/93F85aDghpuj1l/u44dF5/3g== + dependencies: + "@feathersjs/authentication" "^4.5.12" + "@feathersjs/commons" "^4.5.12" + "@feathersjs/errors" "^4.5.12" + "@feathersjs/feathers" "^4.5.12" + debug "^4.3.3" + +"@feathersjs/authentication@^4.5.12": + version "4.5.12" + resolved "https://registry.yarnpkg.com/@feathersjs/authentication/-/authentication-4.5.12.tgz#fbe508b63fe51f1986e8be898b900709166f16a3" + integrity sha512-qNLSlSZ0lCM77ELf7Ae+mkgXE1HafwWU2q/2MbSQfva1zUTo34O59JHa3PKmDK+TqAQwYQVlAY9IR6SmK+MW1g== + dependencies: + "@feathersjs/errors" "^4.5.12" + "@feathersjs/feathers" "^4.5.12" + "@feathersjs/transport-commons" "^4.5.12" + "@types/jsonwebtoken" "^8.5.6" + debug "^4.3.3" jsonwebtoken "^8.5.1" - lodash "^4.17.20" + lodash "^4.17.21" long-timeout "^0.1.1" - uuid "^8.3.1" + uuid "^8.3.2" "@feathersjs/commons@^4.5.11", "@feathersjs/commons@^4.5.3": version "4.5.11" resolved "https://registry.yarnpkg.com/@feathersjs/commons/-/commons-4.5.11.tgz#4c9d04e6996b823981b714312f7915c4469f0ffd" integrity sha512-it/9lc0OER36+2zidopWo6Z4xRqNImQ+qegyQdHEuIDpEsYLXAv6MVHuDccaW2x2UmW5pce75UB7DhQ8yh8J/Q== +"@feathersjs/commons@^4.5.12": + version "4.5.12" + resolved "https://registry.yarnpkg.com/@feathersjs/commons/-/commons-4.5.12.tgz#42e60e933849905b8803a3ebd7d4424f85ee7d3f" + integrity sha512-ss3yyk8HurmOCSD+wvENIrT9iSa8vg9SmikoP5c9JaLkbtMmKpH88jCjgRl7jiO54f2+UcjW3PqccNgUGSNSDQ== + "@feathersjs/errors@^4.5.11": version "4.5.11" resolved "https://registry.yarnpkg.com/@feathersjs/errors/-/errors-4.5.11.tgz#419b4dd9b557fe7a87978363175cbd5e06f8b3b9" @@ -2211,6 +2216,13 @@ dependencies: debug "^4.3.1" +"@feathersjs/errors@^4.5.12": + version "4.5.12" + resolved "https://registry.yarnpkg.com/@feathersjs/errors/-/errors-4.5.12.tgz#c9d408a103e2ead228e6c61ea24516e6fe635a43" + integrity sha512-xIQJ7t/acTuL1fTC6mpf0qlcWfJkA9x0rRMrSgjD3mzUnJU6VqxXFxusL8895ksGD0vQHwPueblbm8Hn6Ifqqw== + dependencies: + debug "^4.3.3" + "@feathersjs/feathers@^4.5.11", "@feathersjs/feathers@^4.5.3": version "4.5.11" resolved "https://registry.yarnpkg.com/@feathersjs/feathers/-/feathers-4.5.11.tgz#98999fe3857896bd15a676d4660dd92fe22481c4" @@ -2221,24 +2233,42 @@ events "^3.2.0" uberproto "^2.0.6" -"@feathersjs/rest-client@^4.5.11": - version "4.5.11" - resolved "https://registry.yarnpkg.com/@feathersjs/rest-client/-/rest-client-4.5.11.tgz#0844bd0544bfb02a71d5ee677e71c0bf7e950ba9" - integrity sha512-OFvV7A3gk6MhTFpuz+hYBG9Do7AdStNtF6Kol/HSFPfaQv34VdOLD7M60EliCA2/7QykvuYU1uhwhhkNGUeWXg== +"@feathersjs/feathers@^4.5.12": + version "4.5.12" + resolved "https://registry.yarnpkg.com/@feathersjs/feathers/-/feathers-4.5.12.tgz#86a99e601a99cd3a30f9e8841039b052676f5168" + integrity sha512-24bxpMpheBrDmVwwByNPPfXnXk2KkeiW3NvE3xXHbt7QzZj3OrPJ8WS5MqUZMPMFSLMyqlhRKs+hpQgfWhuxrA== dependencies: - "@feathersjs/commons" "^4.5.11" - "@feathersjs/errors" "^4.5.11" - qs "^6.9.4" + "@feathersjs/commons" "^4.5.12" + debug "^4.3.3" + events "^3.3.0" + uberproto "^2.0.6" -"@feathersjs/transport-commons@^4.5.11": - version "4.5.11" - resolved "https://registry.yarnpkg.com/@feathersjs/transport-commons/-/transport-commons-4.5.11.tgz#dfb31ecd1e66eb80cc6fab77b41d62e46b0a844b" - integrity sha512-YuQZnHQWOnhDLggwcMHdWGfIwZ5xabZCQ9/g18Nx770SWYwYPSLyvvbwsxs52LVvHyXW7j1VojcNixdUrOnFHQ== +"@feathersjs/rest-client@^4.5.12": + version "4.5.12" + resolved "https://registry.yarnpkg.com/@feathersjs/rest-client/-/rest-client-4.5.12.tgz#402e6eea0c752166de21611dd8e9a44dcb783317" + integrity sha512-P1UZODZyrTL6UHaXKBR9cwZgUr/hcTbhWVaLzl7fgs1xoTFRYCXdHcuJlxGia203Cj3spU1ImPhJlZipsxayFg== dependencies: - "@feathersjs/commons" "^4.5.11" - "@feathersjs/errors" "^4.5.11" - debug "^4.3.1" - lodash "^4.17.20" + "@feathersjs/commons" "^4.5.12" + "@feathersjs/errors" "^4.5.12" + qs "^6.10.2" + +"@feathersjs/socketio-client@^4.5.13": + version "4.5.13" + resolved "https://registry.yarnpkg.com/@feathersjs/socketio-client/-/socketio-client-4.5.13.tgz#bf2c013fa1a4743f3d3a66c18569e18b7bc254fd" + integrity sha512-WPjBNR6+tiIwsPyO89s+HrasIPqouNNALR8MENYLZzRaKo+najMjVwLVMzVUgJ6Ztxs/WmPTs17Hbjv5iY11jA== + dependencies: + "@feathersjs/transport-commons" "^4.5.12" + "@types/socket.io-client" "^1.4.36" + +"@feathersjs/transport-commons@^4.5.12": + version "4.5.12" + resolved "https://registry.yarnpkg.com/@feathersjs/transport-commons/-/transport-commons-4.5.12.tgz#3993d03a1cfed630b0fc42e5dc1e92c76738fb28" + integrity sha512-c/FnP+xzCmfsHGj4NGhHpTy2haaA2jiKZ+du8rUUWBgxC73y3mw7udUGhWdDxGx2mnXtOKCwIA6oPQBdXtFC+A== + dependencies: + "@feathersjs/commons" "^4.5.12" + "@feathersjs/errors" "^4.5.12" + debug "^4.3.3" + lodash "^4.17.21" radix-router "^3.0.1" "@giveth/bridge-contract@^1.0.6": @@ -3266,10 +3296,10 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@types/jsonwebtoken@^8.5.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#56958cb2d80f6d74352bd2e501a018e2506a8a84" - integrity sha512-rNAPdomlIUX0i0cg2+I+Q1wOUr531zHBQ+cV/28PJ39bSPKjahatZZ2LMuhiguETkCgLVzfruw/ZvNMNkKoSzw== +"@types/jsonwebtoken@^8.5.6": + version "8.5.8" + resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz#01b39711eb844777b7af1d1f2b4cf22fda1c0c44" + integrity sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A== dependencies: "@types/node" "*" @@ -3407,12 +3437,10 @@ dependencies: "@types/node" "*" -"@types/socket.io@~1.4.27": - version "1.4.42" - resolved "https://registry.yarnpkg.com/@types/socket.io/-/socket.io-1.4.42.tgz#cd2750542d95db888e161b88c85d38162f21fbbb" - integrity sha512-2SnWce3DiBVkswhJgpo4FSoMTAAHksxYOFXaBZe4icrrrvpXee8yUPOZT77xzWvLZw63QpREUHHWzM4lQpHjtA== - dependencies: - "@types/node" "*" +"@types/socket.io-client@^1.4.36": + version "1.4.36" + resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-1.4.36.tgz#e4f1ca065f84c20939e9850e70222202bd76ff3f" + integrity sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag== "@types/source-list-map@*": version "0.1.2" @@ -5227,11 +5255,6 @@ base64-js@^1.0.2, base64-js@^1.3.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" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" - integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== - base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -6355,11 +6378,6 @@ component-bind@1.0.0: resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - component-emitter@^1.2.0, component-emitter@^1.2.1, component-emitter@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -6493,11 +6511,6 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -cookie@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" - integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== - cookiejar@^2.1.0, cookiejar@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" @@ -7020,19 +7033,19 @@ debug@=3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: +debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +debug@^4.3.3: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - ms "^2.1.1" + ms "2.1.2" decamelize-keys@^1.0.0: version "1.1.0" @@ -7579,18 +7592,6 @@ engine.io-parser@~2.2.0: blob "0.0.5" has-binary2 "~1.0.2" -engine.io@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.5.0.tgz#9d6b985c8a39b1fe87cd91eb014de0552259821b" - integrity sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA== - dependencies: - accepts "~1.3.4" - base64id "2.0.0" - cookie "~0.4.1" - debug "~4.1.0" - engine.io-parser "~2.2.0" - ws "~7.4.2" - enhanced-resolve@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" @@ -8839,18 +8840,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -feathers-commons@^0.8.0: - version "0.8.7" - resolved "https://registry.yarnpkg.com/feathers-commons/-/feathers-commons-0.8.7.tgz#11c6f25b537745a983e8d61552d7db8932d53782" - integrity sha1-EcbyW1N3RamD6NYVUtfbiTLVN4I= - -feathers-errors@^2.2.0: - version "2.9.2" - resolved "https://registry.yarnpkg.com/feathers-errors/-/feathers-errors-2.9.2.tgz#96ca0e5fe50cc56f0eccc90ce3fa5e1f8840828d" - integrity sha512-qwIX97bNW7+1tWVG073+omUA0rCYKJtTtwuzTrrvfrtdr8J8Dk1Fy4iaV9Fa6/YBD5AZu0lsplPE0iu4u/d4GQ== - dependencies: - debug "^3.0.0" - feathers-hooks-common@^5.0.5: version "5.0.6" resolved "https://registry.yarnpkg.com/feathers-hooks-common/-/feathers-hooks-common-5.0.6.tgz#eac65521d44c306c838f14c9f1f6deb785ac0b35" @@ -8881,26 +8870,6 @@ feathers-reactive@^0.8.2: rxjs "^6.5.5" sift "^12.0.1" -feathers-socket-commons@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/feathers-socket-commons/-/feathers-socket-commons-2.4.0.tgz#062efd57f9a8716644145b993a5f72709969f1e1" - integrity sha1-Bi79V/mocWZEFFuZOl9ycJlp8eE= - dependencies: - debug "^2.2.0" - feathers-commons "^0.8.0" - feathers-errors "^2.2.0" - -feathers-socketio@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/feathers-socketio/-/feathers-socketio-2.0.1.tgz#7efa089c33569a3b09d09d6c077a5f6c257f4a52" - integrity sha512-3ByXVr6UGyGN6TPRN+U5IhENYrSgeuADhbKWLG5cq2WvYH9h2N1l3cj7WBVsfRektUgVw/HkGNAoExy8yuknMA== - dependencies: - "@types/socket.io" "~1.4.27" - debug "^3.0.0" - feathers-socket-commons "^2.0.0" - socket.io "^2.0.1" - uberproto "^1.2.0" - fetch-ponyfill@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" @@ -14733,7 +14702,14 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@^6.5.1, qs@^6.9.4: +qs@^6.10.2: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" + +qs@^6.5.1: version "6.10.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== @@ -16702,11 +16678,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socket.io-adapter@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" - integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== - socket.io-client@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.4.0.tgz#aafb5d594a3c55a34355562fc8aea22ed9119a35" @@ -16733,27 +16704,6 @@ socket.io-parser@~3.3.0: debug "~3.1.0" isarray "2.0.1" -socket.io-parser@~3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.1.tgz#b06af838302975837eab2dc980037da24054d64a" - integrity sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A== - dependencies: - component-emitter "1.2.1" - debug "~4.1.0" - isarray "2.0.1" - -socket.io@^2.0.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.4.1.tgz#95ad861c9a52369d7f1a68acf0d4a1b16da451d2" - integrity sha512-Si18v0mMXGAqLqCVpTxBa8MGqriHGQh8ccEOhmsmNS3thNCGBwO8WGrwMibANsWtQQ5NStdZwHqZR3naJVFc3w== - dependencies: - debug "~4.1.0" - engine.io "~3.5.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.4.0" - socket.io-parser "~3.4.0" - sockjs-client@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.1.tgz#256908f6d5adfb94dabbdbd02c66362cca0f9ea6" @@ -17994,11 +17944,6 @@ u2f-api@0.2.7: resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== -uberproto@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/uberproto/-/uberproto-1.2.0.tgz#61d4eab024f909c4e6ea52be867c4894a4beeb76" - integrity sha1-YdTqsCT5CcTm6lK+hnxIlKS+63Y= - uberproto@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/uberproto/-/uberproto-2.0.6.tgz#709274d183bce6fb734dfd3880d2086ed72b69e5" @@ -18298,7 +18243,7 @@ uuid@7.0.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.2.tgz#7ff5c203467e91f5e0d85cfcbaaf7d2ebbca9be6" integrity sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw== -uuid@8.3.2, uuid@^8.3.0, uuid@^8.3.1, uuid@^8.3.2: +uuid@8.3.2, uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -19521,7 +19466,7 @@ ws@7.4.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== -ws@7.4.6: +ws@7.4.6, ws@~7.4.2: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== @@ -19549,7 +19494,7 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^7.4.4, ws@~7.4.2: +ws@^7.4.4: version "7.4.5" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==