From 866a4e3fc84ba86457d568d55edc9666d687b977 Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Fri, 1 Nov 2019 19:32:10 -0700 Subject: [PATCH] feat(deploy): upload contracts --- README.md | 2 +- lib/deploy.js | 103 +++++++++++ lib/main.js | 2 +- package-lock.json | 256 +++++++++++++++++++++++++- package.json | 7 +- template/.agservers/package-lock.json | 18 +- template/.agservers/package.json | 2 +- template/api/deploy.js | 2 +- template/contract/deploy.js | 10 +- template/ui/yarn.lock | 4 +- 10 files changed, 377 insertions(+), 29 deletions(-) create mode 100644 lib/deploy.js diff --git a/README.md b/README.md index 9df4000c31b..6194a9a8718 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,6 @@ agoric init dapp cd dapp agoric install agoric start -agoric deploy +agoric deploy ./api/deploy.js ./contract/deploy.js # Navigate to http://localhost:8000/ ``` diff --git a/lib/deploy.js b/lib/deploy.js new file mode 100644 index 00000000000..a621341622a --- /dev/null +++ b/lib/deploy.js @@ -0,0 +1,103 @@ +/* eslint-disable no-await-in-loop */ +import parseArgs from 'minimist'; +import WebSocket from 'ws'; +import { E } from '@agoric/eventual-send'; +import { evaluateProgram } from '@agoric/evaluate'; +import { makeCapTP } from '@agoric/captp'; + +import bundleSource from '@agoric/bundle-source'; + +import path from 'path'; + +const makePromise = () => { + const pr = {}; + pr.p = new Promise((resolve, reject) => { + pr.res = resolve; + pr.rej = reject; + }); + return pr; +}; + +const sendJSON = (ws, obj) => { + if (ws.readyState !== ws.OPEN) { + return; + } + //console.log('sending', obj); + ws.send(JSON.stringify(obj)); +}; + +export default async function deployMain(progname, rawArgs, priv) { + const { console, error } = priv; + const { _: args, hostport } = parseArgs(rawArgs, { + default: { + hostport: '127.0.0.1:8000' + }, + }); + + if (args.length === 0) { + error('you must specify at least one deploy.js to run'); + return 1; + } + + const wsurl = `ws://${hostport}/captp`; + const ws = new WebSocket(wsurl, { origin: 'http://127.0.0.1' }); + + const exit = makePromise(); + ws.on('open', async () => { + try { + const { dispatch, getBootstrap } = makeCapTP('bundle', obj => + sendJSON(ws, obj), + ); + ws.on('message', data => { + try { + const obj = JSON.parse(data); + // console.log('receiving', obj); + if (obj.type === 'CTP_ERROR') { + throw obj.error; + } + dispatch(obj); + } catch (e) { + console.error('server error processing message', data, e); + exit.rej(e); + } + }); + + // Wait for the chain to become ready. + let bootC = E.C(getBootstrap()); + console.error('Chain loaded:', await bootC.G.LOADING.P); + // Take a new copy, since the chain objects have been added to bootstrap. + bootC = E.C(getBootstrap()); + + for (const arg of args) { + const moduleFile = path.resolve(process.cwd(), arg); + const pathResolve = (...args) => path.resolve(path.dirname(moduleFile), ...args); + console.log('running', moduleFile); + const { source, sourceMap } = await bundleSource(moduleFile); + + const actualSource = `(${source}\n)\n${sourceMap}`; + const mainNS = evaluateProgram(actualSource, { require })(); + const main = mainNS.default; + if (typeof main !== 'function') { + console.error(`${moduleFile} does not have an export default function main`); + continue; + } + + await main(bootC.P, { + bundleSource: file => bundleSource(pathResolve(file)), + pathResolve, + }); + } + + console.error('Done!'); + ws.close(); + exit.res(0); + } catch (e) { + exit.rej(e); + } + }); + ws.on('close', (_code, _reason) => { + // console.log('connection closed'); + exit.res(1); + }); + return exit.p; +} diff --git a/lib/main.js b/lib/main.js index b28890f0fde..22d47ea6de9 100644 --- a/lib/main.js +++ b/lib/main.js @@ -63,7 +63,7 @@ start run Agoric servers case 'help': return usage(0); case 'deploy': - return await isNotBasedir() || subMain((await import('./deploy')).default, args); + return subMain((await import('./deploy')).default, args); case 'install': return await isNotBasedir() || subMain((await import('./install')).default, args); case 'start': diff --git a/package-lock.json b/package-lock.json index b8d55fe0515..13fbf03fc88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,104 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@agoric/acorn-eventual-send": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@agoric/acorn-eventual-send/-/acorn-eventual-send-2.0.0.tgz", + "integrity": "sha512-H1mSNKj2N6ouaIB23OYUMQztvMc6g4bZSnDecpminDELjCPZL1xZri+1t1tkPVhDwcTbS7K+Ho+T/FBTAyF1ag==" + }, + "@agoric/babel-parser": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@agoric/babel-parser/-/babel-parser-7.6.4.tgz", + "integrity": "sha512-3FQC3eP2hekhz1zn+2LcSL7tAG2dGgSqbmCeRfIFqhVS8bbE1hR7EvrC6jYlvqdU6yzlly43VykyRy9MHBvUAw==" + }, + "@agoric/bundle-source": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@agoric/bundle-source/-/bundle-source-1.0.2.tgz", + "integrity": "sha512-ltNxPS6454Zp3yyVF/368WYKD4sBrbpARlQFkAOyGS+kcmE5V7I4uzTsfFWNyARRbBkg24pm5ySv9Vy1xwJd4w==", + "requires": { + "@agoric/acorn-eventual-send": "^2.0.0", + "esm": "^3.2.5", + "rollup": "^1.25.1", + "rollup-plugin-node-resolve": "^5.2.0" + } + }, + "@agoric/captp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@agoric/captp/-/captp-1.0.2.tgz", + "integrity": "sha512-Zuyd4TDs+p8z/UP7oadC6rU4CdbOYakmh6yLv4XQ+Hd6hUeU3R7P4lbzqFM0ow5pvmLFKJY9xS/Ts4bgUMgLCQ==", + "requires": { + "@agoric/eventual-send": "^0.4.4", + "@agoric/harden": "^0.0.4", + "@agoric/marshal": "^0.1.1", + "@agoric/nat": "^2.0.1", + "esm": "^3.2.5", + "rollup": "^1.24.0", + "rollup-plugin-commonjs": "^10.1.0", + "rollup-plugin-node-resolve": "^5.2.0" + } + }, + "@agoric/default-evaluate-options": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@agoric/default-evaluate-options/-/default-evaluate-options-0.2.7.tgz", + "integrity": "sha512-g/nlyjibuju9CxeRfkULDMygBGKupwFLKvngtAzCsSycBkCBUHGWbN+AVUOPS80j3P+R3yhP6P6FIoVxjRae0g==", + "requires": { + "@agoric/babel-parser": "^7.6.4", + "@agoric/eventual-send": "^0.4.4", + "@agoric/transform-eventual-send": "^1.0.3", + "@babel/generator": "^7.6.4", + "esm": "^3.2.5" + } + }, + "@agoric/evaluate": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@agoric/evaluate/-/evaluate-2.1.3.tgz", + "integrity": "sha512-UcJTZX4xINir38pkZxMjI1T2QFOMlHyqXekMnZ8NPRbcVaVSMnDbXhs5DnmXTpgti+0LnRRt9+xlesPohMU+2Q==", + "requires": { + "@agoric/default-evaluate-options": "^0.2.7", + "esm": "^3.2.5" + } + }, + "@agoric/eventual-send": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@agoric/eventual-send/-/eventual-send-0.4.4.tgz", + "integrity": "sha512-I4hmmU6kRx0CY+8Z8pKZXt+DHeAqxJOFNNH5BGVRjxtZHLrQ7zJOjND+oH2dp02nLH1zdl67ZOg3eNblKf3Otg==" + }, + "@agoric/harden": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@agoric/harden/-/harden-0.0.4.tgz", + "integrity": "sha512-WvTw2otvchy3mScAvqQcX0l6049xp6cF17/Pw0PNNqUTJtOo/84tE9OyBSjEp8wn/XBNArPaJuRjMhQpIQ775Q==", + "requires": { + "@agoric/make-hardener": "0.0.4" + } + }, + "@agoric/make-hardener": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@agoric/make-hardener/-/make-hardener-0.0.4.tgz", + "integrity": "sha512-0k/wGkIVQO3IY7p/H/5OS3BIXsRK9Qb7nHnqyvj6hzvSyumwgPp8e4rz5QaVWSen43TGJl+zQn4mW9ZZShT1aw==" + }, + "@agoric/marshal": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@agoric/marshal/-/marshal-0.1.1.tgz", + "integrity": "sha512-V3m477O3L6CwYgf6PhSI7tXT436kS1oLcAneWyjOHrAD4ZbG5BfQ57/LCAMY8ujxLMsuY9aH3gfNGYTMOeJvXg==", + "requires": { + "@agoric/harden": "0.0.4", + "@agoric/nat": "^2.0.1" + } + }, + "@agoric/nat": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@agoric/nat/-/nat-2.0.1.tgz", + "integrity": "sha512-puvWkoaJovQib/YaSRSGJ8Kn9rogi/yyaVa3d5znSZb5WiYfUiEKW35BfexHhAdi0VfPz2anFHoRBoBSUIijNA==" + }, + "@agoric/transform-eventual-send": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@agoric/transform-eventual-send/-/transform-eventual-send-1.0.3.tgz", + "integrity": "sha512-+k2MIyQIPZsrtEYakpCXk/2XbQ3daPZnfildsmGJmaHF4BBRCWbGAVlcPraiWiVbTrWe1gB01t2q3hDA5YKtHg==", + "requires": { + "@agoric/harden": "0.0.4", + "esm": "^3.2.5" + } + }, "@babel/code-frame": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", @@ -13,6 +111,17 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", + "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", + "requires": { + "@babel/types": "^7.6.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, "@babel/highlight": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", @@ -24,11 +133,38 @@ "js-tokens": "^4.0.0" } }, + "@babel/types": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", + "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + }, + "@types/node": { + "version": "12.12.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.5.tgz", + "integrity": "sha512-KEjODidV4XYUlJBF3XdjSH5FWoMCtO0utnhtdLf1AgeuZLOrRbvmU/gaRCVg7ZaQDjVf3l84egiY0mRNe5xE4A==" + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "requires": { + "@types/node": "*" + } + }, "acorn": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", - "dev": true + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" }, "acorn-jsx": { "version": "5.1.0", @@ -96,6 +232,11 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -118,6 +259,11 @@ "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", "dev": true }, + "builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==" + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -567,11 +713,15 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "external-editor": { "version": "3.1.0", @@ -879,12 +1029,25 @@ "is-extglob": "^2.1.1" } }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, + "is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "requires": { + "@types/estree": "0.0.39" + } + }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -931,6 +1094,11 @@ "esprima": "^4.0.0" } }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -978,8 +1146,15 @@ "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "requires": { + "sourcemap-codec": "^1.4.4" + } }, "mimic-fn": { "version": "2.1.0", @@ -1229,8 +1404,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-type": { "version": "2.0.0", @@ -1376,7 +1550,6 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -1415,6 +1588,48 @@ "glob": "^7.1.3" } }, + "rollup": { + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.26.2.tgz", + "integrity": "sha512-TLM8hlYP85TFFptYlXmr2VnhCLA8GaYXG4LBdWsHu9oBH/Wm5MMPAE9wsAnohfV21Dqq0ZvRHdmsKXomshaDSg==", + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-commonjs": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", + "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "requires": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-node-resolve": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", + "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", + "requires": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "requires": { + "estree-walker": "^0.6.1" + } + }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -1491,6 +1706,16 @@ } } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "sourcemap-codec": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==" + }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", @@ -1863,6 +2088,11 @@ "os-tmpdir": "~1.0.2" } }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -1951,6 +2181,14 @@ "mkdirp": "^0.5.1" } }, + "ws": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", + "integrity": "sha512-+SqNqFbwTm/0DC18KYzIsMTnEWpLwJsiasW/O17la4iDRRIO9uaHbvKiAS3AHgTiuuWerK/brj4O6MYZkei9xg==", + "requires": { + "async-limiter": "^1.0.0" + } + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index f60ddb32fda..9989c0f8f37 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,14 @@ "tape-promise": "^4.0.0" }, "dependencies": { + "@agoric/bundle-source": "^1.0.2", + "@agoric/captp": "^1.0.2", + "@agoric/evaluate": "^2.1.3", + "@agoric/eventual-send": "^0.4.4", "chalk": "^2.4.2", "esm": "^3.2.5", - "minimist": "^1.2.0" + "minimist": "^1.2.0", + "ws": "^7.2.0" }, "keywords": [], "files": [ diff --git a/template/.agservers/package-lock.json b/template/.agservers/package-lock.json index c21dc795738..f058e1d68d0 100644 --- a/template/.agservers/package-lock.json +++ b/template/.agservers/package-lock.json @@ -1,6 +1,6 @@ { - "name": "@DIR@/agservers", - "version": "1.0.0", + "name": "agoric-servers", + "version": "0.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -51,15 +51,15 @@ } }, "@agoric/cosmic-swingset": { - "version": "0.10.8-dev.0", - "resolved": "https://registry.npmjs.org/@agoric/cosmic-swingset/-/cosmic-swingset-0.10.8-dev.0.tgz", - "integrity": "sha512-Fi+6DOzM2zqrUIPY7dXOpSZt94QDHAefzoG+AB9PwfC35Ej73Z5PUY5JtAQmYuePxMYTmjb7z1Xkaw57SHsqPg==", + "version": "0.10.9", + "resolved": "https://registry.npmjs.org/@agoric/cosmic-swingset/-/cosmic-swingset-0.10.9.tgz", + "integrity": "sha512-z+so3uPWgDyfvcj8UtNOFfTsIpeDxCM8o9gGEx8t3JLcwiKwK44HJgD8nHxUVRmYlREn+eQOWB+xSI+EI+Jh2w==", "requires": { "@agoric/acorn-eventual-send": "^1.0.2", "@agoric/bundle-source": "^1.0.2", "@agoric/captp": "^1.0.2", "@agoric/ertp": "^0.1.10", - "@agoric/evaluate": "^2.1.2", + "@agoric/evaluate": "^2.1.3", "@agoric/eventual-send": "^0.4.4", "@agoric/harden": "0.0.4", "@agoric/swingset-vat": "^0.2.0", @@ -73,11 +73,11 @@ "morgan": "^1.9.1", "n-readlines": "^1.0.0", "node-fetch": "^2.6.0", - "rollup": "^1.24.0", + "rollup": "^1.26.2", "rollup-plugin-node-resolve": "^5.2.0", - "temp": "^0.9.0", + "temp": "^0.9.1", "tendermint": "^4.0.8", - "ws": "^7.1.2" + "ws": "^7.2.0" } }, "@agoric/default-evaluate-options": { diff --git a/template/.agservers/package.json b/template/.agservers/package.json index fb31d179708..7246e1d2524 100644 --- a/template/.agservers/package.json +++ b/template/.agservers/package.json @@ -9,6 +9,6 @@ "author": "Agoric", "license": "Apache-2.0", "dependencies": { - "@agoric/cosmic-swingset": "^0.10.8-dev.0" + "@agoric/cosmic-swingset": "^0.10.9" } } diff --git a/template/api/deploy.js b/template/api/deploy.js index 0c0760a3c3d..90173ed89c6 100644 --- a/template/api/deploy.js +++ b/template/api/deploy.js @@ -1,6 +1,6 @@ // Agoric Dapp api deployment script export default async function deployApi(homeP, { bundleSource }) { - await { source, moduleFormat } = await bundleSource('./handler.js'); + const { source, moduleFormat } = await bundleSource('./handler.js'); const handlerInstall = homeP~.spawner~.install(source, moduleFormat); handlerInstall~.spawn(homeP); homeP~.registerCommandHandler(handler); diff --git a/template/contract/deploy.js b/template/contract/deploy.js index 7f9be88725b..05838cd0a28 100644 --- a/template/contract/deploy.js +++ b/template/contract/deploy.js @@ -3,16 +3,18 @@ import fs from 'fs'; const DAPP_NAME = "@DIR@"; -export default async function deployContract(homeP, { bundleSource }) { +export default async function deployContract(homeP, { bundleSource, pathResolve }) { // Create a source bundle for the Zoe automaticRefeund contract. - const { source, moduleFormat } = await bundleSource('./automaticRefund.js'); + const { source, moduleFormat } = await bundleSource(`./automaticRefund.js`); const contractHandle = homeP~.zoe~.install(source, moduleFormat); - const contractId = await homeP~.registrar~.set(DAPP_NAME, contractHandler); + const contractID = await homeP~.registrar~.register(DAPP_NAME, contractHandle); const contractsJson = JSON.stringify({ [DAPP_NAME]: contractID, }); // Save the contractID somewhere where the UI can find it. - await fs.promises.writeFile('../ui/contracts.json', contractsJson); + const cjfile = pathResolve(`../ui/contracts.json`); + console.log('writing', cjfile); + await fs.promises.writeFile(cjfile, contractsJson); } diff --git a/template/ui/yarn.lock b/template/ui/yarn.lock index 93352d0dd37..961128c8b1c 100644 --- a/template/ui/yarn.lock +++ b/template/ui/yarn.lock @@ -7997,7 +7997,7 @@ react-dev-utils@^9.1.0: strip-ansi "5.2.0" text-table "0.2.0" -react-dom@16.11.0: +react-dom@^16.11.0: version "16.11.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.11.0.tgz#7e7c4a5a85a569d565c2462f5d345da2dd849af5" integrity sha512-nrRyIUE1e7j8PaXSPtyRKtz+2y9ubW/ghNgqKFHHAHaeP0fpF5uXR+sq8IMRHC+ZUxw7W9NyCDTBtwWxvkb0iA== @@ -8078,7 +8078,7 @@ react-scripts@3.2.0: optionalDependencies: fsevents "2.0.7" -react@16.11.0: +react@^16.11.0: version "16.11.0" resolved "https://registry.yarnpkg.com/react/-/react-16.11.0.tgz#d294545fe62299ccee83363599bf904e4a07fdbb" integrity sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g==