@restatedev/restate-sdk 1.16.9 → 1.17.1
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/common_api.cjs +1 -0
- package/dist/common_api.d.cts +4 -3
- package/dist/common_api.d.cts.map +1 -1
- package/dist/common_api.d.ts +4 -3
- package/dist/common_api.d.ts.map +1 -1
- package/dist/common_api.js +3 -2
- package/dist/common_api.js.map +1 -1
- package/dist/context.d.cts +25 -3
- package/dist/context.d.cts.map +1 -1
- package/dist/context.d.ts +25 -3
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/context_impl.cjs +26 -18
- package/dist/context_impl.d.cts +1 -1
- package/dist/context_impl.d.ts +1 -1
- package/dist/context_impl.d.ts.map +1 -1
- package/dist/context_impl.js +26 -18
- package/dist/context_impl.js.map +1 -1
- package/dist/fetch.cjs +8 -0
- package/dist/fetch.d.cts +4 -3
- package/dist/fetch.d.cts.map +1 -1
- package/dist/fetch.d.ts +4 -3
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +3 -2
- package/dist/fetch.js.map +1 -1
- package/dist/index.cjs +8 -0
- package/dist/index.d.cts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +3 -2
- package/dist/lambda.cjs +8 -0
- package/dist/lambda.d.cts +4 -3
- package/dist/lambda.d.cts.map +1 -1
- package/dist/lambda.d.ts +4 -3
- package/dist/lambda.d.ts.map +1 -1
- package/dist/lambda.js +3 -2
- package/dist/lambda.js.map +1 -1
- package/dist/node.cjs +8 -0
- package/dist/node.d.cts +4 -3
- package/dist/node.d.cts.map +1 -1
- package/dist/node.d.ts +4 -3
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +3 -2
- 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/types/interface.cjs +34 -0
- package/dist/types/interface.d.cts +46 -0
- package/dist/types/interface.d.cts.map +1 -0
- package/dist/types/interface.d.ts +46 -0
- package/dist/types/interface.d.ts.map +1 -0
- package/dist/types/interface.js +35 -0
- package/dist/types/interface.js.map +1 -0
- package/dist/types/rpc.cjs +48 -14
- package/dist/types/rpc.d.cts +14 -49
- package/dist/types/rpc.d.cts.map +1 -1
- package/dist/types/rpc.d.ts +14 -49
- package/dist/types/rpc.d.ts.map +1 -1
- package/dist/types/rpc.js +46 -14
- package/dist/types/rpc.js.map +1 -1
- package/package.json +2 -2
package/dist/types/rpc.cjs
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
1
2
|
const require_errors = require('./errors.cjs');
|
|
3
|
+
let __restatedev_restate_sdk_core = require("@restatedev/restate-sdk-core");
|
|
4
|
+
__restatedev_restate_sdk_core = require_rolldown_runtime.__toESM(__restatedev_restate_sdk_core);
|
|
2
5
|
|
|
3
6
|
//#region src/types/rpc.ts
|
|
4
7
|
var Opts = class Opts {
|
|
@@ -56,13 +59,14 @@ function optsFromArgs(args) {
|
|
|
56
59
|
opts
|
|
57
60
|
};
|
|
58
61
|
}
|
|
59
|
-
const makeRpcCallProxy = (genericCall, defaultSerde, service$1, key, scope) => {
|
|
62
|
+
const makeRpcCallProxy = (genericCall, defaultSerde, service$1, key, scope, handlers$1) => {
|
|
60
63
|
return new Proxy({}, { get: (_target, prop) => {
|
|
61
64
|
const method = prop;
|
|
62
65
|
return (...args) => {
|
|
63
66
|
const { parameter, opts } = optsFromArgs(args);
|
|
64
|
-
const
|
|
65
|
-
const
|
|
67
|
+
const descriptor = handlers$1?.[method];
|
|
68
|
+
const requestSerde = opts?.input ?? descriptor?._inputSerde ?? defaultSerde;
|
|
69
|
+
const responseSerde = opts?.output ?? descriptor?._outputSerde ?? defaultSerde;
|
|
66
70
|
return genericCall({
|
|
67
71
|
service: service$1,
|
|
68
72
|
method,
|
|
@@ -79,12 +83,13 @@ const makeRpcCallProxy = (genericCall, defaultSerde, service$1, key, scope) => {
|
|
|
79
83
|
};
|
|
80
84
|
} });
|
|
81
85
|
};
|
|
82
|
-
const makeRpcSendProxy = (genericSend, defaultSerde, service$1, key, scope) => {
|
|
86
|
+
const makeRpcSendProxy = (genericSend, defaultSerde, service$1, key, scope, handlers$1) => {
|
|
83
87
|
return new Proxy({}, { get: (_target, prop) => {
|
|
84
88
|
const method = prop;
|
|
85
89
|
return (...args) => {
|
|
86
90
|
const { parameter, opts } = optsFromArgs(args);
|
|
87
|
-
const
|
|
91
|
+
const descriptor = handlers$1?.[method];
|
|
92
|
+
const requestSerde = opts?.input ?? descriptor?._inputSerde ?? defaultSerde;
|
|
88
93
|
const delay = opts?.delay;
|
|
89
94
|
return genericSend({
|
|
90
95
|
service: service$1,
|
|
@@ -240,6 +245,23 @@ let handlers;
|
|
|
240
245
|
* @type P the name of the service
|
|
241
246
|
* @type M the handlers for the service
|
|
242
247
|
*/
|
|
248
|
+
/**
|
|
249
|
+
* Build the per-handler serde descriptor map that lets a caller reuse a
|
|
250
|
+
* definition's declared serdes (see `HandlerDescriptor` /
|
|
251
|
+
* `ingress.client(def)`). The serde recorded per handler is its effective one —
|
|
252
|
+
* explicit `input`/`output`, else the handler-level `serde`, else the
|
|
253
|
+
* service-level `serde`; left `undefined` (→ caller default, i.e. JSON) when
|
|
254
|
+
* nothing was declared.
|
|
255
|
+
*/
|
|
256
|
+
const buildHandlerDescriptors = (routes, serviceSerde) => {
|
|
257
|
+
const descriptors = {};
|
|
258
|
+
for (const [name, handler] of Object.entries(routes)) {
|
|
259
|
+
const wrapper = HandlerWrapper.fromHandler(handler);
|
|
260
|
+
const opts = wrapper?.options;
|
|
261
|
+
descriptors[name] = (0, __restatedev_restate_sdk_core.makeHandlerDescriptor)(opts?.input ?? opts?.serde ?? serviceSerde, opts?.output ?? opts?.serde ?? serviceSerde, wrapper?.kind === HandlerKind.SHARED);
|
|
262
|
+
}
|
|
263
|
+
return descriptors;
|
|
264
|
+
};
|
|
243
265
|
const service = (service$1) => {
|
|
244
266
|
if (!service$1.handlers) throw new Error("service must be defined");
|
|
245
267
|
const handlers$1 = Object.entries(service$1.handlers).map(([name, handler]) => {
|
|
@@ -249,13 +271,17 @@ const service = (service$1) => {
|
|
|
249
271
|
}
|
|
250
272
|
throw new TypeError(`Unexpected handler type ${name}`);
|
|
251
273
|
});
|
|
252
|
-
|
|
274
|
+
const routes = Object.fromEntries(handlers$1);
|
|
275
|
+
return Object.assign({
|
|
253
276
|
name: service$1.name,
|
|
254
|
-
service:
|
|
277
|
+
service: routes,
|
|
255
278
|
metadata: service$1.metadata,
|
|
256
279
|
description: service$1.description,
|
|
257
280
|
options: service$1.options
|
|
258
|
-
}
|
|
281
|
+
}, {
|
|
282
|
+
_kind: "service",
|
|
283
|
+
_handlers: buildHandlerDescriptors(routes, service$1.options?.serde)
|
|
284
|
+
});
|
|
259
285
|
};
|
|
260
286
|
/**
|
|
261
287
|
* Define a Restate virtual object.
|
|
@@ -320,13 +346,17 @@ const object = (object$1) => {
|
|
|
320
346
|
}
|
|
321
347
|
throw new TypeError(`Unexpected handler type ${name}`);
|
|
322
348
|
});
|
|
323
|
-
|
|
349
|
+
const routes = Object.fromEntries(handlers$1);
|
|
350
|
+
return Object.assign({
|
|
324
351
|
name: object$1.name,
|
|
325
|
-
object:
|
|
352
|
+
object: routes,
|
|
326
353
|
metadata: object$1.metadata,
|
|
327
354
|
description: object$1.description,
|
|
328
355
|
options: object$1.options
|
|
329
|
-
}
|
|
356
|
+
}, {
|
|
357
|
+
_kind: "object",
|
|
358
|
+
_handlers: buildHandlerDescriptors(routes, object$1.options?.serde)
|
|
359
|
+
});
|
|
330
360
|
};
|
|
331
361
|
/**
|
|
332
362
|
* Define a Restate workflow.
|
|
@@ -386,13 +416,17 @@ const workflow = (workflow$1) => {
|
|
|
386
416
|
if (wrapper.kind === HandlerKind.WORKFLOW) throw new TypeError(`A workflow must contain exactly one handler annotated as workflow, named 'run'. Please use a shared handler for any additional handlers`);
|
|
387
417
|
handlers$1.push([name, wrapper.transpose()]);
|
|
388
418
|
}
|
|
389
|
-
|
|
419
|
+
const routes = Object.fromEntries(handlers$1);
|
|
420
|
+
return Object.assign({
|
|
390
421
|
name: workflow$1.name,
|
|
391
|
-
workflow:
|
|
422
|
+
workflow: routes,
|
|
392
423
|
metadata: workflow$1.metadata,
|
|
393
424
|
description: workflow$1.description,
|
|
394
425
|
options: workflow$1.options
|
|
395
|
-
}
|
|
426
|
+
}, {
|
|
427
|
+
_kind: "workflow",
|
|
428
|
+
_handlers: buildHandlerDescriptors(routes, workflow$1.options?.serde)
|
|
429
|
+
});
|
|
396
430
|
};
|
|
397
431
|
|
|
398
432
|
//#endregion
|
package/dist/types/rpc.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TerminalError } from "./errors.cjs";
|
|
2
2
|
import { HooksProvider } from "../hooks.cjs";
|
|
3
3
|
import { Context, InvocationHandle, InvocationPromise, ObjectContext, ObjectSharedContext, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "../context.cjs";
|
|
4
|
-
import { Duration, ObjectHandler, Serde, ServiceDefinition, ServiceHandler, VirtualObjectDefinition, WorkflowDefinition, WorkflowHandler, WorkflowSharedHandler } from "@restatedev/restate-sdk-core";
|
|
4
|
+
import { Duration, HandlerDescriptor, InferInput, InferOutput, ObjectHandler, Serde, ServiceDefinition, ServiceHandler, VirtualObjectDefinition, WorkflowDefinition, WorkflowHandler, WorkflowSharedHandler } from "@restatedev/restate-sdk-core";
|
|
5
5
|
|
|
6
6
|
//#region src/types/rpc.d.ts
|
|
7
7
|
type ClientCallOptions<I, O$1> = {
|
|
@@ -136,6 +136,18 @@ declare namespace rpc {
|
|
|
136
136
|
type InferArg<P$1> = P$1 extends [infer A, ...any[]] ? A : unknown;
|
|
137
137
|
type Client<M> = { [K in keyof M as M[K] extends never ? never : K]: M[K] extends ((arg: any, ...args: infer P) => PromiseLike<infer O>) ? (...args: [...P, ...[opts?: Opts<InferArg<P>, O>]]) => InvocationPromise<O> : never };
|
|
138
138
|
type SendClient<M> = { [K in keyof M as M[K] extends never ? never : K]: M[K] extends ((arg: any, ...args: infer P) => void) ? (...args: [...P, ...[opts?: SendOpts<InferArg<P>>]]) => InvocationHandle : never };
|
|
139
|
+
/**
|
|
140
|
+
* Typed request/response client derived from a service interface's handler
|
|
141
|
+
* descriptor map `H` (see `iface` in `@restatedev/restate-sdk-core`). Unlike
|
|
142
|
+
* {@link Client}, which recovers the phantom handler-map from a
|
|
143
|
+
* `ServiceDefinition`, this recovers the input/output types directly from the
|
|
144
|
+
* descriptors, so a code-free interface value produces a fully typed client.
|
|
145
|
+
*/
|
|
146
|
+
type ClientFromDescriptors<H extends Record<string, HandlerDescriptor>> = { readonly [K in keyof H]: [InferInput<H[K]>] extends [void] ? (opts?: Opts<InferInput<H[K]>, InferOutput<H[K]>>) => InvocationPromise<InferOutput<H[K]>> : (input: InferInput<H[K]>, opts?: Opts<InferInput<H[K]>, InferOutput<H[K]>>) => InvocationPromise<InferOutput<H[K]>> };
|
|
147
|
+
/**
|
|
148
|
+
* One-way (send) counterpart of {@link ClientFromDescriptors}.
|
|
149
|
+
*/
|
|
150
|
+
type SendClientFromDescriptors<H extends Record<string, HandlerDescriptor>> = { readonly [K in keyof H]: [InferInput<H[K]>] extends [void] ? (opts?: SendOpts<InferInput<H[K]>>) => InvocationHandle : (input: InferInput<H[K]>, opts?: SendOpts<InferInput<H[K]>>) => InvocationHandle };
|
|
139
151
|
type ServiceHandlerOpts<I, O$1> = {
|
|
140
152
|
/**
|
|
141
153
|
* Defines which Content-Type values are accepted when this handler is invoked via the ingress.
|
|
@@ -661,53 +673,6 @@ type ServiceOptions = {
|
|
|
661
673
|
*/
|
|
662
674
|
onJournalMismatchErrors?: "retry" | "pause" | "fail";
|
|
663
675
|
};
|
|
664
|
-
/**
|
|
665
|
-
* Define a Restate service.
|
|
666
|
-
*
|
|
667
|
-
* @example Here is an example of how to define a service:
|
|
668
|
-
*
|
|
669
|
-
* ```ts
|
|
670
|
-
* const greeter = service({
|
|
671
|
-
* name: "greeter",
|
|
672
|
-
* handlers: {
|
|
673
|
-
* greet: async (ctx: Context, name: string) => {
|
|
674
|
-
* return `Hello ${name}`;
|
|
675
|
-
* }
|
|
676
|
-
* }
|
|
677
|
-
* });
|
|
678
|
-
* ```
|
|
679
|
-
*
|
|
680
|
-
* To use the service, you can bind it to an endpoint:
|
|
681
|
-
* ```
|
|
682
|
-
* ...
|
|
683
|
-
* endpoint.bind(greeter)
|
|
684
|
-
* ```
|
|
685
|
-
* @example To use a service, you can export its type to be used in a client:
|
|
686
|
-
* ```
|
|
687
|
-
* export type Greeter = typeof greeter;
|
|
688
|
-
* ...
|
|
689
|
-
* ...
|
|
690
|
-
* import type { Greeter } from "./greeter";
|
|
691
|
-
* const client = ctx.serviceClient<Greeter>({ name : "greeter"});
|
|
692
|
-
* client.greet("World").then(console.log);
|
|
693
|
-
* ```
|
|
694
|
-
*
|
|
695
|
-
* @example Alternatively to avoid repeating the service name, you can:
|
|
696
|
-
* ```
|
|
697
|
-
* import type {Greeter} from "./greeter";
|
|
698
|
-
* const Greeter: Greeter = { name : "greeter"};
|
|
699
|
-
*
|
|
700
|
-
* // now you can reference the service like this:
|
|
701
|
-
* const client = ctx.serviceClient(Greeter);
|
|
702
|
-
* ```
|
|
703
|
-
*
|
|
704
|
-
* @param name the service name
|
|
705
|
-
* @param handlers the handlers for the service
|
|
706
|
-
* @param description an optional description for the service
|
|
707
|
-
* @param metadata an optional metadata for the service
|
|
708
|
-
* @type P the name of the service
|
|
709
|
-
* @type M the handlers for the service
|
|
710
|
-
*/
|
|
711
676
|
declare const service: <P$1 extends string, M>(service: {
|
|
712
677
|
name: P$1;
|
|
713
678
|
handlers: ServiceOpts<M> & ThisType<M>;
|
|
@@ -860,5 +825,5 @@ declare const workflow: <P$1 extends string, M>(workflow: {
|
|
|
860
825
|
options?: WorkflowOptions;
|
|
861
826
|
}) => WorkflowDefinition<P$1, M>;
|
|
862
827
|
//#endregion
|
|
863
|
-
export { Client, ClientCallOptions, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow };
|
|
828
|
+
export { Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendClientFromDescriptors, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow };
|
|
864
829
|
//# sourceMappingURL=rpc.d.cts.map
|
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,7 +1,7 @@
|
|
|
1
1
|
import { TerminalError } from "./errors.js";
|
|
2
2
|
import { HooksProvider } from "../hooks.js";
|
|
3
3
|
import { Context, InvocationHandle, InvocationPromise, ObjectContext, ObjectSharedContext, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "../context.js";
|
|
4
|
-
import { Duration, ObjectHandler, Serde, ServiceDefinition, ServiceHandler, VirtualObjectDefinition, WorkflowDefinition, WorkflowHandler, WorkflowSharedHandler } from "@restatedev/restate-sdk-core";
|
|
4
|
+
import { Duration, HandlerDescriptor, InferInput, InferOutput, ObjectHandler, Serde, ServiceDefinition, ServiceHandler, VirtualObjectDefinition, WorkflowDefinition, WorkflowHandler, WorkflowSharedHandler } from "@restatedev/restate-sdk-core";
|
|
5
5
|
|
|
6
6
|
//#region src/types/rpc.d.ts
|
|
7
7
|
type ClientCallOptions<I, O$1> = {
|
|
@@ -136,6 +136,18 @@ declare namespace rpc {
|
|
|
136
136
|
type InferArg<P$1> = P$1 extends [infer A, ...any[]] ? A : unknown;
|
|
137
137
|
type Client<M> = { [K in keyof M as M[K] extends never ? never : K]: M[K] extends ((arg: any, ...args: infer P) => PromiseLike<infer O>) ? (...args: [...P, ...[opts?: Opts<InferArg<P>, O>]]) => InvocationPromise<O> : never };
|
|
138
138
|
type SendClient<M> = { [K in keyof M as M[K] extends never ? never : K]: M[K] extends ((arg: any, ...args: infer P) => void) ? (...args: [...P, ...[opts?: SendOpts<InferArg<P>>]]) => InvocationHandle : never };
|
|
139
|
+
/**
|
|
140
|
+
* Typed request/response client derived from a service interface's handler
|
|
141
|
+
* descriptor map `H` (see `iface` in `@restatedev/restate-sdk-core`). Unlike
|
|
142
|
+
* {@link Client}, which recovers the phantom handler-map from a
|
|
143
|
+
* `ServiceDefinition`, this recovers the input/output types directly from the
|
|
144
|
+
* descriptors, so a code-free interface value produces a fully typed client.
|
|
145
|
+
*/
|
|
146
|
+
type ClientFromDescriptors<H extends Record<string, HandlerDescriptor>> = { readonly [K in keyof H]: [InferInput<H[K]>] extends [void] ? (opts?: Opts<InferInput<H[K]>, InferOutput<H[K]>>) => InvocationPromise<InferOutput<H[K]>> : (input: InferInput<H[K]>, opts?: Opts<InferInput<H[K]>, InferOutput<H[K]>>) => InvocationPromise<InferOutput<H[K]>> };
|
|
147
|
+
/**
|
|
148
|
+
* One-way (send) counterpart of {@link ClientFromDescriptors}.
|
|
149
|
+
*/
|
|
150
|
+
type SendClientFromDescriptors<H extends Record<string, HandlerDescriptor>> = { readonly [K in keyof H]: [InferInput<H[K]>] extends [void] ? (opts?: SendOpts<InferInput<H[K]>>) => InvocationHandle : (input: InferInput<H[K]>, opts?: SendOpts<InferInput<H[K]>>) => InvocationHandle };
|
|
139
151
|
type ServiceHandlerOpts<I, O$1> = {
|
|
140
152
|
/**
|
|
141
153
|
* Defines which Content-Type values are accepted when this handler is invoked via the ingress.
|
|
@@ -661,53 +673,6 @@ type ServiceOptions = {
|
|
|
661
673
|
*/
|
|
662
674
|
onJournalMismatchErrors?: "retry" | "pause" | "fail";
|
|
663
675
|
};
|
|
664
|
-
/**
|
|
665
|
-
* Define a Restate service.
|
|
666
|
-
*
|
|
667
|
-
* @example Here is an example of how to define a service:
|
|
668
|
-
*
|
|
669
|
-
* ```ts
|
|
670
|
-
* const greeter = service({
|
|
671
|
-
* name: "greeter",
|
|
672
|
-
* handlers: {
|
|
673
|
-
* greet: async (ctx: Context, name: string) => {
|
|
674
|
-
* return `Hello ${name}`;
|
|
675
|
-
* }
|
|
676
|
-
* }
|
|
677
|
-
* });
|
|
678
|
-
* ```
|
|
679
|
-
*
|
|
680
|
-
* To use the service, you can bind it to an endpoint:
|
|
681
|
-
* ```
|
|
682
|
-
* ...
|
|
683
|
-
* endpoint.bind(greeter)
|
|
684
|
-
* ```
|
|
685
|
-
* @example To use a service, you can export its type to be used in a client:
|
|
686
|
-
* ```
|
|
687
|
-
* export type Greeter = typeof greeter;
|
|
688
|
-
* ...
|
|
689
|
-
* ...
|
|
690
|
-
* import type { Greeter } from "./greeter";
|
|
691
|
-
* const client = ctx.serviceClient<Greeter>({ name : "greeter"});
|
|
692
|
-
* client.greet("World").then(console.log);
|
|
693
|
-
* ```
|
|
694
|
-
*
|
|
695
|
-
* @example Alternatively to avoid repeating the service name, you can:
|
|
696
|
-
* ```
|
|
697
|
-
* import type {Greeter} from "./greeter";
|
|
698
|
-
* const Greeter: Greeter = { name : "greeter"};
|
|
699
|
-
*
|
|
700
|
-
* // now you can reference the service like this:
|
|
701
|
-
* const client = ctx.serviceClient(Greeter);
|
|
702
|
-
* ```
|
|
703
|
-
*
|
|
704
|
-
* @param name the service name
|
|
705
|
-
* @param handlers the handlers for the service
|
|
706
|
-
* @param description an optional description for the service
|
|
707
|
-
* @param metadata an optional metadata for the service
|
|
708
|
-
* @type P the name of the service
|
|
709
|
-
* @type M the handlers for the service
|
|
710
|
-
*/
|
|
711
676
|
declare const service: <P$1 extends string, M>(service: {
|
|
712
677
|
name: P$1;
|
|
713
678
|
handlers: ServiceOpts<M> & ThisType<M>;
|
|
@@ -860,5 +825,5 @@ declare const workflow: <P$1 extends string, M>(workflow: {
|
|
|
860
825
|
options?: WorkflowOptions;
|
|
861
826
|
}) => WorkflowDefinition<P$1, M>;
|
|
862
827
|
//#endregion
|
|
863
|
-
export { Client, ClientCallOptions, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow };
|
|
828
|
+
export { Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendClientFromDescriptors, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow };
|
|
864
829
|
//# sourceMappingURL=rpc.d.ts.map
|
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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TerminalError, ensureError } from "./errors.js";
|
|
2
|
+
import { makeHandlerDescriptor } from "@restatedev/restate-sdk-core";
|
|
2
3
|
|
|
3
4
|
//#region src/types/rpc.ts
|
|
4
5
|
var Opts = class Opts {
|
|
@@ -56,13 +57,14 @@ function optsFromArgs(args) {
|
|
|
56
57
|
opts
|
|
57
58
|
};
|
|
58
59
|
}
|
|
59
|
-
const makeRpcCallProxy = (genericCall, defaultSerde, service$1, key, scope) => {
|
|
60
|
+
const makeRpcCallProxy = (genericCall, defaultSerde, service$1, key, scope, handlers$1) => {
|
|
60
61
|
return new Proxy({}, { get: (_target, prop) => {
|
|
61
62
|
const method = prop;
|
|
62
63
|
return (...args) => {
|
|
63
64
|
const { parameter, opts } = optsFromArgs(args);
|
|
64
|
-
const
|
|
65
|
-
const
|
|
65
|
+
const descriptor = handlers$1?.[method];
|
|
66
|
+
const requestSerde = opts?.input ?? descriptor?._inputSerde ?? defaultSerde;
|
|
67
|
+
const responseSerde = opts?.output ?? descriptor?._outputSerde ?? defaultSerde;
|
|
66
68
|
return genericCall({
|
|
67
69
|
service: service$1,
|
|
68
70
|
method,
|
|
@@ -79,12 +81,13 @@ const makeRpcCallProxy = (genericCall, defaultSerde, service$1, key, scope) => {
|
|
|
79
81
|
};
|
|
80
82
|
} });
|
|
81
83
|
};
|
|
82
|
-
const makeRpcSendProxy = (genericSend, defaultSerde, service$1, key, scope) => {
|
|
84
|
+
const makeRpcSendProxy = (genericSend, defaultSerde, service$1, key, scope, handlers$1) => {
|
|
83
85
|
return new Proxy({}, { get: (_target, prop) => {
|
|
84
86
|
const method = prop;
|
|
85
87
|
return (...args) => {
|
|
86
88
|
const { parameter, opts } = optsFromArgs(args);
|
|
87
|
-
const
|
|
89
|
+
const descriptor = handlers$1?.[method];
|
|
90
|
+
const requestSerde = opts?.input ?? descriptor?._inputSerde ?? defaultSerde;
|
|
88
91
|
const delay = opts?.delay;
|
|
89
92
|
return genericSend({
|
|
90
93
|
service: service$1,
|
|
@@ -240,6 +243,23 @@ let handlers;
|
|
|
240
243
|
* @type P the name of the service
|
|
241
244
|
* @type M the handlers for the service
|
|
242
245
|
*/
|
|
246
|
+
/**
|
|
247
|
+
* Build the per-handler serde descriptor map that lets a caller reuse a
|
|
248
|
+
* definition's declared serdes (see `HandlerDescriptor` /
|
|
249
|
+
* `ingress.client(def)`). The serde recorded per handler is its effective one —
|
|
250
|
+
* explicit `input`/`output`, else the handler-level `serde`, else the
|
|
251
|
+
* service-level `serde`; left `undefined` (→ caller default, i.e. JSON) when
|
|
252
|
+
* nothing was declared.
|
|
253
|
+
*/
|
|
254
|
+
const buildHandlerDescriptors = (routes, serviceSerde) => {
|
|
255
|
+
const descriptors = {};
|
|
256
|
+
for (const [name, handler] of Object.entries(routes)) {
|
|
257
|
+
const wrapper = HandlerWrapper.fromHandler(handler);
|
|
258
|
+
const opts = wrapper?.options;
|
|
259
|
+
descriptors[name] = makeHandlerDescriptor(opts?.input ?? opts?.serde ?? serviceSerde, opts?.output ?? opts?.serde ?? serviceSerde, wrapper?.kind === HandlerKind.SHARED);
|
|
260
|
+
}
|
|
261
|
+
return descriptors;
|
|
262
|
+
};
|
|
243
263
|
const service = (service$1) => {
|
|
244
264
|
if (!service$1.handlers) throw new Error("service must be defined");
|
|
245
265
|
const handlers$1 = Object.entries(service$1.handlers).map(([name, handler]) => {
|
|
@@ -249,13 +269,17 @@ const service = (service$1) => {
|
|
|
249
269
|
}
|
|
250
270
|
throw new TypeError(`Unexpected handler type ${name}`);
|
|
251
271
|
});
|
|
252
|
-
|
|
272
|
+
const routes = Object.fromEntries(handlers$1);
|
|
273
|
+
return Object.assign({
|
|
253
274
|
name: service$1.name,
|
|
254
|
-
service:
|
|
275
|
+
service: routes,
|
|
255
276
|
metadata: service$1.metadata,
|
|
256
277
|
description: service$1.description,
|
|
257
278
|
options: service$1.options
|
|
258
|
-
}
|
|
279
|
+
}, {
|
|
280
|
+
_kind: "service",
|
|
281
|
+
_handlers: buildHandlerDescriptors(routes, service$1.options?.serde)
|
|
282
|
+
});
|
|
259
283
|
};
|
|
260
284
|
/**
|
|
261
285
|
* Define a Restate virtual object.
|
|
@@ -320,13 +344,17 @@ const object = (object$1) => {
|
|
|
320
344
|
}
|
|
321
345
|
throw new TypeError(`Unexpected handler type ${name}`);
|
|
322
346
|
});
|
|
323
|
-
|
|
347
|
+
const routes = Object.fromEntries(handlers$1);
|
|
348
|
+
return Object.assign({
|
|
324
349
|
name: object$1.name,
|
|
325
|
-
object:
|
|
350
|
+
object: routes,
|
|
326
351
|
metadata: object$1.metadata,
|
|
327
352
|
description: object$1.description,
|
|
328
353
|
options: object$1.options
|
|
329
|
-
}
|
|
354
|
+
}, {
|
|
355
|
+
_kind: "object",
|
|
356
|
+
_handlers: buildHandlerDescriptors(routes, object$1.options?.serde)
|
|
357
|
+
});
|
|
330
358
|
};
|
|
331
359
|
/**
|
|
332
360
|
* Define a Restate workflow.
|
|
@@ -386,13 +414,17 @@ const workflow = (workflow$1) => {
|
|
|
386
414
|
if (wrapper.kind === HandlerKind.WORKFLOW) throw new TypeError(`A workflow must contain exactly one handler annotated as workflow, named 'run'. Please use a shared handler for any additional handlers`);
|
|
387
415
|
handlers$1.push([name, wrapper.transpose()]);
|
|
388
416
|
}
|
|
389
|
-
|
|
417
|
+
const routes = Object.fromEntries(handlers$1);
|
|
418
|
+
return Object.assign({
|
|
390
419
|
name: workflow$1.name,
|
|
391
|
-
workflow:
|
|
420
|
+
workflow: routes,
|
|
392
421
|
metadata: workflow$1.metadata,
|
|
393
422
|
description: workflow$1.description,
|
|
394
423
|
options: workflow$1.options
|
|
395
|
-
}
|
|
424
|
+
}, {
|
|
425
|
+
_kind: "workflow",
|
|
426
|
+
_handlers: buildHandlerDescriptors(routes, workflow$1.options?.serde)
|
|
427
|
+
});
|
|
396
428
|
};
|
|
397
429
|
|
|
398
430
|
//#endregion
|