@agoric/smart-wallet 0.5.4-dev-763bc10.0.763bc10 → 0.5.4-dev-bcbee89.0.bcbee89
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/package.json +14 -14
- package/src/offers.d.ts +2 -0
- package/src/offers.d.ts.map +1 -1
- package/src/offers.js +1 -0
- package/src/smartWallet.d.ts +8 -0
- package/src/smartWallet.d.ts.map +1 -1
- package/src/smartWallet.js +58 -13
- package/src/typeGuards.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/smart-wallet",
|
|
3
|
-
"version": "0.5.4-dev-
|
|
3
|
+
"version": "0.5.4-dev-bcbee89.0.bcbee89",
|
|
4
4
|
"description": "Wallet contract",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"lint:eslint": "yarn run -T eslint ."
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@agoric/casting": "0.4.3-dev-
|
|
22
|
-
"@agoric/cosmic-proto": "0.4.1-dev-
|
|
23
|
-
"@agoric/swingset-vat": "0.32.3-dev-
|
|
21
|
+
"@agoric/casting": "0.4.3-dev-bcbee89.0.bcbee89",
|
|
22
|
+
"@agoric/cosmic-proto": "0.4.1-dev-bcbee89.0.bcbee89",
|
|
23
|
+
"@agoric/swingset-vat": "0.32.3-dev-bcbee89.0.bcbee89",
|
|
24
24
|
"@endo/bundle-source": "^4.1.2",
|
|
25
25
|
"@endo/captp": "^4.4.8",
|
|
26
26
|
"@endo/init": "^1.1.12",
|
|
@@ -28,15 +28,15 @@
|
|
|
28
28
|
"import-meta-resolve": "^4.1.0"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@agoric/ertp": "0.16.3-dev-
|
|
32
|
-
"@agoric/internal": "0.3.3-dev-
|
|
33
|
-
"@agoric/notifier": "0.6.3-dev-
|
|
34
|
-
"@agoric/store": "0.9.3-dev-
|
|
35
|
-
"@agoric/vat-data": "0.5.3-dev-
|
|
36
|
-
"@agoric/vats": "0.15.2-dev-
|
|
37
|
-
"@agoric/vow": "0.1.1-dev-
|
|
38
|
-
"@agoric/zoe": "0.26.3-dev-
|
|
39
|
-
"@agoric/zone": "0.2.3-dev-
|
|
31
|
+
"@agoric/ertp": "0.16.3-dev-bcbee89.0.bcbee89",
|
|
32
|
+
"@agoric/internal": "0.3.3-dev-bcbee89.0.bcbee89",
|
|
33
|
+
"@agoric/notifier": "0.6.3-dev-bcbee89.0.bcbee89",
|
|
34
|
+
"@agoric/store": "0.9.3-dev-bcbee89.0.bcbee89",
|
|
35
|
+
"@agoric/vat-data": "0.5.3-dev-bcbee89.0.bcbee89",
|
|
36
|
+
"@agoric/vats": "0.15.2-dev-bcbee89.0.bcbee89",
|
|
37
|
+
"@agoric/vow": "0.1.1-dev-bcbee89.0.bcbee89",
|
|
38
|
+
"@agoric/zoe": "0.26.3-dev-bcbee89.0.bcbee89",
|
|
39
|
+
"@agoric/zone": "0.2.3-dev-bcbee89.0.bcbee89",
|
|
40
40
|
"@endo/errors": "^1.2.13",
|
|
41
41
|
"@endo/eventual-send": "^1.3.4",
|
|
42
42
|
"@endo/far": "^1.1.14",
|
|
@@ -74,5 +74,5 @@
|
|
|
74
74
|
"typeCoverage": {
|
|
75
75
|
"atLeast": 94.51
|
|
76
76
|
},
|
|
77
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "bcbee89fe2847f2d51784fb3e645fe8da8035a49"
|
|
78
78
|
}
|
package/src/offers.d.ts
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* method: string;
|
|
19
19
|
* args: Passable[];
|
|
20
20
|
* saveResult?: ResultPlan;
|
|
21
|
+
* id?: number | string;
|
|
21
22
|
* }} InvokeEntryMessage
|
|
22
23
|
*/
|
|
23
24
|
/**
|
|
@@ -52,6 +53,7 @@ export type InvokeEntryMessage = {
|
|
|
52
53
|
method: string;
|
|
53
54
|
args: Passable[];
|
|
54
55
|
saveResult?: ResultPlan;
|
|
56
|
+
id?: number | string;
|
|
55
57
|
};
|
|
56
58
|
/**
|
|
57
59
|
* If `saveResult` is provided, the result of the invocation will be saved to
|
package/src/offers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offers.d.ts","sourceRoot":"","sources":["offers.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH;;;;;;GAMG;AAEH
|
|
1
|
+
{"version":3,"file":"offers.d.ts","sourceRoot":"","sources":["offers.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH;;;;;;GAMG;AAEH;;;;;;;;GAQG;AAEH;;;;;;;;;;;GAWG;AAEH,kEAAkE;AAClE,iCAAkC,aAAa,CAAC;sBAnCnC,MAAM,GAAG,MAAM;;;;;UAKd,MAAM;;;;;;;;iCAOP;IACR,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB;;;;;;wBAIS;IACR,EAAE,EAAE,OAAO,CAAC;IACZ,cAAc,EAAE,OAAO,kBAAkB,EAAE,cAAc,CAAC;IAC1D,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;0BAUS,SAAS,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EACH,OAAO,GACP,OAAO,kBAAkB,GACzB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;8BAlDuB,kBAAkB;8BADlB,aAAa"}
|
package/src/offers.js
CHANGED
package/src/smartWallet.d.ts
CHANGED
|
@@ -154,6 +154,14 @@ export type UpdateRecord = {
|
|
|
154
154
|
status: {
|
|
155
155
|
error: string;
|
|
156
156
|
};
|
|
157
|
+
} | {
|
|
158
|
+
updated: "invocation";
|
|
159
|
+
id: string | number;
|
|
160
|
+
error?: string;
|
|
161
|
+
result?: {
|
|
162
|
+
name?: string;
|
|
163
|
+
passStyle: string;
|
|
164
|
+
};
|
|
157
165
|
};
|
|
158
166
|
/**
|
|
159
167
|
* For use by clients to describe brands to users. Includes `displayInfo` to
|
package/src/smartWallet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartWallet.d.ts","sourceRoot":"","sources":["smartWallet.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"smartWallet.d.ts","sourceRoot":"","sources":["smartWallet.js"],"names":[],"mappings":"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"}
|
package/src/smartWallet.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fail, q } from '@endo/errors';
|
|
2
|
-
import { E } from '@endo/far';
|
|
2
|
+
import { E, passStyleOf } from '@endo/far';
|
|
3
3
|
import {
|
|
4
4
|
AmountShape,
|
|
5
5
|
BrandShape,
|
|
@@ -134,7 +134,13 @@ const trace = makeTracer('SmrtWlt');
|
|
|
134
134
|
/**
|
|
135
135
|
* @typedef {{ updated: 'offerStatus'; status: OfferStatus }
|
|
136
136
|
* | { updated: 'balance'; currentAmount: Amount }
|
|
137
|
-
* | { updated: 'walletAction'; status: { error: string } }
|
|
137
|
+
* | { updated: 'walletAction'; status: { error: string } }
|
|
138
|
+
* | {
|
|
139
|
+
* updated: 'invocation';
|
|
140
|
+
* id: string | number;
|
|
141
|
+
* error?: string;
|
|
142
|
+
* result?: { name?: string; passStyle: string };
|
|
143
|
+
* }} UpdateRecord
|
|
138
144
|
* Record of an update to the state of this wallet.
|
|
139
145
|
*
|
|
140
146
|
* Client is responsible for coalescing updates into a current state. See
|
|
@@ -432,6 +438,11 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
432
438
|
};
|
|
433
439
|
};
|
|
434
440
|
|
|
441
|
+
const invocationResultShape = M.splitRecord(
|
|
442
|
+
{},
|
|
443
|
+
{ id: M.or(M.string(), M.number()), saveResult: shape.ResultPlan },
|
|
444
|
+
);
|
|
445
|
+
|
|
435
446
|
const behaviorGuards = {
|
|
436
447
|
helper: M.interface('helperFacetI', {
|
|
437
448
|
assertUniqueOfferId: M.call(M.string()).returns(),
|
|
@@ -477,8 +488,8 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
477
488
|
invokeEntry: M.callWhen(shape.InvokeEntryMessage).returns(),
|
|
478
489
|
}),
|
|
479
490
|
resultStepWatcher: M.interface('resultStepWatcher', {
|
|
480
|
-
onFulfilled: M.call(M.any(),
|
|
481
|
-
onRejected: M.call(M.any(),
|
|
491
|
+
onFulfilled: M.call(M.any(), invocationResultShape).returns(),
|
|
492
|
+
onRejected: M.call(M.any(), invocationResultShape).returns(),
|
|
482
493
|
}),
|
|
483
494
|
self: M.interface('selfFacetI', {
|
|
484
495
|
handleBridgeAction: M.call(shape.StringCapData, M.boolean()).returns(
|
|
@@ -1068,14 +1079,21 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
1068
1079
|
const { myStore } = this.state;
|
|
1069
1080
|
const { resultStepWatcher } = this.facets;
|
|
1070
1081
|
|
|
1071
|
-
const { targetName: name, method, args, saveResult } = message;
|
|
1082
|
+
const { targetName: name, method, args, saveResult, id } = message;
|
|
1072
1083
|
myStore.has(name) || Fail`cannot invoke ${q(name)}: no such item`;
|
|
1073
1084
|
const value = myStore.get(name);
|
|
1074
1085
|
trace('entry', name, value);
|
|
1075
1086
|
trace('invoke', value, '.', method, '(', args, ')');
|
|
1087
|
+
if (id) {
|
|
1088
|
+
const { updateRecorderKit } = this.state;
|
|
1089
|
+
void updateRecorderKit.recorder.write({
|
|
1090
|
+
updated: 'invocation',
|
|
1091
|
+
id,
|
|
1092
|
+
});
|
|
1093
|
+
}
|
|
1076
1094
|
const callP = E(value)[method](...args);
|
|
1077
|
-
if (saveResult) {
|
|
1078
|
-
vowTools.watch(callP, resultStepWatcher, saveResult);
|
|
1095
|
+
if (id || saveResult) {
|
|
1096
|
+
vowTools.watch(callP, resultStepWatcher, { id, saveResult });
|
|
1079
1097
|
} else {
|
|
1080
1098
|
void callP;
|
|
1081
1099
|
}
|
|
@@ -1085,14 +1103,41 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
1085
1103
|
resultStepWatcher: {
|
|
1086
1104
|
/**
|
|
1087
1105
|
* @param {unknown} result
|
|
1088
|
-
* @param {ResultPlan}
|
|
1106
|
+
* @param {{ id?: string | number; saveResult?: ResultPlan }} opts
|
|
1089
1107
|
*/
|
|
1090
|
-
onFulfilled(result,
|
|
1091
|
-
trace('resultStepWatcher
|
|
1092
|
-
|
|
1108
|
+
onFulfilled(result, opts) {
|
|
1109
|
+
trace('resultStepWatcher opts', opts);
|
|
1110
|
+
const { id, saveResult } = opts;
|
|
1111
|
+
if (saveResult) {
|
|
1112
|
+
this.facets.helper.saveEntry(saveResult, result);
|
|
1113
|
+
}
|
|
1114
|
+
const passStyle = passStyleOf(result);
|
|
1115
|
+
const { updateRecorderKit } = this.state;
|
|
1116
|
+
if (id) {
|
|
1117
|
+
void updateRecorderKit.recorder.write({
|
|
1118
|
+
updated: 'invocation',
|
|
1119
|
+
id,
|
|
1120
|
+
result: {
|
|
1121
|
+
...(saveResult?.name ? { name: saveResult.name } : {}),
|
|
1122
|
+
passStyle,
|
|
1123
|
+
},
|
|
1124
|
+
});
|
|
1125
|
+
}
|
|
1093
1126
|
},
|
|
1094
|
-
|
|
1095
|
-
|
|
1127
|
+
/**
|
|
1128
|
+
* @param {unknown} reason
|
|
1129
|
+
* @param {{ id: string | number; saveResult?: ResultPlan }} opts
|
|
1130
|
+
*/
|
|
1131
|
+
onRejected(reason, opts) {
|
|
1132
|
+
trace('rejected', reason, opts);
|
|
1133
|
+
if (opts.id) {
|
|
1134
|
+
const { updateRecorderKit } = this.state;
|
|
1135
|
+
void updateRecorderKit.recorder.write({
|
|
1136
|
+
updated: 'invocation',
|
|
1137
|
+
id: opts.id,
|
|
1138
|
+
error: String(reason),
|
|
1139
|
+
});
|
|
1140
|
+
}
|
|
1096
1141
|
},
|
|
1097
1142
|
},
|
|
1098
1143
|
|