@restatedev/restate-sdk 1.11.1 → 1.12.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/dist/_virtual/rolldown_runtime.cjs +9 -0
- package/dist/common_api.cjs +2 -1
- package/dist/common_api.d.cts +6 -2
- package/dist/common_api.d.cts.map +1 -1
- package/dist/common_api.d.ts +6 -2
- package/dist/common_api.d.ts.map +1 -1
- package/dist/common_api.js +2 -1
- package/dist/common_api.js.map +1 -1
- package/dist/context.cjs +13 -9
- package/dist/context.d.cts +36 -29
- package/dist/context.d.cts.map +1 -1
- package/dist/context.d.ts +36 -29
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +13 -9
- package/dist/context.js.map +1 -1
- package/dist/context_impl.cjs +150 -91
- package/dist/context_impl.d.cts +8 -0
- package/dist/context_impl.d.ts +8 -72
- package/dist/context_impl.d.ts.map +1 -1
- package/dist/context_impl.js +151 -93
- package/dist/context_impl.js.map +1 -1
- package/dist/endpoint/components.cjs +35 -20
- package/dist/endpoint/components.d.cts +5 -0
- package/dist/endpoint/components.d.ts +5 -97
- package/dist/endpoint/components.d.ts.map +1 -1
- package/dist/endpoint/components.js +35 -20
- package/dist/endpoint/components.js.map +1 -1
- package/dist/endpoint/endpoint.cjs +2 -2
- package/dist/endpoint/endpoint.d.cts +5 -0
- package/dist/endpoint/endpoint.d.ts +5 -39
- package/dist/endpoint/endpoint.js +2 -2
- package/dist/endpoint/endpoint.js.map +1 -1
- package/dist/endpoint/handlers/generic.cjs +115 -39
- package/dist/endpoint/handlers/generic.d.ts.map +1 -1
- package/dist/endpoint/handlers/generic.js +115 -39
- package/dist/endpoint/handlers/generic.js.map +1 -1
- package/dist/endpoint/handlers/types.d.cts +1 -0
- package/dist/endpoint/handlers/types.d.ts +1 -41
- package/dist/endpoint/handlers/utils.cjs +1 -1
- package/dist/endpoint/handlers/utils.js +1 -1
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.cjs +43 -3
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +19 -1
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.d.ts.map +1 -1
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js +43 -3
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings.js.map +1 -1
- package/dist/endpoint/node_endpoint.cjs +28 -12
- package/dist/endpoint/node_endpoint.d.ts +14 -2
- package/dist/endpoint/node_endpoint.d.ts.map +1 -1
- package/dist/endpoint/node_endpoint.js +27 -11
- package/dist/endpoint/node_endpoint.js.map +1 -1
- package/dist/endpoint/types.d.cts +1 -1
- package/dist/endpoint/types.d.ts +1 -1
- package/dist/endpoint.d.cts +87 -5
- package/dist/endpoint.d.cts.map +1 -1
- package/dist/endpoint.d.ts +87 -5
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/error_sanitization.cjs +26 -0
- package/dist/error_sanitization.d.ts +13 -0
- package/dist/error_sanitization.d.ts.map +1 -0
- package/dist/error_sanitization.js +26 -0
- package/dist/error_sanitization.js.map +1 -0
- package/dist/fetch.cjs +3 -1
- package/dist/fetch.d.cts +5 -3
- package/dist/fetch.d.cts.map +1 -1
- package/dist/fetch.d.ts +5 -3
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +3 -2
- package/dist/fetch.js.map +1 -1
- package/dist/hooks.d.cts +87 -0
- package/dist/hooks.d.cts.map +1 -0
- package/dist/hooks.d.ts +87 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +2 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.cjs +3 -1
- package/dist/index.d.cts +6 -4
- package/dist/index.d.ts +6 -4
- package/dist/index.js +3 -2
- package/dist/internal.cjs +3 -1
- package/dist/internal.d.cts +186 -2
- package/dist/internal.d.cts.map +1 -1
- package/dist/internal.d.ts +186 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +4 -1
- package/dist/internal.js.map +1 -1
- package/dist/io.d.cts +1 -0
- package/dist/io.d.ts +1 -24
- package/dist/lambda.cjs +3 -1
- package/dist/lambda.d.cts +5 -3
- package/dist/lambda.d.cts.map +1 -1
- package/dist/lambda.d.ts +5 -3
- package/dist/lambda.d.ts.map +1 -1
- package/dist/lambda.js +3 -2
- package/dist/lambda.js.map +1 -1
- package/dist/logging/logger.d.cts +1 -0
- package/dist/logging/logger.d.ts +1 -10
- package/dist/node.cjs +23 -6
- package/dist/node.d.cts +46 -8
- package/dist/node.d.cts.map +1 -1
- package/dist/node.d.ts +46 -8
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +23 -7
- package/dist/node.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/dist/promises.cjs +90 -53
- package/dist/promises.d.cts +18 -0
- package/dist/promises.d.cts.map +1 -0
- package/dist/promises.d.ts +15 -108
- package/dist/promises.d.ts.map +1 -1
- package/dist/promises.js +85 -48
- package/dist/promises.js.map +1 -1
- package/dist/types/errors.cjs +13 -0
- package/dist/types/errors.d.cts +11 -5
- package/dist/types/errors.d.cts.map +1 -1
- package/dist/types/errors.d.ts +11 -5
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +13 -1
- package/dist/types/errors.js.map +1 -1
- package/dist/types/rpc.cjs +7 -19
- package/dist/types/rpc.d.cts +174 -0
- package/dist/types/rpc.d.cts.map +1 -1
- package/dist/types/rpc.d.ts +174 -0
- package/dist/types/rpc.d.ts.map +1 -1
- package/dist/types/rpc.js +7 -19
- package/dist/types/rpc.js.map +1 -1
- package/package.json +2 -2
package/dist/types/rpc.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TerminalError } from "./errors.cjs";
|
|
2
|
+
import { HooksProvider } from "../hooks.cjs";
|
|
2
3
|
import { Context, InvocationHandle, InvocationPromise, ObjectContext, ObjectSharedContext, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "../context.cjs";
|
|
3
4
|
import { Duration, ObjectHandler, Serde, ServiceDefinition, ServiceHandler, VirtualObjectDefinition, WorkflowDefinition, WorkflowHandler, WorkflowSharedHandler } from "@restatedev/restate-sdk-core";
|
|
4
5
|
|
|
@@ -157,6 +158,117 @@ type ServiceHandlerOpts<I, O$1> = {
|
|
|
157
158
|
* Retry policy to apply to all requests to this handler. For each unspecified field, the default value configured in the service or, if absent, in the restate-server configuration file, will be applied instead.
|
|
158
159
|
*/
|
|
159
160
|
retryPolicy?: RetryPolicy;
|
|
161
|
+
/**
|
|
162
|
+
* By default, Restate treats errors as terminal (non-retryable) only when they are instances of `TerminalError`.
|
|
163
|
+
*
|
|
164
|
+
* Use this hook to map domain-specific errors to `TerminalError` (or return `undefined` to keep them retryable).
|
|
165
|
+
* When mapped to `TerminalError`, the error will not be retried.
|
|
166
|
+
*
|
|
167
|
+
* Note: This applies to errors thrown inside `ctx.run` closures as well as errors thrown by Restate handlers.
|
|
168
|
+
*
|
|
169
|
+
* Example:
|
|
170
|
+
*
|
|
171
|
+
* ```ts
|
|
172
|
+
* class MyValidationError extends Error {}
|
|
173
|
+
*
|
|
174
|
+
* const greeter = restate.service({
|
|
175
|
+
* name: "greeter",
|
|
176
|
+
* handlers: {
|
|
177
|
+
* greet: async (ctx: restate.Context, name: string) => {
|
|
178
|
+
* if (name.length === 0) {
|
|
179
|
+
* throw new MyValidationError("Length too short");
|
|
180
|
+
* }
|
|
181
|
+
* return `Hello ${name}`;
|
|
182
|
+
* }
|
|
183
|
+
* },
|
|
184
|
+
* options: {
|
|
185
|
+
* asTerminalError: (err) => {
|
|
186
|
+
* if (err instanceof MyValidationError) {
|
|
187
|
+
* // My validation error is terminal
|
|
188
|
+
* return new restate.TerminalError(err.message, { errorCode: 400 });
|
|
189
|
+
* }
|
|
190
|
+
*
|
|
191
|
+
* // Any other error is retryable
|
|
192
|
+
* }
|
|
193
|
+
* }
|
|
194
|
+
* });
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
asTerminalError?: (error: any) => TerminalError | undefined;
|
|
198
|
+
/**
|
|
199
|
+
* Default serde to use for requests, responses, state, side effects, awakeables, promises. Used when no other serde is specified.
|
|
200
|
+
*
|
|
201
|
+
* If not provided, defaults to `serde.json`.
|
|
202
|
+
*
|
|
203
|
+
* The input or output of this handler can be overridden using the `input`/`output` fields
|
|
204
|
+
*/
|
|
205
|
+
serde?: Serde<any>;
|
|
206
|
+
/**
|
|
207
|
+
* Hooks providers for this handler. Handler-level hooks wrap innermost —
|
|
208
|
+
* they run after service-level hooks. Both levels are merged: service
|
|
209
|
+
* hooks first, then handler hooks. Within each level, hooks execute in
|
|
210
|
+
* array order: for `[A, B]`: A before → B before → handler → B after → A after.
|
|
211
|
+
*
|
|
212
|
+
* The `handler` interceptor fires on every attempt. The `run` interceptor
|
|
213
|
+
* fires only when the `ctx.run()` closure actually executes — replayed
|
|
214
|
+
* runs (already in the journal) are skipped.
|
|
215
|
+
*
|
|
216
|
+
* Errors thrown at any point (before or after `next()`) affect the invocation:
|
|
217
|
+
* {@link TerminalError} fails immediately, any other error triggers a retry.
|
|
218
|
+
* On suspension or pause, `next()` also rejects — do any cleanup and rethrow.
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```ts
|
|
222
|
+
* const myService = restate.service({
|
|
223
|
+
* name: "MyService",
|
|
224
|
+
* handlers: {
|
|
225
|
+
* greet: restate.createServiceHandler(
|
|
226
|
+
* {
|
|
227
|
+
* hooks: [
|
|
228
|
+
* (ctx) => ({
|
|
229
|
+
* interceptor: {
|
|
230
|
+
* handler: async (next) => {
|
|
231
|
+
* console.log(`before ${ctx.request.target}`);
|
|
232
|
+
* try {
|
|
233
|
+
* await next();
|
|
234
|
+
* console.log(`after ${ctx.request.target}`);
|
|
235
|
+
* } catch (e) {
|
|
236
|
+
* console.log(`error ${ctx.request.target}: ${e}`);
|
|
237
|
+
* // Always rethrow — swallowing the error changes the
|
|
238
|
+
* // invocation outcome. You can also throw a different
|
|
239
|
+
* // error (e.g. TerminalError to fail immediately).
|
|
240
|
+
* throw e;
|
|
241
|
+
* }
|
|
242
|
+
* },
|
|
243
|
+
* run: async (name, next) => {
|
|
244
|
+
* console.log(` before run "${name}"`);
|
|
245
|
+
* try {
|
|
246
|
+
* await next();
|
|
247
|
+
* console.log(` after run "${name}"`);
|
|
248
|
+
* } catch (e) {
|
|
249
|
+
* console.log(` error run "${name}": ${e}`);
|
|
250
|
+
* throw e;
|
|
251
|
+
* }
|
|
252
|
+
* },
|
|
253
|
+
* },
|
|
254
|
+
* }),
|
|
255
|
+
* ],
|
|
256
|
+
* },
|
|
257
|
+
* async (ctx, name) => `Hello, ${name}!`
|
|
258
|
+
* ),
|
|
259
|
+
* },
|
|
260
|
+
* });
|
|
261
|
+
* ```
|
|
262
|
+
*/
|
|
263
|
+
hooks?: HooksProvider[];
|
|
264
|
+
/**
|
|
265
|
+
* When set to `true`, the SDK will stop automatically propagating cancellations when awaiting {@link RestatePromise}s.
|
|
266
|
+
*
|
|
267
|
+
* Instead, the user code must explicitly listen to cancellations using the `ctx.cancellation()` API in {@link ContextInternal}.
|
|
268
|
+
*
|
|
269
|
+
* @experimental
|
|
270
|
+
*/
|
|
271
|
+
explicitCancellation?: boolean;
|
|
160
272
|
};
|
|
161
273
|
type ObjectHandlerOpts<I, O$1> = ServiceHandlerOpts<I, O$1> & {
|
|
162
274
|
/**
|
|
@@ -384,6 +496,68 @@ type ServiceOptions = {
|
|
|
384
496
|
* If not provided, defaults to `serde.json`.
|
|
385
497
|
*/
|
|
386
498
|
serde?: Serde<any>;
|
|
499
|
+
/**
|
|
500
|
+
* Hooks providers for this service. Service-level hooks wrap outermost —
|
|
501
|
+
* they run before handler-level hooks. Both levels are merged: service
|
|
502
|
+
* hooks first, then handler hooks. Within each level, hooks execute in
|
|
503
|
+
* array order: for `[A, B]`: A before → B before → handler → B after → A after.
|
|
504
|
+
*
|
|
505
|
+
* The `handler` interceptor fires on every attempt. The `run` interceptor
|
|
506
|
+
* fires only when the `ctx.run()` closure actually executes — replayed
|
|
507
|
+
* runs (already in the journal) are skipped.
|
|
508
|
+
*
|
|
509
|
+
* Errors thrown at any point (before or after `next()`) affect the invocation:
|
|
510
|
+
* {@link TerminalError} fails immediately, any other error triggers a retry.
|
|
511
|
+
* On suspension or pause, `next()` also rejects — do any cleanup and rethrow.
|
|
512
|
+
*
|
|
513
|
+
* @example
|
|
514
|
+
* ```ts
|
|
515
|
+
* const myService = restate.service({
|
|
516
|
+
* name: "MyService",
|
|
517
|
+
* handlers: { greet: async (ctx, name) => `Hello, ${name}!` },
|
|
518
|
+
* options: {
|
|
519
|
+
* hooks: [
|
|
520
|
+
* (ctx) => ({
|
|
521
|
+
* interceptor: {
|
|
522
|
+
* handler: async (next) => {
|
|
523
|
+
* console.log(`before ${ctx.request.target}`);
|
|
524
|
+
* try {
|
|
525
|
+
* await next();
|
|
526
|
+
* console.log(`after ${ctx.request.target}`);
|
|
527
|
+
* } catch (e) {
|
|
528
|
+
* console.log(`error ${ctx.request.target}: ${e}`);
|
|
529
|
+
* // Always rethrow — swallowing the error changes the
|
|
530
|
+
* // invocation outcome. You can also throw a different
|
|
531
|
+
* // error (e.g. TerminalError to fail immediately).
|
|
532
|
+
* throw e;
|
|
533
|
+
* }
|
|
534
|
+
* },
|
|
535
|
+
* run: async (name, next) => {
|
|
536
|
+
* console.log(` before run "${name}"`);
|
|
537
|
+
* try {
|
|
538
|
+
* await next();
|
|
539
|
+
* console.log(` after run "${name}"`);
|
|
540
|
+
* } catch (e) {
|
|
541
|
+
* console.log(` error run "${name}": ${e}`);
|
|
542
|
+
* throw e;
|
|
543
|
+
* }
|
|
544
|
+
* },
|
|
545
|
+
* },
|
|
546
|
+
* }),
|
|
547
|
+
* ],
|
|
548
|
+
* },
|
|
549
|
+
* });
|
|
550
|
+
* ```
|
|
551
|
+
*/
|
|
552
|
+
hooks?: HooksProvider[];
|
|
553
|
+
/**
|
|
554
|
+
* When set to `true`, the SDK will stop automatically propagating cancellations when awaiting {@link RestatePromise}s.
|
|
555
|
+
*
|
|
556
|
+
* Instead, the user code must explicitly listen to cancellations using the `ctx.cancellation()` API in {@link ContextInternal}.
|
|
557
|
+
*
|
|
558
|
+
* @experimental
|
|
559
|
+
*/
|
|
560
|
+
explicitCancellation?: boolean;
|
|
387
561
|
};
|
|
388
562
|
/**
|
|
389
563
|
* Define a Restate service.
|
package/dist/types/rpc.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.cts","names":[],"sources":["../../src/types/rpc.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rpc.d.cts","names":[],"sources":["../../src/types/rpc.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/types/rpc.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TerminalError } from "./errors.js";
|
|
2
|
+
import { HooksProvider } from "../hooks.js";
|
|
2
3
|
import { Context, InvocationHandle, InvocationPromise, ObjectContext, ObjectSharedContext, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "../context.js";
|
|
3
4
|
import { Duration, ObjectHandler, Serde, ServiceDefinition, ServiceHandler, VirtualObjectDefinition, WorkflowDefinition, WorkflowHandler, WorkflowSharedHandler } from "@restatedev/restate-sdk-core";
|
|
4
5
|
|
|
@@ -157,6 +158,117 @@ type ServiceHandlerOpts<I, O$1> = {
|
|
|
157
158
|
* Retry policy to apply to all requests to this handler. For each unspecified field, the default value configured in the service or, if absent, in the restate-server configuration file, will be applied instead.
|
|
158
159
|
*/
|
|
159
160
|
retryPolicy?: RetryPolicy;
|
|
161
|
+
/**
|
|
162
|
+
* By default, Restate treats errors as terminal (non-retryable) only when they are instances of `TerminalError`.
|
|
163
|
+
*
|
|
164
|
+
* Use this hook to map domain-specific errors to `TerminalError` (or return `undefined` to keep them retryable).
|
|
165
|
+
* When mapped to `TerminalError`, the error will not be retried.
|
|
166
|
+
*
|
|
167
|
+
* Note: This applies to errors thrown inside `ctx.run` closures as well as errors thrown by Restate handlers.
|
|
168
|
+
*
|
|
169
|
+
* Example:
|
|
170
|
+
*
|
|
171
|
+
* ```ts
|
|
172
|
+
* class MyValidationError extends Error {}
|
|
173
|
+
*
|
|
174
|
+
* const greeter = restate.service({
|
|
175
|
+
* name: "greeter",
|
|
176
|
+
* handlers: {
|
|
177
|
+
* greet: async (ctx: restate.Context, name: string) => {
|
|
178
|
+
* if (name.length === 0) {
|
|
179
|
+
* throw new MyValidationError("Length too short");
|
|
180
|
+
* }
|
|
181
|
+
* return `Hello ${name}`;
|
|
182
|
+
* }
|
|
183
|
+
* },
|
|
184
|
+
* options: {
|
|
185
|
+
* asTerminalError: (err) => {
|
|
186
|
+
* if (err instanceof MyValidationError) {
|
|
187
|
+
* // My validation error is terminal
|
|
188
|
+
* return new restate.TerminalError(err.message, { errorCode: 400 });
|
|
189
|
+
* }
|
|
190
|
+
*
|
|
191
|
+
* // Any other error is retryable
|
|
192
|
+
* }
|
|
193
|
+
* }
|
|
194
|
+
* });
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
asTerminalError?: (error: any) => TerminalError | undefined;
|
|
198
|
+
/**
|
|
199
|
+
* Default serde to use for requests, responses, state, side effects, awakeables, promises. Used when no other serde is specified.
|
|
200
|
+
*
|
|
201
|
+
* If not provided, defaults to `serde.json`.
|
|
202
|
+
*
|
|
203
|
+
* The input or output of this handler can be overridden using the `input`/`output` fields
|
|
204
|
+
*/
|
|
205
|
+
serde?: Serde<any>;
|
|
206
|
+
/**
|
|
207
|
+
* Hooks providers for this handler. Handler-level hooks wrap innermost —
|
|
208
|
+
* they run after service-level hooks. Both levels are merged: service
|
|
209
|
+
* hooks first, then handler hooks. Within each level, hooks execute in
|
|
210
|
+
* array order: for `[A, B]`: A before → B before → handler → B after → A after.
|
|
211
|
+
*
|
|
212
|
+
* The `handler` interceptor fires on every attempt. The `run` interceptor
|
|
213
|
+
* fires only when the `ctx.run()` closure actually executes — replayed
|
|
214
|
+
* runs (already in the journal) are skipped.
|
|
215
|
+
*
|
|
216
|
+
* Errors thrown at any point (before or after `next()`) affect the invocation:
|
|
217
|
+
* {@link TerminalError} fails immediately, any other error triggers a retry.
|
|
218
|
+
* On suspension or pause, `next()` also rejects — do any cleanup and rethrow.
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```ts
|
|
222
|
+
* const myService = restate.service({
|
|
223
|
+
* name: "MyService",
|
|
224
|
+
* handlers: {
|
|
225
|
+
* greet: restate.createServiceHandler(
|
|
226
|
+
* {
|
|
227
|
+
* hooks: [
|
|
228
|
+
* (ctx) => ({
|
|
229
|
+
* interceptor: {
|
|
230
|
+
* handler: async (next) => {
|
|
231
|
+
* console.log(`before ${ctx.request.target}`);
|
|
232
|
+
* try {
|
|
233
|
+
* await next();
|
|
234
|
+
* console.log(`after ${ctx.request.target}`);
|
|
235
|
+
* } catch (e) {
|
|
236
|
+
* console.log(`error ${ctx.request.target}: ${e}`);
|
|
237
|
+
* // Always rethrow — swallowing the error changes the
|
|
238
|
+
* // invocation outcome. You can also throw a different
|
|
239
|
+
* // error (e.g. TerminalError to fail immediately).
|
|
240
|
+
* throw e;
|
|
241
|
+
* }
|
|
242
|
+
* },
|
|
243
|
+
* run: async (name, next) => {
|
|
244
|
+
* console.log(` before run "${name}"`);
|
|
245
|
+
* try {
|
|
246
|
+
* await next();
|
|
247
|
+
* console.log(` after run "${name}"`);
|
|
248
|
+
* } catch (e) {
|
|
249
|
+
* console.log(` error run "${name}": ${e}`);
|
|
250
|
+
* throw e;
|
|
251
|
+
* }
|
|
252
|
+
* },
|
|
253
|
+
* },
|
|
254
|
+
* }),
|
|
255
|
+
* ],
|
|
256
|
+
* },
|
|
257
|
+
* async (ctx, name) => `Hello, ${name}!`
|
|
258
|
+
* ),
|
|
259
|
+
* },
|
|
260
|
+
* });
|
|
261
|
+
* ```
|
|
262
|
+
*/
|
|
263
|
+
hooks?: HooksProvider[];
|
|
264
|
+
/**
|
|
265
|
+
* When set to `true`, the SDK will stop automatically propagating cancellations when awaiting {@link RestatePromise}s.
|
|
266
|
+
*
|
|
267
|
+
* Instead, the user code must explicitly listen to cancellations using the `ctx.cancellation()` API in {@link ContextInternal}.
|
|
268
|
+
*
|
|
269
|
+
* @experimental
|
|
270
|
+
*/
|
|
271
|
+
explicitCancellation?: boolean;
|
|
160
272
|
};
|
|
161
273
|
type ObjectHandlerOpts<I, O$1> = ServiceHandlerOpts<I, O$1> & {
|
|
162
274
|
/**
|
|
@@ -384,6 +496,68 @@ type ServiceOptions = {
|
|
|
384
496
|
* If not provided, defaults to `serde.json`.
|
|
385
497
|
*/
|
|
386
498
|
serde?: Serde<any>;
|
|
499
|
+
/**
|
|
500
|
+
* Hooks providers for this service. Service-level hooks wrap outermost —
|
|
501
|
+
* they run before handler-level hooks. Both levels are merged: service
|
|
502
|
+
* hooks first, then handler hooks. Within each level, hooks execute in
|
|
503
|
+
* array order: for `[A, B]`: A before → B before → handler → B after → A after.
|
|
504
|
+
*
|
|
505
|
+
* The `handler` interceptor fires on every attempt. The `run` interceptor
|
|
506
|
+
* fires only when the `ctx.run()` closure actually executes — replayed
|
|
507
|
+
* runs (already in the journal) are skipped.
|
|
508
|
+
*
|
|
509
|
+
* Errors thrown at any point (before or after `next()`) affect the invocation:
|
|
510
|
+
* {@link TerminalError} fails immediately, any other error triggers a retry.
|
|
511
|
+
* On suspension or pause, `next()` also rejects — do any cleanup and rethrow.
|
|
512
|
+
*
|
|
513
|
+
* @example
|
|
514
|
+
* ```ts
|
|
515
|
+
* const myService = restate.service({
|
|
516
|
+
* name: "MyService",
|
|
517
|
+
* handlers: { greet: async (ctx, name) => `Hello, ${name}!` },
|
|
518
|
+
* options: {
|
|
519
|
+
* hooks: [
|
|
520
|
+
* (ctx) => ({
|
|
521
|
+
* interceptor: {
|
|
522
|
+
* handler: async (next) => {
|
|
523
|
+
* console.log(`before ${ctx.request.target}`);
|
|
524
|
+
* try {
|
|
525
|
+
* await next();
|
|
526
|
+
* console.log(`after ${ctx.request.target}`);
|
|
527
|
+
* } catch (e) {
|
|
528
|
+
* console.log(`error ${ctx.request.target}: ${e}`);
|
|
529
|
+
* // Always rethrow — swallowing the error changes the
|
|
530
|
+
* // invocation outcome. You can also throw a different
|
|
531
|
+
* // error (e.g. TerminalError to fail immediately).
|
|
532
|
+
* throw e;
|
|
533
|
+
* }
|
|
534
|
+
* },
|
|
535
|
+
* run: async (name, next) => {
|
|
536
|
+
* console.log(` before run "${name}"`);
|
|
537
|
+
* try {
|
|
538
|
+
* await next();
|
|
539
|
+
* console.log(` after run "${name}"`);
|
|
540
|
+
* } catch (e) {
|
|
541
|
+
* console.log(` error run "${name}": ${e}`);
|
|
542
|
+
* throw e;
|
|
543
|
+
* }
|
|
544
|
+
* },
|
|
545
|
+
* },
|
|
546
|
+
* }),
|
|
547
|
+
* ],
|
|
548
|
+
* },
|
|
549
|
+
* });
|
|
550
|
+
* ```
|
|
551
|
+
*/
|
|
552
|
+
hooks?: HooksProvider[];
|
|
553
|
+
/**
|
|
554
|
+
* When set to `true`, the SDK will stop automatically propagating cancellations when awaiting {@link RestatePromise}s.
|
|
555
|
+
*
|
|
556
|
+
* Instead, the user code must explicitly listen to cancellations using the `ctx.cancellation()` API in {@link ContextInternal}.
|
|
557
|
+
*
|
|
558
|
+
* @experimental
|
|
559
|
+
*/
|
|
560
|
+
explicitCancellation?: boolean;
|
|
387
561
|
};
|
|
388
562
|
/**
|
|
389
563
|
* Define a Restate service.
|
package/dist/types/rpc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","names":[],"sources":["../../src/types/rpc.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","names":[],"sources":["../../src/types/rpc.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/types/rpc.js
CHANGED
|
@@ -77,13 +77,13 @@ const makeRpcCallProxy = (genericCall, defaultSerde, service$1, key) => {
|
|
|
77
77
|
};
|
|
78
78
|
} });
|
|
79
79
|
};
|
|
80
|
-
const makeRpcSendProxy = (genericSend, defaultSerde, service$1, key
|
|
80
|
+
const makeRpcSendProxy = (genericSend, defaultSerde, service$1, key) => {
|
|
81
81
|
return new Proxy({}, { get: (_target, prop) => {
|
|
82
82
|
const method = prop;
|
|
83
83
|
return (...args) => {
|
|
84
84
|
const { parameter, opts } = optsFromArgs(args);
|
|
85
85
|
const requestSerde = opts?.input ?? defaultSerde;
|
|
86
|
-
const delay =
|
|
86
|
+
const delay = opts?.delay;
|
|
87
87
|
return genericSend({
|
|
88
88
|
service: service$1,
|
|
89
89
|
method,
|
|
@@ -111,27 +111,15 @@ var HandlerWrapper = class HandlerWrapper {
|
|
|
111
111
|
const handlerCopy = function(...args) {
|
|
112
112
|
return handler.apply(this, args);
|
|
113
113
|
};
|
|
114
|
-
return new HandlerWrapper(kind, handlerCopy, opts
|
|
114
|
+
return new HandlerWrapper(kind, handlerCopy, opts);
|
|
115
115
|
}
|
|
116
116
|
static fromHandler(handler) {
|
|
117
117
|
return handler[HANDLER_SYMBOL];
|
|
118
118
|
}
|
|
119
|
-
constructor(kind, handler,
|
|
119
|
+
constructor(kind, handler, options) {
|
|
120
120
|
this.kind = kind;
|
|
121
121
|
this.handler = handler;
|
|
122
|
-
this.
|
|
123
|
-
this.outputSerde = outputSerde;
|
|
124
|
-
this.accept = accept;
|
|
125
|
-
this.description = description;
|
|
126
|
-
this.metadata = metadata;
|
|
127
|
-
this.idempotencyRetention = idempotencyRetention;
|
|
128
|
-
this.journalRetention = journalRetention;
|
|
129
|
-
this.inactivityTimeout = inactivityTimeout;
|
|
130
|
-
this.abortTimeout = abortTimeout;
|
|
131
|
-
this.ingressPrivate = ingressPrivate;
|
|
132
|
-
this.enableLazyState = enableLazyState;
|
|
133
|
-
this.retryPolicy = retryPolicy;
|
|
134
|
-
this.asTerminalError = asTerminalError;
|
|
122
|
+
this.options = options;
|
|
135
123
|
}
|
|
136
124
|
bindInstance(t) {
|
|
137
125
|
this.handler = this.handler.bind(t);
|
|
@@ -139,12 +127,12 @@ var HandlerWrapper = class HandlerWrapper {
|
|
|
139
127
|
async invoke(context, input) {
|
|
140
128
|
let req;
|
|
141
129
|
try {
|
|
142
|
-
req = (this.
|
|
130
|
+
req = (this.options?.input ?? context.defaultSerde).deserialize(input);
|
|
143
131
|
} catch (e) {
|
|
144
132
|
throw new TerminalError(`Failed to deserialize input: ${ensureError(e).message}`, { errorCode: 400 });
|
|
145
133
|
}
|
|
146
134
|
const res = await this.handler(context, req);
|
|
147
|
-
return (this.
|
|
135
|
+
return (this.options?.output ?? context.defaultSerde).serialize(res);
|
|
148
136
|
}
|
|
149
137
|
/**
|
|
150
138
|
* Instead of a HandlerWrapper with a handler property,
|