@agoric/async-flow 0.1.1-dev-24665a9.0 → 0.1.1-dev-a035bbe.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 +8 -8
- package/src/async-flow.d.ts +11 -6
- package/src/async-flow.d.ts.map +1 -1
- package/src/async-flow.js +8 -1
- package/src/bijection.d.ts +1 -0
- package/src/bijection.d.ts.map +1 -1
- package/src/bijection.js +6 -0
- package/src/convert.d.ts +1 -0
- package/src/convert.d.ts.map +1 -1
- package/src/convert.js +4 -0
- package/src/ephemera.d.ts +1 -0
- package/src/ephemera.d.ts.map +1 -1
- package/src/ephemera.js +6 -0
- package/src/log-store.d.ts +4 -2
- package/src/log-store.d.ts.map +1 -1
- package/src/log-store.js +4 -1
- package/src/replay-membrane.d.ts +12 -42
- package/src/replay-membrane.d.ts.map +1 -1
- package/src/replay-membrane.js +6 -0
- package/src/types.d.ts +11 -17
- package/src/types.d.ts.map +1 -1
- package/src/types.js +3 -1
- package/test/async-flow-crank.test.js +6 -0
- package/test/async-flow-early-completion.test.js +2 -0
- package/test/async-flow-no-this.js +6 -0
- package/test/async-flow.test.js +3 -0
- package/test/bad-host.test.js +5 -0
- package/test/bijection.test.js +6 -0
- package/test/convert.test.js +5 -0
- package/test/equate.test.js +4 -0
- package/test/log-store.test.js +8 -0
- package/test/replay-membrane-eventual.test.js +7 -0
- package/test/replay-membrane-settlement.test.js +7 -0
- package/test/replay-membrane-zombie.test.js +5 -0
- package/test/replay-membrane.test.js +8 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/async-flow",
|
|
3
|
-
"version": "0.1.1-dev-
|
|
3
|
+
"version": "0.1.1-dev-a035bbe.0+a035bbe",
|
|
4
4
|
"description": "Upgrade async functions at await points by replay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": "https://github.com/Agoric/agoric-sdk",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"author": "Agoric",
|
|
25
25
|
"license": "Apache-2.0",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@agoric/base-zone": "0.1.1-dev-
|
|
28
|
-
"@agoric/store": "0.9.3-dev-
|
|
29
|
-
"@agoric/vow": "0.1.1-dev-
|
|
27
|
+
"@agoric/base-zone": "0.1.1-dev-a035bbe.0+a035bbe",
|
|
28
|
+
"@agoric/store": "0.9.3-dev-a035bbe.0+a035bbe",
|
|
29
|
+
"@agoric/vow": "0.1.1-dev-a035bbe.0+a035bbe",
|
|
30
30
|
"@endo/common": "^1.2.2",
|
|
31
31
|
"@endo/errors": "^1.2.2",
|
|
32
32
|
"@endo/eventual-send": "^1.2.2",
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
"@endo/promise-kit": "^1.1.2"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@agoric/internal": "0.3.3-dev-
|
|
40
|
-
"@agoric/swingset-liveslots": "0.10.3-dev-
|
|
41
|
-
"@agoric/zone": "0.2.3-dev-
|
|
39
|
+
"@agoric/internal": "0.3.3-dev-a035bbe.0+a035bbe",
|
|
40
|
+
"@agoric/swingset-liveslots": "0.10.3-dev-a035bbe.0+a035bbe",
|
|
41
|
+
"@agoric/zone": "0.2.3-dev-a035bbe.0+a035bbe",
|
|
42
42
|
"@endo/env-options": "^1.1.4",
|
|
43
43
|
"@endo/ses-ava": "^1.2.2",
|
|
44
44
|
"ava": "^5.3.0"
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"typeCoverage": {
|
|
63
63
|
"atLeast": 77.83
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "a035bbe9d3a46247ed2199e4ca707103a9e04bfd"
|
|
66
66
|
}
|
package/src/async-flow.d.ts
CHANGED
|
@@ -15,8 +15,8 @@ export function prepareAsyncFlowTools(outerZone: Zone, outerOptions?: Preparatio
|
|
|
15
15
|
*/
|
|
16
16
|
restart(eager?: boolean | undefined): void;
|
|
17
17
|
wake(): void;
|
|
18
|
-
getOutcome(): Vow<any>;
|
|
19
|
-
dump(): ([op: "doFulfill", vow: Vow<Passable>, fulfillment: Passable] | [op: "doReject", vow: Vow<Passable>, reason: Passable] | [op: "doReturn", callIndex: number, result: Passable] | [op: "doThrow", callIndex: number, problem: Passable] | [op: "checkCall", target: Passable, optVerb: PropertyKey | undefined, args: Passable[], callIndex: number])[];
|
|
18
|
+
getOutcome(): import("@agoric/vow").Vow<any>;
|
|
19
|
+
dump(): ([op: "doFulfill", vow: import("@agoric/vow").Vow<import("@endo/pass-style").Passable>, fulfillment: import("@endo/pass-style").Passable] | [op: "doReject", vow: import("@agoric/vow").Vow<import("@endo/pass-style").Passable>, reason: import("@endo/pass-style").Passable] | [op: "doReturn", callIndex: number, result: import("@endo/pass-style").Passable] | [op: "doThrow", callIndex: number, problem: import("@endo/pass-style").Passable] | [op: "checkCall", target: import("@endo/pass-style").Passable, optVerb: PropertyKey | undefined, args: import("@endo/pass-style").Passable[], callIndex: number])[];
|
|
20
20
|
getOptFatalProblem(): any;
|
|
21
21
|
};
|
|
22
22
|
admin: {
|
|
@@ -33,7 +33,7 @@ export function prepareAsyncFlowTools(outerZone: Zone, outerOptions?: Preparatio
|
|
|
33
33
|
startEager?: boolean;
|
|
34
34
|
} | undefined) => HostAsyncFuncWrapper;
|
|
35
35
|
adminAsyncFlow: import("@endo/exo").Guarded<{
|
|
36
|
-
getFailures(): import("@endo/patterns").CopyMap<any, Passable>;
|
|
36
|
+
getFailures(): import("@endo/patterns").CopyMap<any, import("@endo/pass-style").Passable>;
|
|
37
37
|
wakeAll(): void;
|
|
38
38
|
getFlowForOutcomeVow(outcomeVow: any): any;
|
|
39
39
|
}>;
|
|
@@ -56,8 +56,8 @@ export type AsyncFlowTools = ReturnType<(outerZone: Zone, outerOptions?: Prepara
|
|
|
56
56
|
*/
|
|
57
57
|
restart(eager?: boolean | undefined): void;
|
|
58
58
|
wake(): void;
|
|
59
|
-
getOutcome(): Vow<any>;
|
|
60
|
-
dump(): ([op: "doFulfill", vow: Vow<Passable>, fulfillment: Passable] | [op: "doReject", vow: Vow<Passable>, reason: Passable] | [op: "doReturn", callIndex: number, result: Passable] | [op: "doThrow", callIndex: number, problem: Passable] | [op: "checkCall", target: Passable, optVerb: PropertyKey | undefined, args: Passable[], callIndex: number])[];
|
|
59
|
+
getOutcome(): import("@agoric/vow").Vow<any>;
|
|
60
|
+
dump(): ([op: "doFulfill", vow: import("@agoric/vow").Vow<import("@endo/pass-style").Passable>, fulfillment: import("@endo/pass-style").Passable] | [op: "doReject", vow: import("@agoric/vow").Vow<import("@endo/pass-style").Passable>, reason: import("@endo/pass-style").Passable] | [op: "doReturn", callIndex: number, result: import("@endo/pass-style").Passable] | [op: "doThrow", callIndex: number, problem: import("@endo/pass-style").Passable] | [op: "checkCall", target: import("@endo/pass-style").Passable, optVerb: PropertyKey | undefined, args: import("@endo/pass-style").Passable[], callIndex: number])[];
|
|
61
61
|
getOptFatalProblem(): any;
|
|
62
62
|
};
|
|
63
63
|
admin: {
|
|
@@ -74,7 +74,7 @@ export type AsyncFlowTools = ReturnType<(outerZone: Zone, outerOptions?: Prepara
|
|
|
74
74
|
startEager?: boolean | undefined;
|
|
75
75
|
} | undefined) => HostAsyncFuncWrapper;
|
|
76
76
|
adminAsyncFlow: import("@endo/exo").Guarded<{
|
|
77
|
-
getFailures(): import("@endo/patterns").CopyMap<any, Passable>;
|
|
77
|
+
getFailures(): import("@endo/patterns").CopyMap<any, import("@endo/pass-style").Passable>;
|
|
78
78
|
wakeAll(): void;
|
|
79
79
|
getFlowForOutcomeVow(outcomeVow: any): any;
|
|
80
80
|
}>;
|
|
@@ -84,4 +84,9 @@ export type AdminAsyncFlow = AsyncFlowTools["adminAsyncFlow"];
|
|
|
84
84
|
export type MakeAsyncFlowKit = ReturnType<AsyncFlowTools["prepareAsyncFlowKit"]>;
|
|
85
85
|
export type AsyncFlowKit = ReturnType<MakeAsyncFlowKit>;
|
|
86
86
|
export type AsyncFlow = AsyncFlowKit["flow"];
|
|
87
|
+
import type { Zone } from '@agoric/base-zone';
|
|
88
|
+
import type { PreparationOptions } from '../src/types.js';
|
|
89
|
+
import type { GuestAsyncFunc } from '../src/types.js';
|
|
90
|
+
import type { FlowState } from '../src/types.js';
|
|
91
|
+
import type { HostAsyncFuncWrapper } from '../src/types.js';
|
|
87
92
|
//# sourceMappingURL=async-flow.d.ts.map
|
package/src/async-flow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-flow.d.ts","sourceRoot":"","sources":["async-flow.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"async-flow.d.ts","sourceRoot":"","sources":["async-flow.js"],"names":[],"mappings":"AAmDO;2CAuCM,MAAM;qBAES,OAAO;;;YA4BzB;;eAEG;;YAiCH;;;;;eAKG;;;;;;;;;;;;;;;;;iCAkRA,MAAM;qBAES,OAAO;;;;;;;;EAmDlC;6BAIY,UAAU;2CAjZV,MAAM;;;;YA8BT;;eAEG;;YAiCH;;;;;eAKG;;;;;;;;;;;;;;;;;iCAkRA,MAAM;;;;;;;;;EAyD2B;6BAIjC,cAAc,CAAC,gBAAgB,CAAC;+BAIhC,UAAU,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;2BAIjD,UAAU,CAAC,gBAAgB,CAAC;wBAI5B,YAAY,CAAC,MAAM,CAAC;0BA7eV,mBAAmB;wCAI4C,iBAAiB;oCAAjB,iBAAiB;+BAAjB,iBAAiB;0CAAjB,iBAAiB"}
|
package/src/async-flow.js
CHANGED
|
@@ -10,7 +10,14 @@ import { prepareBijection } from './bijection.js';
|
|
|
10
10
|
import { LogEntryShape, FlowStateShape } from './type-guards.js';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* @import {
|
|
13
|
+
* @import {WeakMapStore} from '@agoric/store'
|
|
14
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
15
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
16
|
+
* @import {MapStore} from '@agoric/store';
|
|
17
|
+
* @import {LogStore} from '../src/log-store.js';
|
|
18
|
+
* @import {Bijection} from '../src/bijection.js';
|
|
19
|
+
* @import {FlowState, GuestAsyncFunc, HostAsyncFuncWrapper, PreparationOptions} from '../src/types.js';
|
|
20
|
+
* @import {ReplayMembrane} from '../src/replay-membrane.js';
|
|
14
21
|
*/
|
|
15
22
|
|
|
16
23
|
const { defineProperties } = Object;
|
package/src/bijection.d.ts
CHANGED
package/src/bijection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bijection.d.ts","sourceRoot":"","sources":["bijection.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bijection.d.ts","sourceRoot":"","sources":["bijection.js"],"names":[],"mappings":"AAgEO;;;;;;;;GAoEN;0BAzEa,UAAU,QAhCb,MAAM;;;;;;;;GAgCwB;wBA6E5B,UAAU,CAAC,UAAU;;;;;;;;GAAkB,CAAC;0BAhI9B,mBAAmB"}
|
package/src/bijection.js
CHANGED
|
@@ -4,6 +4,12 @@ import { Far } from '@endo/pass-style';
|
|
|
4
4
|
import { toPassableCap } from '@agoric/vow';
|
|
5
5
|
import { makeEphemera } from './ephemera.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
9
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
10
|
+
* @import {Ephemera} from './types.js';
|
|
11
|
+
*/
|
|
12
|
+
|
|
7
13
|
const BijectionI = M.interface('Bijection', {
|
|
8
14
|
reset: M.call().returns(),
|
|
9
15
|
init: M.call(M.any(), M.any()).returns(),
|
package/src/convert.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export function makeConvertKit(bijection: any, makeGuestForHostRemotable: any, m
|
|
|
2
2
|
guestToHost: (specimen: Passable, label?: string | undefined) => any;
|
|
3
3
|
hostToGuest: (specimen: Passable, label?: string | undefined) => any;
|
|
4
4
|
};
|
|
5
|
+
import type { Passable } from '@endo/pass-style';
|
|
5
6
|
//# sourceMappingURL=convert.d.ts.map
|
package/src/convert.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["convert.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["convert.js"],"names":[],"mappings":"AA+EO;;;EAsDN;8BAxH0B,kBAAkB"}
|
package/src/convert.js
CHANGED
|
@@ -10,6 +10,10 @@ import {
|
|
|
10
10
|
import { isVow } from '@agoric/vow/src/vow-utils.js';
|
|
11
11
|
import { objectMap } from '@endo/common/object-map.js';
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* @import {Passable} from '@endo/pass-style'
|
|
15
|
+
*/
|
|
16
|
+
|
|
13
17
|
const makeConvert = (convertRemotable, convertPromiseOrVow, convertError) => {
|
|
14
18
|
const convertRecur = (specimen, label) => {
|
|
15
19
|
// Open code the synchronous part of applyLabelingError, because
|
package/src/ephemera.d.ts
CHANGED
package/src/ephemera.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ephemera.d.ts","sourceRoot":"","sources":["ephemera.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ephemera.d.ts","sourceRoot":"","sources":["ephemera.js"],"names":[],"mappings":"AAwBO,6BAFe,CAAC,4BAAC,CAAC,gCADd,CAAC,IAAI,EACM,CAAC,AADJ,KACK,CAAC,AADA,kBAkBxB;8BApC0B,YAAY"}
|
package/src/ephemera.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
3
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
4
|
+
* @import {Ephemera} from './types.js';
|
|
5
|
+
*/
|
|
6
|
+
|
|
1
7
|
/**
|
|
2
8
|
* Used by a possibly-durable exo to store per-instance ephemeral state.
|
|
3
9
|
* Each ephemera is created at the exo class prepare level, and then
|
package/src/log-store.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export function prepareLogStore(zone: Zone): () => import("@endo/exo").Guarded<{
|
|
|
7
7
|
peekEntry(): LogEntry;
|
|
8
8
|
nextEntry(): LogEntry;
|
|
9
9
|
pushEntry(entry: any): number;
|
|
10
|
-
dump(): ([op: "doFulfill", vow: Vow<Passable>, fulfillment: Passable] | [op: "doReject", vow: Vow<Passable>, reason: Passable] | [op: "doReturn", callIndex: number, result: Passable] | [op: "doThrow", callIndex: number, problem: Passable] | [op: "checkCall", target: Passable, optVerb: PropertyKey | undefined, args: Passable[], callIndex: number])[];
|
|
10
|
+
dump(): ([op: "doFulfill", vow: import("@agoric/vow").Vow<import("@endo/pass-style").Passable>, fulfillment: import("@endo/pass-style").Passable] | [op: "doReject", vow: import("@agoric/vow").Vow<import("@endo/pass-style").Passable>, reason: import("@endo/pass-style").Passable] | [op: "doReturn", callIndex: number, result: import("@endo/pass-style").Passable] | [op: "doThrow", callIndex: number, problem: import("@endo/pass-style").Passable] | [op: "checkCall", target: import("@endo/pass-style").Passable, optVerb: PropertyKey | undefined, args: import("@endo/pass-style").Passable[], callIndex: number])[];
|
|
11
11
|
promiseReplayDone(): Promise<undefined>;
|
|
12
12
|
}>;
|
|
13
13
|
export type LogStore = ReturnType<ReturnType<(zone: Zone) => () => import("@endo/exo").Guarded<{
|
|
@@ -19,7 +19,9 @@ export type LogStore = ReturnType<ReturnType<(zone: Zone) => () => import("@endo
|
|
|
19
19
|
peekEntry(): LogEntry;
|
|
20
20
|
nextEntry(): LogEntry;
|
|
21
21
|
pushEntry(entry: any): number;
|
|
22
|
-
dump(): ([op: "doFulfill", vow: Vow<Passable>, fulfillment: Passable] | [op: "doReject", vow: Vow<Passable>, reason: Passable] | [op: "doReturn", callIndex: number, result: Passable] | [op: "doThrow", callIndex: number, problem: Passable] | [op: "checkCall", target: Passable, optVerb: PropertyKey | undefined, args: Passable[], callIndex: number])[];
|
|
22
|
+
dump(): ([op: "doFulfill", vow: import("@agoric/vow").Vow<import("@endo/pass-style").Passable>, fulfillment: import("@endo/pass-style").Passable] | [op: "doReject", vow: import("@agoric/vow").Vow<import("@endo/pass-style").Passable>, reason: import("@endo/pass-style").Passable] | [op: "doReturn", callIndex: number, result: import("@endo/pass-style").Passable] | [op: "doThrow", callIndex: number, problem: import("@endo/pass-style").Passable] | [op: "checkCall", target: import("@endo/pass-style").Passable, optVerb: PropertyKey | undefined, args: import("@endo/pass-style").Passable[], callIndex: number])[];
|
|
23
23
|
promiseReplayDone(): Promise<undefined>;
|
|
24
24
|
}>>>;
|
|
25
|
+
import type { Zone } from '@agoric/base-zone';
|
|
26
|
+
import type { LogEntry } from './types.js';
|
|
25
27
|
//# sourceMappingURL=log-store.d.ts.map
|
package/src/log-store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-store.d.ts","sourceRoot":"","sources":["log-store.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log-store.d.ts","sourceRoot":"","sources":["log-store.js"],"names":[],"mappings":"AA+BO;;;;;;;;;;;GAoIN;uBAGY,UAAU,CAAC,UAAU;;;;;;;;;;;GAAiB,CAAC;0BA9J7B,mBAAmB;8BAEL,YAAY"}
|
package/src/log-store.js
CHANGED
|
@@ -5,7 +5,10 @@ import { LogEntryShape } from './type-guards.js';
|
|
|
5
5
|
import { makeEphemera } from './ephemera.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* @import {
|
|
8
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
9
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
10
|
+
* @import {MapStore} from '@agoric/store';
|
|
11
|
+
* @import {Ephemera, LogEntry} from './types.js';
|
|
9
12
|
*/
|
|
10
13
|
|
|
11
14
|
const LogStoreI = M.interface('LogStore', {
|
package/src/replay-membrane.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export function makeReplayMembrane(log: import("@endo/exo").Guarded<{
|
|
|
7
7
|
peekEntry(): LogEntry;
|
|
8
8
|
nextEntry(): LogEntry;
|
|
9
9
|
pushEntry(entry: any): number;
|
|
10
|
-
dump(): ([op: "doFulfill", vow: Vow<Passable>, fulfillment: Passable] | [op: "doReject", vow: Vow<Passable>, reason: Passable] | [op: "doReturn", callIndex: number, result: Passable] | [op: "doThrow", callIndex: number, problem: Passable] | [op: "checkCall", target: Passable, optVerb: PropertyKey | undefined, args: Passable[], callIndex: number])[];
|
|
10
|
+
dump(): ([op: "doFulfill", vow: Vow<import("@endo/pass-style").Passable>, fulfillment: import("@endo/pass-style").Passable] | [op: "doReject", vow: Vow<import("@endo/pass-style").Passable>, reason: import("@endo/pass-style").Passable] | [op: "doReturn", callIndex: number, result: import("@endo/pass-style").Passable] | [op: "doThrow", callIndex: number, problem: import("@endo/pass-style").Passable] | [op: "checkCall", target: import("@endo/pass-style").Passable, optVerb: PropertyKey | undefined, args: import("@endo/pass-style").Passable[], callIndex: number])[];
|
|
11
11
|
promiseReplayDone(): Promise<undefined>;
|
|
12
12
|
}>, bijection: import("@endo/exo").Guarded<{
|
|
13
13
|
reset(): void;
|
|
@@ -19,33 +19,17 @@ export function makeReplayMembrane(log: import("@endo/exo").Guarded<{
|
|
|
19
19
|
hostToGuest(h: any): any;
|
|
20
20
|
}>, vowTools: {
|
|
21
21
|
when: <T, TResult1 = import("@agoric/vow").EUnwrap<T>, TResult2 = never>(specimenP: T, onFulfilled?: ((value: import("@agoric/vow").EUnwrap<T>) => TResult1 | PromiseLike<TResult1>) | undefined, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined) => Promise<TResult1 | TResult2>;
|
|
22
|
-
/**
|
|
23
|
-
* When replaying, this comes from interpreting the log.
|
|
24
|
-
* Otherwise, it is triggered by a watcher watching hostVow,
|
|
25
|
-
* that must also log it.
|
|
26
|
-
*
|
|
27
|
-
* @param {HostVow} hostVow
|
|
28
|
-
* @param {Host} hostFulfillment
|
|
29
|
-
*/
|
|
30
22
|
watch: <T_1 = any, TResult1_1 = T_1, TResult2_1 = never, C = any>(specimenP: import("@agoric/vow").ERef<T_1 | Vow<T_1>>, watcher?: import("@agoric/vow").Watcher<T_1, TResult1_1, TResult2_1> | undefined, watcherContext?: C | undefined) => Vow<Exclude<TResult1_1, void> | Exclude<TResult2_1, void> extends never ? TResult1_1 : Exclude<TResult1_1, void> | Exclude<TResult2_1, void>>;
|
|
31
|
-
/**
|
|
32
|
-
* When replaying, this comes from interpreting the log.
|
|
33
|
-
* Otherwise, it is triggered by a watcher watching hostVow,
|
|
34
|
-
* that must also log it.
|
|
35
|
-
*
|
|
36
|
-
* @param {HostVow} hostVow
|
|
37
|
-
* @param {Host} hostFulfillment
|
|
38
|
-
*/
|
|
39
23
|
makeVowKit: <T_2>() => import("@agoric/vow").VowKit<T_2>;
|
|
40
24
|
allVows: (vows: unknown[]) => Vow<any[]>;
|
|
41
25
|
}, watchWake: (vowish: Promise<any> | Vow) => void, panic: (problem: Error) => never): {
|
|
42
|
-
hostToGuest: (specimen: Passable, label?: string | undefined) => any;
|
|
43
|
-
guestToHost: (specimen: Passable, label?: string | undefined) => any;
|
|
26
|
+
hostToGuest: (specimen: import("@endo/pass-style").Passable, label?: string | undefined) => any;
|
|
27
|
+
guestToHost: (specimen: import("@endo/pass-style").Passable, label?: string | undefined) => any;
|
|
44
28
|
wake: () => void;
|
|
45
29
|
stop: () => void;
|
|
46
30
|
} & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
|
|
47
|
-
hostToGuest: (specimen: Passable, label?: string | undefined) => any;
|
|
48
|
-
guestToHost: (specimen: Passable, label?: string | undefined) => any;
|
|
31
|
+
hostToGuest: (specimen: import("@endo/pass-style").Passable, label?: string | undefined) => any;
|
|
32
|
+
guestToHost: (specimen: import("@endo/pass-style").Passable, label?: string | undefined) => any;
|
|
49
33
|
wake: () => void;
|
|
50
34
|
stop: () => void;
|
|
51
35
|
}>;
|
|
@@ -58,7 +42,7 @@ export type ReplayMembrane = ReturnType<(log: import("@endo/exo").Guarded<{
|
|
|
58
42
|
peekEntry(): LogEntry;
|
|
59
43
|
nextEntry(): LogEntry;
|
|
60
44
|
pushEntry(entry: any): number;
|
|
61
|
-
dump(): ([op: "doFulfill", vow: Vow<Passable>, fulfillment: Passable] | [op: "doReject", vow: Vow<Passable>, reason: Passable] | [op: "doReturn", callIndex: number, result: Passable] | [op: "doThrow", callIndex: number, problem: Passable] | [op: "checkCall", target: Passable, optVerb: PropertyKey | undefined, args: Passable[], callIndex: number])[];
|
|
45
|
+
dump(): ([op: "doFulfill", vow: Vow<import("@endo/pass-style").Passable>, fulfillment: import("@endo/pass-style").Passable] | [op: "doReject", vow: Vow<import("@endo/pass-style").Passable>, reason: import("@endo/pass-style").Passable] | [op: "doReturn", callIndex: number, result: import("@endo/pass-style").Passable] | [op: "doThrow", callIndex: number, problem: import("@endo/pass-style").Passable] | [op: "checkCall", target: import("@endo/pass-style").Passable, optVerb: PropertyKey | undefined, args: import("@endo/pass-style").Passable[], callIndex: number])[];
|
|
62
46
|
promiseReplayDone(): Promise<undefined>;
|
|
63
47
|
}>, bijection: import("@endo/exo").Guarded<{
|
|
64
48
|
reset(): void;
|
|
@@ -70,34 +54,20 @@ export type ReplayMembrane = ReturnType<(log: import("@endo/exo").Guarded<{
|
|
|
70
54
|
hostToGuest(h: any): any;
|
|
71
55
|
}>, vowTools: {
|
|
72
56
|
when: <T, TResult1 = import("@agoric/vow").EUnwrap<T>, TResult2 = never>(specimenP: T, onFulfilled?: ((value: import("@agoric/vow").EUnwrap<T>) => TResult1 | PromiseLike<TResult1>) | undefined, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined) => Promise<TResult1 | TResult2>;
|
|
73
|
-
/**
|
|
74
|
-
* When replaying, this comes from interpreting the log.
|
|
75
|
-
* Otherwise, it is triggered by a watcher watching hostVow,
|
|
76
|
-
* that must also log it.
|
|
77
|
-
*
|
|
78
|
-
* @param {HostVow} hostVow
|
|
79
|
-
* @param {Host} hostFulfillment
|
|
80
|
-
*/
|
|
81
57
|
watch: <T_1 = any, TResult1_1 = T_1, TResult2_1 = never, C = any>(specimenP: import("@agoric/vow").ERef<T_1 | Vow<T_1>>, watcher?: import("@agoric/vow").Watcher<T_1, TResult1_1, TResult2_1> | undefined, watcherContext?: C | undefined) => Vow<Exclude<TResult1_1, void> | Exclude<TResult2_1, void> extends never ? TResult1_1 : Exclude<TResult1_1, void> | Exclude<TResult2_1, void>>;
|
|
82
|
-
/**
|
|
83
|
-
* When replaying, this comes from interpreting the log.
|
|
84
|
-
* Otherwise, it is triggered by a watcher watching hostVow,
|
|
85
|
-
* that must also log it.
|
|
86
|
-
*
|
|
87
|
-
* @param {HostVow} hostVow
|
|
88
|
-
* @param {Host} hostFulfillment
|
|
89
|
-
*/
|
|
90
58
|
makeVowKit: <T_2>() => import("@agoric/vow").VowKit<T_2>;
|
|
91
59
|
allVows: (vows: unknown[]) => Vow<any[]>;
|
|
92
60
|
}, watchWake: (vowish: Promise<any> | Vow) => void, panic: (problem: Error) => never) => {
|
|
93
|
-
hostToGuest: (specimen: Passable, label?: string | undefined) => any;
|
|
94
|
-
guestToHost: (specimen: Passable, label?: string | undefined) => any;
|
|
61
|
+
hostToGuest: (specimen: import("@endo/pass-style").Passable, label?: string | undefined) => any;
|
|
62
|
+
guestToHost: (specimen: import("@endo/pass-style").Passable, label?: string | undefined) => any;
|
|
95
63
|
wake: () => void;
|
|
96
64
|
stop: () => void;
|
|
97
65
|
} & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
|
|
98
|
-
hostToGuest: (specimen: Passable, label?: string | undefined) => any;
|
|
99
|
-
guestToHost: (specimen: Passable, label?: string | undefined) => any;
|
|
66
|
+
hostToGuest: (specimen: import("@endo/pass-style").Passable, label?: string | undefined) => any;
|
|
67
|
+
guestToHost: (specimen: import("@endo/pass-style").Passable, label?: string | undefined) => any;
|
|
100
68
|
wake: () => void;
|
|
101
69
|
stop: () => void;
|
|
102
70
|
}>>;
|
|
71
|
+
import type { LogEntry } from '../src/types.js';
|
|
72
|
+
import type { Vow } from '@agoric/vow';
|
|
103
73
|
//# sourceMappingURL=replay-membrane.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay-membrane.d.ts","sourceRoot":"","sources":["replay-membrane.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"replay-membrane.d.ts","sourceRoot":"","sources":["replay-membrane.js"],"names":[],"mappings":"AA2BO;;;;;;;;;;;;;;;;;;;;wFAhBA,CAAC;;;oBAaG,SAAS;8CAAkB,IAAI,SAC/B,CAAC,OAAO,EAAE,KAAK,KAAK,KAAK;;;;;;;;;;GAqdnC;6BAGa,UAAU;;;;;;;;;;;;;;;;;;;;wFAtejB,CAAC;;;oBAaG,SAAS;2DACT,CAAC,OAAO,EAAE,KAAK,KAAK,KAAK;;;;;;;;;;GAwdQ;8BAleO,iBAAiB;yBAJpC,aAAa"}
|
package/src/replay-membrane.js
CHANGED
|
@@ -8,6 +8,12 @@ import { makeConvertKit } from './convert.js';
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @import {PromiseKit} from '@endo/promise-kit'
|
|
11
|
+
* @import {Zone} from '@agoric/base-zone';
|
|
12
|
+
* @import {Vow, VowTools} from '@agoric/vow'
|
|
13
|
+
* @import {AsyncFlow} from '../src/async-flow.js'
|
|
14
|
+
* @import {LogStore} from '../src/log-store.js';
|
|
15
|
+
* @import {Bijection} from '../src/bijection.js';
|
|
16
|
+
* @import {Host, HostVow, LogEntry, Outcome} from '../src/types.js';
|
|
11
17
|
*/
|
|
12
18
|
|
|
13
19
|
const { fromEntries, defineProperties, assign } = Object;
|
package/src/types.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
type FlowState = "Running" | "Sleeping" | "Replaying" | "Failed" | "Done";
|
|
2
|
-
type Guest<T extends Passable = Passable> = T;
|
|
3
|
-
type Host<T extends Passable = Passable> = T;
|
|
1
|
+
export type FlowState = "Running" | "Sleeping" | "Replaying" | "Failed" | "Done";
|
|
2
|
+
export type Guest<T extends Passable = Passable> = T;
|
|
3
|
+
export type Host<T extends Passable = Passable> = T;
|
|
4
4
|
/**
|
|
5
5
|
* A HostVow must be durably storable. It corresponds to an
|
|
6
6
|
* ephemeral guest promise.
|
|
7
7
|
*/
|
|
8
|
-
type HostVow<T extends Passable = Passable> = import("@endo/pass-style").PassStyled<"tagged", "Vow"> & {
|
|
8
|
+
export type HostVow<T extends Passable = Passable> = import("@endo/pass-style").PassStyled<"tagged", "Vow"> & {
|
|
9
9
|
payload: import("@agoric/vow").VowPayload<T>;
|
|
10
10
|
};
|
|
11
|
-
type GuestAsyncFunc = (...activationArgs: Guest[]) => Guest<Promise<any>>;
|
|
12
|
-
type HostAsyncFuncWrapper = (...activationArgs: Host[]) => HostVow;
|
|
13
|
-
type PreparationOptions = {
|
|
11
|
+
export type GuestAsyncFunc = (...activationArgs: Guest[]) => Guest<Promise<any>>;
|
|
12
|
+
export type HostAsyncFuncWrapper = (...activationArgs: Host[]) => HostVow;
|
|
13
|
+
export type PreparationOptions = {
|
|
14
14
|
vowTools?: {
|
|
15
15
|
when: <T, TResult1 = import("@agoric/vow").EUnwrap<T>, TResult2 = never>(specimenP: T, onFulfilled?: ((value: import("@agoric/vow").EUnwrap<T>) => TResult1 | PromiseLike<TResult1>) | undefined, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined) => Promise<TResult1 | TResult2>;
|
|
16
16
|
watch: <T_1 = any, TResult1_1 = T_1, TResult2_1 = never, C = any>(specimenP: import("@agoric/vow").ERef<T_1 | Vow<T_1>>, watcher?: import("@agoric/vow").Watcher<T_1, TResult1_1, TResult2_1> | undefined, watcherContext?: C | undefined) => Vow<Exclude<TResult1_1, void> | Exclude<TResult2_1, void> extends never ? TResult1_1 : Exclude<TResult1_1, void> | Exclude<TResult2_1, void>>;
|
|
@@ -39,15 +39,15 @@ type PreparationOptions = {
|
|
|
39
39
|
hostToGuest(h: any): any;
|
|
40
40
|
}>) | undefined;
|
|
41
41
|
};
|
|
42
|
-
type OutcomeKind = "return" | "throw";
|
|
43
|
-
type Outcome = {
|
|
42
|
+
export type OutcomeKind = "return" | "throw";
|
|
43
|
+
export type Outcome = {
|
|
44
44
|
kind: "return";
|
|
45
45
|
result: any;
|
|
46
46
|
} | {
|
|
47
47
|
kind: "throw";
|
|
48
48
|
problem: any;
|
|
49
49
|
};
|
|
50
|
-
type Ephemera<S extends WeakKey = WeakKey, V extends unknown = any> = {
|
|
50
|
+
export type Ephemera<S extends WeakKey = WeakKey, V extends unknown = any> = {
|
|
51
51
|
for: (self: S) => V;
|
|
52
52
|
resetFor: (self: S) => void;
|
|
53
53
|
};
|
|
@@ -56,15 +56,9 @@ type Ephemera<S extends WeakKey = WeakKey, V extends unknown = any> = {
|
|
|
56
56
|
* See comment below for the commented-out typedef for the full
|
|
57
57
|
* membrane log entry, which we do not yet support.
|
|
58
58
|
*/
|
|
59
|
-
type LogEntry = [// ///////////////// From Host to Guest /////////////////////////
|
|
59
|
+
export type LogEntry = [// ///////////////// From Host to Guest /////////////////////////
|
|
60
60
|
op: "doFulfill", vow: HostVow, fulfillment: Host] | [op: "doReject", vow: HostVow, reason: Host] | [op: "doReturn", callIndex: number, result: Host] | [op: "doThrow", callIndex: number, problem: Host] | [// ///////////////////// From Guest to Host /////////////////////////
|
|
61
61
|
op: "checkCall", target: Host, optVerb: PropertyKey | undefined, args: Host[], callIndex: number];
|
|
62
|
-
import type { PromiseKit } from '@endo/promise-kit';
|
|
63
62
|
import type { Passable } from '@endo/pass-style';
|
|
64
|
-
import type { Zone } from '@agoric/base-zone';
|
|
65
63
|
import type { Vow } from '@agoric/vow';
|
|
66
|
-
import type { VowTools } from '@agoric/vow';
|
|
67
|
-
import type { LogStore } from './log-store.js';
|
|
68
|
-
import type { Bijection } from './bijection.js';
|
|
69
|
-
import type { ReplayMembrane } from './replay-membrane.js';
|
|
70
64
|
//# sourceMappingURL=types.d.ts.map
|
package/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.js"],"names":[],"mappings":"wBAaa,SAAS,GACrB,UAAsB,GACtB,WAAuB,GACvB,QAAoB,GACpB,MAAkB;kBAMN,CAAC,gCAAD,CAAC;iBAKD,CAAC,gCAAD,CAAC;;;;;oBAQQ,CAAC;;;6BAIV,CAAC,GAAG,cAAc,EAAE,KAAK,EAAE,KAAK,KAAK,cAAS;mCAI9C,CAAC,GAAG,cAAc,EAAE,IAAI,EAAE,KAAK,OAAO;;;4FA1B1C,CAAC;;;wBA0BU,SAAS;;;;;;;;;;;;;;;;;;;;;;;;0BAWhB,QAAQ,GAAC,OAAO;sBAIhB;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAC,GAC7B;IAAC,IAAI,EAAE,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,CAAA;CAAC;qBAStB,CAAC,4BADK,CAAC;SAAd,CAAC,IAAI,EACE,CAAC,AADA,KAAK,CAAC;cACd,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI;;;;;;;uBAQlB,CAAE,iEAAiE;AAC/E,EAAQ,EAAE,WAAW,EACrB,GAAS,EAAE,OAAO,EAClB,WAAiB,EAAE,IAAI,CAClB,GAAG,CACR,EAAQ,EAAE,UAAU,EACpB,GAAS,EAAE,OAAO,EAClB,MAAY,EAAE,IAAI,CACb,GAAG,CACR,EAAQ,EAAE,UAAU,EACpB,SAAe,EAAE,MAAM,EACvB,MAAY,EAAE,IAAI,CACb,GAAG,CACR,EAAQ,EAAE,SAAS,EACnB,SAAe,EAAE,MAAM,EACvB,OAAa,EAAE,IAAI,CACd,GAAG,CAAE,qEAAqE;AAC/E,EAAQ,EAAE,WAAW,EACrB,MAAY,EAAE,IAAI,EAClB,OAAa,EAAE,WAAW,GAAC,SAAS,EACpC,IAAU,EAAE,IAAI,EAAE,EAClB,SAAe,EAAE,MAAM,CAClB;8BA/FqB,kBAAkB;yBAEb,aAAa"}
|
package/src/types.js
CHANGED
|
@@ -16,6 +16,12 @@ import { makeDurableZone } from '@agoric/zone/durable.js';
|
|
|
16
16
|
|
|
17
17
|
import { prepareAsyncFlowTools } from '../src/async-flow.js';
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
21
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
22
|
+
* @import {Ephemera} from './types.js';
|
|
23
|
+
*/
|
|
24
|
+
|
|
19
25
|
const neverSettlesP = new Promise(() => {});
|
|
20
26
|
|
|
21
27
|
/**
|
|
@@ -18,6 +18,8 @@ import { makeDurableZone } from '@agoric/zone/durable.js';
|
|
|
18
18
|
import { prepareAsyncFlowTools } from '../src/async-flow.js';
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
+
* @import {Zone} from '@agoric/base-zone';
|
|
22
|
+
* @import {Vow, VowTools} from '@agoric/vow'
|
|
21
23
|
* @import {AsyncFlow} from '../src/async-flow.js'
|
|
22
24
|
*/
|
|
23
25
|
|
|
@@ -9,6 +9,12 @@ import { makeDurableZone } from '@agoric/zone/durable.js';
|
|
|
9
9
|
|
|
10
10
|
import { prepareAsyncFlowTools } from '../src/async-flow.js';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @import {Zone} from '@agoric/base-zone';
|
|
14
|
+
* @import {Vow, VowTools} from '@agoric/vow'
|
|
15
|
+
* @import {AsyncFlow} from '../src/async-flow.js'
|
|
16
|
+
*/
|
|
17
|
+
|
|
12
18
|
const { apply } = Reflect;
|
|
13
19
|
|
|
14
20
|
/**
|
package/test/async-flow.test.js
CHANGED
|
@@ -21,6 +21,9 @@ import { prepareAsyncFlowTools } from '../src/async-flow.js';
|
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* @import {AsyncFlow} from '../src/async-flow.js'
|
|
24
|
+
* @import {Vow, VowTools} from '@agoric/vow'
|
|
25
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
26
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
24
27
|
*/
|
|
25
28
|
|
|
26
29
|
/**
|
package/test/bad-host.test.js
CHANGED
|
@@ -17,6 +17,11 @@ import { makeDurableZone } from '@agoric/zone/durable.js';
|
|
|
17
17
|
|
|
18
18
|
import { prepareAsyncFlowTools } from '../src/async-flow.js';
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
22
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
23
|
+
*/
|
|
24
|
+
|
|
20
25
|
const nonPassableFunc = () => 'non-passable-function';
|
|
21
26
|
harden(nonPassableFunc);
|
|
22
27
|
const guestCreatedPromise = harden(Promise.resolve('guest-created'));
|
package/test/bijection.test.js
CHANGED
|
@@ -15,6 +15,12 @@ import { makeDurableZone } from '@agoric/zone/durable.js';
|
|
|
15
15
|
|
|
16
16
|
import { prepareBijection } from '../src/bijection.js';
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
20
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
21
|
+
* @import {Ephemera} from './types.js';
|
|
22
|
+
*/
|
|
23
|
+
|
|
18
24
|
/**
|
|
19
25
|
* @param {any} t
|
|
20
26
|
* @param {Zone} zone
|
package/test/convert.test.js
CHANGED
|
@@ -18,6 +18,11 @@ import { makeDurableZone } from '@agoric/zone/durable.js';
|
|
|
18
18
|
import { makeConvertKit } from '../src/convert.js';
|
|
19
19
|
import { prepareBijection } from '../src/bijection.js';
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
23
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
24
|
+
*/
|
|
25
|
+
|
|
21
26
|
/**
|
|
22
27
|
* @param {any} t
|
|
23
28
|
* @param {Zone} zone
|
package/test/equate.test.js
CHANGED
|
@@ -18,6 +18,10 @@ import { makeDurableZone } from '@agoric/zone/durable.js';
|
|
|
18
18
|
import { prepareBijection } from '../src/bijection.js';
|
|
19
19
|
import { makeEquate } from '../src/equate.js';
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
23
|
+
*/
|
|
24
|
+
|
|
21
25
|
/**
|
|
22
26
|
* @param {any} t
|
|
23
27
|
* @param {Zone} zone
|
package/test/log-store.test.js
CHANGED
|
@@ -14,6 +14,14 @@ import { makeDurableZone } from '@agoric/zone/durable.js';
|
|
|
14
14
|
|
|
15
15
|
import { prepareLogStore } from '../src/log-store.js';
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
19
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
20
|
+
* @import {Vow, VowTools} from '@agoric/vow'
|
|
21
|
+
* @import {LogStore} from '../src/log-store.js';
|
|
22
|
+
* @import {Bijection} from '../src/bijection.js';
|
|
23
|
+
*/
|
|
24
|
+
|
|
17
25
|
/**
|
|
18
26
|
* @param {any} t
|
|
19
27
|
* @param {Zone} zone
|
|
@@ -18,6 +18,13 @@ import { prepareLogStore } from '../src/log-store.js';
|
|
|
18
18
|
import { prepareBijection } from '../src/bijection.js';
|
|
19
19
|
import { makeReplayMembrane } from '../src/replay-membrane.js';
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
23
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
24
|
+
* @import {LogStore} from '../src/log-store.js';
|
|
25
|
+
* @import {Bijection} from '../src/bijection.js';
|
|
26
|
+
*/
|
|
27
|
+
|
|
21
28
|
const watchWake = _vowish => {};
|
|
22
29
|
const panic = problem => Fail`panic over ${problem}`;
|
|
23
30
|
|
|
@@ -17,6 +17,13 @@ import { prepareLogStore } from '../src/log-store.js';
|
|
|
17
17
|
import { prepareBijection } from '../src/bijection.js';
|
|
18
18
|
import { makeReplayMembrane } from '../src/replay-membrane.js';
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
22
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
23
|
+
* @import {LogStore} from '../src/log-store.js';
|
|
24
|
+
* @import {Bijection} from '../src/bijection.js';
|
|
25
|
+
*/
|
|
26
|
+
|
|
20
27
|
const watchWake = _vowish => {};
|
|
21
28
|
const panic = problem => Fail`panic over ${problem}`;
|
|
22
29
|
|
|
@@ -17,6 +17,11 @@ import { prepareLogStore } from '../src/log-store.js';
|
|
|
17
17
|
import { prepareBijection } from '../src/bijection.js';
|
|
18
18
|
import { makeReplayMembrane } from '../src/replay-membrane.js';
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
22
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
23
|
+
*/
|
|
24
|
+
|
|
20
25
|
const watchWake = _vowish => {};
|
|
21
26
|
const panic = problem => Fail`panic over ${problem}`;
|
|
22
27
|
|
|
@@ -18,6 +18,14 @@ import { prepareLogStore } from '../src/log-store.js';
|
|
|
18
18
|
import { prepareBijection } from '../src/bijection.js';
|
|
19
19
|
import { makeReplayMembrane } from '../src/replay-membrane.js';
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* @import {PromiseKit} from '@endo/promise-kit'
|
|
23
|
+
* @import {Zone} from '@agoric/base-zone'
|
|
24
|
+
* @import {MapStore} from '@agoric/store';
|
|
25
|
+
* @import {LogStore} from '../src/log-store.js';
|
|
26
|
+
* @import {Bijection} from '../src/bijection.js';
|
|
27
|
+
*/
|
|
28
|
+
|
|
21
29
|
const watchWake = _vowish => {};
|
|
22
30
|
const panic = problem => Fail`panic over ${problem}`;
|
|
23
31
|
|