@resonatehq/sdk 0.10.2 → 0.11.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/LICENSE +1 -1
- package/README.md +60 -0
- package/dist/async/context.d.ts +270 -0
- package/dist/async/context.d.ts.map +1 -0
- package/dist/async/context.js +598 -0
- package/dist/async/context.js.map +1 -0
- package/dist/async/core.d.ts +61 -0
- package/dist/async/core.d.ts.map +1 -0
- package/dist/async/core.js +239 -0
- package/dist/async/core.js.map +1 -0
- package/dist/async/index.d.ts +4 -0
- package/dist/async/index.d.ts.map +1 -0
- package/dist/async/index.js +12 -0
- package/dist/async/index.js.map +1 -0
- package/dist/async/resonate.d.ts +98 -0
- package/dist/async/resonate.d.ts.map +1 -0
- package/dist/async/resonate.js +387 -0
- package/dist/async/resonate.js.map +1 -0
- package/dist/computation.d.ts.map +1 -1
- package/dist/computation.js +4 -0
- package/dist/computation.js.map +1 -1
- package/dist/context.d.ts +43 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +34 -4
- package/dist/context.js.map +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +8 -2
- package/dist/core.js.map +1 -1
- package/dist/coroutine.d.ts.map +1 -1
- package/dist/coroutine.js +1 -1
- package/dist/coroutine.js.map +1 -1
- package/dist/heartbeat.d.ts.map +1 -1
- package/dist/heartbeat.js +1 -1
- package/dist/heartbeat.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/network/http.d.ts +0 -20
- package/dist/network/http.d.ts.map +1 -1
- package/dist/network/http.js +5 -99
- package/dist/network/http.js.map +1 -1
- package/dist/network/local.js +1 -1
- package/dist/network/local.js.map +1 -1
- package/dist/network/nats.d.ts +59 -0
- package/dist/network/nats.d.ts.map +1 -0
- package/dist/network/nats.js +272 -0
- package/dist/network/nats.js.map +1 -0
- package/dist/platform.d.ts +4 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +24 -0
- package/dist/platform.js.map +1 -0
- package/dist/promises.d.ts.map +1 -1
- package/dist/promises.js +1 -1
- package/dist/promises.js.map +1 -1
- package/dist/resonate.d.ts.map +1 -1
- package/dist/resonate.js +20 -9
- package/dist/resonate.js.map +1 -1
- package/dist/schedules.d.ts.map +1 -1
- package/dist/schedules.js +1 -1
- package/dist/schedules.js.map +1 -1
- package/dist/trace.d.ts +11 -0
- package/dist/trace.d.ts.map +1 -1
- package/dist/trace.js +22 -0
- package/dist/trace.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +7 -3
- package/dist/util.js.map +1 -1
- package/package.json +22 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Clock } from "../clock.js";
|
|
2
|
+
import type { Codec } from "../codec.js";
|
|
3
|
+
import type { Heartbeat } from "../heartbeat.js";
|
|
4
|
+
import type { Logger } from "../logger.js";
|
|
5
|
+
import { type Message, type PromiseRecord, type TaskRecord } from "../network/types.js";
|
|
6
|
+
import type { OptionsBuilder } from "../options.js";
|
|
7
|
+
import type { Registry } from "../registry.js";
|
|
8
|
+
import { type Trace } from "../trace.js";
|
|
9
|
+
import type { Send } from "../types.js";
|
|
10
|
+
export type Done = {
|
|
11
|
+
kind: "done";
|
|
12
|
+
id: string;
|
|
13
|
+
state: "resolved" | "rejected";
|
|
14
|
+
value: any;
|
|
15
|
+
trace: Trace;
|
|
16
|
+
};
|
|
17
|
+
export type Suspended = {
|
|
18
|
+
kind: "suspended";
|
|
19
|
+
awaited: string[];
|
|
20
|
+
trace: Trace;
|
|
21
|
+
};
|
|
22
|
+
export type Status = Done | Suspended;
|
|
23
|
+
/**
|
|
24
|
+
* Task-lifecycle orchestrator for the async/await engine. Mirrors `src/core.ts`
|
|
25
|
+
* (acquire / suspend / fulfill / release + replay-with-preload recursion) but
|
|
26
|
+
* folds the per-task driver in as `executeUntilBlockedInner`, following Rust's
|
|
27
|
+
* `Core::execute_until_blocked_inner` (no separate `Computation` class).
|
|
28
|
+
*/
|
|
29
|
+
export declare class AsyncCore {
|
|
30
|
+
private pid;
|
|
31
|
+
private ttl;
|
|
32
|
+
private clock;
|
|
33
|
+
private send;
|
|
34
|
+
private codec;
|
|
35
|
+
private registry;
|
|
36
|
+
private heartbeat;
|
|
37
|
+
private dependencies;
|
|
38
|
+
private optsBuilder;
|
|
39
|
+
private logger;
|
|
40
|
+
private retries;
|
|
41
|
+
constructor({ pid, ttl, clock, send, codec, registry, heartbeat, dependencies, optsBuilder, logger, }: {
|
|
42
|
+
pid: string;
|
|
43
|
+
ttl: number;
|
|
44
|
+
clock: Clock;
|
|
45
|
+
send: Send;
|
|
46
|
+
codec: Codec;
|
|
47
|
+
registry: Registry;
|
|
48
|
+
heartbeat: Heartbeat;
|
|
49
|
+
dependencies: Map<string, any>;
|
|
50
|
+
optsBuilder: OptionsBuilder;
|
|
51
|
+
logger: Logger;
|
|
52
|
+
});
|
|
53
|
+
private resolveRetry;
|
|
54
|
+
executeUntilBlocked(task: TaskRecord, rootPromise: PromiseRecord, preload?: PromiseRecord[]): Promise<Status>;
|
|
55
|
+
private executeUntilBlockedInner;
|
|
56
|
+
private releaseTask;
|
|
57
|
+
private suspendTask;
|
|
58
|
+
private fulfillTask;
|
|
59
|
+
onMessage(msg: Message): Promise<Status | undefined>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/async/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAyB,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,KAAK,KAAK,EAAkB,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,aAAa,CAAC;AAOjD,MAAM,MAAM,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAC1G,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAC/E,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEtC;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAsC;gBAEzC,EACV,GAAG,EACH,GAAG,EACH,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,MAAM,GACP,EAAE;QACD,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,IAAI,CAAC;QACX,KAAK,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,QAAQ,CAAC;QACnB,SAAS,EAAE,SAAS,CAAC;QACrB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,WAAW,EAAE,cAAc,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC;KAChB;IAuBD,OAAO,CAAC,YAAY;IAWP,mBAAmB,CAC9B,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,aAAa,EAC1B,OAAO,CAAC,EAAE,aAAa,EAAE,GACxB,OAAO,CAAC,MAAM,CAAC;YAyCJ,wBAAwB;YA8ExB,WAAW;YAQX,WAAW;YA8BX,WAAW;IAsBZ,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CA6BlE"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import exceptions, { ResonateError } from "../exceptions.js";
|
|
2
|
+
import { isRedirect, isSuccess } from "../network/types.js";
|
|
3
|
+
import { randomUUID } from "../platform.js";
|
|
4
|
+
import { Constant, Exponential, Linear, Never } from "../retries.js";
|
|
5
|
+
import { TraceCollector } from "../trace.js";
|
|
6
|
+
import * as util from "../util.js";
|
|
7
|
+
import { AsyncContext, runWithRetry } from "./context.js";
|
|
8
|
+
/**
|
|
9
|
+
* Task-lifecycle orchestrator for the async/await engine. Mirrors `src/core.ts`
|
|
10
|
+
* (acquire / suspend / fulfill / release + replay-with-preload recursion) but
|
|
11
|
+
* folds the per-task driver in as `executeUntilBlockedInner`, following Rust's
|
|
12
|
+
* `Core::execute_until_blocked_inner` (no separate `Computation` class).
|
|
13
|
+
*/
|
|
14
|
+
export class AsyncCore {
|
|
15
|
+
pid;
|
|
16
|
+
ttl;
|
|
17
|
+
clock;
|
|
18
|
+
send;
|
|
19
|
+
codec;
|
|
20
|
+
registry;
|
|
21
|
+
heartbeat;
|
|
22
|
+
dependencies;
|
|
23
|
+
optsBuilder;
|
|
24
|
+
logger;
|
|
25
|
+
retries;
|
|
26
|
+
constructor({ pid, ttl, clock, send, codec, registry, heartbeat, dependencies, optsBuilder, logger, }) {
|
|
27
|
+
this.pid = pid;
|
|
28
|
+
this.ttl = ttl;
|
|
29
|
+
this.clock = clock;
|
|
30
|
+
this.send = send;
|
|
31
|
+
this.codec = codec;
|
|
32
|
+
this.registry = registry;
|
|
33
|
+
this.heartbeat = heartbeat;
|
|
34
|
+
this.dependencies = dependencies;
|
|
35
|
+
this.optsBuilder = optsBuilder;
|
|
36
|
+
this.logger = logger;
|
|
37
|
+
this.retries = new Map([
|
|
38
|
+
[Constant.type, Constant],
|
|
39
|
+
[Exponential.type, Exponential],
|
|
40
|
+
[Linear.type, Linear],
|
|
41
|
+
[Never.type, Never],
|
|
42
|
+
]);
|
|
43
|
+
}
|
|
44
|
+
// Decode the retry policy embedded in the root promise's param data, mirroring
|
|
45
|
+
// the generator engine's Computation. Retries are opt-in for the async engine,
|
|
46
|
+
// so the default (absent or unknown policy) is Never.
|
|
47
|
+
resolveRetry(retry) {
|
|
48
|
+
const ctor = retry ? this.retries.get(retry.type) : undefined;
|
|
49
|
+
if (retry && !ctor) {
|
|
50
|
+
this.logger.warn({ component: "async-core", retryType: retry.type }, `Retry policy '${retry.type}' not found. Will ignore.`);
|
|
51
|
+
}
|
|
52
|
+
return ctor ? new ctor(retry?.data) : new Never();
|
|
53
|
+
}
|
|
54
|
+
async executeUntilBlocked(task, rootPromise, preload) {
|
|
55
|
+
util.assert(task.state === "acquired", `expected task state to be 'acquired', got '${task.state}'`);
|
|
56
|
+
const effects = util.buildEffects(this.send, this.codec, { id: task.id, version: task.version }, preload);
|
|
57
|
+
try {
|
|
58
|
+
const status = await this.executeUntilBlockedInner(rootPromise, effects);
|
|
59
|
+
if (status.kind === "suspended") {
|
|
60
|
+
const suspendResult = await this.suspendTask(task, rootPromise, status.awaited);
|
|
61
|
+
if (suspendResult.continue) {
|
|
62
|
+
return this.executeUntilBlocked(task, rootPromise, suspendResult.preload);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (status.kind === "done") {
|
|
66
|
+
await this.fulfillTask(task, rootPromise, status);
|
|
67
|
+
}
|
|
68
|
+
return status;
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
if (err instanceof ResonateError) {
|
|
72
|
+
err.log(this.logger);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.logger.warn({ component: "async-core", error: err instanceof Error ? err.message : String(err) }, "executeUntilBlocked failed unexpectedly");
|
|
76
|
+
}
|
|
77
|
+
await this.releaseTask(task, rootPromise).catch((releaseErr) => this.logger.warn({
|
|
78
|
+
component: "async-core",
|
|
79
|
+
error: releaseErr instanceof Error ? releaseErr.message : String(releaseErr),
|
|
80
|
+
}, "failed to release task after execution error"));
|
|
81
|
+
throw err;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Per-task pass. Runs the user async fn under a fresh AsyncContext and
|
|
85
|
+
// finalizes via the race + drain in `run`. Owns all per-pass state so the
|
|
86
|
+
// parked frame (on suspend) is GC-collectible once this returns (GC rules).
|
|
87
|
+
async executeUntilBlockedInner(rootPromise, effects) {
|
|
88
|
+
if (!isValidData(rootPromise.param?.data)) {
|
|
89
|
+
throw exceptions.PANIC("async-core", "invalid promise data");
|
|
90
|
+
}
|
|
91
|
+
const { func, args, retry, version = 1 } = rootPromise.param.data;
|
|
92
|
+
const registered = this.registry.get(func, version);
|
|
93
|
+
if (!registered) {
|
|
94
|
+
throw exceptions.REGISTRY_FUNCTION_NOT_REGISTERED(func, version);
|
|
95
|
+
}
|
|
96
|
+
if (version !== 0)
|
|
97
|
+
util.assert(version === registered.version, "versions must match");
|
|
98
|
+
util.assert(func === registered.name, "names must match");
|
|
99
|
+
this.heartbeat.start();
|
|
100
|
+
// One trace per pass (mirrors Computation.processGenerator); threaded into
|
|
101
|
+
// the root context and propagated to every child via AsyncContext.child.
|
|
102
|
+
const trace = new TraceCollector();
|
|
103
|
+
// Root dedup: if the boundary promise is already settled, short-circuit with
|
|
104
|
+
// a single dedup event (no spawn — the root never ran this pass).
|
|
105
|
+
if (rootPromise.state !== "pending") {
|
|
106
|
+
const state = rootPromise.state === "resolved" ? "resolved" : "rejected";
|
|
107
|
+
trace.emit({ kind: "dedup", id: rootPromise.id, state, value: rootPromise.value?.data });
|
|
108
|
+
return { kind: "done", id: rootPromise.id, state, value: rootPromise.value?.data, trace: trace.getTrace() };
|
|
109
|
+
}
|
|
110
|
+
// Root spawn — emitted once before the (possibly retried) run driver, matching
|
|
111
|
+
// the generator coroutine's own spawn at exec start. Retries re-run the body
|
|
112
|
+
// but do not re-emit spawn.
|
|
113
|
+
trace.emit({ kind: "spawn", id: rootPromise.id });
|
|
114
|
+
// Run the root with in-process retries. Each attempt runs under a fresh
|
|
115
|
+
// context so durable children replay identically via dedup. nonRetryable
|
|
116
|
+
// errors are empty at the root (error constructors can't be encoded into a
|
|
117
|
+
// promise) — only the decoded retry policy applies.
|
|
118
|
+
const outcome = await runWithRetry((attempt) => new AsyncContext({
|
|
119
|
+
id: rootPromise.id,
|
|
120
|
+
oId: rootPromise.tags["resonate:origin"] ?? rootPromise.id,
|
|
121
|
+
// The id-generation prefix, propagated unchanged across re-roots (a
|
|
122
|
+
// detached child resets origin to its own id but carries prefix
|
|
123
|
+
// forward), so recursive detached ids stay bounded. Falls back to
|
|
124
|
+
// the id like oId.
|
|
125
|
+
prId: rootPromise.tags["resonate:prefix"] ?? rootPromise.id,
|
|
126
|
+
func: registered.func.name,
|
|
127
|
+
clock: this.clock,
|
|
128
|
+
registry: this.registry,
|
|
129
|
+
dependencies: this.dependencies,
|
|
130
|
+
optsBuilder: this.optsBuilder,
|
|
131
|
+
timeout: rootPromise.timeoutAt,
|
|
132
|
+
version: registered.version,
|
|
133
|
+
attempt,
|
|
134
|
+
}, effects, trace), registered.func, args, this.resolveRetry(retry), [], this.clock, rootPromise.timeoutAt);
|
|
135
|
+
if (outcome.kind === "suspended") {
|
|
136
|
+
trace.emit({ kind: "suspend", id: rootPromise.id });
|
|
137
|
+
return { kind: "suspended", awaited: outcome.remote, trace: trace.getTrace() };
|
|
138
|
+
}
|
|
139
|
+
const state = outcome.kind === "value" ? "resolved" : "rejected";
|
|
140
|
+
const value = outcome.kind === "value" ? outcome.value : outcome.error;
|
|
141
|
+
trace.emit({ kind: "return", id: rootPromise.id, state, value });
|
|
142
|
+
return { kind: "done", id: rootPromise.id, state, value, trace: trace.getTrace() };
|
|
143
|
+
}
|
|
144
|
+
async releaseTask(task, rootPromise) {
|
|
145
|
+
await this.send({
|
|
146
|
+
kind: "task.release",
|
|
147
|
+
head: { corrId: randomUUID(), version: util.VERSION, "resonate:origin": rootPromise.tags["resonate:origin"] },
|
|
148
|
+
data: { id: task.id, version: task.version },
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
async suspendTask(task, rootPromise, awaited) {
|
|
152
|
+
const res = await this.send({
|
|
153
|
+
kind: "task.suspend",
|
|
154
|
+
head: { corrId: randomUUID(), version: util.VERSION, "resonate:origin": rootPromise.tags["resonate:origin"] },
|
|
155
|
+
data: {
|
|
156
|
+
id: task.id,
|
|
157
|
+
version: task.version,
|
|
158
|
+
actions: awaited.map((a) => ({
|
|
159
|
+
kind: "promise.register_callback",
|
|
160
|
+
head: { corrId: randomUUID(), version: util.VERSION },
|
|
161
|
+
data: { awaiter: rootPromise.id, awaited: a },
|
|
162
|
+
})),
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
if (isSuccess(res)) {
|
|
166
|
+
return { continue: false };
|
|
167
|
+
}
|
|
168
|
+
if (isRedirect(res)) {
|
|
169
|
+
return { continue: true, preload: res.data.preload };
|
|
170
|
+
}
|
|
171
|
+
throw exceptions.SERVER_ERROR(res.data, true, {
|
|
172
|
+
code: res.head.status,
|
|
173
|
+
message: res.data,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
async fulfillTask(task, rootPromise, doneValue) {
|
|
177
|
+
const encoded = this.codec.encode(doneValue.value);
|
|
178
|
+
await this.send({
|
|
179
|
+
kind: "task.fulfill",
|
|
180
|
+
head: { corrId: randomUUID(), version: util.VERSION, "resonate:origin": rootPromise.tags["resonate:origin"] },
|
|
181
|
+
data: {
|
|
182
|
+
id: task.id,
|
|
183
|
+
version: task.version,
|
|
184
|
+
action: {
|
|
185
|
+
kind: "promise.settle",
|
|
186
|
+
head: { corrId: randomUUID(), version: util.VERSION, "resonate:origin": rootPromise.tags["resonate:origin"] },
|
|
187
|
+
data: {
|
|
188
|
+
id: doneValue.id,
|
|
189
|
+
state: doneValue.state,
|
|
190
|
+
value: encoded,
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
async onMessage(msg) {
|
|
197
|
+
// `msg` arrives off the network: an unexpected kind is an external
|
|
198
|
+
// condition (unhandled message type, corruption), not an internal
|
|
199
|
+
// invariant — drop it with a warning instead of asserting (which exits).
|
|
200
|
+
if (msg.kind !== "execute") {
|
|
201
|
+
this.logger.warn({ component: "async-core", kind: msg.kind }, "dropping message with unexpected kind");
|
|
202
|
+
return undefined;
|
|
203
|
+
}
|
|
204
|
+
const task = msg.data.task;
|
|
205
|
+
const res = await this.send({
|
|
206
|
+
kind: "task.acquire",
|
|
207
|
+
head: { corrId: randomUUID(), version: util.VERSION, "resonate:origin": task.id },
|
|
208
|
+
data: { id: task.id, version: task.version, pid: this.pid, ttl: this.ttl },
|
|
209
|
+
});
|
|
210
|
+
if (!isSuccess(res)) {
|
|
211
|
+
throw exceptions.SERVER_ERROR(res.data, true, {
|
|
212
|
+
code: res.head.status,
|
|
213
|
+
message: res.data,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
const rootPromise = this.codec.decodePromise(res.data.promise);
|
|
217
|
+
return this.executeUntilBlocked(res.data.task, rootPromise, res.data.preload);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Validates the root promise's decoded `param.data` shape (copied from
|
|
221
|
+
// src/computation.ts to keep the generator engine untouched).
|
|
222
|
+
function isValidData(data) {
|
|
223
|
+
if (data === null || typeof data !== "object")
|
|
224
|
+
return false;
|
|
225
|
+
const d = data;
|
|
226
|
+
if (typeof d.func !== "string")
|
|
227
|
+
return false;
|
|
228
|
+
if (!Array.isArray(d.args))
|
|
229
|
+
return false;
|
|
230
|
+
if (d.version !== undefined && typeof d.version !== "number")
|
|
231
|
+
return false;
|
|
232
|
+
if (d.retry !== undefined) {
|
|
233
|
+
if (d.retry === null || typeof d.retry !== "object" || typeof d.retry.type !== "string" || !("data" in d.retry)) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/async/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Constant, Exponential, Linear, Never, type RetryPolicy } from "../retries.js";
|
|
2
|
+
export { type AnyFunc, type Context, type DetachedHandle, DurablePromise, type Info } from "./context.js";
|
|
3
|
+
export { AsyncResonate, type AsyncResonateFunc, type ResonateHandle, type ResonateSchedule, } from "./resonate.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/async/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AAC1G,OAAO,EACL,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Parallel async/await execution engine for the Resonate SDK.
|
|
2
|
+
//
|
|
3
|
+
// Users write ordinary `async` functions and use `await`. `ctx.run`/`ctx.rpc`/
|
|
4
|
+
// `ctx.sleep` are eager (begin immediately) and return a `DurablePromise<T>` —
|
|
5
|
+
// an awaitable branded handle exposing the durable promise id. There are no
|
|
6
|
+
// `begin*` variants.
|
|
7
|
+
// Retries are opt-in in this engine (default Never) — re-export the policies
|
|
8
|
+
// so migrating users don't have to reach into the generator entry point.
|
|
9
|
+
export { Constant, Exponential, Linear, Never } from "../retries.js";
|
|
10
|
+
export { DurablePromise } from "./context.js";
|
|
11
|
+
export { AsyncResonate, } from "./resonate.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/async/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,qBAAqB;AAErB,6EAA6E;AAC7E,yEAAyE;AACzE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAoB,MAAM,eAAe,CAAC;AACvF,OAAO,EAAmD,cAAc,EAAa,MAAM,cAAc,CAAC;AAC1G,OAAO,EACL,aAAa,GAId,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { type Encryptor } from "../encryptor.js";
|
|
2
|
+
import { type Logger, type LogLevel } from "../logger.js";
|
|
3
|
+
import type { Network } from "../network/network.js";
|
|
4
|
+
import { type Options } from "../options.js";
|
|
5
|
+
import { Promises } from "../promises.js";
|
|
6
|
+
import { Schedules } from "../schedules.js";
|
|
7
|
+
import type { AnyFunc, ParamsWithOptions, Return } from "./context.js";
|
|
8
|
+
export interface ResonateHandle<T> {
|
|
9
|
+
id: string;
|
|
10
|
+
result(): Promise<T>;
|
|
11
|
+
done(): Promise<boolean>;
|
|
12
|
+
}
|
|
13
|
+
export interface AsyncResonateFunc<F extends AnyFunc> {
|
|
14
|
+
run: (id: string, ...args: ParamsWithOptions<F>) => Promise<ResonateHandle<Return<F>>>;
|
|
15
|
+
rpc: (id: string, ...args: ParamsWithOptions<F>) => Promise<ResonateHandle<Return<F>>>;
|
|
16
|
+
options: (opts?: Partial<Options>) => Options;
|
|
17
|
+
}
|
|
18
|
+
export interface ResonateSchedule {
|
|
19
|
+
delete(): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Opt-in entry point for the async/await execution engine. Lives alongside the
|
|
23
|
+
* generator-based `Resonate` and reuses the same network/codec/registry/task
|
|
24
|
+
* plumbing, routing execution through {@link AsyncCore}.
|
|
25
|
+
*/
|
|
26
|
+
export declare class AsyncResonate {
|
|
27
|
+
private clock;
|
|
28
|
+
private pid;
|
|
29
|
+
private ttl;
|
|
30
|
+
private idPrefix;
|
|
31
|
+
private core;
|
|
32
|
+
private codec;
|
|
33
|
+
private network;
|
|
34
|
+
private send;
|
|
35
|
+
private logger;
|
|
36
|
+
private registry;
|
|
37
|
+
private heartbeat;
|
|
38
|
+
private dependencies;
|
|
39
|
+
private optsBuilder;
|
|
40
|
+
private subscriptions;
|
|
41
|
+
private subscribeEvery;
|
|
42
|
+
private intervalId;
|
|
43
|
+
readonly promises: Promises;
|
|
44
|
+
readonly schedules: Schedules;
|
|
45
|
+
constructor({ url, group, pid, ttl, token, timeout, verbose, logLevel, logger, encryptor, network, prefix, }?: {
|
|
46
|
+
url?: string;
|
|
47
|
+
group?: string;
|
|
48
|
+
pid?: string;
|
|
49
|
+
ttl?: number;
|
|
50
|
+
token?: string;
|
|
51
|
+
timeout?: number;
|
|
52
|
+
verbose?: boolean;
|
|
53
|
+
logLevel?: LogLevel;
|
|
54
|
+
logger?: Logger;
|
|
55
|
+
encryptor?: Encryptor;
|
|
56
|
+
network?: Network;
|
|
57
|
+
prefix?: string;
|
|
58
|
+
});
|
|
59
|
+
/** Registers an async function (leaf or workflow) for execution. */
|
|
60
|
+
register<F extends AnyFunc>(name: string, func: F, options?: {
|
|
61
|
+
version?: number;
|
|
62
|
+
}): AsyncResonateFunc<F>;
|
|
63
|
+
register<F extends AnyFunc>(func: F, options?: {
|
|
64
|
+
version?: number;
|
|
65
|
+
}): AsyncResonateFunc<F>;
|
|
66
|
+
/**
|
|
67
|
+
* Begins a workflow as a locally-executed root task and returns a handle.
|
|
68
|
+
* Await `.result()` for the value (delivered via the durable-promise
|
|
69
|
+
* subscription, never via the in-memory frame — see the GC rules).
|
|
70
|
+
*/
|
|
71
|
+
run<F extends AnyFunc>(id: string, func: F, ...args: ParamsWithOptions<F>): Promise<ResonateHandle<Return<F>>>;
|
|
72
|
+
run<T>(id: string, funcOrName: AnyFunc | string, ...args: any[]): Promise<ResonateHandle<T>>;
|
|
73
|
+
/** Begins a workflow as a remote (globally-targeted) promise and returns a handle. */
|
|
74
|
+
rpc<F extends AnyFunc>(id: string, func: F, ...args: ParamsWithOptions<F>): Promise<ResonateHandle<Return<F>>>;
|
|
75
|
+
rpc<T>(id: string, funcOrName: AnyFunc | string, ...args: any[]): Promise<ResonateHandle<T>>;
|
|
76
|
+
/**
|
|
77
|
+
* Creates a recurring schedule that invokes a registered function on a cron
|
|
78
|
+
* interval. Each tick creates a fresh durable promise whose id embeds the
|
|
79
|
+
* schedule name and timestamp. Returns a handle with `delete()`.
|
|
80
|
+
*/
|
|
81
|
+
schedule<F extends AnyFunc>(name: string, cron: string, func: F, ...args: ParamsWithOptions<F>): Promise<ResonateSchedule>;
|
|
82
|
+
schedule(name: string, cron: string, func: string, ...args: any[]): Promise<ResonateSchedule>;
|
|
83
|
+
/** Returns a handle to an existing durable promise by id. */
|
|
84
|
+
get<T = any>(id: string): Promise<ResonateHandle<T>>;
|
|
85
|
+
options(opts?: Partial<Pick<Options, "tags" | "target" | "timeout" | "version" | "retryPolicy">>): Options;
|
|
86
|
+
setDependency(name: string, obj: any): void;
|
|
87
|
+
stop(): Promise<void>;
|
|
88
|
+
private getArgsAndOpts;
|
|
89
|
+
private taskCreate;
|
|
90
|
+
private promiseCreate;
|
|
91
|
+
private promiseRegisterListener;
|
|
92
|
+
private promiseGet;
|
|
93
|
+
private createHandle;
|
|
94
|
+
private onMessage;
|
|
95
|
+
private subscribe;
|
|
96
|
+
private notify;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=resonate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resonate.d.ts","sourceRoot":"","sources":["../../src/async/resonate.ts"],"names":[],"mappings":"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"}
|