-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: auto install bundle on instagoric #49
base: main
Are you sure you want to change the base?
Changes from all commits
d84df96
4100c16
3876271
e131098
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,9 +6,11 @@ import express from 'express'; | |
import https from 'https'; | ||
import tmp from 'tmp'; | ||
import { $, fetch, fs, nothrow, sleep } from 'zx'; | ||
import multer from 'multer'; | ||
|
||
import { makeSubscriptionKit } from '@agoric/notifier'; | ||
|
||
const upload = multer({ dest: 'uploads/', preservePath: true }); | ||
const { details: X } = globalThis.assert; | ||
|
||
const BASE_AMOUNT = "25000000"; | ||
|
@@ -763,6 +765,119 @@ faucetapp.get('/transaction-status/:txhash', (req, res) => { | |
else res.status(400).send('invalid form'); | ||
}); | ||
|
||
publicapp.get('/install-bundle', async (req, res) => { | ||
res.send(` | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="UTF-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<title>File Upload</title> | ||
</head> | ||
<body> | ||
|
||
<h1>Install Bundle and Submit Core Eval Proposal</h1> | ||
|
||
<form id="uploadForm" action="/install-bundle" method="POST" enctype="multipart/form-data"> | ||
<input type="file" name="file" id="fileInput" multiple required> | ||
<br><br> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is there a specific type of file we take as input? Should we have validation for it in the frontend or backend? Maybe enforce file size limitations as well? |
||
<button type="submit">Upload and Submit Proposal</button> | ||
</form> | ||
|
||
<script> | ||
document.getElementById('uploadForm').addEventListener('submit', function(event) { | ||
event.preventDefault(); // Prevent the default form submission | ||
|
||
const formData = new FormData(); | ||
const fileInput = document.getElementById('fileInput'); | ||
|
||
if (fileInput.files.length === 0) { | ||
alert("Please select a file."); | ||
return; | ||
} | ||
|
||
// Loop through all selected files and append them to FormData | ||
for (let i = 0; i < fileInput.files.length; i++) { | ||
formData.append('files[]', fileInput.files[i]); | ||
} | ||
|
||
fetch('/install-bundle', { | ||
method: 'POST', | ||
body: formData | ||
}) | ||
.then(data => { | ||
alert('File uploaded successfully!'); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we should check the response status before declaring the API request as a success. .then(response => {
if (!response.ok) {
throw new Error('Failed to upload file. Server responded with status ' + response.status);
}
return response.json();
}) |
||
console.log(data); | ||
}) | ||
.catch(error => { | ||
alert('Failed to upload file.'); | ||
console.error('Error:', error); | ||
}); | ||
}); | ||
</script> | ||
|
||
</body> | ||
</html> | ||
`); | ||
}); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It’s better to serve static HTML from a separate file. publicapp.get('/install-bundle', (req, res) => {
res.sendFile(path.join(__dirname, 'index.html'));
}); |
||
|
||
publicapp.post('/install-bundle', upload.array('files[]'), async (req, res) => { | ||
// Check if there are files in the request | ||
const files = req.files; | ||
if (!Array.isArray(files) || files.length === 0) { | ||
res.status(400).send('No files uploaded'); | ||
return; | ||
} | ||
|
||
// Iterate through all files and process each one | ||
for (const file of files) { | ||
|
||
const fileName = file.originalname; | ||
const bundle = file.filename; | ||
|
||
console.log("bundle", bundle) | ||
|
||
if (fileName.startsWith('b1-')) { | ||
try { | ||
const result = await $`\ | ||
${agBinary} tx swingset install-bundle --compress "@uploads/${bundle}" \ | ||
--from ${FAUCET_KEYNAME} --keyring-backend=test --keyring-dir=${agoricHome} --gas=auto \ | ||
--chain-id=${chainId} -b block --yes | ||
`; | ||
|
||
if (result.exitCode !== 0) { | ||
res.status(500).send(`Error processing file ${bundle}: ${result.stderr}`); | ||
return; | ||
} | ||
|
||
// const result2 = await $`${agBinary} query vstorage data bundles --chain-id=${chainId} agoriclocal --output json`; | ||
// const bundles = JSON.parse(result2.stdout); | ||
// console.log("bundles", bundles) | ||
} catch (error) { | ||
res.status(500).send(`Error processing file ${bundle}: ${error.message}`); | ||
return; | ||
} | ||
} | ||
} | ||
|
||
const proposalPermitFile = files.filter(file => file.originalname.endsWith('permit.json')).map(file => file.filename)[0]; | ||
const jsFile = files.filter(file => file.originalname.endsWith('.js')).map(file => file.filename)[0]; | ||
|
||
console.log("proposalPermitFile", proposalPermitFile); | ||
console.log("jsFile", jsFile); | ||
|
||
const result = await $`${agBinary} tx gov submit-proposal swingset-core-eval uploads/${proposalPermitFile} uploads/${jsFile} --title="Vaults Core Eval" --description="Vaults Core Eval" --deposit=1000000ubld --gas=auto --gas-adjustment=1.2 --from ${FAUCET_KEYNAME} --chain-id ${chainId} --home=${agoricHome} --keyring-backend=test --keyring-dir=${agoricHome} --yes` | ||
|
||
if (result.exitCode !== 0) { | ||
res.status(500).send(`Error submiting proposal ${result.stderr}`); | ||
return; | ||
} | ||
|
||
// If all files are processed successfully | ||
res.status(200).send('All files uploaded and processed successfully'); | ||
}); | ||
|
||
|
||
faucetapp.listen(faucetport, () => { | ||
console.log(`faucetapp listening on port ${faucetport}`); | ||
}); | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -237,6 +237,11 @@ ansi-styles@^3.2.1: | |
dependencies: | ||
color-convert "^1.9.0" | ||
|
||
append-field@^1.0.0: | ||
version "1.0.0" | ||
resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" | ||
integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== | ||
|
||
are-docs-informative@^0.0.2: | ||
version "0.0.2" | ||
resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963" | ||
|
@@ -385,6 +390,18 @@ braces@^3.0.3: | |
dependencies: | ||
fill-range "^7.1.1" | ||
|
||
buffer-from@^1.0.0: | ||
version "1.1.2" | ||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" | ||
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== | ||
|
||
busboy@^1.0.0: | ||
version "1.6.0" | ||
resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" | ||
integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== | ||
dependencies: | ||
streamsearch "^1.1.0" | ||
|
||
[email protected]: | ||
version "3.1.2" | ||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" | ||
|
@@ -437,6 +454,16 @@ [email protected]: | |
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" | ||
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== | ||
|
||
concat-stream@^1.5.2: | ||
version "1.6.2" | ||
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" | ||
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== | ||
dependencies: | ||
buffer-from "^1.0.0" | ||
inherits "^2.0.3" | ||
readable-stream "^2.2.2" | ||
typedarray "^0.0.6" | ||
|
||
confusing-browser-globals@^1.0.10: | ||
version "1.0.11" | ||
resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" | ||
|
@@ -464,6 +491,11 @@ [email protected]: | |
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" | ||
integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== | ||
|
||
core-util-is@~1.0.0: | ||
version "1.0.3" | ||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" | ||
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== | ||
|
||
cross-spawn@^6.0.5: | ||
version "6.0.5" | ||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" | ||
|
@@ -1206,7 +1238,7 @@ ignore@^5.2.0, ignore@^5.2.4: | |
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" | ||
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== | ||
|
||
[email protected]: | ||
[email protected], inherits@^2.0.3, inherits@~2.0.3: | ||
version "2.0.4" | ||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" | ||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== | ||
|
@@ -1408,6 +1440,11 @@ isarray@^2.0.5: | |
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" | ||
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== | ||
|
||
isarray@~1.0.0: | ||
version "1.0.0" | ||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" | ||
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== | ||
|
||
isexe@^2.0.0: | ||
version "2.0.0" | ||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" | ||
|
@@ -1549,6 +1586,13 @@ minimist@^1.2.0, minimist@^1.2.6: | |
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" | ||
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== | ||
|
||
mkdirp@^0.5.4: | ||
version "0.5.6" | ||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" | ||
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== | ||
dependencies: | ||
minimist "^1.2.6" | ||
|
||
[email protected]: | ||
version "2.0.0" | ||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" | ||
|
@@ -1559,6 +1603,19 @@ [email protected], ms@^2.1.1, ms@^2.1.3: | |
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" | ||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== | ||
|
||
multer@^1.4.5-lts.1: | ||
version "1.4.5-lts.1" | ||
resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" | ||
integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== | ||
dependencies: | ||
append-field "^1.0.0" | ||
busboy "^1.0.0" | ||
concat-stream "^1.5.2" | ||
mkdirp "^0.5.4" | ||
object-assign "^4.1.1" | ||
type-is "^1.6.4" | ||
xtend "^4.0.0" | ||
|
||
[email protected]: | ||
version "0.6.3" | ||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" | ||
|
@@ -1608,6 +1665,11 @@ npm-run-all@^4.1.5: | |
shell-quote "^1.6.1" | ||
string.prototype.padend "^3.0.0" | ||
|
||
object-assign@^4.1.1: | ||
version "4.1.1" | ||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" | ||
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== | ||
|
||
object-inspect@^1.13.1: | ||
version "1.13.2" | ||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" | ||
|
@@ -1759,6 +1821,11 @@ prettier@^2.6.2: | |
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" | ||
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== | ||
|
||
process-nextick-args@~2.0.0: | ||
version "2.0.1" | ||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" | ||
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== | ||
|
||
proxy-addr@~2.0.7: | ||
version "2.0.7" | ||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" | ||
|
@@ -1810,6 +1877,19 @@ read-pkg@^3.0.0: | |
normalize-package-data "^2.3.2" | ||
path-type "^3.0.0" | ||
|
||
readable-stream@^2.2.2: | ||
version "2.3.8" | ||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" | ||
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== | ||
dependencies: | ||
core-util-is "~1.0.0" | ||
inherits "~2.0.3" | ||
isarray "~1.0.0" | ||
process-nextick-args "~2.0.0" | ||
safe-buffer "~5.1.1" | ||
string_decoder "~1.1.1" | ||
util-deprecate "~1.0.1" | ||
|
||
reflect.getprototypeof@^1.0.4: | ||
version "1.0.6" | ||
resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" | ||
|
@@ -1874,6 +1954,11 @@ [email protected]: | |
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" | ||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== | ||
|
||
safe-buffer@~5.1.0, safe-buffer@~5.1.1: | ||
version "5.1.2" | ||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" | ||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== | ||
|
||
safe-regex-test@^1.0.3: | ||
version "1.0.3" | ||
resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" | ||
|
@@ -2055,6 +2140,11 @@ stream-combiner@~0.0.4: | |
dependencies: | ||
duplexer "~0.1.1" | ||
|
||
streamsearch@^1.1.0: | ||
version "1.1.0" | ||
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" | ||
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== | ||
|
||
string.prototype.includes@^2.0.0: | ||
version "2.0.0" | ||
resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f" | ||
|
@@ -2101,6 +2191,13 @@ string.prototype.trimstart@^1.0.8: | |
define-properties "^1.2.1" | ||
es-object-atoms "^1.0.0" | ||
|
||
string_decoder@~1.1.1: | ||
version "1.1.1" | ||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" | ||
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== | ||
dependencies: | ||
safe-buffer "~5.1.0" | ||
|
||
strip-bom@^3.0.0: | ||
version "3.0.0" | ||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" | ||
|
@@ -2162,7 +2259,7 @@ tsutils@^3.21.0: | |
dependencies: | ||
tslib "^1.8.1" | ||
|
||
type-is@~1.6.18: | ||
type-is@^1.6.4, type-is@~1.6.18: | ||
version "1.6.18" | ||
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" | ||
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== | ||
|
@@ -2214,6 +2311,11 @@ typed-array-length@^1.0.6: | |
is-typed-array "^1.1.13" | ||
possible-typed-array-names "^1.0.0" | ||
|
||
typedarray@^0.0.6: | ||
version "0.0.6" | ||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" | ||
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== | ||
|
||
typescript@~4.6.3: | ||
version "4.6.4" | ||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" | ||
|
@@ -2244,6 +2346,11 @@ [email protected], unpipe@~1.0.0: | |
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" | ||
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== | ||
|
||
util-deprecate@~1.0.1: | ||
version "1.0.2" | ||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" | ||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== | ||
|
||
[email protected]: | ||
version "1.0.1" | ||
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" | ||
|
@@ -2331,6 +2438,11 @@ which@^2.0.2: | |
dependencies: | ||
isexe "^2.0.0" | ||
|
||
xtend@^4.0.0: | ||
version "4.0.2" | ||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" | ||
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== | ||
|
||
yaml@^2.1.1: | ||
version "2.5.1" | ||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130" | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need to define
action
andmethod
here if we are overriding the default browser behavior?