@agoric/vats 0.15.2-dev-e193e66.0 → 0.15.2-dev-0960242.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agoric/vats",
3
- "version": "0.15.2-dev-e193e66.0+e193e66",
3
+ "version": "0.15.2-dev-0960242.0+0960242",
4
4
  "description": "Agoric's Vat library",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -22,20 +22,20 @@
22
22
  "author": "Agoric",
23
23
  "license": "Apache-2.0",
24
24
  "dependencies": {
25
- "@agoric/assert": "0.6.1-dev-e193e66.0+e193e66",
26
- "@agoric/cosmic-proto": "0.4.1-dev-e193e66.0+e193e66",
27
- "@agoric/ertp": "0.16.3-dev-e193e66.0+e193e66",
28
- "@agoric/governance": "0.10.4-dev-e193e66.0+e193e66",
29
- "@agoric/internal": "0.3.3-dev-e193e66.0+e193e66",
30
- "@agoric/network": "0.1.1-dev-e193e66.0+e193e66",
31
- "@agoric/notifier": "0.6.3-dev-e193e66.0+e193e66",
32
- "@agoric/store": "0.9.3-dev-e193e66.0+e193e66",
33
- "@agoric/swingset-vat": "0.32.3-dev-e193e66.0+e193e66",
34
- "@agoric/time": "0.3.3-dev-e193e66.0+e193e66",
35
- "@agoric/vat-data": "0.5.3-dev-e193e66.0+e193e66",
36
- "@agoric/vow": "0.1.1-dev-e193e66.0+e193e66",
37
- "@agoric/zoe": "0.26.3-dev-e193e66.0+e193e66",
38
- "@agoric/zone": "0.2.3-dev-e193e66.0+e193e66",
25
+ "@agoric/assert": "0.6.1-dev-0960242.0+0960242",
26
+ "@agoric/cosmic-proto": "0.4.1-dev-0960242.0+0960242",
27
+ "@agoric/ertp": "0.16.3-dev-0960242.0+0960242",
28
+ "@agoric/governance": "0.10.4-dev-0960242.0+0960242",
29
+ "@agoric/internal": "0.3.3-dev-0960242.0+0960242",
30
+ "@agoric/network": "0.1.1-dev-0960242.0+0960242",
31
+ "@agoric/notifier": "0.6.3-dev-0960242.0+0960242",
32
+ "@agoric/store": "0.9.3-dev-0960242.0+0960242",
33
+ "@agoric/swingset-vat": "0.32.3-dev-0960242.0+0960242",
34
+ "@agoric/time": "0.3.3-dev-0960242.0+0960242",
35
+ "@agoric/vat-data": "0.5.3-dev-0960242.0+0960242",
36
+ "@agoric/vow": "0.1.1-dev-0960242.0+0960242",
37
+ "@agoric/zoe": "0.26.3-dev-0960242.0+0960242",
38
+ "@agoric/zone": "0.2.3-dev-0960242.0+0960242",
39
39
  "@endo/far": "^1.1.2",
40
40
  "@endo/import-bundle": "^1.1.2",
41
41
  "@endo/marshal": "^1.5.0",
@@ -46,7 +46,7 @@
46
46
  "jessie.js": "^0.3.4"
47
47
  },
