@agoric/solo 0.10.4-u15.0 → 0.10.4-u16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -53
- package/package.json +36 -30
- package/public/main.js +1 -2
- package/src/add-chain.js +2 -1
- package/src/captp.js +9 -3
- package/src/chain-cosmos-sdk.js +22 -21
- package/src/init-basedir.js +1 -2
- package/src/main.js +1 -0
- package/src/pipe-entrypoint.js +12 -4
- package/src/pipe.js +2 -2
- package/src/start.js +10 -4
- package/src/vat-http.js +4 -3
- package/src/web.js +1 -0
- package/test/captp-fixture.js +1 -2
- package/test/{test-home.js → home.test.js} +18 -5
- /package/{jsconfig.json → tsconfig.json} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,63 +3,21 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
### [0.10.4-
|
|
7
|
-
|
|
8
|
-
**Note:** Version bump only for package @agoric/solo
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
### [0.10.4-u14.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/solo@0.10.4-u14.0...@agoric/solo@0.10.4-u14.1) (2024-03-12)
|
|
15
|
-
|
|
16
|
-
**Note:** Version bump only for package @agoric/solo
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
### [0.10.4-u14.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/solo@0.10.4-u13.0...@agoric/solo@0.10.4-u14.0) (2024-02-27)
|
|
23
|
-
|
|
24
|
-
**Note:** Version bump only for package @agoric/solo
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
### [0.10.4-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/solo@0.10.4-u12.0...@agoric/solo@0.10.4-u13.0) (2023-12-07)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
### Bug Fixes
|
|
34
|
-
|
|
35
|
-
* **solo:** properly expose `/wallet/bridge.html` ([#8533](https://github.com/Agoric/agoric-sdk/issues/8533)) ([0095b0d](https://github.com/Agoric/agoric-sdk/commit/0095b0d8ef4cfd42e17b64f391c30eac8a5f018a))
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
### [0.10.4-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/solo@0.10.4-u11wf.0...@agoric/solo@0.10.4-u12.0) (2023-11-10)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
### Bug Fixes
|
|
43
|
-
|
|
44
|
-
* **solo:** correct lookup of wallet-ui ([670fc25](https://github.com/Agoric/agoric-sdk/commit/670fc25f30964c40fc887fac77ebf54bf58c7b8e))
|
|
45
|
-
* **solo:** use alternative endo init ([60a680a](https://github.com/Agoric/agoric-sdk/commit/60a680a2124ee9868ba3b8352a3a5a9f30ce7ab6))
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
### [0.10.4-u11wf.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/solo@0.10.4-u11.0...@agoric/solo@0.10.4-u11wf.0) (2023-09-23)
|
|
50
|
-
|
|
51
|
-
**Note:** Version bump only for package @agoric/solo
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
### [0.10.4-u11.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/solo@0.10.3...@agoric/solo@0.10.4-u11.0) (2023-08-24)
|
|
6
|
+
### [0.10.4-u16.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/solo@0.10.3...@agoric/solo@0.10.4-u16.0) (2024-07-02)
|
|
58
7
|
|
|
59
8
|
|
|
60
9
|
### Bug Fixes
|
|
61
10
|
|
|
62
|
-
*
|
|
11
|
+
* DEBUG harmony ([#8136](https://github.com/Agoric/agoric-sdk/issues/8136)) ([d2ea4b4](https://github.com/Agoric/agoric-sdk/commit/d2ea4b46b9efa61e97eec8711830d9fdd741ca55))
|
|
12
|
+
* ensure script main rejections exit with error ([abdab87](https://github.com/Agoric/agoric-sdk/commit/abdab879014a5c3124ebd0e9246995ac6b1ce6e5))
|
|
13
|
+
* misc runtime robustness found by typecheck ([a033f26](https://github.com/Agoric/agoric-sdk/commit/a033f2638f9f11e19d94d7931e4e0614773b1f60))
|
|
14
|
+
* **solo:** correct lookup of wallet-ui ([c578851](https://github.com/Agoric/agoric-sdk/commit/c578851076ed54ac267a2dfe1367eedafcae4b55))
|
|
15
|
+
* **solo:** let `init` tolerate existing `html` directory ([4d14a2f](https://github.com/Agoric/agoric-sdk/commit/4d14a2f6c42628bd40ffab2d94510a20088111bb))
|
|
16
|
+
* **solo:** properly expose `/wallet/bridge.html` ([#8533](https://github.com/Agoric/agoric-sdk/issues/8533)) ([e26232e](https://github.com/Agoric/agoric-sdk/commit/e26232e68e2019db07078ae4962de47b3d0a6666))
|
|
17
|
+
* **solo:** use alternative endo init ([584ec62](https://github.com/Agoric/agoric-sdk/commit/584ec624854ea0f4f755b189414bc9e0dabaa6e0))
|
|
18
|
+
* update for `[@jessie](https://github.com/jessie).js/safe-await-separator` ([94c6b3c](https://github.com/Agoric/agoric-sdk/commit/94c6b3c83a5326594f1e2886ae01d6a703a7a68f))
|
|
19
|
+
* update name of agd fee granter flag ([1aad20c](https://github.com/Agoric/agoric-sdk/commit/1aad20c49bf4374f6078bcbed87a6db9db3e6387))
|
|
20
|
+
* update TS types ([7580805](https://github.com/Agoric/agoric-sdk/commit/75808055afc129c81b7978fb83c33cfed7a4ecbd))
|
|
63
21
|
|
|
64
22
|
|
|
65
23
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/solo",
|
|
3
|
-
"version": "0.10.4-
|
|
3
|
+
"version": "0.10.4-u16.0",
|
|
4
4
|
"description": "Agoric's Solo vat runner",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -15,33 +15,33 @@
|
|
|
15
15
|
"test:xs": "exit 0",
|
|
16
16
|
"lint-fix": "yarn lint:eslint --fix",
|
|
17
17
|
"lint": "run-s --continue-on-error lint:*",
|
|
18
|
-
"lint:types": "tsc
|
|
18
|
+
"lint:types": "tsc",
|
|
19
19
|
"lint:eslint": "eslint ."
|
|
20
20
|
},
|
|
21
21
|
"keywords": [],
|
|
22
22
|
"author": "Agoric",
|
|
23
23
|
"license": "Apache-2.0",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agoric/access-token": "^0.4.22-
|
|
26
|
-
"@agoric/assert": "^0.6.1-
|
|
27
|
-
"@agoric/cache": "^0.3.3-
|
|
28
|
-
"@agoric/cosmic-swingset": "^0.42.0-
|
|
29
|
-
"@agoric/internal": "^0.4.0-
|
|
30
|
-
"@agoric/notifier": "^0.
|
|
31
|
-
"@agoric/spawner": "^0.6.9-
|
|
32
|
-
"@agoric/store": "^0.9.3-
|
|
33
|
-
"@agoric/swing-store": "^0.9.2-
|
|
34
|
-
"@agoric/swingset-vat": "^0.
|
|
35
|
-
"@agoric/telemetry": "^0.6.3-
|
|
36
|
-
"@agoric/time": "^0.3.3-
|
|
37
|
-
"@agoric/vats": "^0.
|
|
38
|
-
"@agoric/wallet": "^0.
|
|
39
|
-
"@endo/captp": "
|
|
40
|
-
"@endo/eventual-send": "
|
|
41
|
-
"@endo/import-bundle": "
|
|
42
|
-
"@endo/init": "
|
|
43
|
-
"@endo/marshal": "
|
|
44
|
-
"@endo/promise-kit": "
|
|
25
|
+
"@agoric/access-token": "^0.4.22-u16.0",
|
|
26
|
+
"@agoric/assert": "^0.6.1-u16.0",
|
|
27
|
+
"@agoric/cache": "^0.3.3-u16.0",
|
|
28
|
+
"@agoric/cosmic-swingset": "^0.42.0-u16.0",
|
|
29
|
+
"@agoric/internal": "^0.4.0-u16.0",
|
|
30
|
+
"@agoric/notifier": "^0.7.0-u16.0",
|
|
31
|
+
"@agoric/spawner": "^0.6.9-u16.0",
|
|
32
|
+
"@agoric/store": "^0.9.3-u16.0",
|
|
33
|
+
"@agoric/swing-store": "^0.9.2-u16.0",
|
|
34
|
+
"@agoric/swingset-vat": "^0.33.0-u16.0",
|
|
35
|
+
"@agoric/telemetry": "^0.6.3-u16.0",
|
|
36
|
+
"@agoric/time": "^0.3.3-u16.0",
|
|
37
|
+
"@agoric/vats": "^0.16.0-u16.0",
|
|
38
|
+
"@agoric/wallet": "^0.19.0-u16.0",
|
|
39
|
+
"@endo/captp": "^4.2.0",
|
|
40
|
+
"@endo/eventual-send": "^1.2.2",
|
|
41
|
+
"@endo/import-bundle": "^1.1.2",
|
|
42
|
+
"@endo/init": "^1.1.2",
|
|
43
|
+
"@endo/marshal": "^1.5.0",
|
|
44
|
+
"@endo/promise-kit": "^1.1.2",
|
|
45
45
|
"anylogger": "^0.21.0",
|
|
46
46
|
"deterministic-json": "^1.0.5",
|
|
47
47
|
"esm": "agoric-labs/esm#Agoric-built",
|
|
@@ -49,30 +49,36 @@
|
|
|
49
49
|
"http-proxy-middleware": "^2.0.6",
|
|
50
50
|
"import-meta-resolve": "^2.2.1",
|
|
51
51
|
"minimist": "^1.2.0",
|
|
52
|
-
"morgan": "^1.
|
|
52
|
+
"morgan": "^1.10.0",
|
|
53
53
|
"node-fetch": "^2.6.0",
|
|
54
54
|
"temp": "^0.9.1",
|
|
55
55
|
"tmp": "^0.2.1",
|
|
56
56
|
"ws": "^7.2.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@agoric/ertp": "^0.16.3-
|
|
60
|
-
"@endo/bundle-source": "2.
|
|
61
|
-
"ava": "^5.
|
|
62
|
-
"c8": "^
|
|
59
|
+
"@agoric/ertp": "^0.16.3-u16.0",
|
|
60
|
+
"@endo/bundle-source": "^3.2.3",
|
|
61
|
+
"ava": "^5.3.0",
|
|
62
|
+
"c8": "^9.1.0"
|
|
63
63
|
},
|
|
64
64
|
"publishConfig": {
|
|
65
65
|
"access": "public"
|
|
66
66
|
},
|
|
67
67
|
"engines": {
|
|
68
|
-
"node": "
|
|
68
|
+
"node": "^18.12 || ^20.9"
|
|
69
69
|
},
|
|
70
70
|
"ava": {
|
|
71
71
|
"files": [
|
|
72
|
-
"test
|
|
72
|
+
"test/**/*.test.*"
|
|
73
|
+
],
|
|
74
|
+
"require": [
|
|
75
|
+
"@endo/init/debug.js"
|
|
73
76
|
],
|
|
74
77
|
"timeout": "20m",
|
|
75
78
|
"workerThreads": false
|
|
76
79
|
},
|
|
77
|
-
"
|
|
80
|
+
"typeCoverage": {
|
|
81
|
+
"atLeast": 73.11
|
|
82
|
+
},
|
|
83
|
+
"gitHead": "bbdf652c3f413381cb352a8a360db1063974fafd"
|
|
78
84
|
}
|
package/public/main.js
CHANGED
|
@@ -237,7 +237,6 @@ function run() {
|
|
|
237
237
|
}
|
|
238
238
|
call({ type: 'getHighestHistory' })
|
|
239
239
|
.then(res => {
|
|
240
|
-
// eslint-disable-next-line no-use-before-define
|
|
241
240
|
setNextHistNum(res.highestHistory + 1);
|
|
242
241
|
// console.debug(`nextHistNum is now ${nextHistNum}`, res);
|
|
243
242
|
})
|
|
@@ -265,7 +264,7 @@ function run() {
|
|
|
265
264
|
commands[commands.length - 1] = inp.value;
|
|
266
265
|
commands[commands.length] = '';
|
|
267
266
|
inp.value = '';
|
|
268
|
-
call({ type: 'doEval', number, body: command });
|
|
267
|
+
void call({ type: 'doEval', number, body: command });
|
|
269
268
|
}
|
|
270
269
|
|
|
271
270
|
function inputKeyup(ev) {
|
package/src/add-chain.js
CHANGED
|
@@ -13,7 +13,7 @@ const DEFAULT_CHAIN_CONFIG = 'https://testnet.agoric.com/network-config';
|
|
|
13
13
|
/**
|
|
14
14
|
* @param {string} basedir
|
|
15
15
|
* @param {string} [chainConfig]
|
|
16
|
-
* @param {boolean} [force
|
|
16
|
+
* @param {boolean} [force]
|
|
17
17
|
*/
|
|
18
18
|
async function addChain(basedir, chainConfig, force = false) {
|
|
19
19
|
let actualConfig = chainConfig;
|
|
@@ -29,6 +29,7 @@ async function addChain(basedir, chainConfig, force = false) {
|
|
|
29
29
|
const url = new URL(actualConfig, `file://${process.cwd()}`);
|
|
30
30
|
console.log('downloading netconfig from', url.href);
|
|
31
31
|
let netconf;
|
|
32
|
+
await null;
|
|
32
33
|
if (url.protocol === 'file:') {
|
|
33
34
|
const f = fs.readFileSync(url.pathname, 'utf-8');
|
|
34
35
|
netconf = JSON.parse(f);
|
package/src/captp.js
CHANGED
|
@@ -42,7 +42,9 @@ export const getCapTPHandler = (send, getLocalBootstrap, fallback) => {
|
|
|
42
42
|
dispatch,
|
|
43
43
|
abort,
|
|
44
44
|
});
|
|
45
|
-
doFallback('onOpen', obj, meta)
|
|
45
|
+
doFallback('onOpen', obj, meta).catch(e => {
|
|
46
|
+
console.error(`Error in fallback onOpen`, e);
|
|
47
|
+
});
|
|
46
48
|
},
|
|
47
49
|
onClose(obj, meta) {
|
|
48
50
|
console.debug(`Finishing CapTP`, meta);
|
|
@@ -52,7 +54,9 @@ export const getCapTPHandler = (send, getLocalBootstrap, fallback) => {
|
|
|
52
54
|
abort();
|
|
53
55
|
}
|
|
54
56
|
chans.delete(meta.channelHandle);
|
|
55
|
-
doFallback('onClose', obj, meta)
|
|
57
|
+
doFallback('onClose', obj, meta).catch(e => {
|
|
58
|
+
console.error(`Error in fallback onClose`, e);
|
|
59
|
+
});
|
|
56
60
|
},
|
|
57
61
|
onError(obj, meta) {
|
|
58
62
|
console.debug(`Error in CapTP`, meta, obj.error);
|
|
@@ -61,7 +65,9 @@ export const getCapTPHandler = (send, getLocalBootstrap, fallback) => {
|
|
|
61
65
|
const { abort } = chan;
|
|
62
66
|
abort(obj.error);
|
|
63
67
|
}
|
|
64
|
-
doFallback('onError', obj, meta)
|
|
68
|
+
doFallback('onError', obj, meta).catch(e => {
|
|
69
|
+
console.error(`Error in fallback onError`, e);
|
|
70
|
+
});
|
|
65
71
|
},
|
|
66
72
|
async onMessage(obj, meta) {
|
|
67
73
|
console.debug('processing inbound', obj);
|
package/src/chain-cosmos-sdk.js
CHANGED
|
@@ -160,7 +160,7 @@ export async function connectToChain(
|
|
|
160
160
|
);
|
|
161
161
|
|
|
162
162
|
// The helper address may not have a token balance, and instead uses a
|
|
163
|
-
// separate fee account, set up with something like:
|
|
163
|
+
// separate fee granter account, set up with something like:
|
|
164
164
|
//
|
|
165
165
|
// agd tx feegrant grant --period=5 --period-limit=200000uist \
|
|
166
166
|
// $(cat cosmos-fee-account) $(cat ag-cosmos-helper-address)
|
|
@@ -172,12 +172,11 @@ export async function connectToChain(
|
|
|
172
172
|
let lastGoodRpcHrefIndex = 0;
|
|
173
173
|
async function retryRpcHref(tryOnce) {
|
|
174
174
|
let rpcHrefIndex = lastGoodRpcHrefIndex;
|
|
175
|
-
|
|
175
|
+
|
|
176
176
|
for await (const _ of forever) {
|
|
177
177
|
const thisRpcHref = rpcHrefs[rpcHrefIndex];
|
|
178
178
|
|
|
179
179
|
// tryOnce will either throw if cancelled (which rejects this promise),
|
|
180
|
-
// eslint-disable-next-line no-await-in-loop
|
|
181
180
|
const ret = await tryOnce(thisRpcHref);
|
|
182
181
|
if (ret !== undefined) {
|
|
183
182
|
// Or returns non-undefined, which we should resolve.
|
|
@@ -186,7 +185,6 @@ export async function connectToChain(
|
|
|
186
185
|
}
|
|
187
186
|
|
|
188
187
|
// It was undefined, so wait, then retry.
|
|
189
|
-
// eslint-disable-next-line no-await-in-loop
|
|
190
188
|
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
191
189
|
rpcHrefIndex = (rpcHrefIndex + 1) % rpcHrefs.length;
|
|
192
190
|
}
|
|
@@ -259,7 +257,7 @@ export async function connectToChain(
|
|
|
259
257
|
*/
|
|
260
258
|
const getMailboxNotifier = () => {
|
|
261
259
|
const { notifier, updater } = makeNotifierKit();
|
|
262
|
-
retryRpcHref(async rpcHref => {
|
|
260
|
+
void retryRpcHref(async rpcHref => {
|
|
263
261
|
// Every time we enter this function, we are establishing a
|
|
264
262
|
// new websocket to a potentially different RPC server.
|
|
265
263
|
//
|
|
@@ -487,7 +485,7 @@ export async function connectToChain(
|
|
|
487
485
|
|
|
488
486
|
waitForTxHash = subscribeAndWaitForTxHash;
|
|
489
487
|
if (postponedTxHash) {
|
|
490
|
-
subscribeAndWaitForTxHash(postponedTxHash);
|
|
488
|
+
void subscribeAndWaitForTxHash(postponedTxHash);
|
|
491
489
|
}
|
|
492
490
|
|
|
493
491
|
subscribeToStorage(`mailbox.${clientAddr}`, (err, storageValue) => {
|
|
@@ -654,14 +652,13 @@ ${chainID} chain does not yet know of address ${clientAddr}${adviseEgress(
|
|
|
654
652
|
|
|
655
653
|
// Use the feeAccount for any fees.
|
|
656
654
|
if (feeAccountAddr) {
|
|
657
|
-
txArgs.push(`--fee-
|
|
655
|
+
txArgs.push(`--fee-granter=${feeAccountAddr}`);
|
|
658
656
|
}
|
|
659
657
|
|
|
660
658
|
// We just try a single delivery per block.
|
|
661
659
|
let retry = true;
|
|
662
660
|
for await (const _ of whileTrue(() => retry)) {
|
|
663
661
|
retry = false;
|
|
664
|
-
// eslint-disable-next-line no-await-in-loop
|
|
665
662
|
const { stderr, stdout } = await runHelper([
|
|
666
663
|
...txArgs,
|
|
667
664
|
`--sequence=${sequenceNumber}`,
|
|
@@ -694,15 +691,20 @@ ${chainID} chain does not yet know of address ${clientAddr}${adviseEgress(
|
|
|
694
691
|
// Wait for the transaction to be included in a block.
|
|
695
692
|
const txHash = out.txhash;
|
|
696
693
|
|
|
697
|
-
waitForTxHash(txHash)
|
|
698
|
-
|
|
699
|
-
|
|
694
|
+
waitForTxHash(txHash)
|
|
695
|
+
.then(txResult => {
|
|
696
|
+
// The result had an error code (not 0 or undefined for success).
|
|
697
|
+
if (txResult.code) {
|
|
698
|
+
// eslint-disable-next-line no-use-before-define
|
|
699
|
+
failedSend(
|
|
700
|
+
assert.error(`Error in tx processing: ${txResult.log}`),
|
|
701
|
+
);
|
|
702
|
+
}
|
|
703
|
+
})
|
|
704
|
+
.catch(err =>
|
|
700
705
|
// eslint-disable-next-line no-use-before-define
|
|
701
|
-
failedSend(
|
|
702
|
-
|
|
703
|
-
);
|
|
704
|
-
}
|
|
705
|
-
});
|
|
706
|
+
failedSend(assert.error(`Error in tx processing: ${err}`)),
|
|
707
|
+
);
|
|
706
708
|
|
|
707
709
|
// We submitted the transaction to the mempool successfully.
|
|
708
710
|
// Preemptively increment our sequence number to avoid needing to
|
|
@@ -724,9 +726,8 @@ ${chainID} chain does not yet know of address ${clientAddr}${adviseEgress(
|
|
|
724
726
|
* @param {bigint} [lastMailboxUpdate]
|
|
725
727
|
*/
|
|
726
728
|
const recurseEachMailboxUpdate = async (lastMailboxUpdate = undefined) => {
|
|
727
|
-
const { updateCount, value: mailbox } =
|
|
728
|
-
lastMailboxUpdate
|
|
729
|
-
);
|
|
729
|
+
const { updateCount, value: mailbox } =
|
|
730
|
+
await mbNotifier.getUpdateSince(lastMailboxUpdate);
|
|
730
731
|
updateCount || Fail`${GCI} unexpectedly finished!`;
|
|
731
732
|
if (mailbox) {
|
|
732
733
|
const { outbox, ack } = mailbox;
|
|
@@ -780,11 +781,11 @@ ${chainID} chain does not yet know of address ${clientAddr}${adviseEgress(
|
|
|
780
781
|
updateCount || Fail`Sending unexpectedly finished!`;
|
|
781
782
|
|
|
782
783
|
await sendFromMessagePool().then(successfulSend, failedSend);
|
|
783
|
-
recurseEachSend(updateCount);
|
|
784
|
+
void recurseEachSend(updateCount);
|
|
784
785
|
};
|
|
785
786
|
|
|
786
787
|
// Begin the sender when we get the first (empty) mailbox update.
|
|
787
|
-
mbNotifier.getUpdateSince().then(() => recurseEachSend());
|
|
788
|
+
void mbNotifier.getUpdateSince().then(() => recurseEachSend());
|
|
788
789
|
|
|
789
790
|
async function deliver(newMessages, acknum) {
|
|
790
791
|
let doSend = false;
|
package/src/init-basedir.js
CHANGED
|
@@ -12,8 +12,7 @@ const console = anylogger('ag-solo:init');
|
|
|
12
12
|
|
|
13
13
|
const DEFAULT_WALLET = '@agoric/wallet';
|
|
14
14
|
|
|
15
|
-
const
|
|
16
|
-
const dirname = path.dirname(filename);
|
|
15
|
+
const dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
17
16
|
|
|
18
17
|
/**
|
|
19
18
|
* @param {string} basedir
|
package/src/main.js
CHANGED
package/src/pipe-entrypoint.js
CHANGED
|
@@ -29,10 +29,12 @@ const main = async () => {
|
|
|
29
29
|
mutex.resolve(undefined);
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
|
+
/** @type {any} */
|
|
32
33
|
const as = parse(`${msg}`);
|
|
33
34
|
deliverator(...as).then(() => send('go'));
|
|
34
35
|
});
|
|
35
36
|
|
|
37
|
+
await null;
|
|
36
38
|
switch (method) {
|
|
37
39
|
case 'connectToFakeChain': {
|
|
38
40
|
const [basedir, GCI, delay] = margs;
|
|
@@ -58,7 +60,13 @@ const main = async () => {
|
|
|
58
60
|
send('go');
|
|
59
61
|
};
|
|
60
62
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
process.exitCode = 1;
|
|
64
|
+
main().then(
|
|
65
|
+
() => {
|
|
66
|
+
process.exitCode = 0;
|
|
67
|
+
},
|
|
68
|
+
err => {
|
|
69
|
+
console.error('Failed with', err);
|
|
70
|
+
process.exit(process.exitCode || 1);
|
|
71
|
+
},
|
|
72
|
+
);
|
package/src/pipe.js
CHANGED
|
@@ -7,8 +7,7 @@ import { parse, stringify } from '@endo/marshal';
|
|
|
7
7
|
|
|
8
8
|
import { makeShutdown } from '@agoric/internal/src/node/shutdown.js';
|
|
9
9
|
|
|
10
|
-
const
|
|
11
|
-
const dirname = path.dirname(filename);
|
|
10
|
+
const dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
12
11
|
|
|
13
12
|
export const connectToPipe = async ({ method, args, deliverInboundToMbx }) => {
|
|
14
13
|
// console.log('connectToPipe', method, args);
|
|
@@ -31,6 +30,7 @@ export const connectToPipe = async ({ method, args, deliverInboundToMbx }) => {
|
|
|
31
30
|
return;
|
|
32
31
|
}
|
|
33
32
|
// console.log('pipe.js', msg);
|
|
33
|
+
/** @type {any} */
|
|
34
34
|
const as = parse(`${msg}`);
|
|
35
35
|
deliverInboundToMbx(...as).then(() => cp.send('go'));
|
|
36
36
|
});
|
package/src/start.js
CHANGED
|
@@ -262,6 +262,7 @@ const buildSwingset = async (
|
|
|
262
262
|
async function deliverInboundToMbx(sender, messages, ack) {
|
|
263
263
|
Array.isArray(messages) || Fail`inbound given non-Array: ${messages}`;
|
|
264
264
|
// console.debug(`deliverInboundToMbx`, messages, ack);
|
|
265
|
+
await null;
|
|
265
266
|
if (mb.deliverInbound(sender, messages, ack)) {
|
|
266
267
|
await processKernel();
|
|
267
268
|
}
|
|
@@ -316,6 +317,7 @@ const buildSwingset = async (
|
|
|
316
317
|
const queuedMoveTimeForward = withInputQueue(
|
|
317
318
|
async function moveTimeForward() {
|
|
318
319
|
const now = Date.now();
|
|
320
|
+
await null;
|
|
319
321
|
try {
|
|
320
322
|
if (timer.poll(now)) {
|
|
321
323
|
await processKernel();
|
|
@@ -369,10 +371,13 @@ const deployWallet = async ({ agWallet, deploys, hostport }) => {
|
|
|
369
371
|
|
|
370
372
|
// Use the same verbosity as our caller did for us.
|
|
371
373
|
let verbosity;
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
374
|
+
const DEBUG_LIST = (process.env.DEBUG || '').split(',');
|
|
375
|
+
if (
|
|
376
|
+
DEBUG_LIST.find(selector => ['agoric:debug', 'agoric'].includes(selector))
|
|
377
|
+
) {
|
|
375
378
|
verbosity = ['-vv'];
|
|
379
|
+
} else if (DEBUG_LIST.includes('agoric:info') || process.env.DEBUG === '') {
|
|
380
|
+
verbosity = [];
|
|
376
381
|
} else {
|
|
377
382
|
verbosity = ['-v'];
|
|
378
383
|
}
|
|
@@ -469,7 +474,7 @@ const start = async (basedir, argv) => {
|
|
|
469
474
|
|
|
470
475
|
// Start timer here!
|
|
471
476
|
startTimer(800);
|
|
472
|
-
resetOutdatedState();
|
|
477
|
+
await resetOutdatedState();
|
|
473
478
|
|
|
474
479
|
// Remove wallet traces.
|
|
475
480
|
await unlink('html/wallet').catch(_ => {});
|
|
@@ -495,6 +500,7 @@ const start = async (basedir, argv) => {
|
|
|
495
500
|
let hostport;
|
|
496
501
|
await Promise.all(
|
|
497
502
|
connections.map(async c => {
|
|
503
|
+
await null;
|
|
498
504
|
switch (c.type) {
|
|
499
505
|
case 'chain-cosmos-sdk':
|
|
500
506
|
{
|
package/src/vat-http.js
CHANGED
|
@@ -106,8 +106,8 @@ export function buildRootObject(vatPowers) {
|
|
|
106
106
|
setCommandDevice(d) {
|
|
107
107
|
commandDevice = d;
|
|
108
108
|
|
|
109
|
-
const replHandler = getReplHandler(replObjects, send
|
|
110
|
-
registerURLHandler(replHandler, '/private/repl');
|
|
109
|
+
const replHandler = getReplHandler(replObjects, send);
|
|
110
|
+
void registerURLHandler(replHandler, '/private/repl');
|
|
111
111
|
|
|
112
112
|
// Assign the captp handler.
|
|
113
113
|
const captpHandler = Far('captpHandler', {
|
|
@@ -126,7 +126,7 @@ export function buildRootObject(vatPowers) {
|
|
|
126
126
|
return harden(exported);
|
|
127
127
|
},
|
|
128
128
|
});
|
|
129
|
-
registerURLHandler(captpHandler, '/private/captp');
|
|
129
|
+
void registerURLHandler(captpHandler, '/private/captp');
|
|
130
130
|
},
|
|
131
131
|
|
|
132
132
|
registerURLHandler,
|
|
@@ -198,6 +198,7 @@ export function buildRootObject(vatPowers) {
|
|
|
198
198
|
dispatcher = 'onMessage',
|
|
199
199
|
} = rawMeta;
|
|
200
200
|
|
|
201
|
+
await null;
|
|
201
202
|
try {
|
|
202
203
|
let channelHandle = channelIdToHandle.get(rawChannelID);
|
|
203
204
|
if (dispatcher === 'onOpen') {
|
package/src/web.js
CHANGED
package/test/captp-fixture.js
CHANGED
|
@@ -65,7 +65,6 @@ export async function makeFixture(PORT, noisy = false) {
|
|
|
65
65
|
let lastUpdateCount;
|
|
66
66
|
for (;;) {
|
|
67
67
|
process.stdout.write('o');
|
|
68
|
-
// eslint-disable-next-line no-await-in-loop
|
|
69
68
|
const update = await E(E.get(bootP).loadingNotifier).getUpdateSince(
|
|
70
69
|
lastUpdateCount,
|
|
71
70
|
);
|
|
@@ -109,7 +108,7 @@ export async function makeFixture(PORT, noisy = false) {
|
|
|
109
108
|
// We only reject if the child exits before CapTP is established.
|
|
110
109
|
reject(Error(`CapTP fixture exited with ${code}`));
|
|
111
110
|
});
|
|
112
|
-
tryConnect(resolve, reject);
|
|
111
|
+
void tryConnect(resolve, reject);
|
|
113
112
|
});
|
|
114
113
|
}
|
|
115
114
|
|
|
@@ -5,7 +5,6 @@ import { test } from '@agoric/swingset-vat/tools/prepare-test-env-ava.js';
|
|
|
5
5
|
import bundleSourceAmbient from '@endo/bundle-source';
|
|
6
6
|
import { AmountMath } from '@agoric/ertp';
|
|
7
7
|
import { TimeMath } from '@agoric/time';
|
|
8
|
-
import { Stable } from '@agoric/vats/src/tokens.js';
|
|
9
8
|
import { Far } from '@endo/marshal';
|
|
10
9
|
import { resolve as importMetaResolve } from 'import-meta-resolve';
|
|
11
10
|
|
|
@@ -13,6 +12,21 @@ import { makeFixture, E } from './captp-fixture.js';
|
|
|
13
12
|
|
|
14
13
|
const SOLO_PORT = 7999;
|
|
15
14
|
|
|
15
|
+
// XXX test depends on this exact value from the Inter Protocol economy,
|
|
16
|
+
// by way of agoric-cli (which this test covertly depends upon)
|
|
17
|
+
export const Stable = harden(
|
|
18
|
+
/** @type {const } */ ({
|
|
19
|
+
symbol: 'IST',
|
|
20
|
+
denom: 'uist',
|
|
21
|
+
proposedName: 'Agoric stable token',
|
|
22
|
+
assetKind: 'nat',
|
|
23
|
+
displayInfo: {
|
|
24
|
+
decimalPlaces: 6,
|
|
25
|
+
assetKind: 'nat',
|
|
26
|
+
},
|
|
27
|
+
}),
|
|
28
|
+
);
|
|
29
|
+
|
|
16
30
|
//#region setup (ambient authority is confined to this region)
|
|
17
31
|
test.before('setup', async t => {
|
|
18
32
|
const loadBundle = async specifier => {
|
|
@@ -81,9 +95,8 @@ test.serial('home.wallet - receive zoe invite', async t => {
|
|
|
81
95
|
'@agoric/zoe/src/contracts/automaticRefund.js',
|
|
82
96
|
);
|
|
83
97
|
const installationHandle = await E(zoe).install(bundle);
|
|
84
|
-
const { creatorInvitation: invite } =
|
|
85
|
-
installationHandle
|
|
86
|
-
);
|
|
98
|
+
const { creatorInvitation: invite } =
|
|
99
|
+
await E(zoe).startInstance(installationHandle);
|
|
87
100
|
|
|
88
101
|
// Check that the wallet knows about the Zoe invite issuer and starts out
|
|
89
102
|
// with a default Zoe invite issuer purse.
|
|
@@ -141,7 +154,7 @@ test.serial('home.localTimerService makeNotifier', async t => {
|
|
|
141
154
|
const notifier = E(localTimerService).makeNotifier(1n, 1n);
|
|
142
155
|
const update1 = await E(notifier).getUpdateSince();
|
|
143
156
|
const firstUpdate = update1.updateCount;
|
|
144
|
-
t.
|
|
157
|
+
t.true(firstUpdate > 0);
|
|
145
158
|
const update2 = await E(notifier).getUpdateSince(update1.updateCount);
|
|
146
159
|
t.truthy(BigInt(update2.updateCount) > BigInt(firstUpdate));
|
|
147
160
|
|
|
File without changes
|