@restatedev/restate-sdk-cloudflare-workers 1.17.4 → 1.18.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/common_api.d.cts +1 -1
- package/dist/common_api.d.cts.map +1 -1
- package/dist/common_api.d.ts +1 -1
- package/dist/common_api.d.ts.map +1 -1
- package/dist/common_api.js.map +1 -1
- package/dist/endpoint/components.cjs +28 -6
- package/dist/endpoint/components.js +28 -6
- package/dist/endpoint/components.js.map +1 -1
- package/dist/endpoint/handlers/discovery.cjs +12 -2
- package/dist/endpoint/handlers/discovery.js +12 -2
- package/dist/endpoint/handlers/discovery.js.map +1 -1
- package/dist/endpoint/handlers/vm/sdk_shared_core_wasm_bindings_bg.wasm +0 -0
- package/dist/fetch.d.cts +2 -2
- package/dist/fetch.d.ts +2 -2
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/lambda.d.cts +2 -2
- package/dist/lambda.d.ts +2 -2
- package/dist/node.d.cts +2 -2
- package/dist/node.d.ts +2 -2
- package/dist/package.cjs +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/dist/types/errors.cjs +4 -2
- package/dist/types/errors.d.cts.map +1 -1
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +4 -2
- package/dist/types/errors.js.map +1 -1
- package/dist/types/rpc.d.cts +42 -17
- package/dist/types/rpc.d.cts.map +1 -1
- package/dist/types/rpc.d.ts +42 -17
- package/dist/types/rpc.d.ts.map +1 -1
- package/dist/types/rpc.js.map +1 -1
- package/package.json +3 -3
package/dist/common_api.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CancelledError, PauseError, RestateError, RetryableError, RetryableErrorOptions, TerminalError, TimeoutError } from "./types/errors.cjs";
|
|
2
2
|
import { Hooks, HooksProvider, Interceptor } from "./hooks.cjs";
|
|
3
|
-
import { 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 } from "./types/rpc.cjs";
|
|
3
|
+
import { Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendClientFromDescriptors, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, StatePreload, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow } from "./types/rpc.cjs";
|
|
4
4
|
import { Context, ContextDate, DurablePromise, EntryOptions, GenericCall, GenericSend, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, KeyValueStore, ObjectContext, ObjectSharedContext, Rand, Request, RestatePromise, RunAction, RunOptions, ScopedContext, SignalReference, Target, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "./context.cjs";
|
|
5
5
|
import { LogMetadata, LogSource, LoggerContext, LoggerTransport, RestateLogLevel } from "./logging/logger_transport.cjs";
|
|
6
6
|
import { DefaultServiceOptions, RestateEndpoint, RestateEndpointBase } from "./endpoint.cjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common_api.d.cts","names":[],"sources":["../src/common_api.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;cA6Ca;;;
|
|
1
|
+
{"version":3,"file":"common_api.d.cts","names":[],"sources":["../src/common_api.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;cA6Ca;;;6GA6Iss7B,IAAA,QAAA,EAAA;;;EA7Its7B,UAAA,CAAA,gBAAmC,uBAAA,CAAA,OAAA,CAAA,EAAA,CAAA,CAAA,MAAA,GAAA,CAAA,gBAAA,CAAA,kBAAA,MA6Isq/B,CA7Itq/B,GA6Isq/B,oBA7Itq/B,CA6Isq/B,OA7Itq/B,CA6Isq/B,CA7Itq/B,CA6Isq/B,CA7Itq/B,CAAA,CAAA,CAAA,EAAA,CAAA;;;;;KAKpC,wBAAwB,eAAe;cAgItC,6BAAoB,QAAA,CAAA;cACpB,4BAAmB,QAAA,CAAA,MAAA,CAAA;cACnB,kCAAyB,QAAA,CAAA,MAAA,CAAA;cACzB,8BAAqB,QAAA,CAAA,QAAA,CAAA;cACrB,oCAA2B,QAAA,CAAA,QAAA,CAAA"}
|
package/dist/common_api.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CancelledError, PauseError, RestateError, RetryableError, RetryableErrorOptions, TerminalError, TimeoutError } from "./types/errors.js";
|
|
2
2
|
import { Hooks, HooksProvider, Interceptor } from "./hooks.js";
|
|
3
|
-
import { 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 } from "./types/rpc.js";
|
|
3
|
+
import { Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendClientFromDescriptors, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, StatePreload, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow } from "./types/rpc.js";
|
|
4
4
|
import { Context, ContextDate, DurablePromise, EntryOptions, GenericCall, GenericSend, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, KeyValueStore, ObjectContext, ObjectSharedContext, Rand, Request, RestatePromise, RunAction, RunOptions, ScopedContext, SignalReference, Target, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "./context.js";
|
|
5
5
|
import { LogMetadata, LogSource, LoggerContext, LoggerTransport, RestateLogLevel } from "./logging/logger_transport.js";
|
|
6
6
|
import { DefaultServiceOptions, RestateEndpoint, RestateEndpointBase } from "./endpoint.js";
|
package/dist/common_api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common_api.d.ts","names":[],"sources":["../src/common_api.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;cA6Ca;;;
|
|
1
|
+
{"version":3,"file":"common_api.d.ts","names":[],"sources":["../src/common_api.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;cA6Ca;;;6GA6Iss7B,IAAA,QAAA,EAAA;;;EA7Its7B,UAAA,CAAA,gBAAmC,uBAAA,CAAA,OAAA,CAAA,EAAA,CAAA,CAAA,MAAA,GAAA,CAAA,gBAAA,CAAA,kBAAA,MA6Isq/B,CA7Itq/B,GA6Isq/B,oBA7Itq/B,CA6Isq/B,OA7Itq/B,CA6Isq/B,CA7Itq/B,CA6Isq/B,CA7Itq/B,CAAA,CAAA,CAAA,EAAA,CAAA;;;;;KAKpC,wBAAwB,eAAe;cAgItC,6BAAoB,QAAA,CAAA;cACpB,4BAAmB,QAAA,CAAA,MAAA,CAAA;cACnB,kCAAyB,QAAA,CAAA,MAAA,CAAA;cACzB,8BAAqB,QAAA,CAAA,QAAA,CAAA;cACrB,oCAA2B,QAAA,CAAA,QAAA,CAAA"}
|
package/dist/common_api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common_api.js","names":[],"sources":["../src/common_api.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\nimport { RestatePromise } from \"./context.js\";\n\nexport type {\n Context,\n ObjectContext,\n ObjectSharedContext,\n WorkflowContext,\n WorkflowSharedContext,\n Rand,\n GenericCall,\n GenericSend,\n InvocationId,\n InvocationHandle,\n InvocationPromise,\n TypedState,\n UntypedState,\n ContextDate,\n RunAction,\n RunOptions,\n KeyValueStore,\n EntryOptions,\n DurablePromise,\n Request,\n ScopedContext,\n Target,\n InvocationReference,\n SignalReference,\n} from \"./context.js\";\nexport { InvocationIdParser, RestatePromise } from \"./context.js\";\nexport { isRestatePromise } from \"./promises.js\";\n\n/**\n * @deprecated Use {@link RestatePromise}\n */\nexport const CombineablePromise = RestatePromise;\n\n/**\n * @deprecated Use {@link RestatePromise}\n */\nexport type CombineablePromise<T> = RestatePromise<T>;\n\nexport type {\n Serde,\n RestateContext,\n ServiceDefinitionFrom,\n Service,\n VirtualObjectDefinitionFrom,\n VirtualObject,\n WorkflowDefinitionFrom,\n Workflow,\n RestateObjectContext,\n RestateObjectSharedContext,\n RestateWorkflowSharedContext,\n RestateWorkflowContext,\n ServiceHandler,\n ObjectHandler,\n WorkflowHandler,\n WorkflowSharedHandler,\n Duration,\n JournalValueCodec,\n} from \"@restatedev/restate-sdk-core\";\nexport { serde } from \"@restatedev/restate-sdk-core\";\n\nexport type {\n Client,\n SendClient,\n ClientFromDescriptors,\n SendClientFromDescriptors,\n ClientCallOptions,\n ClientSendOptions,\n RemoveVoidArgument,\n InferArg,\n ServiceHandlerOpts,\n WorkflowHandlerOpts,\n ObjectHandlerOpts,\n ServiceOpts,\n ObjectOpts,\n WorkflowOpts,\n ServiceOptions,\n ObjectOptions,\n WorkflowOptions,\n RetryPolicy,\n} from \"./types/rpc.js\";\nexport {\n service,\n object,\n workflow,\n handlers,\n Opts,\n SendOpts,\n} from \"./types/rpc.js\";\n\nexport { rpc } from \"./types/rpc.js\";\n\nexport type {\n ServiceDefinition,\n VirtualObjectDefinition,\n WorkflowDefinition,\n} from \"@restatedev/restate-sdk-core\";\n\nexport { iface } from \"@restatedev/restate-sdk-core\";\nexport type {\n ServiceInterface,\n DescriptorOpts,\n HandlerDescriptor,\n Descriptor,\n ServiceDescriptor,\n ObjectDescriptor,\n WorkflowDescriptor,\n ImplementedServiceDefinition,\n ImplementedObjectDefinition,\n ImplementedWorkflowDefinition,\n ImplementedDefinition,\n InferInput,\n InferOutput,\n} from \"@restatedev/restate-sdk-core\";\nexport { implement } from \"./types/interface.js\";\nexport type {\n /** @internal */\n FnOf,\n /** @internal */\n ServiceImplHandlers,\n /** @internal */\n ObjectImplHandlers,\n /** @internal */\n WorkflowImplHandlers,\n /** @internal */\n ServicePerHandlerOpts,\n /** @internal */\n ObjectPerHandlerOpts,\n /** @internal */\n WorkflowPerHandlerOpts,\n} from \"./types/interface.js\";\n\nexport type {\n RestateEndpoint,\n RestateEndpointBase,\n DefaultServiceOptions,\n} from \"./endpoint.js\";\n\nexport {\n /**\n * @deprecated YOU MUST NOT USE THIS TYPE\n */\n RestateError,\n TerminalError,\n TimeoutError,\n RetryableError,\n PauseError,\n CancelledError,\n type RetryableErrorOptions,\n} from \"./types/errors.js\";\nexport type {\n LoggerTransport,\n LogMetadata,\n RestateLogLevel,\n LoggerContext,\n LogSource,\n} from \"./logging/logger_transport.js\";\nexport type { EndpointOptions } from \"./endpoint/types.js\";\nexport type { Hooks, HooksProvider, Interceptor } from \"./hooks.js\";\n\n// re-exporting createHandler shortcuts\n\nimport { handlers } from \"./types/rpc.js\";\n\nexport const createServiceHandler = handlers.handler;\nexport const createObjectHandler = handlers.object.exclusive;\nexport const createObjectSharedHandler = handlers.object.shared;\nexport const createWorkflowHandler = handlers.workflow.workflow;\nexport const createWorkflowSharedHandler = handlers.workflow.shared;\n\n// Internal APIs\nexport * as internal from \"./internal.js\";\n"],"mappings":";;;;;;;;;;;;AA6CA,MAAa,qBAAqB;
|
|
1
|
+
{"version":3,"file":"common_api.js","names":[],"sources":["../src/common_api.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\nimport { RestatePromise } from \"./context.js\";\n\nexport type {\n Context,\n ObjectContext,\n ObjectSharedContext,\n WorkflowContext,\n WorkflowSharedContext,\n Rand,\n GenericCall,\n GenericSend,\n InvocationId,\n InvocationHandle,\n InvocationPromise,\n TypedState,\n UntypedState,\n ContextDate,\n RunAction,\n RunOptions,\n KeyValueStore,\n EntryOptions,\n DurablePromise,\n Request,\n ScopedContext,\n Target,\n InvocationReference,\n SignalReference,\n} from \"./context.js\";\nexport { InvocationIdParser, RestatePromise } from \"./context.js\";\nexport { isRestatePromise } from \"./promises.js\";\n\n/**\n * @deprecated Use {@link RestatePromise}\n */\nexport const CombineablePromise = RestatePromise;\n\n/**\n * @deprecated Use {@link RestatePromise}\n */\nexport type CombineablePromise<T> = RestatePromise<T>;\n\nexport type {\n Serde,\n RestateContext,\n ServiceDefinitionFrom,\n Service,\n VirtualObjectDefinitionFrom,\n VirtualObject,\n WorkflowDefinitionFrom,\n Workflow,\n RestateObjectContext,\n RestateObjectSharedContext,\n RestateWorkflowSharedContext,\n RestateWorkflowContext,\n ServiceHandler,\n ObjectHandler,\n WorkflowHandler,\n WorkflowSharedHandler,\n Duration,\n JournalValueCodec,\n} from \"@restatedev/restate-sdk-core\";\nexport { serde } from \"@restatedev/restate-sdk-core\";\n\nexport type {\n Client,\n SendClient,\n ClientFromDescriptors,\n SendClientFromDescriptors,\n ClientCallOptions,\n ClientSendOptions,\n RemoveVoidArgument,\n InferArg,\n ServiceHandlerOpts,\n WorkflowHandlerOpts,\n ObjectHandlerOpts,\n ServiceOpts,\n ObjectOpts,\n WorkflowOpts,\n ServiceOptions,\n ObjectOptions,\n WorkflowOptions,\n StatePreload,\n RetryPolicy,\n} from \"./types/rpc.js\";\nexport {\n service,\n object,\n workflow,\n handlers,\n Opts,\n SendOpts,\n} from \"./types/rpc.js\";\n\nexport { rpc } from \"./types/rpc.js\";\n\nexport type {\n ServiceDefinition,\n VirtualObjectDefinition,\n WorkflowDefinition,\n} from \"@restatedev/restate-sdk-core\";\n\nexport { iface } from \"@restatedev/restate-sdk-core\";\nexport type {\n ServiceInterface,\n DescriptorOpts,\n HandlerDescriptor,\n Descriptor,\n ServiceDescriptor,\n ObjectDescriptor,\n WorkflowDescriptor,\n ImplementedServiceDefinition,\n ImplementedObjectDefinition,\n ImplementedWorkflowDefinition,\n ImplementedDefinition,\n InferInput,\n InferOutput,\n} from \"@restatedev/restate-sdk-core\";\nexport { implement } from \"./types/interface.js\";\nexport type {\n /** @internal */\n FnOf,\n /** @internal */\n ServiceImplHandlers,\n /** @internal */\n ObjectImplHandlers,\n /** @internal */\n WorkflowImplHandlers,\n /** @internal */\n ServicePerHandlerOpts,\n /** @internal */\n ObjectPerHandlerOpts,\n /** @internal */\n WorkflowPerHandlerOpts,\n} from \"./types/interface.js\";\n\nexport type {\n RestateEndpoint,\n RestateEndpointBase,\n DefaultServiceOptions,\n} from \"./endpoint.js\";\n\nexport {\n /**\n * @deprecated YOU MUST NOT USE THIS TYPE\n */\n RestateError,\n TerminalError,\n TimeoutError,\n RetryableError,\n PauseError,\n CancelledError,\n type RetryableErrorOptions,\n} from \"./types/errors.js\";\nexport type {\n LoggerTransport,\n LogMetadata,\n RestateLogLevel,\n LoggerContext,\n LogSource,\n} from \"./logging/logger_transport.js\";\nexport type { EndpointOptions } from \"./endpoint/types.js\";\nexport type { Hooks, HooksProvider, Interceptor } from \"./hooks.js\";\n\n// re-exporting createHandler shortcuts\n\nimport { handlers } from \"./types/rpc.js\";\n\nexport const createServiceHandler = handlers.handler;\nexport const createObjectHandler = handlers.object.exclusive;\nexport const createObjectSharedHandler = handlers.object.shared;\nexport const createWorkflowHandler = handlers.workflow.workflow;\nexport const createWorkflowSharedHandler = handlers.workflow.shared;\n\n// Internal APIs\nexport * as internal from \"./internal.js\";\n"],"mappings":";;;;;;;;;;;;AA6CA,MAAa,qBAAqB;AAqIlC,MAAa,uBAAuB,SAAS;AAC7C,MAAa,sBAAsB,SAAS,OAAO;AACnD,MAAa,4BAA4B,SAAS,OAAO;AACzD,MAAa,wBAAwB,SAAS,SAAS;AACvD,MAAa,8BAA8B,SAAS,SAAS"}
|
|
@@ -116,7 +116,7 @@ var ServiceComponent = class {
|
|
|
116
116
|
handlers,
|
|
117
117
|
documentation: this.description,
|
|
118
118
|
metadata: mergeMetadata(this.metadata, this.serdeRegistry.previewMetadata()),
|
|
119
|
-
...commonServiceOptions(this.options)
|
|
119
|
+
...commonServiceOptions(this.options, false)
|
|
120
120
|
};
|
|
121
121
|
}
|
|
122
122
|
handlerMatching(url) {
|
|
@@ -178,7 +178,7 @@ var VirtualObjectComponent = class {
|
|
|
178
178
|
handlers,
|
|
179
179
|
documentation: this.description,
|
|
180
180
|
metadata: mergeMetadata(this.metadata, this.serdeRegistry.previewMetadata()),
|
|
181
|
-
...commonServiceOptions(this.options)
|
|
181
|
+
...commonServiceOptions(this.options, true)
|
|
182
182
|
};
|
|
183
183
|
}
|
|
184
184
|
handlerMatching(url) {
|
|
@@ -241,7 +241,7 @@ var WorkflowComponent = class {
|
|
|
241
241
|
handlers,
|
|
242
242
|
documentation: this.description,
|
|
243
243
|
metadata: mergeMetadata(this.metadata, this.serdeRegistry.previewMetadata()),
|
|
244
|
-
...commonServiceOptions(this.options)
|
|
244
|
+
...commonServiceOptions(this.options, true)
|
|
245
245
|
};
|
|
246
246
|
}
|
|
247
247
|
handlerMatching(url) {
|
|
@@ -298,14 +298,34 @@ function parseUrlComponents(urlPath) {
|
|
|
298
298
|
path: urlPath
|
|
299
299
|
};
|
|
300
300
|
}
|
|
301
|
-
function
|
|
301
|
+
function resolveStatePreload(options) {
|
|
302
|
+
const state = options !== void 0 && "state" in options ? options.state : void 0;
|
|
303
|
+
const legacyEnableLazyState = options !== void 0 && "enableLazyState" in options ? options.enableLazyState : void 0;
|
|
304
|
+
if (state !== void 0 && legacyEnableLazyState !== void 0) throw new Error("Cannot set both the 'state' option and the deprecated 'enableLazyState' option at the same time. Use only 'state'.");
|
|
305
|
+
if (state === void 0) return {
|
|
306
|
+
enableLazyState: legacyEnableLazyState,
|
|
307
|
+
eagerStateKeysWhitelist: void 0
|
|
308
|
+
};
|
|
309
|
+
const preload = state.preload;
|
|
310
|
+
if (typeof preload === "boolean") return {
|
|
311
|
+
enableLazyState: !preload,
|
|
312
|
+
eagerStateKeysWhitelist: void 0
|
|
313
|
+
};
|
|
314
|
+
return {
|
|
315
|
+
enableLazyState: true,
|
|
316
|
+
eagerStateKeysWhitelist: preload.length > 0 ? [...preload] : void 0
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
function commonServiceOptions(options, stateful) {
|
|
320
|
+
const statePreload = stateful ? resolveStatePreload(options) : {};
|
|
302
321
|
return {
|
|
303
322
|
journalRetention: options?.journalRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.journalRetention) : void 0,
|
|
304
323
|
idempotencyRetention: options?.idempotencyRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.idempotencyRetention) : void 0,
|
|
305
324
|
inactivityTimeout: options?.inactivityTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.inactivityTimeout) : void 0,
|
|
306
325
|
abortTimeout: options?.abortTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.abortTimeout) : void 0,
|
|
307
326
|
ingressPrivate: options?.ingressPrivate,
|
|
308
|
-
enableLazyState:
|
|
327
|
+
enableLazyState: statePreload.enableLazyState,
|
|
328
|
+
eagerStateKeysWhitelist: statePreload.eagerStateKeysWhitelist,
|
|
309
329
|
retryPolicyExponentiationFactor: options?.retryPolicy?.exponentiationFactor,
|
|
310
330
|
retryPolicyInitialInterval: options?.retryPolicy?.initialInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options?.retryPolicy?.initialInterval) : void 0,
|
|
311
331
|
retryPolicyMaxInterval: options?.retryPolicy?.maxInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options?.retryPolicy?.maxInterval) : void 0,
|
|
@@ -314,6 +334,7 @@ function commonServiceOptions(options) {
|
|
|
314
334
|
};
|
|
315
335
|
}
|
|
316
336
|
function commonHandlerOptions(wrapper, defaultSerde) {
|
|
337
|
+
const statePreload = resolveStatePreload(wrapper.options);
|
|
317
338
|
return {
|
|
318
339
|
input: handlerInputDiscovery(wrapper, defaultSerde),
|
|
319
340
|
output: handlerOutputDiscovery(wrapper, defaultSerde),
|
|
@@ -322,7 +343,8 @@ function commonHandlerOptions(wrapper, defaultSerde) {
|
|
|
322
343
|
inactivityTimeout: wrapper.options?.inactivityTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.options?.inactivityTimeout) : void 0,
|
|
323
344
|
abortTimeout: wrapper.options?.abortTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.options?.abortTimeout) : void 0,
|
|
324
345
|
ingressPrivate: wrapper.options?.ingressPrivate,
|
|
325
|
-
enableLazyState:
|
|
346
|
+
enableLazyState: statePreload.enableLazyState,
|
|
347
|
+
eagerStateKeysWhitelist: statePreload.eagerStateKeysWhitelist,
|
|
326
348
|
retryPolicyExponentiationFactor: wrapper.options?.retryPolicy?.exponentiationFactor,
|
|
327
349
|
retryPolicyInitialInterval: wrapper.options?.retryPolicy?.initialInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.options?.retryPolicy?.initialInterval) : void 0,
|
|
328
350
|
retryPolicyMaxInterval: wrapper.options?.retryPolicy?.maxInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.options?.retryPolicy?.maxInterval) : void 0,
|
|
@@ -114,7 +114,7 @@ var ServiceComponent = class {
|
|
|
114
114
|
handlers,
|
|
115
115
|
documentation: this.description,
|
|
116
116
|
metadata: mergeMetadata(this.metadata, this.serdeRegistry.previewMetadata()),
|
|
117
|
-
...commonServiceOptions(this.options)
|
|
117
|
+
...commonServiceOptions(this.options, false)
|
|
118
118
|
};
|
|
119
119
|
}
|
|
120
120
|
handlerMatching(url) {
|
|
@@ -176,7 +176,7 @@ var VirtualObjectComponent = class {
|
|
|
176
176
|
handlers,
|
|
177
177
|
documentation: this.description,
|
|
178
178
|
metadata: mergeMetadata(this.metadata, this.serdeRegistry.previewMetadata()),
|
|
179
|
-
...commonServiceOptions(this.options)
|
|
179
|
+
...commonServiceOptions(this.options, true)
|
|
180
180
|
};
|
|
181
181
|
}
|
|
182
182
|
handlerMatching(url) {
|
|
@@ -239,7 +239,7 @@ var WorkflowComponent = class {
|
|
|
239
239
|
handlers,
|
|
240
240
|
documentation: this.description,
|
|
241
241
|
metadata: mergeMetadata(this.metadata, this.serdeRegistry.previewMetadata()),
|
|
242
|
-
...commonServiceOptions(this.options)
|
|
242
|
+
...commonServiceOptions(this.options, true)
|
|
243
243
|
};
|
|
244
244
|
}
|
|
245
245
|
handlerMatching(url) {
|
|
@@ -296,14 +296,34 @@ function parseUrlComponents(urlPath) {
|
|
|
296
296
|
path: urlPath
|
|
297
297
|
};
|
|
298
298
|
}
|
|
299
|
-
function
|
|
299
|
+
function resolveStatePreload(options) {
|
|
300
|
+
const state = options !== void 0 && "state" in options ? options.state : void 0;
|
|
301
|
+
const legacyEnableLazyState = options !== void 0 && "enableLazyState" in options ? options.enableLazyState : void 0;
|
|
302
|
+
if (state !== void 0 && legacyEnableLazyState !== void 0) throw new Error("Cannot set both the 'state' option and the deprecated 'enableLazyState' option at the same time. Use only 'state'.");
|
|
303
|
+
if (state === void 0) return {
|
|
304
|
+
enableLazyState: legacyEnableLazyState,
|
|
305
|
+
eagerStateKeysWhitelist: void 0
|
|
306
|
+
};
|
|
307
|
+
const preload = state.preload;
|
|
308
|
+
if (typeof preload === "boolean") return {
|
|
309
|
+
enableLazyState: !preload,
|
|
310
|
+
eagerStateKeysWhitelist: void 0
|
|
311
|
+
};
|
|
312
|
+
return {
|
|
313
|
+
enableLazyState: true,
|
|
314
|
+
eagerStateKeysWhitelist: preload.length > 0 ? [...preload] : void 0
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
function commonServiceOptions(options, stateful) {
|
|
318
|
+
const statePreload = stateful ? resolveStatePreload(options) : {};
|
|
300
319
|
return {
|
|
301
320
|
journalRetention: options?.journalRetention !== void 0 ? millisOrDurationToMillis(options.journalRetention) : void 0,
|
|
302
321
|
idempotencyRetention: options?.idempotencyRetention !== void 0 ? millisOrDurationToMillis(options.idempotencyRetention) : void 0,
|
|
303
322
|
inactivityTimeout: options?.inactivityTimeout !== void 0 ? millisOrDurationToMillis(options.inactivityTimeout) : void 0,
|
|
304
323
|
abortTimeout: options?.abortTimeout !== void 0 ? millisOrDurationToMillis(options.abortTimeout) : void 0,
|
|
305
324
|
ingressPrivate: options?.ingressPrivate,
|
|
306
|
-
enableLazyState:
|
|
325
|
+
enableLazyState: statePreload.enableLazyState,
|
|
326
|
+
eagerStateKeysWhitelist: statePreload.eagerStateKeysWhitelist,
|
|
307
327
|
retryPolicyExponentiationFactor: options?.retryPolicy?.exponentiationFactor,
|
|
308
328
|
retryPolicyInitialInterval: options?.retryPolicy?.initialInterval !== void 0 ? millisOrDurationToMillis(options?.retryPolicy?.initialInterval) : void 0,
|
|
309
329
|
retryPolicyMaxInterval: options?.retryPolicy?.maxInterval !== void 0 ? millisOrDurationToMillis(options?.retryPolicy?.maxInterval) : void 0,
|
|
@@ -312,6 +332,7 @@ function commonServiceOptions(options) {
|
|
|
312
332
|
};
|
|
313
333
|
}
|
|
314
334
|
function commonHandlerOptions(wrapper, defaultSerde) {
|
|
335
|
+
const statePreload = resolveStatePreload(wrapper.options);
|
|
315
336
|
return {
|
|
316
337
|
input: handlerInputDiscovery(wrapper, defaultSerde),
|
|
317
338
|
output: handlerOutputDiscovery(wrapper, defaultSerde),
|
|
@@ -320,7 +341,8 @@ function commonHandlerOptions(wrapper, defaultSerde) {
|
|
|
320
341
|
inactivityTimeout: wrapper.options?.inactivityTimeout !== void 0 ? millisOrDurationToMillis(wrapper.options?.inactivityTimeout) : void 0,
|
|
321
342
|
abortTimeout: wrapper.options?.abortTimeout !== void 0 ? millisOrDurationToMillis(wrapper.options?.abortTimeout) : void 0,
|
|
322
343
|
ingressPrivate: wrapper.options?.ingressPrivate,
|
|
323
|
-
enableLazyState:
|
|
344
|
+
enableLazyState: statePreload.enableLazyState,
|
|
345
|
+
eagerStateKeysWhitelist: statePreload.eagerStateKeysWhitelist,
|
|
324
346
|
retryPolicyExponentiationFactor: wrapper.options?.retryPolicy?.exponentiationFactor,
|
|
325
347
|
retryPolicyInitialInterval: wrapper.options?.retryPolicy?.initialInterval !== void 0 ? millisOrDurationToMillis(wrapper.options?.retryPolicy?.initialInterval) : void 0,
|
|
326
348
|
retryPolicyMaxInterval: wrapper.options?.retryPolicy?.maxInterval !== void 0 ? millisOrDurationToMillis(wrapper.options?.retryPolicy?.maxInterval) : void 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","names":["serde","metadata: Record<string, string>","componentName: string","description?: string","metadata?: Record<string, string>","options?: ServiceOptions","ServiceHandler","handlers: d.Handler[]","handlerName: string","handlerWrapper: HandlerWrapper","parent: ServiceComponent","options?: ObjectOptions","parent: VirtualObjectComponent","options?: WorkflowOptions","WorkflowHandler","parent: WorkflowComponent"],"sources":["../../src/endpoint/components.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type * as d from \"./discovery.js\";\nimport type { ContextImpl } from \"../context_impl.js\";\nimport type {\n HandlerWrapper,\n ObjectOptions,\n ServiceHandlerOpts,\n ServiceOptions,\n WorkflowOptions,\n} from \"../types/rpc.js\";\nimport { HandlerKind } from \"../types/rpc.js\";\nimport type { Serde } from \"@restatedev/restate-sdk-core\";\nimport { millisOrDurationToMillis, serde } from \"@restatedev/restate-sdk-core\";\nimport type { HooksProvider } from \"../hooks.js\";\nimport type { TerminalError } from \"../types/errors.js\";\n\n//\n// Interfaces\n//\nexport interface Component {\n name(): string;\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined;\n serdeMatching(name: string): Serde<any> | undefined;\n discovery(): d.Service;\n}\n\n/**\n * Execution-related options\n */\nexport interface ExecutionOptions {\n asTerminalError?: (error: any) => TerminalError | undefined;\n /**\n * Default serde to use for requests, responses, state, side effects, awakeables, promises. Used when no other serde is specified.\n */\n defaultSerde: Serde<any>;\n hooks?: HooksProvider[];\n explicitCancellation?: boolean;\n onJournalMismatchErrors?: \"retry\" | \"pause\" | \"fail\";\n explicitRecovery?: boolean;\n}\n\n/**\n * Key of the option set by `restate.internal.explicitRecovery()`: a symbol, to\n * keep it out of the service and handler option types.\n */\nexport const EXPLICIT_RECOVERY = Symbol(\"ExplicitRecovery\");\n\nfunction explicitRecoveryOf(options?: object): boolean | undefined {\n return (options as { [EXPLICIT_RECOVERY]?: boolean } | undefined)?.[\n EXPLICIT_RECOVERY\n ];\n}\n\nexport interface ComponentHandler {\n name(): string;\n component(): Component;\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array>;\n kind(): HandlerKind;\n\n /**\n * Returns the execution options, already merged with different layers (endpoint -> service -> handler)\n */\n executionOptions: ExecutionOptions;\n}\n\n//\n// Service\n//\n\nfunction handlerInputDiscovery(\n handler: HandlerWrapper,\n defaultSerde: Serde<any>\n): d.InputPayload {\n const serde = handler.options?.input ?? defaultSerde;\n\n let contentType = undefined;\n let jsonSchema = undefined;\n\n if (serde.jsonSchema) {\n jsonSchema = serde.jsonSchema;\n contentType = handler.options?.accept ?? serde.contentType;\n } else if (handler.options?.accept) {\n contentType = handler.options?.accept;\n } else if (serde.contentType) {\n contentType = serde.contentType;\n } else {\n // no input information\n return {};\n }\n\n return {\n required: false,\n contentType,\n jsonSchema,\n };\n}\n\nfunction handlerOutputDiscovery(\n handler: HandlerWrapper,\n defaultSerde: Serde<any>\n): d.OutputPayload {\n const serde = handler.options?.output ?? defaultSerde;\n const setContentTypeIfEmpty =\n handler.options?.setOutputContentTypeIfEmpty ?? false;\n\n let contentType = undefined;\n let jsonSchema = undefined;\n\n if (serde.jsonSchema) {\n jsonSchema = serde.jsonSchema;\n contentType = serde.contentType ?? \"application/json\";\n } else if (serde.contentType) {\n contentType = serde.contentType;\n } else {\n // no input information\n return { setContentTypeIfEmpty };\n }\n\n return {\n setContentTypeIfEmpty,\n jsonSchema,\n contentType,\n };\n}\n\nfunction createExecutionOptions(\n serviceOptions?: ServiceOptions,\n handlerOptions?: ServiceHandlerOpts<unknown, unknown>\n): ExecutionOptions {\n const defaultSerde =\n handlerOptions?.serde ?? serviceOptions?.serde ?? serde.json;\n\n // Service-level hooks run outermost, handler-level hooks run innermost.\n // Both are merged into a single list: service hooks first, then handler hooks.\n const hooks = [\n ...(serviceOptions?.hooks ?? []),\n ...(handlerOptions?.hooks ?? []),\n ];\n return {\n defaultSerde,\n asTerminalError:\n handlerOptions?.asTerminalError ?? serviceOptions?.asTerminalError,\n hooks: hooks.length > 0 ? hooks : undefined,\n explicitCancellation:\n handlerOptions?.explicitCancellation ??\n serviceOptions?.explicitCancellation,\n onJournalMismatchErrors:\n handlerOptions?.onJournalMismatchErrors ??\n serviceOptions?.onJournalMismatchErrors,\n explicitRecovery:\n explicitRecoveryOf(handlerOptions) ?? explicitRecoveryOf(serviceOptions),\n };\n}\n\nconst PREVIEW_METADATA_KEY_PREFIX = \"dev.restate.serde.preview\";\n\n/**\n * Service-scoped serde namespace.\n *\n * Today it is populated from handler inputs/outputs under `<handler>/input`\n * and `<handler>/output`. Custom service-level serdes can be registered\n * alongside them under any name.\n */\nclass ServiceSerdeRegistry {\n private readonly serdes = new Map<string, Serde<unknown>>();\n\n registerHandlerIO(\n handlerName: string,\n wrapper: HandlerWrapper,\n executionOptions: ExecutionOptions\n ): void {\n this.serdes.set(\n `${handlerName}/input`,\n wrapper.options?.input ?? executionOptions.defaultSerde\n );\n this.serdes.set(\n `${handlerName}/output`,\n wrapper.options?.output ?? executionOptions.defaultSerde\n );\n }\n\n resolve(name: string): Serde<unknown> | undefined {\n return this.serdes.get(name);\n }\n\n previewMetadata(): Record<string, string> | undefined {\n const metadata: Record<string, string> = {};\n for (const [name, s] of this.serdes) {\n if (s.preview) {\n metadata[`${PREVIEW_METADATA_KEY_PREFIX}.${name}`] = \"true\";\n }\n }\n return Object.keys(metadata).length > 0 ? metadata : undefined;\n }\n}\n\nfunction mergeMetadata(\n baseMetadata?: Record<string, string>,\n additionalMetadata?: Record<string, string>\n): Record<string, string> | undefined {\n if (!baseMetadata && !additionalMetadata) {\n return undefined;\n }\n\n return {\n ...(baseMetadata ?? {}),\n ...(additionalMetadata ?? {}),\n };\n}\n\nexport class ServiceComponent implements Component {\n private readonly handlers: Map<string, ServiceHandler> = new Map();\n private readonly serdeRegistry = new ServiceSerdeRegistry();\n\n constructor(\n private readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: ServiceOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, handlerWrapper: HandlerWrapper) {\n const handler = new ServiceHandler(name, handlerWrapper, this);\n this.handlers.set(name, handler);\n this.serdeRegistry.registerHandlerIO(\n name,\n handlerWrapper,\n handler.executionOptions\n );\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ...commonHandlerOptions(\n handler.handlerWrapper,\n handler.executionOptions.defaultSerde\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"SERVICE\",\n handlers,\n documentation: this.description,\n metadata: mergeMetadata(\n this.metadata,\n this.serdeRegistry.previewMetadata()\n ),\n ...commonServiceOptions(this.options),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n\n serdeMatching(name: string): Serde<any> | undefined {\n return this.serdeRegistry.resolve(name);\n }\n}\n\nexport class ServiceHandler implements ComponentHandler {\n readonly executionOptions: ExecutionOptions;\n\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: ServiceComponent\n ) {\n this.executionOptions = createExecutionOptions(\n this.parent.options,\n handlerWrapper.options\n );\n }\n\n name(): string {\n return this.handlerName;\n }\n\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\n//\n// Virtual Object\n//\n\nexport class VirtualObjectComponent implements Component {\n private readonly handlers: Map<string, VirtualObjectHandler> = new Map();\n private readonly serdeRegistry = new ServiceSerdeRegistry();\n\n constructor(\n public readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: ObjectOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, wrapper: HandlerWrapper) {\n const handler = new VirtualObjectHandler(name, wrapper, this);\n this.handlers.set(name, handler);\n this.serdeRegistry.registerHandlerIO(\n name,\n wrapper,\n handler.executionOptions\n );\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ty: handler.kind() === HandlerKind.EXCLUSIVE ? \"EXCLUSIVE\" : \"SHARED\",\n ...commonHandlerOptions(\n handler.handlerWrapper,\n handler.executionOptions.defaultSerde\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"VIRTUAL_OBJECT\",\n handlers,\n documentation: this.description,\n metadata: mergeMetadata(\n this.metadata,\n this.serdeRegistry.previewMetadata()\n ),\n ...commonServiceOptions(this.options),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n\n serdeMatching(name: string): Serde<any> | undefined {\n return this.serdeRegistry.resolve(name);\n }\n}\n\nexport class VirtualObjectHandler implements ComponentHandler {\n readonly executionOptions: ExecutionOptions;\n\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: VirtualObjectComponent\n ) {\n this.executionOptions = createExecutionOptions(\n this.parent.options,\n handlerWrapper.options\n );\n }\n\n name(): string {\n return this.handlerName;\n }\n\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\n// Workflow\n\nexport class WorkflowComponent implements Component {\n private readonly handlers: Map<string, WorkflowHandler> = new Map();\n private readonly serdeRegistry = new ServiceSerdeRegistry();\n\n constructor(\n public readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: WorkflowOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, wrapper: HandlerWrapper) {\n const handler = new WorkflowHandler(name, wrapper, this);\n this.handlers.set(name, handler);\n this.serdeRegistry.registerHandlerIO(\n name,\n wrapper,\n handler.executionOptions\n );\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ty: handler.kind() === HandlerKind.WORKFLOW ? \"WORKFLOW\" : \"SHARED\",\n workflowCompletionRetention:\n handler.kind() === HandlerKind.WORKFLOW &&\n this.options?.workflowRetention !== undefined\n ? millisOrDurationToMillis(this.options?.workflowRetention)\n : undefined,\n ...commonHandlerOptions(\n handler.handlerWrapper,\n handler.executionOptions.defaultSerde\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"WORKFLOW\",\n handlers,\n documentation: this.description,\n metadata: mergeMetadata(\n this.metadata,\n this.serdeRegistry.previewMetadata()\n ),\n ...commonServiceOptions(this.options),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n\n serdeMatching(name: string): Serde<any> | undefined {\n return this.serdeRegistry.resolve(name);\n }\n}\n\nexport class WorkflowHandler implements ComponentHandler {\n readonly executionOptions: ExecutionOptions;\n\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: WorkflowComponent\n ) {\n this.executionOptions = createExecutionOptions(\n this.parent.options,\n handlerWrapper.options\n );\n }\n\n name(): string {\n return this.handlerName;\n }\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\nexport type PathComponents =\n | InvokePathComponents\n | PreviewPathComponents\n | { type: \"discover\" }\n | { type: \"health\" }\n | { type: \"unknown\"; path: string };\n\nexport type InvokePathComponents = {\n type: \"invoke\";\n componentName: string;\n handlerName: string;\n};\n\nexport type PreviewPathComponents = {\n type: \"preview\";\n componentName: string;\n operation: \"decode\" | \"encode\";\n serdeName: string;\n};\n\n// Preview uses a regex so that `serdeName` can span multiple path segments\n// (built-ins are shaped as `<handler>/(input|output)`). The regex is anchored\n// with `(?:^|\\/)` so deployments mounted under a sub-path also work.\nconst PREVIEW_PATH_REGEX =\n /(?:^|\\/)serdes\\/(?<componentName>[^/]+)\\/(?<operation>encode|decode)\\/(?<serdeName>.+?)\\/?$/;\n\nexport function parseUrlComponents(urlPath?: string): PathComponents {\n if (!urlPath) {\n return { type: \"unknown\", path: \"\" };\n }\n\n const preview = PREVIEW_PATH_REGEX.exec(urlPath);\n if (preview?.groups) {\n return {\n type: \"preview\",\n componentName: preview.groups.componentName!,\n operation: preview.groups.operation as \"decode\" | \"encode\",\n serdeName: decodeURIComponent(preview.groups.serdeName!),\n };\n }\n\n const fragments = urlPath.split(\"/\");\n if (fragments.length >= 3 && fragments[fragments.length - 3] === \"invoke\") {\n return {\n type: \"invoke\",\n componentName: fragments[fragments.length - 2]!,\n handlerName: fragments[fragments.length - 1]!,\n };\n }\n if (fragments.length > 0 && fragments[fragments.length - 1] === \"discover\") {\n return { type: \"discover\" };\n }\n if (fragments.length > 0 && fragments[fragments.length - 1] === \"health\") {\n return { type: \"health\" };\n }\n return { type: \"unknown\", path: urlPath };\n}\n\nfunction commonServiceOptions(\n options?: ServiceOptions | ObjectOptions | WorkflowOptions\n): Partial<d.Service> {\n return {\n journalRetention:\n options?.journalRetention !== undefined\n ? millisOrDurationToMillis(options.journalRetention)\n : undefined,\n idempotencyRetention:\n options?.idempotencyRetention !== undefined\n ? millisOrDurationToMillis(options.idempotencyRetention)\n : undefined,\n inactivityTimeout:\n options?.inactivityTimeout !== undefined\n ? millisOrDurationToMillis(options.inactivityTimeout)\n : undefined,\n abortTimeout:\n options?.abortTimeout !== undefined\n ? millisOrDurationToMillis(options.abortTimeout)\n : undefined,\n ingressPrivate: options?.ingressPrivate,\n enableLazyState:\n options !== undefined && \"enableLazyState\" in options\n ? options.enableLazyState\n : undefined,\n retryPolicyExponentiationFactor: options?.retryPolicy?.exponentiationFactor,\n retryPolicyInitialInterval:\n options?.retryPolicy?.initialInterval !== undefined\n ? millisOrDurationToMillis(options?.retryPolicy?.initialInterval)\n : undefined,\n retryPolicyMaxInterval:\n options?.retryPolicy?.maxInterval !== undefined\n ? millisOrDurationToMillis(options?.retryPolicy?.maxInterval)\n : undefined,\n retryPolicyMaxAttempts: options?.retryPolicy?.maxAttempts,\n retryPolicyOnMaxAttempts: (options?.retryPolicy?.onMaxAttempts === \"kill\"\n ? \"KILL\"\n : options?.retryPolicy?.onMaxAttempts === \"pause\"\n ? \"PAUSE\"\n : undefined) as d.RetryPolicyOnMaxAttempts,\n };\n}\n\nfunction commonHandlerOptions(\n wrapper: HandlerWrapper,\n defaultSerde: Serde<any>\n) {\n return {\n input: handlerInputDiscovery(wrapper, defaultSerde),\n output: handlerOutputDiscovery(wrapper, defaultSerde),\n journalRetention:\n wrapper.options?.journalRetention !== undefined\n ? millisOrDurationToMillis(wrapper.options?.journalRetention)\n : undefined,\n idempotencyRetention:\n wrapper.options?.idempotencyRetention !== undefined\n ? millisOrDurationToMillis(wrapper.options?.idempotencyRetention)\n : undefined,\n inactivityTimeout:\n wrapper.options?.inactivityTimeout !== undefined\n ? millisOrDurationToMillis(wrapper.options?.inactivityTimeout)\n : undefined,\n abortTimeout:\n wrapper.options?.abortTimeout !== undefined\n ? millisOrDurationToMillis(wrapper.options?.abortTimeout)\n : undefined,\n ingressPrivate: wrapper.options?.ingressPrivate,\n enableLazyState:\n wrapper.options !== undefined && \"enableLazyState\" in wrapper.options\n ? wrapper.options?.enableLazyState\n : undefined,\n retryPolicyExponentiationFactor:\n wrapper.options?.retryPolicy?.exponentiationFactor,\n retryPolicyInitialInterval:\n wrapper.options?.retryPolicy?.initialInterval !== undefined\n ? millisOrDurationToMillis(\n wrapper.options?.retryPolicy?.initialInterval\n )\n : undefined,\n retryPolicyMaxInterval:\n wrapper.options?.retryPolicy?.maxInterval !== undefined\n ? millisOrDurationToMillis(wrapper.options?.retryPolicy?.maxInterval)\n : undefined,\n retryPolicyMaxAttempts: wrapper.options?.retryPolicy?.maxAttempts,\n retryPolicyOnMaxAttempts: (wrapper.options?.retryPolicy?.onMaxAttempts ===\n \"kill\"\n ? \"KILL\"\n : wrapper.options?.retryPolicy?.onMaxAttempts === \"pause\"\n ? \"PAUSE\"\n : undefined) as d.RetryPolicyOnMaxAttempts1,\n\n documentation: wrapper.options?.description,\n metadata: wrapper.options?.metadata,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components.js","names":["serde","metadata: Record<string, string>","componentName: string","description?: string","metadata?: Record<string, string>","options?: ServiceOptions","ServiceHandler","handlers: d.Handler[]","handlerName: string","handlerWrapper: HandlerWrapper","parent: ServiceComponent","options?: ObjectOptions","parent: VirtualObjectComponent","options?: WorkflowOptions","WorkflowHandler","parent: WorkflowComponent"],"sources":["../../src/endpoint/components.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type * as d from \"./discovery.js\";\nimport type { ContextImpl } from \"../context_impl.js\";\nimport type {\n HandlerWrapper,\n ObjectHandlerOpts,\n ObjectOptions,\n ServiceHandlerOpts,\n ServiceOptions,\n WorkflowHandlerOpts,\n WorkflowOptions,\n} from \"../types/rpc.js\";\nimport { HandlerKind } from \"../types/rpc.js\";\nimport type { Serde } from \"@restatedev/restate-sdk-core\";\nimport { millisOrDurationToMillis, serde } from \"@restatedev/restate-sdk-core\";\nimport type { HooksProvider } from \"../hooks.js\";\nimport type { TerminalError } from \"../types/errors.js\";\n\n//\n// Interfaces\n//\nexport interface Component {\n name(): string;\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined;\n serdeMatching(name: string): Serde<any> | undefined;\n discovery(): d.Service;\n}\n\n/**\n * Execution-related options\n */\nexport interface ExecutionOptions {\n asTerminalError?: (error: any) => TerminalError | undefined;\n /**\n * Default serde to use for requests, responses, state, side effects, awakeables, promises. Used when no other serde is specified.\n */\n defaultSerde: Serde<any>;\n hooks?: HooksProvider[];\n explicitCancellation?: boolean;\n onJournalMismatchErrors?: \"retry\" | \"pause\" | \"fail\";\n explicitRecovery?: boolean;\n}\n\n/**\n * Key of the option set by `restate.internal.explicitRecovery()`: a symbol, to\n * keep it out of the service and handler option types.\n */\nexport const EXPLICIT_RECOVERY = Symbol(\"ExplicitRecovery\");\n\nfunction explicitRecoveryOf(options?: object): boolean | undefined {\n return (options as { [EXPLICIT_RECOVERY]?: boolean } | undefined)?.[\n EXPLICIT_RECOVERY\n ];\n}\n\nexport interface ComponentHandler {\n name(): string;\n component(): Component;\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array>;\n kind(): HandlerKind;\n\n /**\n * Returns the execution options, already merged with different layers (endpoint -> service -> handler)\n */\n executionOptions: ExecutionOptions;\n}\n\n//\n// Service\n//\n\nfunction handlerInputDiscovery(\n handler: HandlerWrapper,\n defaultSerde: Serde<any>\n): d.InputPayload {\n const serde = handler.options?.input ?? defaultSerde;\n\n let contentType = undefined;\n let jsonSchema = undefined;\n\n if (serde.jsonSchema) {\n jsonSchema = serde.jsonSchema;\n contentType = handler.options?.accept ?? serde.contentType;\n } else if (handler.options?.accept) {\n contentType = handler.options?.accept;\n } else if (serde.contentType) {\n contentType = serde.contentType;\n } else {\n // no input information\n return {};\n }\n\n return {\n required: false,\n contentType,\n jsonSchema,\n };\n}\n\nfunction handlerOutputDiscovery(\n handler: HandlerWrapper,\n defaultSerde: Serde<any>\n): d.OutputPayload {\n const serde = handler.options?.output ?? defaultSerde;\n const setContentTypeIfEmpty =\n handler.options?.setOutputContentTypeIfEmpty ?? false;\n\n let contentType = undefined;\n let jsonSchema = undefined;\n\n if (serde.jsonSchema) {\n jsonSchema = serde.jsonSchema;\n contentType = serde.contentType ?? \"application/json\";\n } else if (serde.contentType) {\n contentType = serde.contentType;\n } else {\n // no input information\n return { setContentTypeIfEmpty };\n }\n\n return {\n setContentTypeIfEmpty,\n jsonSchema,\n contentType,\n };\n}\n\nfunction createExecutionOptions(\n serviceOptions?: ServiceOptions,\n handlerOptions?: ServiceHandlerOpts<unknown, unknown>\n): ExecutionOptions {\n const defaultSerde =\n handlerOptions?.serde ?? serviceOptions?.serde ?? serde.json;\n\n // Service-level hooks run outermost, handler-level hooks run innermost.\n // Both are merged into a single list: service hooks first, then handler hooks.\n const hooks = [\n ...(serviceOptions?.hooks ?? []),\n ...(handlerOptions?.hooks ?? []),\n ];\n return {\n defaultSerde,\n asTerminalError:\n handlerOptions?.asTerminalError ?? serviceOptions?.asTerminalError,\n hooks: hooks.length > 0 ? hooks : undefined,\n explicitCancellation:\n handlerOptions?.explicitCancellation ??\n serviceOptions?.explicitCancellation,\n onJournalMismatchErrors:\n handlerOptions?.onJournalMismatchErrors ??\n serviceOptions?.onJournalMismatchErrors,\n explicitRecovery:\n explicitRecoveryOf(handlerOptions) ?? explicitRecoveryOf(serviceOptions),\n };\n}\n\nconst PREVIEW_METADATA_KEY_PREFIX = \"dev.restate.serde.preview\";\n\n/**\n * Service-scoped serde namespace.\n *\n * Today it is populated from handler inputs/outputs under `<handler>/input`\n * and `<handler>/output`. Custom service-level serdes can be registered\n * alongside them under any name.\n */\nclass ServiceSerdeRegistry {\n private readonly serdes = new Map<string, Serde<unknown>>();\n\n registerHandlerIO(\n handlerName: string,\n wrapper: HandlerWrapper,\n executionOptions: ExecutionOptions\n ): void {\n this.serdes.set(\n `${handlerName}/input`,\n wrapper.options?.input ?? executionOptions.defaultSerde\n );\n this.serdes.set(\n `${handlerName}/output`,\n wrapper.options?.output ?? executionOptions.defaultSerde\n );\n }\n\n resolve(name: string): Serde<unknown> | undefined {\n return this.serdes.get(name);\n }\n\n previewMetadata(): Record<string, string> | undefined {\n const metadata: Record<string, string> = {};\n for (const [name, s] of this.serdes) {\n if (s.preview) {\n metadata[`${PREVIEW_METADATA_KEY_PREFIX}.${name}`] = \"true\";\n }\n }\n return Object.keys(metadata).length > 0 ? metadata : undefined;\n }\n}\n\nfunction mergeMetadata(\n baseMetadata?: Record<string, string>,\n additionalMetadata?: Record<string, string>\n): Record<string, string> | undefined {\n if (!baseMetadata && !additionalMetadata) {\n return undefined;\n }\n\n return {\n ...(baseMetadata ?? {}),\n ...(additionalMetadata ?? {}),\n };\n}\n\nexport class ServiceComponent implements Component {\n private readonly handlers: Map<string, ServiceHandler> = new Map();\n private readonly serdeRegistry = new ServiceSerdeRegistry();\n\n constructor(\n private readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: ServiceOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, handlerWrapper: HandlerWrapper) {\n const handler = new ServiceHandler(name, handlerWrapper, this);\n this.handlers.set(name, handler);\n this.serdeRegistry.registerHandlerIO(\n name,\n handlerWrapper,\n handler.executionOptions\n );\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ...commonHandlerOptions(\n handler.handlerWrapper,\n handler.executionOptions.defaultSerde\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"SERVICE\",\n handlers,\n documentation: this.description,\n metadata: mergeMetadata(\n this.metadata,\n this.serdeRegistry.previewMetadata()\n ),\n ...commonServiceOptions(this.options, false),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n\n serdeMatching(name: string): Serde<any> | undefined {\n return this.serdeRegistry.resolve(name);\n }\n}\n\nexport class ServiceHandler implements ComponentHandler {\n readonly executionOptions: ExecutionOptions;\n\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: ServiceComponent\n ) {\n this.executionOptions = createExecutionOptions(\n this.parent.options,\n handlerWrapper.options\n );\n }\n\n name(): string {\n return this.handlerName;\n }\n\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\n//\n// Virtual Object\n//\n\nexport class VirtualObjectComponent implements Component {\n private readonly handlers: Map<string, VirtualObjectHandler> = new Map();\n private readonly serdeRegistry = new ServiceSerdeRegistry();\n\n constructor(\n public readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: ObjectOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, wrapper: HandlerWrapper) {\n const handler = new VirtualObjectHandler(name, wrapper, this);\n this.handlers.set(name, handler);\n this.serdeRegistry.registerHandlerIO(\n name,\n wrapper,\n handler.executionOptions\n );\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ty: handler.kind() === HandlerKind.EXCLUSIVE ? \"EXCLUSIVE\" : \"SHARED\",\n ...commonHandlerOptions(\n handler.handlerWrapper,\n handler.executionOptions.defaultSerde\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"VIRTUAL_OBJECT\",\n handlers,\n documentation: this.description,\n metadata: mergeMetadata(\n this.metadata,\n this.serdeRegistry.previewMetadata()\n ),\n ...commonServiceOptions(this.options, true),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n\n serdeMatching(name: string): Serde<any> | undefined {\n return this.serdeRegistry.resolve(name);\n }\n}\n\nexport class VirtualObjectHandler implements ComponentHandler {\n readonly executionOptions: ExecutionOptions;\n\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: VirtualObjectComponent\n ) {\n this.executionOptions = createExecutionOptions(\n this.parent.options,\n handlerWrapper.options\n );\n }\n\n name(): string {\n return this.handlerName;\n }\n\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\n// Workflow\n\nexport class WorkflowComponent implements Component {\n private readonly handlers: Map<string, WorkflowHandler> = new Map();\n private readonly serdeRegistry = new ServiceSerdeRegistry();\n\n constructor(\n public readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: WorkflowOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, wrapper: HandlerWrapper) {\n const handler = new WorkflowHandler(name, wrapper, this);\n this.handlers.set(name, handler);\n this.serdeRegistry.registerHandlerIO(\n name,\n wrapper,\n handler.executionOptions\n );\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ty: handler.kind() === HandlerKind.WORKFLOW ? \"WORKFLOW\" : \"SHARED\",\n workflowCompletionRetention:\n handler.kind() === HandlerKind.WORKFLOW &&\n this.options?.workflowRetention !== undefined\n ? millisOrDurationToMillis(this.options?.workflowRetention)\n : undefined,\n ...commonHandlerOptions(\n handler.handlerWrapper,\n handler.executionOptions.defaultSerde\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"WORKFLOW\",\n handlers,\n documentation: this.description,\n metadata: mergeMetadata(\n this.metadata,\n this.serdeRegistry.previewMetadata()\n ),\n ...commonServiceOptions(this.options, true),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n\n serdeMatching(name: string): Serde<any> | undefined {\n return this.serdeRegistry.resolve(name);\n }\n}\n\nexport class WorkflowHandler implements ComponentHandler {\n readonly executionOptions: ExecutionOptions;\n\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: WorkflowComponent\n ) {\n this.executionOptions = createExecutionOptions(\n this.parent.options,\n handlerWrapper.options\n );\n }\n\n name(): string {\n return this.handlerName;\n }\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\nexport type PathComponents =\n | InvokePathComponents\n | PreviewPathComponents\n | { type: \"discover\" }\n | { type: \"health\" }\n | { type: \"unknown\"; path: string };\n\nexport type InvokePathComponents = {\n type: \"invoke\";\n componentName: string;\n handlerName: string;\n};\n\nexport type PreviewPathComponents = {\n type: \"preview\";\n componentName: string;\n operation: \"decode\" | \"encode\";\n serdeName: string;\n};\n\n// Preview uses a regex so that `serdeName` can span multiple path segments\n// (built-ins are shaped as `<handler>/(input|output)`). The regex is anchored\n// with `(?:^|\\/)` so deployments mounted under a sub-path also work.\nconst PREVIEW_PATH_REGEX =\n /(?:^|\\/)serdes\\/(?<componentName>[^/]+)\\/(?<operation>encode|decode)\\/(?<serdeName>.+?)\\/?$/;\n\nexport function parseUrlComponents(urlPath?: string): PathComponents {\n if (!urlPath) {\n return { type: \"unknown\", path: \"\" };\n }\n\n const preview = PREVIEW_PATH_REGEX.exec(urlPath);\n if (preview?.groups) {\n return {\n type: \"preview\",\n componentName: preview.groups.componentName!,\n operation: preview.groups.operation as \"decode\" | \"encode\",\n serdeName: decodeURIComponent(preview.groups.serdeName!),\n };\n }\n\n const fragments = urlPath.split(\"/\");\n if (fragments.length >= 3 && fragments[fragments.length - 3] === \"invoke\") {\n return {\n type: \"invoke\",\n componentName: fragments[fragments.length - 2]!,\n handlerName: fragments[fragments.length - 1]!,\n };\n }\n if (fragments.length > 0 && fragments[fragments.length - 1] === \"discover\") {\n return { type: \"discover\" };\n }\n if (fragments.length > 0 && fragments[fragments.length - 1] === \"health\") {\n return { type: \"health\" };\n }\n return { type: \"unknown\", path: urlPath };\n}\n\nfunction resolveStatePreload(\n options?:\n | ServiceOptions\n | ObjectOptions\n | WorkflowOptions\n | ServiceHandlerOpts<unknown, unknown>\n | ObjectHandlerOpts<unknown, unknown>\n | WorkflowHandlerOpts<unknown, unknown>\n): { enableLazyState?: boolean; eagerStateKeysWhitelist?: string[] } {\n const state =\n options !== undefined && \"state\" in options ? options.state : undefined;\n const legacyEnableLazyState =\n options !== undefined && \"enableLazyState\" in options\n ? options.enableLazyState\n : undefined;\n\n if (state !== undefined && legacyEnableLazyState !== undefined) {\n throw new Error(\n \"Cannot set both the 'state' option and the deprecated 'enableLazyState' option at the same time. Use only 'state'.\"\n );\n }\n\n if (state === undefined) {\n // Legacy passthrough (may itself be undefined).\n return {\n enableLazyState: legacyEnableLazyState,\n eagerStateKeysWhitelist: undefined,\n };\n }\n\n const preload = state.preload;\n if (typeof preload === \"boolean\") {\n // preload: true => eager (preload all) => not lazy\n // preload: false => lazy (preload none) => lazy\n return { enableLazyState: !preload, eagerStateKeysWhitelist: undefined };\n }\n\n // preload is a whitelist of keys to preload eagerly (selective preloading).\n // An empty whitelist is equivalent to fully lazy state.\n return {\n enableLazyState: true,\n // Copy, so later mutations of the user's array don't affect discovery.\n eagerStateKeysWhitelist: preload.length > 0 ? [...preload] : undefined,\n };\n}\n\nfunction commonServiceOptions(\n options: ServiceOptions | ObjectOptions | WorkflowOptions | undefined,\n stateful: boolean\n): Partial<d.Service> {\n // Stateless services must not advertise state options, which might have\n // been inherited from the endpoint default service options.\n const statePreload = stateful ? resolveStatePreload(options) : {};\n return {\n journalRetention:\n options?.journalRetention !== undefined\n ? millisOrDurationToMillis(options.journalRetention)\n : undefined,\n idempotencyRetention:\n options?.idempotencyRetention !== undefined\n ? millisOrDurationToMillis(options.idempotencyRetention)\n : undefined,\n inactivityTimeout:\n options?.inactivityTimeout !== undefined\n ? millisOrDurationToMillis(options.inactivityTimeout)\n : undefined,\n abortTimeout:\n options?.abortTimeout !== undefined\n ? millisOrDurationToMillis(options.abortTimeout)\n : undefined,\n ingressPrivate: options?.ingressPrivate,\n enableLazyState: statePreload.enableLazyState,\n eagerStateKeysWhitelist: statePreload.eagerStateKeysWhitelist,\n retryPolicyExponentiationFactor: options?.retryPolicy?.exponentiationFactor,\n retryPolicyInitialInterval:\n options?.retryPolicy?.initialInterval !== undefined\n ? millisOrDurationToMillis(options?.retryPolicy?.initialInterval)\n : undefined,\n retryPolicyMaxInterval:\n options?.retryPolicy?.maxInterval !== undefined\n ? millisOrDurationToMillis(options?.retryPolicy?.maxInterval)\n : undefined,\n retryPolicyMaxAttempts: options?.retryPolicy?.maxAttempts,\n retryPolicyOnMaxAttempts: (options?.retryPolicy?.onMaxAttempts === \"kill\"\n ? \"KILL\"\n : options?.retryPolicy?.onMaxAttempts === \"pause\"\n ? \"PAUSE\"\n : undefined) as d.RetryPolicyOnMaxAttempts,\n };\n}\n\nfunction commonHandlerOptions(\n wrapper: HandlerWrapper,\n defaultSerde: Serde<any>\n) {\n const statePreload = resolveStatePreload(wrapper.options);\n return {\n input: handlerInputDiscovery(wrapper, defaultSerde),\n output: handlerOutputDiscovery(wrapper, defaultSerde),\n journalRetention:\n wrapper.options?.journalRetention !== undefined\n ? millisOrDurationToMillis(wrapper.options?.journalRetention)\n : undefined,\n idempotencyRetention:\n wrapper.options?.idempotencyRetention !== undefined\n ? millisOrDurationToMillis(wrapper.options?.idempotencyRetention)\n : undefined,\n inactivityTimeout:\n wrapper.options?.inactivityTimeout !== undefined\n ? millisOrDurationToMillis(wrapper.options?.inactivityTimeout)\n : undefined,\n abortTimeout:\n wrapper.options?.abortTimeout !== undefined\n ? millisOrDurationToMillis(wrapper.options?.abortTimeout)\n : undefined,\n ingressPrivate: wrapper.options?.ingressPrivate,\n enableLazyState: statePreload.enableLazyState,\n eagerStateKeysWhitelist: statePreload.eagerStateKeysWhitelist,\n retryPolicyExponentiationFactor:\n wrapper.options?.retryPolicy?.exponentiationFactor,\n retryPolicyInitialInterval:\n wrapper.options?.retryPolicy?.initialInterval !== undefined\n ? millisOrDurationToMillis(\n wrapper.options?.retryPolicy?.initialInterval\n )\n : undefined,\n retryPolicyMaxInterval:\n wrapper.options?.retryPolicy?.maxInterval !== undefined\n ? millisOrDurationToMillis(wrapper.options?.retryPolicy?.maxInterval)\n : undefined,\n retryPolicyMaxAttempts: wrapper.options?.retryPolicy?.maxAttempts,\n retryPolicyOnMaxAttempts: (wrapper.options?.retryPolicy?.onMaxAttempts ===\n \"kill\"\n ? \"KILL\"\n : wrapper.options?.retryPolicy?.onMaxAttempts === \"pause\"\n ? \"PAUSE\"\n : undefined) as d.RetryPolicyOnMaxAttempts1,\n\n documentation: wrapper.options?.description,\n metadata: wrapper.options?.metadata,\n };\n}\n"],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ const require_utils = require('./utils.cjs');
|
|
|
5
5
|
const ENDPOINT_MANIFEST_V2 = "application/vnd.restate.endpointmanifest.v2+json";
|
|
6
6
|
const ENDPOINT_MANIFEST_V3 = "application/vnd.restate.endpointmanifest.v3+json";
|
|
7
7
|
const ENDPOINT_MANIFEST_V4 = "application/vnd.restate.endpointmanifest.v4+json";
|
|
8
|
+
const ENDPOINT_MANIFEST_V5 = "application/vnd.restate.endpointmanifest.v5+json";
|
|
8
9
|
function handleDiscovery(endpoint, protocolMode, additionalDiscoveryFields, acceptVersionsString) {
|
|
9
10
|
if (typeof acceptVersionsString !== "string") {
|
|
10
11
|
const errorMessage = "Missing accept header";
|
|
@@ -12,7 +13,8 @@ function handleDiscovery(endpoint, protocolMode, additionalDiscoveryFields, acce
|
|
|
12
13
|
return require_utils.errorResponse(415, errorMessage);
|
|
13
14
|
}
|
|
14
15
|
let manifestVersion;
|
|
15
|
-
if (acceptVersionsString.includes(
|
|
16
|
+
if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V5)) manifestVersion = 5;
|
|
17
|
+
else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V4)) manifestVersion = 4;
|
|
16
18
|
else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V3)) manifestVersion = 3;
|
|
17
19
|
else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V2)) manifestVersion = 2;
|
|
18
20
|
else {
|
|
@@ -47,9 +49,17 @@ function handleDiscovery(endpoint, protocolMode, additionalDiscoveryFields, acce
|
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
}
|
|
52
|
+
if (manifestVersion < 5) for (const service of discovery.services) {
|
|
53
|
+
const error = checkUnsupportedFeature(service, "eagerStateKeysWhitelist");
|
|
54
|
+
if (error !== void 0) return error;
|
|
55
|
+
for (const handler of service.handlers) {
|
|
56
|
+
const error$1 = checkUnsupportedFeature(handler, "eagerStateKeysWhitelist");
|
|
57
|
+
if (error$1 !== void 0) return error$1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
50
60
|
const body = JSON.stringify(discovery);
|
|
51
61
|
return require_utils.simpleResponse(200, {
|
|
52
|
-
"content-type": manifestVersion === 2 ? ENDPOINT_MANIFEST_V2 : manifestVersion === 3 ? ENDPOINT_MANIFEST_V3 : ENDPOINT_MANIFEST_V4,
|
|
62
|
+
"content-type": manifestVersion === 2 ? ENDPOINT_MANIFEST_V2 : manifestVersion === 3 ? ENDPOINT_MANIFEST_V3 : manifestVersion === 4 ? ENDPOINT_MANIFEST_V4 : ENDPOINT_MANIFEST_V5,
|
|
53
63
|
"x-restate-server": require_user_agent.X_RESTATE_SERVER
|
|
54
64
|
}, new TextEncoder().encode(body));
|
|
55
65
|
}
|
|
@@ -5,6 +5,7 @@ import { errorResponse, simpleResponse } from "./utils.js";
|
|
|
5
5
|
const ENDPOINT_MANIFEST_V2 = "application/vnd.restate.endpointmanifest.v2+json";
|
|
6
6
|
const ENDPOINT_MANIFEST_V3 = "application/vnd.restate.endpointmanifest.v3+json";
|
|
7
7
|
const ENDPOINT_MANIFEST_V4 = "application/vnd.restate.endpointmanifest.v4+json";
|
|
8
|
+
const ENDPOINT_MANIFEST_V5 = "application/vnd.restate.endpointmanifest.v5+json";
|
|
8
9
|
function handleDiscovery(endpoint, protocolMode, additionalDiscoveryFields, acceptVersionsString) {
|
|
9
10
|
if (typeof acceptVersionsString !== "string") {
|
|
10
11
|
const errorMessage = "Missing accept header";
|
|
@@ -12,7 +13,8 @@ function handleDiscovery(endpoint, protocolMode, additionalDiscoveryFields, acce
|
|
|
12
13
|
return errorResponse(415, errorMessage);
|
|
13
14
|
}
|
|
14
15
|
let manifestVersion;
|
|
15
|
-
if (acceptVersionsString.includes(
|
|
16
|
+
if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V5)) manifestVersion = 5;
|
|
17
|
+
else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V4)) manifestVersion = 4;
|
|
16
18
|
else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V3)) manifestVersion = 3;
|
|
17
19
|
else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V2)) manifestVersion = 2;
|
|
18
20
|
else {
|
|
@@ -47,9 +49,17 @@ function handleDiscovery(endpoint, protocolMode, additionalDiscoveryFields, acce
|
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
}
|
|
52
|
+
if (manifestVersion < 5) for (const service of discovery.services) {
|
|
53
|
+
const error = checkUnsupportedFeature(service, "eagerStateKeysWhitelist");
|
|
54
|
+
if (error !== void 0) return error;
|
|
55
|
+
for (const handler of service.handlers) {
|
|
56
|
+
const error$1 = checkUnsupportedFeature(handler, "eagerStateKeysWhitelist");
|
|
57
|
+
if (error$1 !== void 0) return error$1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
50
60
|
const body = JSON.stringify(discovery);
|
|
51
61
|
return simpleResponse(200, {
|
|
52
|
-
"content-type": manifestVersion === 2 ? ENDPOINT_MANIFEST_V2 : manifestVersion === 3 ? ENDPOINT_MANIFEST_V3 : ENDPOINT_MANIFEST_V4,
|
|
62
|
+
"content-type": manifestVersion === 2 ? ENDPOINT_MANIFEST_V2 : manifestVersion === 3 ? ENDPOINT_MANIFEST_V3 : manifestVersion === 4 ? ENDPOINT_MANIFEST_V4 : ENDPOINT_MANIFEST_V5,
|
|
53
63
|
"x-restate-server": X_RESTATE_SERVER
|
|
54
64
|
}, new TextEncoder().encode(body));
|
|
55
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","names":["error"],"sources":["../../../src/endpoint/handlers/discovery.ts"],"sourcesContent":["import type { RestateResponse } from \"./types.js\";\nimport type { Endpoint } from \"../endpoint.js\";\nimport type {\n Endpoint as EndpointManifest,\n ProtocolMode,\n} from \"../discovery.js\";\nimport { X_RESTATE_SERVER } from \"../../user_agent.js\";\nimport { errorResponse, simpleResponse } from \"./utils.js\";\n\nconst ENDPOINT_MANIFEST_V2 = \"application/vnd.restate.endpointmanifest.v2+json\";\nconst ENDPOINT_MANIFEST_V3 = \"application/vnd.restate.endpointmanifest.v3+json\";\nconst ENDPOINT_MANIFEST_V4 = \"application/vnd.restate.endpointmanifest.v4+json\";\n\nexport function handleDiscovery(\n endpoint: Endpoint,\n protocolMode: ProtocolMode,\n additionalDiscoveryFields: Partial<EndpointManifest>,\n acceptVersionsString: string | string[] | undefined\n): RestateResponse {\n if (typeof acceptVersionsString !== \"string\") {\n const errorMessage = \"Missing accept header\";\n endpoint.rlog.warn(errorMessage);\n return errorResponse(415, errorMessage);\n }\n\n // Negotiate version to use\n let manifestVersion;\n if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V4)) {\n manifestVersion = 4;\n } else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V3)) {\n manifestVersion = 3;\n } else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V2)) {\n manifestVersion = 2;\n } else {\n const errorMessage = `Unsupported service discovery protocol version '${acceptVersionsString}'`;\n endpoint.rlog.warn(errorMessage);\n return errorResponse(415, errorMessage);\n }\n\n const discovery = {\n ...endpoint.discoveryMetadata,\n ...additionalDiscoveryFields,\n protocolMode: protocolMode,\n };\n\n const checkUnsupportedFeature = <T extends object>(\n obj: T,\n ...fields: Array<keyof T>\n ) => {\n for (const field of fields) {\n if (field in obj && obj[field] !== undefined) {\n return errorResponse(\n 500,\n `The code uses the new discovery feature '${String(\n field\n )}' but the runtime doesn't support it yet (discovery protocol negotiated version ${manifestVersion}). Either remove the usage of this feature, or upgrade the runtime.`\n );\n }\n }\n return;\n };\n\n // Verify none of the manifest v3 configuration options are used.\n if (manifestVersion < 3) {\n for (const service of discovery.services) {\n const error = checkUnsupportedFeature(\n service,\n \"journalRetention\",\n \"idempotencyRetention\",\n \"inactivityTimeout\",\n \"abortTimeout\",\n \"enableLazyState\",\n \"ingressPrivate\"\n );\n if (error !== undefined) {\n return error;\n }\n for (const handler of service.handlers) {\n const error = checkUnsupportedFeature(\n handler,\n \"journalRetention\",\n \"idempotencyRetention\",\n \"workflowCompletionRetention\",\n \"inactivityTimeout\",\n \"abortTimeout\",\n \"enableLazyState\",\n \"ingressPrivate\"\n );\n if (error !== undefined) {\n return error;\n }\n }\n }\n }\n\n if (manifestVersion < 4) {\n // Blank the lambda compression field. No need to fail in this case.\n discovery.lambdaCompression = undefined;\n for (const service of discovery.services) {\n const error = checkUnsupportedFeature(\n service,\n \"retryPolicyExponentiationFactor\",\n \"retryPolicyInitialInterval\",\n \"retryPolicyMaxAttempts\",\n \"retryPolicyMaxInterval\",\n \"retryPolicyOnMaxAttempts\"\n );\n if (error !== undefined) {\n return error;\n }\n for (const handler of service.handlers) {\n const error = checkUnsupportedFeature(\n handler,\n \"retryPolicyExponentiationFactor\",\n \"retryPolicyInitialInterval\",\n \"retryPolicyMaxAttempts\",\n \"retryPolicyMaxInterval\",\n \"retryPolicyOnMaxAttempts\"\n );\n if (error !== undefined) {\n return error;\n }\n }\n }\n }\n\n const body = JSON.stringify(discovery);\n return simpleResponse(\n 200,\n {\n \"content-type\":\n manifestVersion === 2\n ? ENDPOINT_MANIFEST_V2\n : manifestVersion === 3\n ? ENDPOINT_MANIFEST_V3\n : ENDPOINT_MANIFEST_V4,\n \"x-restate-server\": X_RESTATE_SERVER,\n },\n new TextEncoder().encode(body)\n );\n}\n"],"mappings":";;;;AASA,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAE7B,SAAgB,gBACd,UACA,cACA,2BACA,sBACiB;AACjB,KAAI,OAAO,yBAAyB,UAAU;EAC5C,MAAM,eAAe;AACrB,WAAS,KAAK,KAAK,aAAa;AAChC,SAAO,cAAc,KAAK,aAAa;;CAIzC,IAAI;AACJ,KAAI,qBAAqB,SAAS,qBAAqB,CACrD,mBAAkB;UACT,qBAAqB,SAAS,qBAAqB,CAC5D,mBAAkB;UACT,qBAAqB,SAAS,qBAAqB,CAC5D,mBAAkB;MACb;EACL,MAAM,eAAe,mDAAmD,qBAAqB;AAC7F,WAAS,KAAK,KAAK,aAAa;AAChC,SAAO,cAAc,KAAK,aAAa;;CAGzC,MAAM,YAAY;EAChB,GAAG,SAAS;EACZ,GAAG;EACW;EACf;CAED,MAAM,2BACJ,KACA,GAAG,WACA;AACH,OAAK,MAAM,SAAS,OAClB,KAAI,SAAS,OAAO,IAAI,WAAW,OACjC,QAAO,cACL,KACA,4CAA4C,OAC1C,MACD,CAAC,kFAAkF,gBAAgB,qEACrG;;AAOP,KAAI,kBAAkB,EACpB,MAAK,MAAM,WAAW,UAAU,UAAU;EACxC,MAAM,QAAQ,wBACZ,SACA,oBACA,wBACA,qBACA,gBACA,mBACA,iBACD;AACD,MAAI,UAAU,OACZ,QAAO;AAET,OAAK,MAAM,WAAW,QAAQ,UAAU;GACtC,MAAMA,UAAQ,wBACZ,SACA,oBACA,wBACA,+BACA,qBACA,gBACA,mBACA,iBACD;AACD,OAAIA,YAAU,OACZ,QAAOA;;;AAMf,KAAI,kBAAkB,GAAG;AAEvB,YAAU,oBAAoB;AAC9B,OAAK,MAAM,WAAW,UAAU,UAAU;GACxC,MAAM,QAAQ,wBACZ,SACA,mCACA,8BACA,0BACA,0BACA,2BACD;AACD,OAAI,UAAU,OACZ,QAAO;AAET,QAAK,MAAM,WAAW,QAAQ,UAAU;IACtC,MAAMA,UAAQ,wBACZ,SACA,mCACA,8BACA,0BACA,0BACA,2BACD;AACD,QAAIA,YAAU,OACZ,QAAOA;;;;CAMf,MAAM,OAAO,KAAK,UAAU,UAAU;AACtC,QAAO,eACL,KACA;EACE,gBACE,oBAAoB,IAChB,uBACA,oBAAoB,IAClB,uBACA;
|
|
1
|
+
{"version":3,"file":"discovery.js","names":["error"],"sources":["../../../src/endpoint/handlers/discovery.ts"],"sourcesContent":["import type { RestateResponse } from \"./types.js\";\nimport type { Endpoint } from \"../endpoint.js\";\nimport type {\n Endpoint as EndpointManifest,\n ProtocolMode,\n} from \"../discovery.js\";\nimport { X_RESTATE_SERVER } from \"../../user_agent.js\";\nimport { errorResponse, simpleResponse } from \"./utils.js\";\n\nconst ENDPOINT_MANIFEST_V2 = \"application/vnd.restate.endpointmanifest.v2+json\";\nconst ENDPOINT_MANIFEST_V3 = \"application/vnd.restate.endpointmanifest.v3+json\";\nconst ENDPOINT_MANIFEST_V4 = \"application/vnd.restate.endpointmanifest.v4+json\";\nconst ENDPOINT_MANIFEST_V5 = \"application/vnd.restate.endpointmanifest.v5+json\";\n\nexport function handleDiscovery(\n endpoint: Endpoint,\n protocolMode: ProtocolMode,\n additionalDiscoveryFields: Partial<EndpointManifest>,\n acceptVersionsString: string | string[] | undefined\n): RestateResponse {\n if (typeof acceptVersionsString !== \"string\") {\n const errorMessage = \"Missing accept header\";\n endpoint.rlog.warn(errorMessage);\n return errorResponse(415, errorMessage);\n }\n\n // Negotiate version to use\n let manifestVersion;\n if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V5)) {\n manifestVersion = 5;\n } else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V4)) {\n manifestVersion = 4;\n } else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V3)) {\n manifestVersion = 3;\n } else if (acceptVersionsString.includes(ENDPOINT_MANIFEST_V2)) {\n manifestVersion = 2;\n } else {\n const errorMessage = `Unsupported service discovery protocol version '${acceptVersionsString}'`;\n endpoint.rlog.warn(errorMessage);\n return errorResponse(415, errorMessage);\n }\n\n const discovery = {\n ...endpoint.discoveryMetadata,\n ...additionalDiscoveryFields,\n protocolMode: protocolMode,\n };\n\n const checkUnsupportedFeature = <T extends object>(\n obj: T,\n ...fields: Array<keyof T>\n ) => {\n for (const field of fields) {\n if (field in obj && obj[field] !== undefined) {\n return errorResponse(\n 500,\n `The code uses the new discovery feature '${String(\n field\n )}' but the runtime doesn't support it yet (discovery protocol negotiated version ${manifestVersion}). Either remove the usage of this feature, or upgrade the runtime.`\n );\n }\n }\n return;\n };\n\n // Verify none of the manifest v3 configuration options are used.\n if (manifestVersion < 3) {\n for (const service of discovery.services) {\n const error = checkUnsupportedFeature(\n service,\n \"journalRetention\",\n \"idempotencyRetention\",\n \"inactivityTimeout\",\n \"abortTimeout\",\n \"enableLazyState\",\n \"ingressPrivate\"\n );\n if (error !== undefined) {\n return error;\n }\n for (const handler of service.handlers) {\n const error = checkUnsupportedFeature(\n handler,\n \"journalRetention\",\n \"idempotencyRetention\",\n \"workflowCompletionRetention\",\n \"inactivityTimeout\",\n \"abortTimeout\",\n \"enableLazyState\",\n \"ingressPrivate\"\n );\n if (error !== undefined) {\n return error;\n }\n }\n }\n }\n\n if (manifestVersion < 4) {\n // Blank the lambda compression field. No need to fail in this case.\n discovery.lambdaCompression = undefined;\n for (const service of discovery.services) {\n const error = checkUnsupportedFeature(\n service,\n \"retryPolicyExponentiationFactor\",\n \"retryPolicyInitialInterval\",\n \"retryPolicyMaxAttempts\",\n \"retryPolicyMaxInterval\",\n \"retryPolicyOnMaxAttempts\"\n );\n if (error !== undefined) {\n return error;\n }\n for (const handler of service.handlers) {\n const error = checkUnsupportedFeature(\n handler,\n \"retryPolicyExponentiationFactor\",\n \"retryPolicyInitialInterval\",\n \"retryPolicyMaxAttempts\",\n \"retryPolicyMaxInterval\",\n \"retryPolicyOnMaxAttempts\"\n );\n if (error !== undefined) {\n return error;\n }\n }\n }\n }\n\n // Verify none of the manifest v5 configuration options are used.\n // Note: `enableLazyState` itself is already available since v3; only the\n // eager-state whitelist (selective preloading) requires v5.\n if (manifestVersion < 5) {\n for (const service of discovery.services) {\n const error = checkUnsupportedFeature(service, \"eagerStateKeysWhitelist\");\n if (error !== undefined) {\n return error;\n }\n for (const handler of service.handlers) {\n const error = checkUnsupportedFeature(\n handler,\n \"eagerStateKeysWhitelist\"\n );\n if (error !== undefined) {\n return error;\n }\n }\n }\n }\n\n const body = JSON.stringify(discovery);\n return simpleResponse(\n 200,\n {\n \"content-type\":\n manifestVersion === 2\n ? ENDPOINT_MANIFEST_V2\n : manifestVersion === 3\n ? ENDPOINT_MANIFEST_V3\n : manifestVersion === 4\n ? ENDPOINT_MANIFEST_V4\n : ENDPOINT_MANIFEST_V5,\n \"x-restate-server\": X_RESTATE_SERVER,\n },\n new TextEncoder().encode(body)\n );\n}\n"],"mappings":";;;;AASA,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAE7B,SAAgB,gBACd,UACA,cACA,2BACA,sBACiB;AACjB,KAAI,OAAO,yBAAyB,UAAU;EAC5C,MAAM,eAAe;AACrB,WAAS,KAAK,KAAK,aAAa;AAChC,SAAO,cAAc,KAAK,aAAa;;CAIzC,IAAI;AACJ,KAAI,qBAAqB,SAAS,qBAAqB,CACrD,mBAAkB;UACT,qBAAqB,SAAS,qBAAqB,CAC5D,mBAAkB;UACT,qBAAqB,SAAS,qBAAqB,CAC5D,mBAAkB;UACT,qBAAqB,SAAS,qBAAqB,CAC5D,mBAAkB;MACb;EACL,MAAM,eAAe,mDAAmD,qBAAqB;AAC7F,WAAS,KAAK,KAAK,aAAa;AAChC,SAAO,cAAc,KAAK,aAAa;;CAGzC,MAAM,YAAY;EAChB,GAAG,SAAS;EACZ,GAAG;EACW;EACf;CAED,MAAM,2BACJ,KACA,GAAG,WACA;AACH,OAAK,MAAM,SAAS,OAClB,KAAI,SAAS,OAAO,IAAI,WAAW,OACjC,QAAO,cACL,KACA,4CAA4C,OAC1C,MACD,CAAC,kFAAkF,gBAAgB,qEACrG;;AAOP,KAAI,kBAAkB,EACpB,MAAK,MAAM,WAAW,UAAU,UAAU;EACxC,MAAM,QAAQ,wBACZ,SACA,oBACA,wBACA,qBACA,gBACA,mBACA,iBACD;AACD,MAAI,UAAU,OACZ,QAAO;AAET,OAAK,MAAM,WAAW,QAAQ,UAAU;GACtC,MAAMA,UAAQ,wBACZ,SACA,oBACA,wBACA,+BACA,qBACA,gBACA,mBACA,iBACD;AACD,OAAIA,YAAU,OACZ,QAAOA;;;AAMf,KAAI,kBAAkB,GAAG;AAEvB,YAAU,oBAAoB;AAC9B,OAAK,MAAM,WAAW,UAAU,UAAU;GACxC,MAAM,QAAQ,wBACZ,SACA,mCACA,8BACA,0BACA,0BACA,2BACD;AACD,OAAI,UAAU,OACZ,QAAO;AAET,QAAK,MAAM,WAAW,QAAQ,UAAU;IACtC,MAAMA,UAAQ,wBACZ,SACA,mCACA,8BACA,0BACA,0BACA,2BACD;AACD,QAAIA,YAAU,OACZ,QAAOA;;;;AASf,KAAI,kBAAkB,EACpB,MAAK,MAAM,WAAW,UAAU,UAAU;EACxC,MAAM,QAAQ,wBAAwB,SAAS,0BAA0B;AACzE,MAAI,UAAU,OACZ,QAAO;AAET,OAAK,MAAM,WAAW,QAAQ,UAAU;GACtC,MAAMA,UAAQ,wBACZ,SACA,0BACD;AACD,OAAIA,YAAU,OACZ,QAAOA;;;CAMf,MAAM,OAAO,KAAK,UAAU,UAAU;AACtC,QAAO,eACL,KACA;EACE,gBACE,oBAAoB,IAChB,uBACA,oBAAoB,IAClB,uBACA,oBAAoB,IAClB,uBACA;EACV,oBAAoB;EACrB,EACD,IAAI,aAAa,CAAC,OAAO,KAAK,CAC/B"}
|
|
Binary file
|
package/dist/fetch.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CancelledError, PauseError, RestateError, RetryableError, RetryableErrorOptions, TerminalError, TimeoutError } from "./types/errors.cjs";
|
|
2
2
|
import { Hooks, HooksProvider, Interceptor } from "./hooks.cjs";
|
|
3
|
-
import { 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 } from "./types/rpc.cjs";
|
|
3
|
+
import { Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendClientFromDescriptors, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, StatePreload, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow } from "./types/rpc.cjs";
|
|
4
4
|
import { Context, ContextDate, DurablePromise, EntryOptions, GenericCall, GenericSend, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, KeyValueStore, ObjectContext, ObjectSharedContext, Rand, Request as Request$1, RestatePromise, RunAction, RunOptions, ScopedContext, SignalReference, Target, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "./context.cjs";
|
|
5
5
|
import { LogMetadata, LogSource, LoggerContext, LoggerTransport, RestateLogLevel } from "./logging/logger_transport.cjs";
|
|
6
6
|
import { DefaultServiceOptions, RestateEndpoint, RestateEndpointBase } from "./endpoint.cjs";
|
|
@@ -52,5 +52,5 @@ interface FetchEndpointOptions extends EndpointOptions {
|
|
|
52
52
|
*/
|
|
53
53
|
declare function createEndpointHandler(options: FetchEndpointOptions): (request: Request, ...extraArgs: unknown[]) => Promise<Response>;
|
|
54
54
|
//#endregion
|
|
55
|
-
export { CancelledError, Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, Descriptor, DescriptorOpts, DurablePromise, Duration, EndpointOptions, EntryOptions, type FetchEndpoint, FetchEndpointOptions, FnOf, GenericCall, GenericSend, HandlerDescriptor, Hooks, HooksProvider, ImplementedDefinition, ImplementedObjectDefinition, ImplementedServiceDefinition, ImplementedWorkflowDefinition, InferArg, InferInput, InferOutput, Interceptor, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, ObjectContext, ObjectDescriptor, ObjectHandler, ObjectHandlerOpts, ObjectImplHandlers, ObjectOptions, ObjectOpts, ObjectPerHandlerOpts, ObjectSharedContext, Opts, PauseError, Rand, RemoveVoidArgument, Request$1 as Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, ScopedContext, SendClient, SendClientFromDescriptors, SendOpts, Serde, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceDescriptor, ServiceHandler, ServiceHandlerOpts, ServiceImplHandlers, ServiceInterface, ServiceOptions, ServiceOpts, ServicePerHandlerOpts, SignalReference, Target, TerminalError, TimeoutError, TypedState, UntypedState, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowContext, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowDescriptor, WorkflowHandler, WorkflowHandlerOpts, WorkflowImplHandlers, WorkflowOptions, WorkflowOpts, WorkflowPerHandlerOpts, WorkflowSharedContext, WorkflowSharedHandler, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, iface, implement, internal_d_exports as internal, isRestatePromise, object, rpc, serde, service, workflow };
|
|
55
|
+
export { CancelledError, Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, Descriptor, DescriptorOpts, DurablePromise, Duration, EndpointOptions, EntryOptions, type FetchEndpoint, FetchEndpointOptions, FnOf, GenericCall, GenericSend, HandlerDescriptor, Hooks, HooksProvider, ImplementedDefinition, ImplementedObjectDefinition, ImplementedServiceDefinition, ImplementedWorkflowDefinition, InferArg, InferInput, InferOutput, Interceptor, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, ObjectContext, ObjectDescriptor, ObjectHandler, ObjectHandlerOpts, ObjectImplHandlers, ObjectOptions, ObjectOpts, ObjectPerHandlerOpts, ObjectSharedContext, Opts, PauseError, Rand, RemoveVoidArgument, Request$1 as Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, ScopedContext, SendClient, SendClientFromDescriptors, SendOpts, Serde, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceDescriptor, ServiceHandler, ServiceHandlerOpts, ServiceImplHandlers, ServiceInterface, ServiceOptions, ServiceOpts, ServicePerHandlerOpts, SignalReference, StatePreload, Target, TerminalError, TimeoutError, TypedState, UntypedState, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowContext, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowDescriptor, WorkflowHandler, WorkflowHandlerOpts, WorkflowImplHandlers, WorkflowOptions, WorkflowOpts, WorkflowPerHandlerOpts, WorkflowSharedContext, WorkflowSharedHandler, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, iface, implement, internal_d_exports as internal, isRestatePromise, object, rpc, serde, service, workflow };
|
|
56
56
|
//# sourceMappingURL=fetch.d.cts.map
|
package/dist/fetch.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CancelledError, PauseError, RestateError, RetryableError, RetryableErrorOptions, TerminalError, TimeoutError } from "./types/errors.js";
|
|
2
2
|
import { Hooks, HooksProvider, Interceptor } from "./hooks.js";
|
|
3
|
-
import { 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 } from "./types/rpc.js";
|
|
3
|
+
import { Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendClientFromDescriptors, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, StatePreload, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow } from "./types/rpc.js";
|
|
4
4
|
import { Context, ContextDate, DurablePromise, EntryOptions, GenericCall, GenericSend, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, KeyValueStore, ObjectContext, ObjectSharedContext, Rand, Request as Request$1, RestatePromise, RunAction, RunOptions, ScopedContext, SignalReference, Target, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "./context.js";
|
|
5
5
|
import { LogMetadata, LogSource, LoggerContext, LoggerTransport, RestateLogLevel } from "./logging/logger_transport.js";
|
|
6
6
|
import { DefaultServiceOptions, RestateEndpoint, RestateEndpointBase } from "./endpoint.js";
|
|
@@ -52,5 +52,5 @@ interface FetchEndpointOptions extends EndpointOptions {
|
|
|
52
52
|
*/
|
|
53
53
|
declare function createEndpointHandler(options: FetchEndpointOptions): (request: Request, ...extraArgs: unknown[]) => Promise<Response>;
|
|
54
54
|
//#endregion
|
|
55
|
-
export { CancelledError, Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, Descriptor, DescriptorOpts, DurablePromise, Duration, EndpointOptions, EntryOptions, type FetchEndpoint, FetchEndpointOptions, FnOf, GenericCall, GenericSend, HandlerDescriptor, Hooks, HooksProvider, ImplementedDefinition, ImplementedObjectDefinition, ImplementedServiceDefinition, ImplementedWorkflowDefinition, InferArg, InferInput, InferOutput, Interceptor, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, ObjectContext, ObjectDescriptor, ObjectHandler, ObjectHandlerOpts, ObjectImplHandlers, ObjectOptions, ObjectOpts, ObjectPerHandlerOpts, ObjectSharedContext, Opts, PauseError, Rand, RemoveVoidArgument, Request$1 as Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, ScopedContext, SendClient, SendClientFromDescriptors, SendOpts, Serde, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceDescriptor, ServiceHandler, ServiceHandlerOpts, ServiceImplHandlers, ServiceInterface, ServiceOptions, ServiceOpts, ServicePerHandlerOpts, SignalReference, Target, TerminalError, TimeoutError, TypedState, UntypedState, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowContext, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowDescriptor, WorkflowHandler, WorkflowHandlerOpts, WorkflowImplHandlers, WorkflowOptions, WorkflowOpts, WorkflowPerHandlerOpts, WorkflowSharedContext, WorkflowSharedHandler, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, iface, implement, internal_d_exports as internal, isRestatePromise, object, rpc, serde, service, workflow };
|
|
55
|
+
export { CancelledError, Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, Descriptor, DescriptorOpts, DurablePromise, Duration, EndpointOptions, EntryOptions, type FetchEndpoint, FetchEndpointOptions, FnOf, GenericCall, GenericSend, HandlerDescriptor, Hooks, HooksProvider, ImplementedDefinition, ImplementedObjectDefinition, ImplementedServiceDefinition, ImplementedWorkflowDefinition, InferArg, InferInput, InferOutput, Interceptor, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, ObjectContext, ObjectDescriptor, ObjectHandler, ObjectHandlerOpts, ObjectImplHandlers, ObjectOptions, ObjectOpts, ObjectPerHandlerOpts, ObjectSharedContext, Opts, PauseError, Rand, RemoveVoidArgument, Request$1 as Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, ScopedContext, SendClient, SendClientFromDescriptors, SendOpts, Serde, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceDescriptor, ServiceHandler, ServiceHandlerOpts, ServiceImplHandlers, ServiceInterface, ServiceOptions, ServiceOpts, ServicePerHandlerOpts, SignalReference, StatePreload, Target, TerminalError, TimeoutError, TypedState, UntypedState, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowContext, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowDescriptor, WorkflowHandler, WorkflowHandlerOpts, WorkflowImplHandlers, WorkflowOptions, WorkflowOpts, WorkflowPerHandlerOpts, WorkflowSharedContext, WorkflowSharedHandler, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, iface, implement, internal_d_exports as internal, isRestatePromise, object, rpc, serde, service, workflow };
|
|
56
56
|
//# sourceMappingURL=fetch.d.ts.map
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CancelledError, PauseError, RestateError, RetryableError, RetryableErrorOptions, TerminalError, TimeoutError } from "./types/errors.cjs";
|
|
2
2
|
import { Hooks, HooksProvider, Interceptor } from "./hooks.cjs";
|
|
3
|
-
import { 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 } from "./types/rpc.cjs";
|
|
3
|
+
import { Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendClientFromDescriptors, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, StatePreload, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow } from "./types/rpc.cjs";
|
|
4
4
|
import { Context, ContextDate, DurablePromise, EntryOptions, GenericCall, GenericSend, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, KeyValueStore, ObjectContext, ObjectSharedContext, Rand, Request, RestatePromise, RunAction, RunOptions, ScopedContext, SignalReference, Target, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "./context.cjs";
|
|
5
5
|
import { LogMetadata, LogSource, LoggerContext, LoggerTransport, RestateLogLevel } from "./logging/logger_transport.cjs";
|
|
6
6
|
import { DefaultServiceOptions, RestateEndpoint, RestateEndpointBase } from "./endpoint.cjs";
|
|
@@ -10,4 +10,4 @@ import { FnOf, ObjectImplHandlers, ObjectPerHandlerOpts, ServiceImplHandlers, Se
|
|
|
10
10
|
import { EndpointOptions } from "./endpoint/types.cjs";
|
|
11
11
|
import { CombineablePromise, Descriptor, DescriptorOpts, Duration, HandlerDescriptor, ImplementedDefinition, ImplementedObjectDefinition, ImplementedServiceDefinition, ImplementedWorkflowDefinition, InferInput, InferOutput, JournalValueCodec, ObjectDescriptor, ObjectHandler, RestateContext, RestateObjectContext, RestateObjectSharedContext, RestateWorkflowContext, RestateWorkflowSharedContext, Serde, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceDescriptor, ServiceHandler, ServiceInterface, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowDescriptor, WorkflowHandler, WorkflowSharedHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, iface, serde } from "./common_api.cjs";
|
|
12
12
|
import { NodeEndpointOptions, ServeOptions, createEndpointHandler, endpoint, serve } from "./node.cjs";
|
|
13
|
-
export { CancelledError, Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, Descriptor, DescriptorOpts, DurablePromise, Duration, EndpointOptions, EntryOptions, FnOf, GenericCall, GenericSend, HandlerDescriptor, Hooks, HooksProvider, ImplementedDefinition, ImplementedObjectDefinition, ImplementedServiceDefinition, ImplementedWorkflowDefinition, InferArg, InferInput, InferOutput, Interceptor, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, NodeEndpointOptions, ObjectContext, ObjectDescriptor, ObjectHandler, ObjectHandlerOpts, ObjectImplHandlers, ObjectOptions, ObjectOpts, ObjectPerHandlerOpts, ObjectSharedContext, Opts, PauseError, Rand, RemoveVoidArgument, Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, ScopedContext, SendClient, SendClientFromDescriptors, SendOpts, Serde, ServeOptions, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceDescriptor, ServiceHandler, ServiceHandlerOpts, ServiceImplHandlers, ServiceInterface, ServiceOptions, ServiceOpts, ServicePerHandlerOpts, SignalReference, Target, TerminalError, TimeoutError, TypedState, UntypedState, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowContext, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowDescriptor, WorkflowHandler, WorkflowHandlerOpts, WorkflowImplHandlers, WorkflowOptions, WorkflowOpts, WorkflowPerHandlerOpts, WorkflowSharedContext, WorkflowSharedHandler, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, iface, implement, internal_d_exports as internal, isRestatePromise, object, rpc, serde, serve, service, workflow };
|
|
13
|
+
export { CancelledError, Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, Descriptor, DescriptorOpts, DurablePromise, Duration, EndpointOptions, EntryOptions, FnOf, GenericCall, GenericSend, HandlerDescriptor, Hooks, HooksProvider, ImplementedDefinition, ImplementedObjectDefinition, ImplementedServiceDefinition, ImplementedWorkflowDefinition, InferArg, InferInput, InferOutput, Interceptor, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, NodeEndpointOptions, ObjectContext, ObjectDescriptor, ObjectHandler, ObjectHandlerOpts, ObjectImplHandlers, ObjectOptions, ObjectOpts, ObjectPerHandlerOpts, ObjectSharedContext, Opts, PauseError, Rand, RemoveVoidArgument, Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, ScopedContext, SendClient, SendClientFromDescriptors, SendOpts, Serde, ServeOptions, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceDescriptor, ServiceHandler, ServiceHandlerOpts, ServiceImplHandlers, ServiceInterface, ServiceOptions, ServiceOpts, ServicePerHandlerOpts, SignalReference, StatePreload, Target, TerminalError, TimeoutError, TypedState, UntypedState, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowContext, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowDescriptor, WorkflowHandler, WorkflowHandlerOpts, WorkflowImplHandlers, WorkflowOptions, WorkflowOpts, WorkflowPerHandlerOpts, WorkflowSharedContext, WorkflowSharedHandler, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, iface, implement, internal_d_exports as internal, isRestatePromise, object, rpc, serde, serve, service, workflow };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CancelledError, PauseError, RestateError, RetryableError, RetryableErrorOptions, TerminalError, TimeoutError } from "./types/errors.js";
|
|
2
2
|
import { Hooks, HooksProvider, Interceptor } from "./hooks.js";
|
|
3
|
-
import { 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 } from "./types/rpc.js";
|
|
3
|
+
import { Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, InferArg, ObjectHandlerOpts, ObjectOptions, ObjectOpts, Opts, RemoveVoidArgument, RetryPolicy, SendClient, SendClientFromDescriptors, SendOpts, ServiceHandlerOpts, ServiceOptions, ServiceOpts, StatePreload, WorkflowHandlerOpts, WorkflowOptions, WorkflowOpts, handlers, object, rpc, service, workflow } from "./types/rpc.js";
|
|
4
4
|
import { Context, ContextDate, DurablePromise, EntryOptions, GenericCall, GenericSend, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, KeyValueStore, ObjectContext, ObjectSharedContext, Rand, Request, RestatePromise, RunAction, RunOptions, ScopedContext, SignalReference, Target, TypedState, UntypedState, WorkflowContext, WorkflowSharedContext } from "./context.js";
|
|
5
5
|
import { LogMetadata, LogSource, LoggerContext, LoggerTransport, RestateLogLevel } from "./logging/logger_transport.js";
|
|
6
6
|
import { DefaultServiceOptions, RestateEndpoint, RestateEndpointBase } from "./endpoint.js";
|
|
@@ -10,4 +10,4 @@ import { FnOf, ObjectImplHandlers, ObjectPerHandlerOpts, ServiceImplHandlers, Se
|
|
|
10
10
|
import { EndpointOptions } from "./endpoint/types.js";
|
|
11
11
|
import { CombineablePromise, Descriptor, DescriptorOpts, Duration, HandlerDescriptor, ImplementedDefinition, ImplementedObjectDefinition, ImplementedServiceDefinition, ImplementedWorkflowDefinition, InferInput, InferOutput, JournalValueCodec, ObjectDescriptor, ObjectHandler, RestateContext, RestateObjectContext, RestateObjectSharedContext, RestateWorkflowContext, RestateWorkflowSharedContext, Serde, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceDescriptor, ServiceHandler, ServiceInterface, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowDescriptor, WorkflowHandler, WorkflowSharedHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, iface, serde } from "./common_api.js";
|
|
12
12
|
import { NodeEndpointOptions, ServeOptions, createEndpointHandler, endpoint, serve } from "./node.js";
|
|
13
|
-
export { CancelledError, Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, Descriptor, DescriptorOpts, DurablePromise, Duration, EndpointOptions, EntryOptions, FnOf, GenericCall, GenericSend, HandlerDescriptor, Hooks, HooksProvider, ImplementedDefinition, ImplementedObjectDefinition, ImplementedServiceDefinition, ImplementedWorkflowDefinition, InferArg, InferInput, InferOutput, Interceptor, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, NodeEndpointOptions, ObjectContext, ObjectDescriptor, ObjectHandler, ObjectHandlerOpts, ObjectImplHandlers, ObjectOptions, ObjectOpts, ObjectPerHandlerOpts, ObjectSharedContext, Opts, PauseError, Rand, RemoveVoidArgument, Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, ScopedContext, SendClient, SendClientFromDescriptors, SendOpts, Serde, ServeOptions, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceDescriptor, ServiceHandler, ServiceHandlerOpts, ServiceImplHandlers, ServiceInterface, ServiceOptions, ServiceOpts, ServicePerHandlerOpts, SignalReference, Target, TerminalError, TimeoutError, TypedState, UntypedState, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowContext, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowDescriptor, WorkflowHandler, WorkflowHandlerOpts, WorkflowImplHandlers, WorkflowOptions, WorkflowOpts, WorkflowPerHandlerOpts, WorkflowSharedContext, WorkflowSharedHandler, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, iface, implement, internal_d_exports as internal, isRestatePromise, object, rpc, serde, serve, service, workflow };
|
|
13
|
+
export { CancelledError, Client, ClientCallOptions, ClientFromDescriptors, ClientSendOptions, CombineablePromise, Context, ContextDate, DefaultServiceOptions, Descriptor, DescriptorOpts, DurablePromise, Duration, EndpointOptions, EntryOptions, FnOf, GenericCall, GenericSend, HandlerDescriptor, Hooks, HooksProvider, ImplementedDefinition, ImplementedObjectDefinition, ImplementedServiceDefinition, ImplementedWorkflowDefinition, InferArg, InferInput, InferOutput, Interceptor, InvocationHandle, InvocationId, InvocationIdParser, InvocationPromise, InvocationReference, JournalValueCodec, KeyValueStore, LogMetadata, LogSource, LoggerContext, LoggerTransport, NodeEndpointOptions, ObjectContext, ObjectDescriptor, ObjectHandler, ObjectHandlerOpts, ObjectImplHandlers, ObjectOptions, ObjectOpts, ObjectPerHandlerOpts, ObjectSharedContext, Opts, PauseError, Rand, RemoveVoidArgument, Request, RestateContext, RestateEndpoint, RestateEndpointBase, RestateError, RestateLogLevel, RestateObjectContext, RestateObjectSharedContext, RestatePromise, RestateWorkflowContext, RestateWorkflowSharedContext, RetryPolicy, RetryableError, RetryableErrorOptions, RunAction, RunOptions, ScopedContext, SendClient, SendClientFromDescriptors, SendOpts, Serde, ServeOptions, Service, ServiceDefinition, ServiceDefinitionFrom, ServiceDescriptor, ServiceHandler, ServiceHandlerOpts, ServiceImplHandlers, ServiceInterface, ServiceOptions, ServiceOpts, ServicePerHandlerOpts, SignalReference, StatePreload, Target, TerminalError, TimeoutError, TypedState, UntypedState, VirtualObject, VirtualObjectDefinition, VirtualObjectDefinitionFrom, Workflow, WorkflowContext, WorkflowDefinition, WorkflowDefinitionFrom, WorkflowDescriptor, WorkflowHandler, WorkflowHandlerOpts, WorkflowImplHandlers, WorkflowOptions, WorkflowOpts, WorkflowPerHandlerOpts, WorkflowSharedContext, WorkflowSharedHandler, createEndpointHandler, createObjectHandler, createObjectSharedHandler, createServiceHandler, createWorkflowHandler, createWorkflowSharedHandler, endpoint, handlers, iface, implement, internal_d_exports as internal, isRestatePromise, object, rpc, serde, serve, service, workflow };
|