48
48
  "devDependencies": {
49
- "@agoric/swingset-liveslots": "0.10.3-dev-e193e66.0+e193e66",
49
+ "@agoric/swingset-liveslots": "0.10.3-dev-0960242.0+0960242",
50
50
  "@endo/bundle-source": "^3.2.3",
51
51
  "@endo/init": "^1.1.2",
52
52
  "ava": "^5.3.0",
@@ -78,5 +78,5 @@
78
78
  "typeCoverage": {
79
79
  "atLeast": 91.21
80
80
  },
81
- "gitHead": "e193e66fc578b1c00eda5f5ab6599f1cfbdc542f"
81
+ "gitHead": "0960242c177d356d2b4c56b589d89ef2b64e2760"
82
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["transfer.js"],"names":[],"mappings":"AAiQO,2CAHI,OAAO,mBAAmB,EAAE,IAAI,YAChC,OAAO,aAAa,EAAE,QAAQ;;;YArDjC;;eAEG;kCADQ,OAAO,iBAAiB,EAAE,cAAc;;;;;;;;YAUnD;;;;;;eAMG;gCAnDA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;YAwD/C;;;;;eAKG;sCA9DA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;YAmE/C;;;;;eAKG;kCAFQ,MAAM;;;;;;;;;;;0CAvBqB,SAC7C;4CAwCyB,SAAS;;;;EAYlC;mCArGU,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;oCAiFzC,UAAU,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;iCAC3D,qBAAqB,CAAC,oBAAoB,CAAC;+BA/OjB,oBAAoB;gCAApB,oBAAoB;AA0J5D;;;;;GAKG;AAEH;;;;;;;;;;;;;;GAcG;AACH,oDAHW,OAAO,mBAAmB,EAAE,IAAI,2BAChC,UAAU,CAAC,OAAO,0BAA0B,CAAC;;QAgBhD;;WAEG;8BADQ,OAAO,iBAAiB,EAAE,cAAc;;;;;;;;QAUnD;;;;;;WAMG;4BAnDA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;QAwD/C;;;;;WAKG;kCA9DA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;QAmE/C;;;;;WAKG;8BAFQ,MAAM;;GAUtB;AAlOH;;;GAGG;AACH,kDAHW,OAAO,mBAAmB,EAAE,IAAI,YAChC,OAAO,aAAa,EAAE,QAAQ;;GAuHxC"}
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["transfer.js"],"names":[],"mappings":"AAoQO,2CAHI,OAAO,mBAAmB,EAAE,IAAI,YAChC,OAAO,aAAa,EAAE,QAAQ;;;YArDjC;;eAEG;kCADQ,OAAO,iBAAiB,EAAE,cAAc;;;;;;;;YAUnD;;;;;;eAMG;gCAnDA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;YAwD/C;;;;;eAKG;sCA9DA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;YAmE/C;;;;;eAKG;kCAFQ,MAAM;;;;;;;;;;;0CArBhB,SAAQ;4CAuCoC,SACjD;;;;EAWH;mCArGU,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;oCAiFzC,UAAU,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;iCAC3D,qBAAqB,CAAC,oBAAoB,CAAC;+BAlPjB,oBAAoB;gCAApB,oBAAoB;AA6J5D;;;;;GAKG;AAEH;;;;;;;;;;;;;;GAcG;AACH,oDAHW,OAAO,mBAAmB,EAAE,IAAI,2BAChC,UAAU,CAAC,OAAO,0BAA0B,CAAC;;QAgBhD;;WAEG;8BADQ,OAAO,iBAAiB,EAAE,cAAc;;;;;;;;QAUnD;;;;;;WAMG;4BAnDA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;QAwD/C;;;;;WAKG;kCA9DA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;QAmE/C;;;;;WAKG;8BAFQ,MAAM;;GAUtB;AArOH;;;GAGG;AACH,kDAHW,OAAO,mBAAmB,EAAE,IAAI,YAChC,OAAO,aAAa,EAAE,QAAQ;;GA0HxC"}
package/src/transfer.js CHANGED
@@ -31,13 +31,13 @@ const prepareTransferInterceptor = (zone, vowTools) => {
31
31
  'TransferInterceptorKit',
32
32
  {
33
33
  public: TargetAppI,
34
- encodeAckWatcher: M.interface('EncodeAckWatcher', {
34
+ ackSender: M.interface('AckSender', {
35
35
  onFulfilled: ReactionGuard,
36
36
  }),
37
- sendErrorWatcher: M.interface('SendErrorWatcher', {
37
+ nackSender: M.interface('NackSender', {
38
38
  onRejected: ReactionGuard,
39
39
  }),
40
- logErrorWatcher: M.interface('LogErrorWatcher', {
40
+ errorLogger: M.interface('ErrorLogger', {
41
41
  onRejected: ReactionGuard,
42
42
  }),
43
43
  },
@@ -55,7 +55,7 @@ const prepareTransferInterceptor = (zone, vowTools) => {
55
55
  {
56
56
  public: {
57
57
  async receiveUpcall(obj) {
58
- const { isActiveTap, tap, targetHost } = this.state;
58
+ const { isActiveTap, tap } = this.state;
59
59
 
60
60
  obj.type === VTRANSFER_IBC_EVENT ||
61
61
  Fail`Invalid upcall argument type ${obj.type}; expected ${bare(VTRANSFER_IBC_EVENT)}`;
@@ -67,64 +67,67 @@ const prepareTransferInterceptor = (zone, vowTools) => {
67
67
 
68
68
  // See if the upcall result needs special handling.
69
69
  if (obj.event === 'writeAcknowledgement') {
70
- const ackMethodData = {
70
+ // Respond with the ack (or an active tap's replacement thereof).
71
+ const response = {
71
72
  type: 'IBC_METHOD',
72
73
  method: 'receiveExecuted',
73
74
  packet: obj.packet,
75
+ ack: obj.acknowledgement,
74
76
  };
75
- if (isActiveTap) {
76
- retP = watch(retP, this.facets.encodeAckWatcher, {
77
- ackMethodData,
78
- });
79
- } else {
80
- // This is a passive tap, so forward the ack without intervention.
81
- ackMethodData.ack = obj.acknowledgement;
82
- retP = watch(E(targetHost).sendDowncall(ackMethodData));
83
- }
84
- retP = watch(retP, this.facets.sendErrorWatcher, { ackMethodData });
77
+ const senderContext = { response, isActiveTap };
78
+ // An active tap must wait for the upcall result,
79
+ // but a passive tap can proceed immediately.
80
+ retP = isActiveTap
81
+ ? watch(retP, this.facets.ackSender, senderContext)
82
+ : /** @type {any} */ (
83
+ E(this.facets.ackSender).onFulfilled(undefined, senderContext)
84
+ );
85
+ // Upon failure, respond with an error acknowledgement.
86
+ retP = watch(retP, this.facets.nackSender, { response });
85
87
  }
86
88
 
87
- // Log errors in the upcall handling.
88
- retP = watch(retP, this.facets.logErrorWatcher, { obj });
89
+ // Always log errors.
90
+ retP = watch(retP, this.facets.errorLogger, { obj });
89
91
 
90
- if (isActiveTap) {
91
- // If the tap is active, return the promiseVow to the caller. This
92
- // will delay the middleware until fulfilment of the retP chain.
93
- return retP;
94
- }
95
-
96
- // Otherwise, passively return nothing.
92
+ // For an active tap, return a promise/vow to delay middleware
93
+ // until final settlement.
94
+ // For a passive tap, return undefined to skip such delays.
95
+ return isActiveTap ? retP : undefined;
97
96
  },
98
97
  },
99
98
  /**
100
- * `watch` callback for encoding the raw `ack` return value from an active
101
- * `writeAcknowledgement` tap as base64, then sending down to the
102
- * targetHost.
99
+ * A watcher for sending acknowledgements down to the host.
103
100
  */
104
- encodeAckWatcher: {
105
- onFulfilled(rawAck, { ackMethodData }) {
106
- // Encode the tap's ack and write it out.
107
- const ack = byteSourceToBase64(coerceToByteSource(rawAck));
108
- ackMethodData = { ...ackMethodData, ack };
109
- return E(this.state.targetHost).sendDowncall(ackMethodData);
101
+ ackSender: {
102
+ onFulfilled(rawAck, { response, isActiveTap }) {
103
+ if (isActiveTap) {
104
+ // Incorporate an active tap's replacement ack.
105
+ const ack = byteSourceToBase64(coerceToByteSource(rawAck));
106
+ response = { ...response, ack };
107
+ }
108
+ return E(this.state.targetHost).sendDowncall(response);
110
109
  },
111
110
  },
111
+
112
112
  /**
113
- * `watch` callback for handling errors in the sending of an ack and
114
- * reifying it as an error acknowledgement.
113
+ * A watcher for sending error acknowledgements down to the host.
115
114
  */
116
- sendErrorWatcher: {
117
- onRejected(error, { ackMethodData }) {
115
+ nackSender: {
116
+ onRejected(error, { response }) {
118
117
  console.error(`Error sending ack:`, error);
119
118
  const rawAck = JSON.stringify({ error: error.message });
120
- ackMethodData = { ...ackMethodData, ack: byteSourceToBase64(rawAck) };
121
- return E(this.state.targetHost).sendDowncall(ackMethodData);
119
+ const nack = { ...response, ack: byteSourceToBase64(rawAck) };
120
+ return E(this.state.targetHost).sendDowncall(nack);
122
121
  },
123
122
  },
124
- /** `watch` callback for logging errors in the upcall handling. */
125
- logErrorWatcher: {
123
+
124
+ /**
125
+ * A watcher for logging errors.
126
+ */
127
+ errorLogger: {
126
128
  onRejected(error, { obj }) {
127
129
  console.error(`Error in handling of`, obj, error);
130
+ // Don't propagate the error any further.
128
131
  },
129
132
  },
130
133
  },
@@ -1 +1 @@
1
- {"version":3,"file":"vat-transfer.d.ts","sourceRoot":"","sources":["vat-transfer.js"],"names":[],"mappings":"AASO;IAyBH;;;;;OAKG;2BAH8C,CAAC,4DAAvC,OAAO,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;;;;;;;;0CA2B05K,SAAS;4CAA66C,SAAS;;;;IAT54N;;;OAGG;;;kCAMq+J,OAAO,oBAAiB,EAAE,cAAc;;;;;;;;6CAA97C,KAAK,OAAO,oBAAoB,EAAE,SAAS,CAAC;mDAA5C,KAAK,OAAO,oBAAoB,EAAE,SAAS,CAAC;;;;;IA7B9nH;;;;;OAKG;2BAH8C,CAAC,4DAAvC,OAAO,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;;;;;;;;;;;;;IAkBnD;;;OAGG;;;+DAM+/J,cAAc;;;;;;;;+EAA55C,SAAS;qFAAT,SAAS;;;;GAHhoH;0BAEa,UAAU,CAAC,OAAO,eAAe,CAAC"}
1
+ {"version":3,"file":"vat-transfer.d.ts","sourceRoot":"","sources":["vat-transfer.js"],"names":[],"mappings":"AASO;IAyBH;;;;;OAKG;2BAH8C,CAAC,4DAAvC,OAAO,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;;;;;;;;0CA2B05K,SAAS;4CAA66C,SAAS;;;;IAT54N;;;OAGG;;;kCAM08J,OAAO,oBAAiB,EAAE,cAAc;;;;;;;;6CAA97C,KAAK,OAAO,oBAAoB,EAAE,SAAS,CAAC;mDAA5C,KAAK,OAAO,oBAAoB,EAAE,SAAS,CAAC;;;;;IA7BnmH;;;;;OAKG;2BAH8C,CAAC,4DAAvC,OAAO,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;;;;;;;;;;;;;IAkBnD;;;OAGG;;;+DAMo+J,cAAc;;;;;;;;+EAA55C,SAAS;qFAAT,SAAS;;;;GAHrmH;0BAEa,UAAU,CAAC,OAAO,eAAe,CAAC"}