@resonatehq/sdk 0.9.6 → 0.10.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/README.md +84 -12
- package/dist/clock.d.ts.map +1 -0
- package/dist/clock.js +12 -0
- package/dist/clock.js.map +1 -0
- package/dist/codec.d.ts +11 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +115 -0
- package/dist/codec.js.map +1 -0
- package/dist/computation.d.ts +40 -0
- package/dist/computation.d.ts.map +1 -0
- package/dist/computation.js +152 -0
- package/dist/computation.js.map +1 -0
- package/dist/{src/context.d.ts → context.d.ts} +65 -40
- package/dist/context.d.ts.map +1 -0
- package/dist/{src/context.js → context.js} +131 -153
- package/dist/context.js.map +1 -0
- package/dist/core.d.ts +45 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +140 -0
- package/dist/core.js.map +1 -0
- package/dist/coroutine.d.ts +37 -0
- package/dist/coroutine.d.ts.map +1 -0
- package/dist/coroutine.js +258 -0
- package/dist/coroutine.js.map +1 -0
- package/dist/{src/decorator.d.ts → decorator.d.ts} +8 -8
- package/dist/decorator.d.ts.map +1 -0
- package/dist/decorator.js +149 -0
- package/dist/decorator.js.map +1 -0
- package/dist/encryptor.d.ts +10 -0
- package/dist/encryptor.d.ts.map +1 -0
- package/dist/encryptor.js +9 -0
- package/dist/encryptor.js.map +1 -0
- package/dist/{src/exceptions.d.ts → exceptions.d.ts} +4 -1
- package/dist/exceptions.d.ts.map +1 -0
- package/dist/{src/exceptions.js → exceptions.js} +11 -11
- package/dist/exceptions.js.map +1 -0
- package/dist/{src/heartbeat.d.ts → heartbeat.d.ts} +5 -3
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +50 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +33 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +54 -0
- package/dist/logger.js.map +1 -0
- package/dist/network/http.d.ts +82 -0
- package/dist/network/http.d.ts.map +1 -0
- package/dist/network/http.js +339 -0
- package/dist/network/http.js.map +1 -0
- package/dist/network/local.d.ts +179 -0
- package/dist/network/local.d.ts.map +1 -0
- package/dist/network/local.js +1232 -0
- package/dist/network/local.js.map +1 -0
- package/dist/network/network.d.ts +16 -0
- package/dist/network/network.d.ts.map +1 -0
- package/dist/network/network.js +2 -0
- package/dist/network/network.js.map +1 -0
- package/dist/network/types.d.ts +1279 -0
- package/dist/network/types.d.ts.map +1 -0
- package/dist/network/types.js +919 -0
- package/dist/network/types.js.map +1 -0
- package/dist/{src/options.d.ts → options.d.ts} +10 -4
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +32 -0
- package/dist/options.js.map +1 -0
- package/dist/promises.d.ts +41 -0
- package/dist/promises.d.ts.map +1 -0
- package/dist/promises.js +113 -0
- package/dist/promises.js.map +1 -0
- package/dist/{src/registry.d.ts → registry.d.ts} +1 -1
- package/dist/registry.d.ts.map +1 -0
- package/dist/{src/registry.js → registry.js} +6 -13
- package/dist/registry.js.map +1 -0
- package/dist/resonate.d.ts +168 -0
- package/dist/resonate.d.ts.map +1 -0
- package/dist/resonate.js +488 -0
- package/dist/resonate.js.map +1 -0
- package/dist/retries.d.ts.map +1 -0
- package/dist/{src/retries.js → retries.js} +4 -11
- package/dist/retries.js.map +1 -0
- package/dist/schedules.d.ts +22 -0
- package/dist/schedules.d.ts.map +1 -0
- package/dist/schedules.js +65 -0
- package/dist/schedules.js.map +1 -0
- package/dist/trace.d.ts +79 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +224 -0
- package/dist/trace.js.map +1 -0
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/{src/util.d.ts → util.d.ts} +10 -6
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +156 -0
- package/dist/util.js.map +1 -0
- package/package.json +18 -10
- package/dist/dev/network.d.ts +0 -34
- package/dist/dev/network.d.ts.map +0 -1
- package/dist/dev/network.js +0 -115
- package/dist/dev/network.js.map +0 -1
- package/dist/dev/server.d.ts +0 -89
- package/dist/dev/server.d.ts.map +0 -1
- package/dist/dev/server.js +0 -890
- package/dist/dev/server.js.map +0 -1
- package/dist/sim/example-1.d.ts +0 -2
- package/dist/sim/example-1.d.ts.map +0 -1
- package/dist/sim/example-1.js +0 -95
- package/dist/sim/example-1.js.map +0 -1
- package/dist/sim/example-2.d.ts +0 -2
- package/dist/sim/example-2.d.ts.map +0 -1
- package/dist/sim/example-2.js +0 -97
- package/dist/sim/example-2.js.map +0 -1
- package/dist/sim/example-3.d.ts +0 -2
- package/dist/sim/example-3.d.ts.map +0 -1
- package/dist/sim/example-3.js +0 -97
- package/dist/sim/example-3.js.map +0 -1
- package/dist/sim/main.d.ts +0 -14
- package/dist/sim/main.d.ts.map +0 -1
- package/dist/sim/main.js +0 -207
- package/dist/sim/main.js.map +0 -1
- package/dist/sim/src/server.d.ts +0 -15
- package/dist/sim/src/server.d.ts.map +0 -1
- package/dist/sim/src/server.js +0 -85
- package/dist/sim/src/server.js.map +0 -1
- package/dist/sim/src/simulator.d.ts +0 -65
- package/dist/sim/src/simulator.d.ts.map +0 -1
- package/dist/sim/src/simulator.js +0 -236
- package/dist/sim/src/simulator.js.map +0 -1
- package/dist/sim/src/worker.d.ts +0 -23
- package/dist/sim/src/worker.d.ts.map +0 -1
- package/dist/sim/src/worker.js +0 -217
- package/dist/sim/src/worker.js.map +0 -1
- package/dist/src/clock.d.ts.map +0 -1
- package/dist/src/clock.js +0 -17
- package/dist/src/clock.js.map +0 -1
- package/dist/src/computation.d.ts +0 -49
- package/dist/src/computation.d.ts.map +0 -1
- package/dist/src/computation.js +0 -314
- package/dist/src/computation.js.map +0 -1
- package/dist/src/context.d.ts.map +0 -1
- package/dist/src/context.js.map +0 -1
- package/dist/src/core.d.ts +0 -12
- package/dist/src/core.d.ts.map +0 -1
- package/dist/src/core.js +0 -28
- package/dist/src/core.js.map +0 -1
- package/dist/src/coroutine.d.ts +0 -42
- package/dist/src/coroutine.d.ts.map +0 -1
- package/dist/src/coroutine.js +0 -364
- package/dist/src/coroutine.js.map +0 -1
- package/dist/src/decorator.d.ts.map +0 -1
- package/dist/src/decorator.js +0 -220
- package/dist/src/decorator.js.map +0 -1
- package/dist/src/encoder.d.ts +0 -12
- package/dist/src/encoder.d.ts.map +0 -1
- package/dist/src/encoder.js +0 -101
- package/dist/src/encoder.js.map +0 -1
- package/dist/src/encryptor.d.ts +0 -10
- package/dist/src/encryptor.d.ts.map +0 -1
- package/dist/src/encryptor.js +0 -13
- package/dist/src/encryptor.js.map +0 -1
- package/dist/src/exceptions.d.ts.map +0 -1
- package/dist/src/exceptions.js.map +0 -1
- package/dist/src/handler.d.ts +0 -49
- package/dist/src/handler.d.ts.map +0 -1
- package/dist/src/handler.js +0 -316
- package/dist/src/handler.js.map +0 -1
- package/dist/src/heartbeat.d.ts.map +0 -1
- package/dist/src/heartbeat.js +0 -87
- package/dist/src/heartbeat.js.map +0 -1
- package/dist/src/index.d.ts +0 -15
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -61
- package/dist/src/index.js.map +0 -1
- package/dist/src/network/network.d.ts +0 -254
- package/dist/src/network/network.d.ts.map +0 -1
- package/dist/src/network/network.js +0 -4
- package/dist/src/network/network.js.map +0 -1
- package/dist/src/network/remote.d.ts +0 -85
- package/dist/src/network/remote.d.ts.map +0 -1
- package/dist/src/network/remote.js +0 -523
- package/dist/src/network/remote.js.map +0 -1
- package/dist/src/nursery.d.ts +0 -19
- package/dist/src/nursery.d.ts.map +0 -1
- package/dist/src/nursery.js +0 -102
- package/dist/src/nursery.js.map +0 -1
- package/dist/src/options.d.ts.map +0 -1
- package/dist/src/options.js +0 -70
- package/dist/src/options.js.map +0 -1
- package/dist/src/processor/processor.d.ts +0 -12
- package/dist/src/processor/processor.d.ts.map +0 -1
- package/dist/src/processor/processor.js +0 -43
- package/dist/src/processor/processor.js.map +0 -1
- package/dist/src/promises.d.ts +0 -54
- package/dist/src/promises.d.ts.map +0 -1
- package/dist/src/promises.js +0 -169
- package/dist/src/promises.js.map +0 -1
- package/dist/src/registry.d.ts.map +0 -1
- package/dist/src/registry.js.map +0 -1
- package/dist/src/resonate-inner.d.ts +0 -60
- package/dist/src/resonate-inner.d.ts.map +0 -1
- package/dist/src/resonate-inner.js +0 -97
- package/dist/src/resonate-inner.js.map +0 -1
- package/dist/src/resonate.d.ts +0 -341
- package/dist/src/resonate.d.ts.map +0 -1
- package/dist/src/resonate.js +0 -591
- package/dist/src/resonate.js.map +0 -1
- package/dist/src/retries.d.ts.map +0 -1
- package/dist/src/retries.js.map +0 -1
- package/dist/src/schedules.d.ts +0 -19
- package/dist/src/schedules.d.ts.map +0 -1
- package/dist/src/schedules.js +0 -85
- package/dist/src/schedules.js.map +0 -1
- package/dist/src/tasks.d.ts +0 -9
- package/dist/src/tasks.d.ts.map +0 -1
- package/dist/src/tasks.js +0 -61
- package/dist/src/tasks.js.map +0 -1
- package/dist/src/tracer.d.ts +0 -23
- package/dist/src/tracer.d.ts.map +0 -1
- package/dist/src/tracer.js +0 -25
- package/dist/src/tracer.js.map +0 -1
- package/dist/src/types.d.ts +0 -28
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -11
- package/dist/src/types.js.map +0 -1
- package/dist/src/util.d.ts.map +0 -1
- package/dist/src/util.js +0 -120
- package/dist/src/util.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- /package/dist/{src/clock.d.ts → clock.d.ts} +0 -0
- /package/dist/{src/retries.d.ts → retries.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedules.js","sourceRoot":"","sources":["../src/schedules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAuB,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,SAAS;IACZ,IAAI,CAAO;IAEnB,YAAY,OAAa,IAAI,YAAY,EAAE,CAAC,IAAI;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;YAChD,IAAI,EAAE;gBACJ,EAAE;aACH;SACF,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE;gBAC5C,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;gBACrB,OAAO,EAAE,GAAG,CAAC,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,MAAM,CACV,EAAU,EACV,IAAY,EACZ,SAAiB,EACjB,cAAsB,EACtB,EACE,cAAc,GAAG,EAAE,EACnB,WAAW,GAAG,EAAE,EAChB,WAAW,GAAG,EAAE,MAOd,EAAE;QAEN,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;YAChD,IAAI,EAAE;gBACJ,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,SAAS;gBACpB,cAAc,EAAE,cAAc;gBAC9B,YAAY,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE;gBAC5D,WAAW,EAAE,WAAW;aACzB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE;gBAC5C,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;gBACrB,OAAO,EAAE,GAAG,CAAC,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;YAChD,IAAI,EAAE;gBACJ,EAAE;aACH;SACF,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE;gBAC5C,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;gBACrB,OAAO,EAAE,GAAG,CAAC,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
package/dist/trace.d.ts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trace/Event model matching the spec's 9 event kinds.
|
|
3
|
+
*
|
|
4
|
+
* See: execute_until_blocked_inner.md, Event Model section.
|
|
5
|
+
*/
|
|
6
|
+
export type Event = {
|
|
7
|
+
kind: "run";
|
|
8
|
+
id: string;
|
|
9
|
+
callee: string;
|
|
10
|
+
} | {
|
|
11
|
+
kind: "rpc";
|
|
12
|
+
id: string;
|
|
13
|
+
callee: string;
|
|
14
|
+
} | {
|
|
15
|
+
kind: "spawn";
|
|
16
|
+
id: string;
|
|
17
|
+
} | {
|
|
18
|
+
kind: "block";
|
|
19
|
+
id: string;
|
|
20
|
+
} | {
|
|
21
|
+
kind: "await";
|
|
22
|
+
id: string;
|
|
23
|
+
callee: string;
|
|
24
|
+
} | {
|
|
25
|
+
kind: "resume";
|
|
26
|
+
id: string;
|
|
27
|
+
callee: string;
|
|
28
|
+
} | {
|
|
29
|
+
kind: "suspend";
|
|
30
|
+
id: string;
|
|
31
|
+
} | {
|
|
32
|
+
kind: "return";
|
|
33
|
+
id: string;
|
|
34
|
+
state: string;
|
|
35
|
+
value: any;
|
|
36
|
+
} | {
|
|
37
|
+
kind: "dedup";
|
|
38
|
+
id: string;
|
|
39
|
+
state: string;
|
|
40
|
+
value: any;
|
|
41
|
+
};
|
|
42
|
+
export type Trace = Event[];
|
|
43
|
+
/**
|
|
44
|
+
* Accumulates events during a single execute_until_blocked invocation.
|
|
45
|
+
* Threaded through Coroutine and Computation.
|
|
46
|
+
*/
|
|
47
|
+
export declare class TraceCollector {
|
|
48
|
+
private events;
|
|
49
|
+
emit(event: Event): void;
|
|
50
|
+
getTrace(): Trace;
|
|
51
|
+
}
|
|
52
|
+
/** No two events share the same (kind: "spawn", id). */
|
|
53
|
+
export declare function uniqueSpawn(t: Trace): boolean;
|
|
54
|
+
/** A promise has at most one of: spawn, block, dedup. */
|
|
55
|
+
export declare function exclusiveLifecycle(t: Trace): boolean;
|
|
56
|
+
/** For any promise p with (spawn, p), spawn p is the first event with id = p. */
|
|
57
|
+
export declare function spawnIsFirst(t: Trace): boolean;
|
|
58
|
+
/** For any promise p, return p or suspend p is the last event with id = p. */
|
|
59
|
+
export declare function terminalIsLast(t: Trace): boolean;
|
|
60
|
+
/** If (block, p) then no other event has id = p. */
|
|
61
|
+
export declare function blockIsSole(t: Trace): boolean;
|
|
62
|
+
/** If (dedup, p) then no other event has id = p. */
|
|
63
|
+
export declare function dedupIsSole(t: Trace): boolean;
|
|
64
|
+
/** Every spawned promise has exactly one terminal: return or suspend. */
|
|
65
|
+
export declare function uniqueTerminal(t: Trace): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Every (await, p, q) is followed by either (resume, p, q) or (suspend, p)
|
|
68
|
+
* with no intervening events for p.
|
|
69
|
+
*/
|
|
70
|
+
export declare function awaitThenResumeOrSuspend(t: Trace): boolean;
|
|
71
|
+
/** Every (run, p, q) is followed by either (spawn, q) ... (return, q) or (dedup, q). */
|
|
72
|
+
export declare function runHasCallee(t: Trace): boolean;
|
|
73
|
+
/** Every (rpc, p, q) is followed by either (block, q) or (dedup, q). */
|
|
74
|
+
export declare function rpcHasCallee(t: Trace): boolean;
|
|
75
|
+
/** The trace starts with exactly one spawn for the root promise. */
|
|
76
|
+
export declare function rootSpawn(t: Trace): boolean;
|
|
77
|
+
/** Check all well-formedness predicates at once. */
|
|
78
|
+
export declare function isWellFormed(t: Trace): boolean;
|
|
79
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,CAAC;AAE7D,MAAM,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC;AAE5B;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAe;IAE7B,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIxB,QAAQ,IAAI,KAAK;CAGlB;AAID,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAS7C;AAED,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAqBpD;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAgB9C;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAiBhD;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAS7C;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAS7C;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAehD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAsB1D;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAe9C;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAe9C;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAG3C;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAc9C"}
|
package/dist/trace.js
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trace/Event model matching the spec's 9 event kinds.
|
|
3
|
+
*
|
|
4
|
+
* See: execute_until_blocked_inner.md, Event Model section.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Accumulates events during a single execute_until_blocked invocation.
|
|
8
|
+
* Threaded through Coroutine and Computation.
|
|
9
|
+
*/
|
|
10
|
+
export class TraceCollector {
|
|
11
|
+
events = [];
|
|
12
|
+
emit(event) {
|
|
13
|
+
this.events.push(event);
|
|
14
|
+
}
|
|
15
|
+
getTrace() {
|
|
16
|
+
return [...this.events];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// ─── Well-Formedness Predicates ─────────────────────────────────────────
|
|
20
|
+
/** No two events share the same (kind: "spawn", id). */
|
|
21
|
+
export function uniqueSpawn(t) {
|
|
22
|
+
const ids = new Set();
|
|
23
|
+
for (const e of t) {
|
|
24
|
+
if (e.kind === "spawn") {
|
|
25
|
+
if (ids.has(e.id))
|
|
26
|
+
return false;
|
|
27
|
+
ids.add(e.id);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
/** A promise has at most one of: spawn, block, dedup. */
|
|
33
|
+
export function exclusiveLifecycle(t) {
|
|
34
|
+
const spawned = new Set();
|
|
35
|
+
const blocked = new Set();
|
|
36
|
+
const deduped = new Set();
|
|
37
|
+
for (const e of t) {
|
|
38
|
+
if (e.kind === "spawn")
|
|
39
|
+
spawned.add(e.id);
|
|
40
|
+
if (e.kind === "block")
|
|
41
|
+
blocked.add(e.id);
|
|
42
|
+
if (e.kind === "dedup")
|
|
43
|
+
deduped.add(e.id);
|
|
44
|
+
}
|
|
45
|
+
for (const id of spawned) {
|
|
46
|
+
if (blocked.has(id) || deduped.has(id))
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
for (const id of blocked) {
|
|
50
|
+
if (spawned.has(id) || deduped.has(id))
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
for (const id of deduped) {
|
|
54
|
+
if (spawned.has(id) || blocked.has(id))
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
/** For any promise p with (spawn, p), spawn p is the first event with id = p. */
|
|
60
|
+
export function spawnIsFirst(t) {
|
|
61
|
+
const firstSeen = new Map();
|
|
62
|
+
for (const e of t) {
|
|
63
|
+
// Only track the id field (not callee) — the spec says "first event with id = p"
|
|
64
|
+
if (!firstSeen.has(e.id)) {
|
|
65
|
+
firstSeen.set(e.id, e.kind);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// For every spawned id, spawn must be the first event with that id
|
|
69
|
+
for (const e of t) {
|
|
70
|
+
if (e.kind === "spawn") {
|
|
71
|
+
if (firstSeen.get(e.id) !== "spawn")
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
/** For any promise p, return p or suspend p is the last event with id = p. */
|
|
78
|
+
export function terminalIsLast(t) {
|
|
79
|
+
const lastSeen = new Map();
|
|
80
|
+
for (const e of t) {
|
|
81
|
+
lastSeen.set(e.id, e.kind);
|
|
82
|
+
}
|
|
83
|
+
// For every id that has a terminal event, check it's the last
|
|
84
|
+
for (let i = 0; i < t.length; i++) {
|
|
85
|
+
const e = t[i];
|
|
86
|
+
if (e.kind === "return" || e.kind === "suspend") {
|
|
87
|
+
// No subsequent event should have the same id
|
|
88
|
+
for (let j = i + 1; j < t.length; j++) {
|
|
89
|
+
if (t[j].id === e.id)
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
/** If (block, p) then no other event has id = p. */
|
|
97
|
+
export function blockIsSole(t) {
|
|
98
|
+
const blockedIds = new Set();
|
|
99
|
+
for (const e of t) {
|
|
100
|
+
if (e.kind === "block")
|
|
101
|
+
blockedIds.add(e.id);
|
|
102
|
+
}
|
|
103
|
+
for (const e of t) {
|
|
104
|
+
if (blockedIds.has(e.id) && e.kind !== "block")
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
/** If (dedup, p) then no other event has id = p. */
|
|
110
|
+
export function dedupIsSole(t) {
|
|
111
|
+
const dedupedIds = new Set();
|
|
112
|
+
for (const e of t) {
|
|
113
|
+
if (e.kind === "dedup")
|
|
114
|
+
dedupedIds.add(e.id);
|
|
115
|
+
}
|
|
116
|
+
for (const e of t) {
|
|
117
|
+
if (dedupedIds.has(e.id) && e.kind !== "dedup")
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
/** Every spawned promise has exactly one terminal: return or suspend. */
|
|
123
|
+
export function uniqueTerminal(t) {
|
|
124
|
+
const spawned = new Set();
|
|
125
|
+
const terminals = new Map();
|
|
126
|
+
for (const e of t) {
|
|
127
|
+
if (e.kind === "spawn")
|
|
128
|
+
spawned.add(e.id);
|
|
129
|
+
if (e.kind === "return" || e.kind === "suspend") {
|
|
130
|
+
terminals.set(e.id, (terminals.get(e.id) ?? 0) + 1);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
for (const id of spawned) {
|
|
134
|
+
if ((terminals.get(id) ?? 0) !== 1)
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Every (await, p, q) is followed by either (resume, p, q) or (suspend, p)
|
|
141
|
+
* with no intervening events for p.
|
|
142
|
+
*/
|
|
143
|
+
export function awaitThenResumeOrSuspend(t) {
|
|
144
|
+
for (let i = 0; i < t.length; i++) {
|
|
145
|
+
const e = t[i];
|
|
146
|
+
if (e.kind === "await") {
|
|
147
|
+
// Find the next event with id = e.id
|
|
148
|
+
let found = false;
|
|
149
|
+
for (let j = i + 1; j < t.length; j++) {
|
|
150
|
+
if (t[j].id === e.id) {
|
|
151
|
+
const next = t[j];
|
|
152
|
+
if ((next.kind === "resume" && "callee" in next && next.callee === e.callee) || next.kind === "suspend") {
|
|
153
|
+
found = true;
|
|
154
|
+
}
|
|
155
|
+
// Whether found or not, this is the next event for p — must be resume or suspend
|
|
156
|
+
if (!found)
|
|
157
|
+
return false;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// If no subsequent event for p exists, await is dangling — that's a problem
|
|
162
|
+
if (!found)
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
/** Every (run, p, q) is followed by either (spawn, q) ... (return, q) or (dedup, q). */
|
|
169
|
+
export function runHasCallee(t) {
|
|
170
|
+
for (const e of t) {
|
|
171
|
+
if (e.kind === "run") {
|
|
172
|
+
const calleeId = e.callee;
|
|
173
|
+
let hasSpawnOrDedup = false;
|
|
174
|
+
for (const e2 of t) {
|
|
175
|
+
if (e2.id === calleeId && (e2.kind === "spawn" || e2.kind === "dedup")) {
|
|
176
|
+
hasSpawnOrDedup = true;
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (!hasSpawnOrDedup)
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
/** Every (rpc, p, q) is followed by either (block, q) or (dedup, q). */
|
|
187
|
+
export function rpcHasCallee(t) {
|
|
188
|
+
for (const e of t) {
|
|
189
|
+
if (e.kind === "rpc") {
|
|
190
|
+
const calleeId = e.callee;
|
|
191
|
+
let hasBlockOrDedup = false;
|
|
192
|
+
for (const e2 of t) {
|
|
193
|
+
if (e2.id === calleeId && (e2.kind === "block" || e2.kind === "dedup")) {
|
|
194
|
+
hasBlockOrDedup = true;
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (!hasBlockOrDedup)
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
/** The trace starts with exactly one spawn for the root promise. */
|
|
205
|
+
export function rootSpawn(t) {
|
|
206
|
+
if (t.length === 0)
|
|
207
|
+
return false;
|
|
208
|
+
return t[0].kind === "spawn";
|
|
209
|
+
}
|
|
210
|
+
/** Check all well-formedness predicates at once. */
|
|
211
|
+
export function isWellFormed(t) {
|
|
212
|
+
return (uniqueSpawn(t) &&
|
|
213
|
+
exclusiveLifecycle(t) &&
|
|
214
|
+
spawnIsFirst(t) &&
|
|
215
|
+
terminalIsLast(t) &&
|
|
216
|
+
blockIsSole(t) &&
|
|
217
|
+
dedupIsSole(t) &&
|
|
218
|
+
uniqueTerminal(t) &&
|
|
219
|
+
awaitThenResumeOrSuspend(t) &&
|
|
220
|
+
runHasCallee(t) &&
|
|
221
|
+
rpcHasCallee(t) &&
|
|
222
|
+
rootSpawn(t));
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Context, DIE, Future, LFC, LFI, RFC, RFI } from "./context.js";
|
|
2
|
+
import type { PromiseCreateReq, PromiseRecord, PromiseSettleReq } from "./network/types.js";
|
|
3
|
+
import type { Options } from "./options.js";
|
|
4
|
+
export type Func = (ctx: Context, ...args: any[]) => any;
|
|
5
|
+
export type Params<F> = F extends (ctx: Context, ...args: infer P) => any ? P : never;
|
|
6
|
+
export type ParamsWithOptions<F> = [...Params<F>, Options?];
|
|
7
|
+
export type Yieldable<T = any> = LFI<T> | LFC<T> | RFI<T> | RFC<T> | Future<T> | DIE;
|
|
8
|
+
export type Return<T> = T extends (...args: any[]) => Generator<infer __, infer R, infer _> ? R : T extends (...args: any[]) => infer R ? Awaited<R> : never;
|
|
9
|
+
export type Result<V, E> = {
|
|
10
|
+
kind: "value";
|
|
11
|
+
value: V;
|
|
12
|
+
} | {
|
|
13
|
+
kind: "error";
|
|
14
|
+
error: E;
|
|
15
|
+
};
|
|
16
|
+
export type { Recv, Send } from "./network/network.js";
|
|
17
|
+
export type Effects = {
|
|
18
|
+
promiseCreate: (req: PromiseCreateReq, func?: string) => Promise<PromiseRecord>;
|
|
19
|
+
promiseSettle: (req: PromiseSettleReq, func?: string) => Promise<PromiseRecord>;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAI5C,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAEzD,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AACtF,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5D,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAErF,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GACvF,CAAC,GACD,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GACnC,OAAO,CAAC,CAAC,CAAC,GACV,KAAK,CAAC;AAIZ,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAGrF,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIvD,MAAM,MAAM,OAAO,GAAG;IACpB,aAAa,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAChF,aAAa,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CACjF,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
1
|
+
import type { Codec } from "./codec.js";
|
|
2
|
+
import type { InnerContext } from "./context.js";
|
|
3
|
+
import type { Logger } from "./logger.js";
|
|
4
|
+
import { type PromiseRecord } from "./network/types.js";
|
|
5
|
+
import { type Options } from "./options.js";
|
|
6
|
+
import type { Effects, Func, Result, Send } from "./types.js";
|
|
7
|
+
export declare const VERSION = "2026-04-01";
|
|
3
8
|
export declare const MS = 1;
|
|
4
9
|
export declare const SEC = 1000;
|
|
5
10
|
export declare const MIN: number;
|
|
6
11
|
export declare const HOUR: number;
|
|
7
|
-
export declare function assert(cond: boolean, msg?: string):
|
|
12
|
+
export declare function assert(cond: boolean, msg?: string): asserts cond;
|
|
8
13
|
export declare function assertDefined<T>(val: T | undefined | null): asserts val is T;
|
|
9
14
|
export declare function isGeneratorFunction(func: Function): boolean;
|
|
10
|
-
export declare function isTaskRecord(obj: any): obj is TaskRecord;
|
|
11
|
-
export declare function isDurablePromiseRecord(obj: unknown): obj is DurablePromiseRecord;
|
|
12
15
|
export declare function isOptions(obj: unknown): obj is Options;
|
|
13
|
-
export declare function isMessageSource(v: unknown): v is MessageSource;
|
|
14
16
|
export declare function splitArgsAndOpts(args: any[], defaults: Options): [any[], Options];
|
|
15
17
|
export declare function isUrl(str: string): boolean;
|
|
16
18
|
export declare function base64Encode(str: string): string;
|
|
17
19
|
export declare function base64Decode(str: string): string;
|
|
18
20
|
export declare function semverLessThan(a: string, b: string): boolean;
|
|
19
21
|
export declare function getCallerInfo(): string;
|
|
22
|
+
export declare function executeWithRetry(ctx: InnerContext, func: Func, args: any[], logger: Logger): Promise<Result<any, any>>;
|
|
23
|
+
export declare function buildEffects(send: Send, codec: Codec, preload?: PromiseRecord[]): Effects;
|
|
20
24
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAI9D,eAAO,MAAM,OAAO,eAAe,CAAC;AAIpC,eAAO,MAAM,EAAE,IAAI,CAAC;AACpB,eAAO,MAAM,GAAG,OAAO,CAAC;AACxB,eAAO,MAAM,GAAG,QAAW,CAAC;AAC5B,eAAO,MAAM,IAAI,QAAW,CAAC;AAI7B,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAShE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAE5E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAI3D;AAID,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,OAAO,CAEtD;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAGjF;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO1C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED,wBAAgB,aAAa,IAAI,MAAM,CAatC;AAGD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,GAAG,EAAE,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAsB3B;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,aAAa,EAAO,GAAG,OAAO,CA+D7F"}
|
package/dist/util.js
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import exceptions from "./exceptions.js";
|
|
2
|
+
import { isSuccess } from "./network/types.js";
|
|
3
|
+
import { RESONATE_OPTIONS } from "./options.js";
|
|
4
|
+
// version
|
|
5
|
+
export const VERSION = "2026-04-01";
|
|
6
|
+
// time
|
|
7
|
+
export const MS = 1;
|
|
8
|
+
export const SEC = 1000;
|
|
9
|
+
export const MIN = 60 * SEC;
|
|
10
|
+
export const HOUR = 60 * MIN;
|
|
11
|
+
// assert
|
|
12
|
+
export function assert(cond, msg) {
|
|
13
|
+
if (cond)
|
|
14
|
+
return; // Early return if assertion passes
|
|
15
|
+
console.assert(cond, "Assertion Failed: %s", msg);
|
|
16
|
+
console.trace();
|
|
17
|
+
if (typeof process !== "undefined" && process.versions.node) {
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function assertDefined(val) {
|
|
22
|
+
assert(val !== null && val !== undefined, "value must not be null");
|
|
23
|
+
}
|
|
24
|
+
export function isGeneratorFunction(func) {
|
|
25
|
+
const GeneratorFunction = Object.getPrototypeOf(function* () { }).constructor;
|
|
26
|
+
const AsyncGeneratorFunction = Object.getPrototypeOf(async function* () { }).constructor;
|
|
27
|
+
return func instanceof GeneratorFunction || func instanceof AsyncGeneratorFunction;
|
|
28
|
+
}
|
|
29
|
+
// guards
|
|
30
|
+
export function isOptions(obj) {
|
|
31
|
+
return typeof obj === "object" && obj !== null && RESONATE_OPTIONS in obj;
|
|
32
|
+
}
|
|
33
|
+
// helpers
|
|
34
|
+
export function splitArgsAndOpts(args, defaults) {
|
|
35
|
+
const opts = isOptions(args.at(-1)) ? args.pop() : {};
|
|
36
|
+
return [args, { ...defaults, ...opts }];
|
|
37
|
+
}
|
|
38
|
+
export function isUrl(str) {
|
|
39
|
+
try {
|
|
40
|
+
new URL(str);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function base64Encode(str) {
|
|
48
|
+
const bytes = new TextEncoder().encode(str);
|
|
49
|
+
return btoa(String.fromCharCode(...bytes));
|
|
50
|
+
}
|
|
51
|
+
export function base64Decode(str) {
|
|
52
|
+
const bytes = Uint8Array.from(atob(str), (c) => c.charCodeAt(0));
|
|
53
|
+
const jsonStr = new TextDecoder().decode(bytes);
|
|
54
|
+
return jsonStr;
|
|
55
|
+
}
|
|
56
|
+
export function semverLessThan(a, b) {
|
|
57
|
+
const [aMajor, aMinor, aPatch] = a.split(".").map((x) => Number.parseInt(x, 10));
|
|
58
|
+
const [bMajor, bMinor, bPatch] = b.split(".").map((x) => Number.parseInt(x, 10));
|
|
59
|
+
if (aMajor !== bMajor)
|
|
60
|
+
return aMajor < bMajor;
|
|
61
|
+
if (aMinor !== bMinor)
|
|
62
|
+
return aMinor < bMinor;
|
|
63
|
+
return aPatch < bPatch;
|
|
64
|
+
}
|
|
65
|
+
export function getCallerInfo() {
|
|
66
|
+
const err = new Error();
|
|
67
|
+
if (!err.stack)
|
|
68
|
+
return "";
|
|
69
|
+
const stack = err.stack.split("\n");
|
|
70
|
+
// stack[0] is "Error"
|
|
71
|
+
// stack[1] is this function (getCallerInfo)
|
|
72
|
+
// stack[2] is the caller of this function
|
|
73
|
+
// stack[3] is the info we want
|
|
74
|
+
const callerLine = stack?.[3];
|
|
75
|
+
return callerLine.trim();
|
|
76
|
+
}
|
|
77
|
+
// retry
|
|
78
|
+
export async function executeWithRetry(ctx, func, args, logger) {
|
|
79
|
+
while (true) {
|
|
80
|
+
try {
|
|
81
|
+
const data = await func(ctx, ...args);
|
|
82
|
+
return { kind: "value", value: data };
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const retryIn = ctx.retryPolicy.next(ctx.info.attempt);
|
|
86
|
+
if (retryIn === null || ctx.clock.now() + retryIn >= ctx.info.timeout) {
|
|
87
|
+
return { kind: "error", error };
|
|
88
|
+
}
|
|
89
|
+
logger.warn({ component: "runtime", func: ctx.func, attempt: ctx.info.attempt, retryIn }, `Function '${ctx.func}' failed with '${String(error)}' (retrying in ${retryIn / 1000} secs)`);
|
|
90
|
+
logger.debug({ component: "runtime", func: ctx.func, error: error instanceof Error ? error.stack : String(error) }, `Retry error details for '${ctx.func}'`);
|
|
91
|
+
ctx.info.attempt++;
|
|
92
|
+
await new Promise((resolve) => setTimeout(resolve, retryIn));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// effects
|
|
97
|
+
export function buildEffects(send, codec, preload = []) {
|
|
98
|
+
// Decode preloaded promises, skipping any that fail to decode
|
|
99
|
+
const cache = new Map();
|
|
100
|
+
for (const p of preload) {
|
|
101
|
+
try {
|
|
102
|
+
const decoded = codec.decodePromise(p);
|
|
103
|
+
cache.set(p.id, decoded);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// skip promises that fail to decode
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
promiseCreate: async (req, func = "unknown") => {
|
|
111
|
+
const cached = cache.get(req.data.id);
|
|
112
|
+
if (cached) {
|
|
113
|
+
return cached;
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
req.data.param = codec.encode(req.data.param.data);
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
throw exceptions.ENCODING_ARGS_UNENCODEABLE(func, e);
|
|
120
|
+
}
|
|
121
|
+
const res = await send(req);
|
|
122
|
+
if (!isSuccess(res)) {
|
|
123
|
+
throw exceptions.SERVER_ERROR(res.data, true, {
|
|
124
|
+
code: res.head.status,
|
|
125
|
+
message: res.data,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const decoded = codec.decodePromise(res.data.promise);
|
|
129
|
+
cache.set(decoded.id, decoded);
|
|
130
|
+
return decoded;
|
|
131
|
+
},
|
|
132
|
+
promiseSettle: async (req, func = "unknown") => {
|
|
133
|
+
const cached = cache.get(req.data.id);
|
|
134
|
+
if (cached && cached.state !== "pending") {
|
|
135
|
+
return cached;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
req.data.value = codec.encode(req.data.value.data);
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
throw exceptions.ENCODING_RETV_UNENCODEABLE(func, e);
|
|
142
|
+
}
|
|
143
|
+
const res = await send(req);
|
|
144
|
+
if (!isSuccess(res)) {
|
|
145
|
+
throw exceptions.SERVER_ERROR(res.data, true, {
|
|
146
|
+
code: res.head.status,
|
|
147
|
+
message: res.data,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
const decoded = codec.decodePromise(res.data.promise);
|
|
151
|
+
cache.set(decoded.id, decoded);
|
|
152
|
+
return decoded;
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@resonatehq/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "TypeScript SDK for Resonate",
|
|
5
5
|
"author": "Resonate Developers",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
|
-
"type": "
|
|
8
|
-
"main": "./dist/
|
|
9
|
-
"types": "./dist/
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./package.json": "./package.json"
|
|
17
|
+
},
|
|
10
18
|
"repository": {
|
|
11
19
|
"type": "git",
|
|
12
20
|
"url": "https://github.com/resonatehq/resonate-sdk-ts.git"
|
|
@@ -26,7 +34,7 @@
|
|
|
26
34
|
"dst": "npx tsx sim/main.ts",
|
|
27
35
|
"fmt": "npx @biomejs/biome format ./ --write",
|
|
28
36
|
"prepare": "npm run build",
|
|
29
|
-
"test": "npx jest --config jest.config.
|
|
37
|
+
"test": "npx jest --config jest.config.cjs",
|
|
30
38
|
"type-check": "npx tsc --noEmit"
|
|
31
39
|
},
|
|
32
40
|
"dependencies": {
|
|
@@ -34,17 +42,17 @@
|
|
|
34
42
|
"eventsource": "^4.0.0"
|
|
35
43
|
},
|
|
36
44
|
"devDependencies": {
|
|
37
|
-
"@biomejs/biome": "2.
|
|
45
|
+
"@biomejs/biome": "2.4.10",
|
|
38
46
|
"@jest/globals": "^30.0.0",
|
|
39
47
|
"@types/jest": "30.0.0",
|
|
40
48
|
"@types/node": "^25.0.3",
|
|
41
49
|
"commander": "^14.0.0",
|
|
42
|
-
"esbuild": "^0.
|
|
43
|
-
"ts-jest": "^29.
|
|
50
|
+
"esbuild": "^0.28.0",
|
|
51
|
+
"ts-jest": "^29.4.9",
|
|
44
52
|
"tsx": "^4.20.5",
|
|
45
|
-
"typedoc": "^0.28.
|
|
53
|
+
"typedoc": "^0.28.18",
|
|
46
54
|
"typedoc-material-theme": "^1.4.0",
|
|
47
|
-
"typescript": "^
|
|
55
|
+
"typescript": "^6.0.2"
|
|
48
56
|
},
|
|
49
57
|
"engines": {
|
|
50
58
|
"node": ">= 22"
|
package/dist/dev/network.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { ResonateError } from "../src/exceptions";
|
|
2
|
-
import type { Message, MessageSource, Network, Request, ResponseFor } from "../src/network/network";
|
|
3
|
-
import { Server } from "./server";
|
|
4
|
-
export declare class LocalNetwork implements Network {
|
|
5
|
-
private server;
|
|
6
|
-
private messageSource;
|
|
7
|
-
constructor({ pid, group, server, }?: {
|
|
8
|
-
pid?: string;
|
|
9
|
-
group?: string;
|
|
10
|
-
server?: Server;
|
|
11
|
-
});
|
|
12
|
-
getMessageSource(): MessageSource;
|
|
13
|
-
start(): void;
|
|
14
|
-
stop(): void;
|
|
15
|
-
send<T extends Request>(req: Request, callback: (err?: ResonateError, res?: ResponseFor<T>) => void): void;
|
|
16
|
-
}
|
|
17
|
-
export declare class LocalMessageSource implements MessageSource {
|
|
18
|
-
readonly pid: string;
|
|
19
|
-
readonly group: string;
|
|
20
|
-
readonly unicast: string;
|
|
21
|
-
readonly anycast: string;
|
|
22
|
-
private server;
|
|
23
|
-
private timeoutId;
|
|
24
|
-
private shouldStop;
|
|
25
|
-
private subscriptions;
|
|
26
|
-
constructor(pid: string, group: string, server: Server);
|
|
27
|
-
start(): void;
|
|
28
|
-
stop(): void;
|
|
29
|
-
recv(msg: Message): void;
|
|
30
|
-
subscribe(type: "invoke" | "resume" | "notify", callback: (msg: Message) => void): void;
|
|
31
|
-
enqueueNext(): void;
|
|
32
|
-
match(target: string): string;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=network.d.ts.map
|