From 80b0d4f75011ffe09bd6196e93e4de55a6f66e91 Mon Sep 17 00:00:00 2001 From: Bonjour Internet Date: Tue, 26 Sep 2023 16:37:34 +0200 Subject: [PATCH 1/4] fix: axios header issue --- package-lock.json | 290 +++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 158 insertions(+), 134 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3db5830b..44951b32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "@taquito/beacon-wallet": "^14.0.0", "@taquito/signer": "^13.0.1", "avalanche": "^3.15.3", - "axios": "^0.21.4", + "axios": "^1.5.0", "bip32": "^2.0.6", "bip39": "^3.0.4", "eciesjs": "^0.3.14", @@ -231,9 +231,9 @@ } }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -286,9 +286,9 @@ } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -913,9 +913,9 @@ } }, "node_modules/@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -931,9 +931,9 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "~6.10.3", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", + "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" }, @@ -2093,6 +2093,16 @@ "ws": "^7.4.0" } }, + "node_modules/@json-rpc-tools/provider/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "peer": true, + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, "node_modules/@json-rpc-tools/provider/node_modules/ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", @@ -5378,13 +5388,20 @@ "dev": true }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", + "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, + "node_modules/axios/node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/babel-jest": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", @@ -6394,9 +6411,9 @@ "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==" }, "node_modules/cypress": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.9.0.tgz", - "integrity": "sha512-MjIWrRpc+bQM9U4kSSdATZWZ2hUqHGFEQTF7dfeZRa4MnalMtc88FIE49USWP2ZVtfy5WPBcgfBX+YorFqGElA==", + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", + "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -8871,9 +8888,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -9790,30 +9807,6 @@ "node": ">= 6" } }, - "node_modules/jsdom/node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsdom/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/jsdom/node_modules/ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", @@ -10271,9 +10264,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -10469,9 +10462,9 @@ } }, "node_modules/node-abi/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } @@ -11166,12 +11159,18 @@ } }, "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/querystringify": { @@ -11708,9 +11707,9 @@ } }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11868,9 +11867,9 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, "peer": true, "dependencies": { @@ -12348,16 +12347,27 @@ } }, "node_modules/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==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { - "node": ">=0.8" + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/tr46": { @@ -13017,9 +13027,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -13351,9 +13361,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -13395,9 +13405,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -13882,9 +13892,9 @@ } }, "@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -13900,9 +13910,9 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "~6.10.3", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", + "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" }, @@ -14660,6 +14670,16 @@ "ws": "^7.4.0" }, "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "peer": true, + "requires": { + "follow-redirects": "^1.14.0" + } + }, "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", @@ -17233,11 +17253,20 @@ "dev": true }, "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", + "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + } } }, "babel-jest": { @@ -18065,9 +18094,9 @@ "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==" }, "cypress": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.9.0.tgz", - "integrity": "sha512-MjIWrRpc+bQM9U4kSSdATZWZ2hUqHGFEQTF7dfeZRa4MnalMtc88FIE49USWP2ZVtfy5WPBcgfBX+YorFqGElA==", + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", + "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", "dev": true, "requires": { "@cypress/request": "^2.88.10", @@ -19918,9 +19947,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -20630,24 +20659,6 @@ "mime-types": "^2.1.12" } }, - "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - } - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - }, "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", @@ -20998,9 +21009,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -21163,9 +21174,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" } } }, @@ -21699,10 +21710,13 @@ } }, "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } }, "querystringify": { "version": "2.2.0", @@ -22096,9 +22110,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -22215,9 +22229,9 @@ } }, "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, "peer": true, "requires": { @@ -22598,13 +22612,23 @@ } }, "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==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + } } }, "tr46": { @@ -23078,9 +23102,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrap-ansi": { diff --git a/package.json b/package.json index eeb9143f..85b89a43 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "@taquito/beacon-wallet": "^14.0.0", "@taquito/signer": "^13.0.1", "avalanche": "^3.15.3", - "axios": "^0.21.4", + "axios": "^1.5.0", "bip32": "^2.0.6", "bip39": "^3.0.4", "eciesjs": "^0.3.14", From 6c4682201cffb191c9d20cac811b90d2e671844c Mon Sep 17 00:00:00 2001 From: 1yam Date: Thu, 28 Sep 2023 16:44:45 +0200 Subject: [PATCH 2/4] Feature: secure upload --- src/messages/store/publish.ts | 133 ++++++++++++++++++++++++++++++---- 1 file changed, 119 insertions(+), 14 deletions(-) diff --git a/src/messages/store/publish.ts b/src/messages/store/publish.ts index bcf151db..33b4b7eb 100644 --- a/src/messages/store/publish.ts +++ b/src/messages/store/publish.ts @@ -1,10 +1,15 @@ import * as base from "../../accounts/account"; -import { ItemType, MessageType, StoreContent, StoreMessage } from "../types"; +import { Account } from "../../accounts/account"; +import { BaseMessage, ItemType, MessageType, StoreContent, StoreMessage } from "../types"; import { PushFileToStorageEngine, PutContentToStorageEngine } from "../create/publish"; import { SignAndBroadcast } from "../create/signature"; import { RequireOnlyOne } from "../../utils/requiredOnlyOne"; import { DEFAULT_API_V2 } from "../../global"; import { MessageBuilder } from "../../utils/messageBuilder"; +import shajs from "sha.js"; +import { stripTrailingSlash } from "../../utils/url"; +import FormData from "form-data"; +import axios from "axios"; /** * channel: The channel in which the message will be published. @@ -29,6 +34,7 @@ type StorePublishConfiguration = { storageEngine?: ItemType.ipfs | ItemType.storage; inlineRequested?: boolean; APIServer?: string; + sync?: boolean; }; /** @@ -45,20 +51,30 @@ export async function Publish({ channel, fileHash, fileObject, + sync = false, }: RequireOnlyOne): Promise { if (!fileObject && !fileHash) throw new Error("You need to specify a File to upload or a Hash to pin."); if (fileObject && fileHash) throw new Error("You can't pin a file and upload it at the same time."); - if (fileHash && storageEngine !== ItemType.ipfs) throw new Error("You must choose ipfs to pin file."); + if (fileHash && storageEngine !== ItemType.ipfs) throw new Error("You must choose ipfs to pin the file."); + let my_hash: string | null = null; + if (fileObject && storageEngine != ItemType.ipfs) { + my_hash = await processFileObject(fileObject); + if (my_hash == null) { + throw new Error("Cannot process file"); + } + } const hash = fileHash || - (await PushFileToStorageEngine({ - APIServer, - storageEngine, - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - file: fileObject, - })); + (my_hash + ? my_hash + : await PushFileToStorageEngine({ + APIServer, + storageEngine, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + file: fileObject, + })); const timestamp = Date.now() / 1000; const storeContent: StoreContent = { @@ -84,11 +100,100 @@ export async function Publish({ APIServer, }); - await SignAndBroadcast({ - message: message, - account, - APIServer, - }); + if (ItemType.ipfs == message.item_type) { + await SignAndBroadcast({ + message: message, + account, + APIServer, + }); + } else { + if (!fileObject) throw new Error("You need to specify a File to upload or a Hash to pin."); + return await send_message( + { + message: message, + account, + APIServer, + sync, + }, + fileObject, + ); + } return message; } +async function processFileObject(fileObject: Blob | Buffer | null): Promise { + if (fileObject) { + try { + let hash; + if (fileObject instanceof Blob) { + const buffer = await blobToBuffer(fileObject); + hash = await calculateSHA256Hash(buffer); + } else { + hash = calculateSHA256Hash(fileObject); + } + return hash; + } catch (error) { + console.error("Error calculating hash:", error); + return null; + } + } else { + console.error("Error: fileObject is null"); + return null; + } +} +type SignAndBroadcastConfiguration = { + message: BaseMessage; + account: Account; + APIServer: string; + sync: boolean; +}; + +async function send_message(configuration: SignAndBroadcastConfiguration, fileObject: Blob | Buffer) { + configuration.message.signature = await configuration.account.Sign(configuration.message); + try { + const form = new FormData(); + form.append("file", fileObject); + const metadata = { + message: configuration.message, + sync: configuration.sync, + }; + + form.append("metadata", JSON.stringify(metadata)); + const response = await axios.post( + `${stripTrailingSlash(configuration.APIServer)}/api/v0/storage/add_file`, + form, + { + headers: { + Accept: "application/json", + "Content-Type": "multipart/form-data", + }, + }, + ); + return response.data; + } catch (err: any) { + console.warn(err); + return err; + } +} + +async function blobToBuffer(blob: Blob): Promise { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = () => { + if (reader.result instanceof ArrayBuffer) { + resolve(Buffer.from(reader.result)); + } else { + reject("Failed to convert Blob to Buffer."); + } + }; + reader.readAsArrayBuffer(blob); + }); +} + +function calculateSHA256Hash(data: ArrayBuffer | Buffer): Promise { + return new Promise((resolve) => { + const buffer = Buffer.from(data); + const sha256Hash = new shajs.sha256().update(buffer).digest("hex"); + resolve(sha256Hash); + }); +} From f69b56c2701fca8eda36bc08cd8b86825faa5a38 Mon Sep 17 00:00:00 2001 From: 1yam Date: Mon, 9 Oct 2023 13:24:47 +0200 Subject: [PATCH 3/4] Refactor: more simple code --- src/messages/store/publish.ts | 150 +++++++++++++++++++--------------- 1 file changed, 82 insertions(+), 68 deletions(-) diff --git a/src/messages/store/publish.ts b/src/messages/store/publish.ts index 33b4b7eb..7bf09a39 100644 --- a/src/messages/store/publish.ts +++ b/src/messages/store/publish.ts @@ -56,31 +56,63 @@ export async function Publish({ if (!fileObject && !fileHash) throw new Error("You need to specify a File to upload or a Hash to pin."); if (fileObject && fileHash) throw new Error("You can't pin a file and upload it at the same time."); if (fileHash && storageEngine !== ItemType.ipfs) throw new Error("You must choose ipfs to pin the file."); - let my_hash: string | null = null; - if (fileObject && storageEngine != ItemType.ipfs) { - my_hash = await processFileObject(fileObject); - if (my_hash == null) { + + const myHash = await getHash(fileObject, storageEngine, fileHash, APIServer); + + const message = await createAndSendStoreMessage( + account, + channel, + myHash, + storageEngine, + APIServer, + inlineRequested, + sync, + fileObject, + ); + + return message; +} + +async function getHash( + fileObject: Buffer | Blob | null | undefined, + storageEngine: ItemType, + fileHash: string | undefined, + APIServer: string, +) { + if (fileObject && storageEngine !== ItemType.ipfs) { + const hash = await processFileObject(fileObject); + if (hash == null) { throw new Error("Cannot process file"); } + return hash; + } else if (fileObject && storageEngine === ItemType.ipfs) { + return await PushFileToStorageEngine({ + APIServer, + storageEngine, + file: fileObject, + }); + } else if (fileHash) { + return fileHash; + } else { + throw new Error("Error with File Hash"); } +} - const hash = - fileHash || - (my_hash - ? my_hash - : await PushFileToStorageEngine({ - APIServer, - storageEngine, - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - file: fileObject, - })); - +async function createAndSendStoreMessage( + account: base.Account, + channel: string, + myHash: string, + storageEngine: ItemType, + APIServer: string, + inlineRequested: boolean, + sync: boolean, + fileObject: Buffer | Blob | undefined, +) { const timestamp = Date.now() / 1000; const storeContent: StoreContent = { address: account.address, item_type: storageEngine, - item_hash: hash, + item_hash: myHash, time: timestamp, }; @@ -106,9 +138,10 @@ export async function Publish({ account, APIServer, }); + } else if (!fileObject) { + throw new Error("You need to specify a File to upload or a Hash to pin."); } else { - if (!fileObject) throw new Error("You need to specify a File to upload or a Hash to pin."); - return await send_message( + return await sendMessage( { message: message, account, @@ -121,26 +154,16 @@ export async function Publish({ return message; } -async function processFileObject(fileObject: Blob | Buffer | null): Promise { - if (fileObject) { - try { - let hash; - if (fileObject instanceof Blob) { - const buffer = await blobToBuffer(fileObject); - hash = await calculateSHA256Hash(buffer); - } else { - hash = calculateSHA256Hash(fileObject); - } - return hash; - } catch (error) { - console.error("Error calculating hash:", error); - return null; - } - } else { - console.error("Error: fileObject is null"); - return null; + +async function processFileObject(fileObject: Blob | Buffer | null): Promise { + if (!fileObject) throw new Error("fileObject is null"); + + if (fileObject instanceof Blob) { + fileObject = await blobToBuffer(fileObject); } + return calculateSHA256Hash(fileObject); } + type SignAndBroadcastConfiguration = { message: BaseMessage; account: Account; @@ -148,32 +171,26 @@ type SignAndBroadcastConfiguration = { sync: boolean; }; -async function send_message(configuration: SignAndBroadcastConfiguration, fileObject: Blob | Buffer) { - configuration.message.signature = await configuration.account.Sign(configuration.message); - try { - const form = new FormData(); - form.append("file", fileObject); - const metadata = { - message: configuration.message, - sync: configuration.sync, - }; +async function sendMessage(configuration: SignAndBroadcastConfiguration, fileObject: Blob | Buffer) { + const form = new FormData(); + const metadata = { + message: { + ...configuration.message, + signature: await configuration.account.Sign(configuration.message), + }, + sync: configuration.sync, + }; - form.append("metadata", JSON.stringify(metadata)); - const response = await axios.post( - `${stripTrailingSlash(configuration.APIServer)}/api/v0/storage/add_file`, - form, - { - headers: { - Accept: "application/json", - "Content-Type": "multipart/form-data", - }, - }, - ); - return response.data; - } catch (err: any) { - console.warn(err); - return err; - } + form.append("file", fileObject); + form.append("metadata", JSON.stringify(metadata)); + + const response = await axios.post(`${stripTrailingSlash(configuration.APIServer)}/api/v0/storage/add_file`, form, { + headers: { + Accept: "application/json", + "Content-Type": "multipart/form-data", + }, + }); + return response.data; } async function blobToBuffer(blob: Blob): Promise { @@ -190,10 +207,7 @@ async function blobToBuffer(blob: Blob): Promise { }); } -function calculateSHA256Hash(data: ArrayBuffer | Buffer): Promise { - return new Promise((resolve) => { - const buffer = Buffer.from(data); - const sha256Hash = new shajs.sha256().update(buffer).digest("hex"); - resolve(sha256Hash); - }); +function calculateSHA256Hash(data: ArrayBuffer | Buffer): string { + const buffer = Buffer.from(data); + return new shajs.sha256().update(buffer).digest("hex"); } From 1ee0a4f574df04e2ee035ac08c15301fbd1f9f36 Mon Sep 17 00:00:00 2001 From: 1yam Date: Mon, 9 Oct 2023 14:59:12 +0200 Subject: [PATCH 4/4] Fix & refactor --- src/messages/store/publish.ts | 25 +++---------------------- src/messages/store/utils.ts | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 22 deletions(-) create mode 100644 src/messages/store/utils.ts diff --git a/src/messages/store/publish.ts b/src/messages/store/publish.ts index 7bf09a39..2e2bb676 100644 --- a/src/messages/store/publish.ts +++ b/src/messages/store/publish.ts @@ -6,10 +6,10 @@ import { SignAndBroadcast } from "../create/signature"; import { RequireOnlyOne } from "../../utils/requiredOnlyOne"; import { DEFAULT_API_V2 } from "../../global"; import { MessageBuilder } from "../../utils/messageBuilder"; -import shajs from "sha.js"; import { stripTrailingSlash } from "../../utils/url"; import FormData from "form-data"; import axios from "axios"; +import { blobToBuffer, calculateSHA256Hash } from "./utils"; /** * channel: The channel in which the message will be published. @@ -81,7 +81,7 @@ async function getHash( ) { if (fileObject && storageEngine !== ItemType.ipfs) { const hash = await processFileObject(fileObject); - if (hash == null) { + if (hash === null || hash === undefined) { throw new Error("Cannot process file"); } return hash; @@ -132,7 +132,7 @@ async function createAndSendStoreMessage( APIServer, }); - if (ItemType.ipfs == message.item_type) { + if (ItemType.ipfs === message.item_type) { await SignAndBroadcast({ message: message, account, @@ -192,22 +192,3 @@ async function sendMessage(configuration: SignAndBroadcastConfiguration, fileObj }); return response.data; } - -async function blobToBuffer(blob: Blob): Promise { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = () => { - if (reader.result instanceof ArrayBuffer) { - resolve(Buffer.from(reader.result)); - } else { - reject("Failed to convert Blob to Buffer."); - } - }; - reader.readAsArrayBuffer(blob); - }); -} - -function calculateSHA256Hash(data: ArrayBuffer | Buffer): string { - const buffer = Buffer.from(data); - return new shajs.sha256().update(buffer).digest("hex"); -} diff --git a/src/messages/store/utils.ts b/src/messages/store/utils.ts new file mode 100644 index 00000000..5f0b649e --- /dev/null +++ b/src/messages/store/utils.ts @@ -0,0 +1,20 @@ +import shajs from "sha.js"; + +export async function blobToBuffer(blob: Blob): Promise { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = () => { + if (reader.result instanceof ArrayBuffer) { + resolve(Buffer.from(reader.result)); + } else { + reject("Failed to convert Blob to Buffer."); + } + }; + reader.readAsArrayBuffer(blob); + }); +} + +export function calculateSHA256Hash(data: ArrayBuffer | Buffer): string { + const buffer = Buffer.from(data); + return new shajs.sha256().update(buffer).digest("hex"); +}