effect-cf 0.27.0 → 0.28.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.
Files changed (65) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{Artifacts-DcoXcRP5.d.mts → Artifacts-DnHQA-Ax.d.mts} +42 -25
  3. package/dist/{Artifacts-BhWrdyqX.mjs → Artifacts-rq3hUKQE.mjs} +46 -30
  4. package/dist/{Binding-COCtoJXa.d.mts → Binding-xJJJPmiD.d.mts} +6 -5
  5. package/dist/ComputerArtifacts.d.mts +1 -1
  6. package/dist/ComputerArtifacts.mjs +9 -9
  7. package/dist/ComputerWorkspace.d.mts +5 -5
  8. package/dist/ComputerWorkspace.mjs +107 -75
  9. package/dist/ComputerWorkspaceHost.d.mts +1 -1
  10. package/dist/ComputerWorkspaceHost.mjs +18 -16
  11. package/dist/{DurableObjectState-biHrHwrh.d.mts → DurableObjectState-B3uFY1eM.d.mts} +85 -62
  12. package/dist/{DurableObjectState-Dux8KfjG.mjs → DurableObjectState-BjkK2kwH.mjs} +3 -3
  13. package/dist/{ErrorMessage-_lg53p3W.mjs → ErrorMessage-BM0K-Nik.mjs} +1 -4
  14. package/dist/{Hyperdrive-6p59yyVk.d.mts → Hyperdrive-z-9fFz15.d.mts} +2 -2
  15. package/dist/HyperdrivePg.d.mts +2 -2
  16. package/dist/Vitest.d.mts +6 -5
  17. package/dist/Vitest.mjs +2 -2
  18. package/dist/{WorkflowBinding-zlRPCXVf.d.mts → WorkflowBinding-wZ-yGHow.d.mts} +5 -10
  19. package/dist/index.d.mts +82 -60
  20. package/dist/index.mjs +268 -170
  21. package/package.json +1 -1
  22. package/src/AiGateway.ts +62 -7
  23. package/src/AnalyticsEngine.ts +17 -13
  24. package/src/Artifacts.ts +111 -47
  25. package/src/Binding.ts +34 -23
  26. package/src/BrowserRendering.ts +72 -33
  27. package/src/CloudflareOtlp.ts +8 -5
  28. package/src/ComputerArtifacts.ts +17 -9
  29. package/src/ComputerWorkspace.ts +202 -98
  30. package/src/ComputerWorkspaceHost.ts +55 -27
  31. package/src/ContainerNamespace.ts +8 -9
  32. package/src/D1.ts +8 -14
  33. package/src/DurableObject.ts +27 -11
  34. package/src/DurableObjectAlarm.ts +17 -5
  35. package/src/DurableObjectDefinition.ts +89 -72
  36. package/src/DurableObjectNamespace.ts +26 -12
  37. package/src/DurableObjectRpcWebSocket.ts +9 -10
  38. package/src/DurableObjectState.ts +1 -0
  39. package/src/DurableObjectStorage.ts +5 -2
  40. package/src/DurableObjectWebSocket.ts +4 -1
  41. package/src/Email.ts +26 -25
  42. package/src/Hyperdrive.ts +4 -10
  43. package/src/Images.ts +12 -14
  44. package/src/Kv.ts +15 -17
  45. package/src/Queue.ts +2 -1
  46. package/src/QueueBinding.ts +7 -12
  47. package/src/QueueDefinition.ts +7 -2
  48. package/src/R2.ts +33 -24
  49. package/src/Rpc.ts +15 -21
  50. package/src/RpcDefinition.ts +33 -38
  51. package/src/ServiceBinding.ts +26 -8
  52. package/src/Vectorize.ts +45 -18
  53. package/src/Vitest.ts +9 -3
  54. package/src/WebTransport.ts +11 -5
  55. package/src/Worker.ts +91 -21
  56. package/src/WorkerDefinition.ts +143 -63
  57. package/src/WorkersAi.ts +50 -28
  58. package/src/Workflow.ts +66 -13
  59. package/src/WorkflowBinding.ts +18 -25
  60. package/src/WorkflowDefinition.ts +4 -2
  61. package/src/internal/Entrypoint.ts +29 -13
  62. package/src/internal/ErrorMessage.ts +7 -6
  63. package/src/internal/RpcInvocation.ts +34 -11
  64. package/src/internal/Runtime.ts +33 -22
  65. package/src/internal/WorkerContext.ts +3 -3
@@ -1,4 +1,4 @@
1
- import { t as ArtifactsBinding } from "./Artifacts-DcoXcRP5.mjs";
1
+ import { t as ArtifactsBinding } from "./Artifacts-DnHQA-Ax.mjs";
2
2
  import { GitClientFactory } from "@cloudflare/computer/git";
3
3
  import { DurableObjectStorageLike, SyncRetryIntent, SyncRetryOptions, SyncRetryScheduler, WithWorkspaceCtor, WorkspaceAttributeValue, WorkspaceAttributes, WorkspaceObserver, WorkspaceOptions, WorkspaceRegisteredBackend, WorkspaceRetryPendingSyncResult, WorkspaceServiceProxy, WorkspaceSpan } from "@cloudflare/computer";
4
4
  import { ShellModuleGroup, WorkerShellBackendOptions, WorkerShellLoader, WorkspaceEgressPolicy } from "@cloudflare/computer/backends/worker-shell";
@@ -18,24 +18,26 @@ const toWorkspaceOptions = (config) => {
18
18
  egress: egress ?? { mode: "none" }
19
19
  }));
20
20
  }
21
- return {
21
+ const options = {
22
22
  storage: config.storage,
23
- git: config.git ?? createGitClient(),
24
- ...config.gitIdentity === void 0 ? {} : { defaultGitIdentity: config.gitIdentity },
25
- ...backends.length === 0 ? {} : { backends },
26
- ...config.sessionId === void 0 ? {} : { sessionId: config.sessionId },
27
- ...config.mounts === void 0 ? {} : { mounts: config.mounts },
28
- ...config.observer === void 0 ? {} : { observer: config.observer },
29
- ...config.retryScheduler === void 0 ? {} : { retryScheduler: config.retryScheduler },
30
- ...config.retry === void 0 ? {} : { retry: config.retry },
31
- ...config.assets === void 0 ? {} : { assets: config.assets },
32
- ...config.artifacts === void 0 ? {} : { artifacts: {
33
- binding: config.artifacts.binding,
34
- ...config.artifacts.sessionId === void 0 ? {} : { sessionId: config.artifacts.sessionId }
35
- } },
36
- ...config.now === void 0 ? {} : { now: config.now },
37
- ...config.useThink === void 0 ? {} : { useThink: config.useThink }
23
+ git: config.git ?? createGitClient()
38
24
  };
25
+ if (config.gitIdentity !== void 0) options.defaultGitIdentity = config.gitIdentity;
26
+ if (backends.length !== 0) options.backends = backends;
27
+ if (config.sessionId !== void 0) options.sessionId = config.sessionId;
28
+ if (config.mounts !== void 0) options.mounts = config.mounts;
29
+ if (config.observer !== void 0) options.observer = config.observer;
30
+ if (config.retryScheduler !== void 0) options.retryScheduler = config.retryScheduler;
31
+ if (config.retry !== void 0) options.retry = config.retry;
32
+ if (config.assets !== void 0) options.assets = config.assets;
33
+ if (config.artifacts !== void 0) {
34
+ const artifacts = { binding: config.artifacts.binding };
35
+ if (config.artifacts.sessionId !== void 0) artifacts.sessionId = config.artifacts.sessionId;
36
+ options.artifacts = artifacts;
37
+ }
38
+ if (config.now !== void 0) options.now = config.now;
39
+ if (config.useThink !== void 0) options.useThink = config.useThink;
40
+ return options;
39
41
  };
40
42
  const HostArguments = Symbol("effect-cf/ComputerWorkspaceHost/arguments");
41
43
  /**
@@ -1,5 +1,5 @@
1
- import { c as WorkerEnvironment, n as BindingService, r as BindingValidationError, s as WorkerEnv, t as BindingNotFoundError } from "./Binding-COCtoJXa.mjs";
2
- import { Cause, Context, Effect, Layer, Option, Schema, Scope } from "effect";
1
+ import { c as WorkerEnvironment, n as BindingService, r as BindingValidationError, s as WorkerEnv, t as BindingNotFoundError } from "./Binding-xJJJPmiD.mjs";
2
+ import { Cause, Context, Effect, Layer, Option, Predicate, Schema, Scope } from "effect";
3
3
  import { HttpServerRequest, HttpServerResponse } from "effect/unstable/http";
4
4
  import { RpcStub, RpcTarget, WorkerEntrypoint } from "cloudflare:workers";
5
5
  declare namespace DurableObjectStorage_d_exports {
@@ -236,13 +236,13 @@ declare const attachment: <const AttachmentSchema extends Schema.Codec<any, any,
236
236
  interface DurableWebSocketHandlers<R = never, E = unknown> {
237
237
  readonly message?: (socket: DurableWebSocket, message: string | ArrayBuffer) => Effect.Effect<void, E, R>;
238
238
  readonly close?: (socket: DurableWebSocket, code: number, reason: string, wasClean: boolean) => Effect.Effect<void, E, R>;
239
- readonly error?: (socket: DurableWebSocket, error: unknown) => Effect.Effect<void, E, R>;
239
+ readonly error?: (socket: DurableWebSocket, cause: unknown) => Effect.Effect<void, E, R>;
240
240
  }
241
241
  /** Maps compact websocket lifecycle handler names to `DurableObject.make` options. */
242
242
  declare const handlers: <R = never, E = unknown>(options: DurableWebSocketHandlers<R, E>) => {
243
243
  webSocketMessage: ((socket: DurableWebSocket, message: string | ArrayBuffer) => Effect.Effect<void, E, R>) | undefined;
244
244
  webSocketClose: ((socket: DurableWebSocket, code: number, reason: string, wasClean: boolean) => Effect.Effect<void, E, R>) | undefined;
245
- webSocketError: ((socket: DurableWebSocket, error: unknown) => Effect.Effect<void, E, R>) | undefined;
245
+ webSocketError: ((socket: DurableWebSocket, cause: unknown) => Effect.Effect<void, E, R>) | undefined;
246
246
  };
247
247
  declare namespace Rpc_d_exports {
248
248
  export { DisposableValue, MethodArgs, MethodKey, MethodReturn, Provider, Result$1 as Result, RpcStub, RpcTarget, Serializable, Stub, Stubable, Stubify, dispose, isDisposable, resolve, scoped };
@@ -252,20 +252,19 @@ type Stub<T extends Stubable> = Rpc.Stub<T>;
252
252
  type Provider<T extends object, Reserved extends string = never> = Rpc.Provider<T, Reserved>;
253
253
  type BaseType = void | undefined | null | boolean | number | bigint | string | TypedArray | ArrayBuffer | DataView | Date | Error | RegExp | ReadableStream<Uint8Array> | WritableStream<Uint8Array> | Request | Response | Headers;
254
254
  type Serializable<T> = BaseType | Map<T extends Map<infer Key, unknown> ? Serializable<Key> : never, T extends Map<unknown, infer Value> ? Serializable<Value> : never> | Set<T extends Set<infer Value> ? Serializable<Value> : never> | ReadonlyArray<T extends ReadonlyArray<infer Value> ? Serializable<Value> : never> | { [Key in keyof T]: Key extends number | string ? Serializable<T[Key]> : never; } | Stub<Stubable> | Stubable;
255
- type Stubify<T> = T extends Stubable ? Stub<T> : T extends Map<infer Key, infer Value> ? Map<Stubify<Key>, Stubify<Value>> : T extends Set<infer Value> ? Set<Stubify<Value>> : T extends Array<infer Value> ? Array<Stubify<Value>> : T extends ReadonlyArray<infer Value> ? ReadonlyArray<Stubify<Value>> : T extends BaseType ? T : T extends {
256
- [key: string | number]: unknown;
257
- } ? { [Key in keyof T]: Stubify<T[Key]>; } : T;
255
+ type Stubify<T> = T extends Stubable ? Stub<T> : T extends Map<infer Key, infer Value> ? Map<Stubify<Key>, Stubify<Value>> : T extends Set<infer Value> ? Set<Stubify<Value>> : T extends Array<infer Value> ? Array<Stubify<Value>> : T extends ReadonlyArray<infer Value> ? ReadonlyArray<Stubify<Value>> : T extends BaseType ? T : T extends Record<string | number, infer _Value> ? { [Key in keyof T]: Stubify<T[Key]>; } : T;
258
256
  type MaybeProvider<T> = T extends object ? Provider<T> : unknown;
259
257
  type MaybeDisposable<T> = T extends object ? Disposable : unknown;
260
258
  type Result$1<T> = T extends Stubable ? Promise<Stub<T>> & Provider<T> : T extends Serializable<T> ? Promise<Stubify<T> & MaybeDisposable<T>> & MaybeProvider<T> : never;
261
- type MethodKey<Api> = { [Key in keyof Api]-?: Key extends string ? Api[Key] extends ((...args: Array<any>) => unknown) ? Key : never : never; }[keyof Api];
262
- type MethodArgs<Api, Method extends keyof Api> = Api[Method] extends ((...args: infer Args) => unknown) ? Args : never;
259
+ type MethodKey<Api> = { [Key in keyof Api]-?: Key extends string ? Api[Key] extends ((...args: Array<any>) => any) ? Key : never : never; }[keyof Api];
260
+ type MethodArgs<Api, Method extends keyof Api> = Api[Method] extends ((...args: infer Args) => any) ? Args : never;
263
261
  type MethodReturn<Api, Method extends keyof Api> = Api[Method] extends ((...args: Array<any>) => infer Return) ? Return : never;
264
262
  type DisposableValue = {
265
263
  [Symbol.dispose](): void;
266
264
  };
267
- declare const isDisposable: (value: unknown) => value is DisposableValue;
268
- declare const dispose: (value: unknown) => Effect.Effect<void>;
265
+ type RpcBoundaryValue = Schema.Schema.Type<typeof Schema.Unknown>;
266
+ declare const isDisposable: (value: RpcBoundaryValue) => value is DisposableValue;
267
+ declare const dispose: (value: RpcBoundaryValue) => Effect.Effect<void>;
269
268
  declare const resolve: <A>(value: A) => Effect.Effect<Awaited<A>, unknown>;
270
269
  declare const scoped: <A>(value: A) => Effect.Effect<Awaited<A>, unknown, Scope.Scope>;
271
270
  declare namespace RpcDefinition_d_exports {
@@ -327,14 +326,15 @@ declare class RpcSuccessEncodeError extends RpcSuccessEncodeError_base {
327
326
  }
328
327
  /** Errors raised server-side that must survive the Cloudflare RPC wire. */
329
328
  type WireError = RpcArgumentCountError | RpcArgumentDecodeError | RpcSuccessEncodeError;
330
- declare const isWireError: (error: unknown) => error is WireError;
329
+ type WireValue = Schema.Schema.Type<typeof Schema.Unknown>;
330
+ declare const isWireError: (error: WireValue) => error is WireError;
331
331
  /**
332
332
  * Encodes package RPC errors into a plain `Error` envelope so their tags
333
333
  * survive Cloudflare RPC serialization, which drops custom error properties.
334
334
  */
335
- declare const encodeWireError: (error: unknown) => unknown;
335
+ declare const encodeWireError: (error: WireValue) => WireValue;
336
336
  /** Restores package RPC errors from the {@link encodeWireError} envelope. */
337
- declare const decodeWireError: (cause: unknown) => unknown;
337
+ declare const decodeWireError: (cause: WireValue) => WireValue;
338
338
  declare const reservedMethodNames: Set<string>;
339
339
  type ReservedMethodName$3 = "constructor" | "fetch" | "connect" | "alarm" | "webSocketMessage" | "webSocketClose" | "webSocketError" | "then" | "dup" | "dispose" | "serialize" | "deserialize";
340
340
  type ServiceFreeSchema$1 = Schema.Codec<any, any, never, never>;
@@ -350,14 +350,14 @@ declare namespace Method$2 {
350
350
  export type Args<Self extends Any> = ArgsFromSchemas<Self["args"]>;
351
351
  export type EncodedArgs<Self extends Any> = EncodedArgsFromSchemas<Self["args"]>;
352
352
  export type Success<Self extends Any> = Schema.Schema.Type<Self["success"]>;
353
- export type EncodedSuccess<Self extends Any> = Schema.Json;
353
+ export type EncodedSuccess<_Self extends Any> = Schema.Json;
354
354
  export {};
355
355
  }
356
356
  type Methods$1 = Record<string, Method$2.Any>;
357
- type NoReservedMethods$1<MethodsShape extends Methods$1, Reserved extends string = ReservedMethodName$3> = Extract<keyof MethodsShape, Reserved> extends never ? MethodsShape : never;
358
- interface Definition$3<Id extends string = string, MethodsShape extends Methods$1 = Methods$1> {
357
+ type NoReservedMethods$1<MethodDefinitions extends Methods$1, Reserved extends string = ReservedMethodName$3> = Extract<keyof MethodDefinitions, Reserved> extends never ? MethodDefinitions : never;
358
+ interface Definition$3<Id extends string = string, MethodDefinitions extends Methods$1 = Methods$1> {
359
359
  readonly id: Id;
360
- readonly methods: MethodsShape;
360
+ readonly methods: MethodDefinitions;
361
361
  }
362
362
  declare namespace Definition$3 {
363
363
  type Any = Definition$3<string, Methods$1>;
@@ -365,7 +365,8 @@ declare namespace Definition$3 {
365
365
  type Api<Self extends Any, Reserved extends string = never> = Provider<ServerApi<Self>, Reserved>;
366
366
  type MethodNames<Self extends Any> = Extract<keyof Self["methods"], string>;
367
367
  }
368
- declare const assertNoReservedMethods: (target: string, methods: Record<string, unknown>, reserved: ReadonlySet<string>) => void;
368
+ type ReservedMethodValue = Schema.Schema.Type<typeof Schema.Unknown>;
369
+ declare const assertNoReservedMethods: <MethodDefinitions extends Readonly<Record<string, ReservedMethodValue>>>(target: string, methods: MethodDefinitions, reserved: ReadonlySet<string>) => void;
369
370
  declare function method$1<Success extends ServiceFreeSchema$1>(definition: {
370
371
  readonly success: Success;
371
372
  }): Method$2<readonly [], Success>;
@@ -376,8 +377,8 @@ declare function method$1<const Args extends ReadonlyArray<ServiceFreeSchema$1>,
376
377
  declare const decodeArgs: <const Self extends Definition$3.Any, MethodName extends Definition$3.MethodNames<Self>>(definition: Self, methodName: MethodName, args: readonly unknown[]) => Effect.Effect<Self["methods"][MethodName]["args"] extends (infer T) ? T extends Self["methods"][MethodName]["args"] ? T extends readonly [] ? [] : T extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ... /*elided*/ any] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<T[number]>[] : never : never, RpcArgumentCountError | RpcArgumentDecodeError, never>;
377
378
  declare const encodeArgs: <const Self extends Definition$3.Any, MethodName extends Definition$3.MethodNames<Self>>(definition: Self, methodName: MethodName, args: Self["methods"][MethodName]["args"] extends (infer T) ? T extends Self["methods"][MethodName]["args"] ? T extends readonly [] ? [] : T extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends ServiceFreeSchema$1, ...infer Tail extends readonly ServiceFreeSchema$1[]] ? [Schema.Schema.Type<Head>, ... /*elided*/ any] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<Tail[number]>[]] : Schema.Schema.Type<T[number]>[] : never : never) => Effect.Effect<Self["methods"][MethodName]["args"] extends (infer T_1 extends readonly ServiceFreeSchema$1[]) ? { [Index in keyof T_1]: Schema.Json; } : never, RpcArgumentCountError | RpcArgumentEncodeError, never>;
378
379
  declare const encodeSuccess: <const Self extends Definition$3.Any, MethodName extends Definition$3.MethodNames<Self>>(definition: Self, methodName: MethodName, value: Method$2.Success<Self["methods"][MethodName]>) => Effect.Effect<Method$2.EncodedSuccess<Self["methods"][MethodName]>, RpcSuccessEncodeError>;
379
- declare const decodeSuccess: <const Self extends Definition$3.Any, MethodName extends Definition$3.MethodNames<Self>>(definition: Self, methodName: MethodName, value: unknown) => Effect.Effect<Method$2.Success<Self["methods"][MethodName]>, RpcSuccessDecodeError>;
380
- declare const make$3: <Id extends string, const MethodsShape extends Methods$1>(id: Id, methods: MethodsShape) => Definition$3<Id, MethodsShape>;
380
+ declare const decodeSuccess: <const Self extends Definition$3.Any, MethodName extends Definition$3.MethodNames<Self>>(definition: Self, methodName: MethodName, value: WireValue) => Effect.Effect<Method$2.Success<Self["methods"][MethodName]>, RpcSuccessDecodeError>;
381
+ declare const make$3: <Id extends string, const MethodDefinitions extends Methods$1>(id: Id, methods: MethodDefinitions) => Definition$3<Id, MethodDefinitions>;
381
382
  declare namespace QueueBinding_d_exports {
382
383
  export { MessageSendRequest, QueueBindingClient, QueueBindingDefinition, QueueMetrics, QueueOperationError, QueueProducer, QueueSendBatchOptions, QueueSendBatchResponse, QueueSendOptions, QueueSendResponse, isQueue, layer$1 as layer, makeClient$1 as makeClient };
383
384
  }
@@ -388,6 +389,7 @@ type QueueSendBatchResponse = CloudflareQueueSendBatchResponse;
388
389
  type QueueMetrics = CloudflareQueueMetrics;
389
390
  type MessageSendRequest<Body> = CloudflareMessageSendRequest<Body>;
390
391
  type QueueProducer<Body> = Pick<CloudflareQueue<Body>, "send"> & Partial<Pick<CloudflareQueue<Body>, "sendBatch" | "metrics">>;
392
+ type QueueCandidate = Parameters<typeof Predicate.isUnknown>[0];
391
393
  interface QueueBindingDefinition<Message extends ServiceFreeSchema$1> {
392
394
  /** Binding name as configured in `wrangler.jsonc`. */
393
395
  readonly binding: string;
@@ -398,7 +400,7 @@ interface QueueBindingClient<Message extends ServiceFreeSchema$1> {
398
400
  readonly send: (message: Schema.Schema.Type<Message>, options?: QueueSendOptions) => Effect.Effect<void, QueueOperationError | Schema.SchemaError>;
399
401
  readonly sendBatch: (messages: Iterable<MessageSendRequest<Schema.Schema.Type<Message>>>, options?: QueueSendBatchOptions) => Effect.Effect<void, QueueOperationError | Schema.SchemaError>;
400
402
  readonly metrics: () => Effect.Effect<QueueMetrics, QueueOperationError>;
401
- readonly rawUnsafe: Effect.Effect<CloudflareQueue<Schema.Codec.Encoded<Message>>>;
403
+ readonly rawUnsafe: Effect.Effect<QueueProducer<Schema.Codec.Encoded<Message>>>;
402
404
  }
403
405
  declare const QueueOperationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
404
406
  readonly _tag: "QueueOperationError";
@@ -409,7 +411,7 @@ declare class QueueOperationError extends QueueOperationError_base<{
409
411
  readonly cause: unknown;
410
412
  readonly message: string;
411
413
  }> {}
412
- declare const isQueue: <Body>(value: unknown) => value is QueueProducer<Body>;
414
+ declare const isQueue: <Body>(value: QueueCandidate) => value is QueueProducer<Body>;
413
415
  declare const makeClient$1: <Message extends ServiceFreeSchema$1>(definition: QueueBindingDefinition<Message>) => ((queue: QueueProducer<Schema.Codec.Encoded<Message>>) => QueueBindingClient<Message>);
414
416
  declare const layer$1: <Self, Message extends ServiceFreeSchema$1>(tag: Context.Service<Self, QueueBindingClient<Message>>, definition: QueueBindingDefinition<Message>) => import("effect/Layer").Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
415
417
  declare namespace QueueDefinition_d_exports {
@@ -423,7 +425,7 @@ declare namespace Definition$2 {
423
425
  type Any = Definition$2<string, ServiceFreeSchema$1>;
424
426
  }
425
427
  type Handler$1<ROut, Self extends Definition$2.Any> = (batch: QueueBatch<Schema.Schema.Type<Self["message"]>>) => Effect.Effect<void, unknown, ExecutionContext | WorkerContext | WorkerEnvironment | Scope.Scope | ROut>;
426
- interface Options$2<ROut, Self extends Definition$2.Any> extends Omit<WorkerOptions<ROut, Record<never, never>>, "queue" | "rpc"> {
428
+ interface Options$2<ROut, Self extends Definition$2.Any> extends Omit<WorkerOptions<ROut, never, never, Record<never, never>>, "queue" | "rpc"> {
427
429
  readonly queue: Handler$1<ROut, Self>;
428
430
  readonly rpc?: never;
429
431
  }
@@ -438,7 +440,7 @@ interface TagClass$2<Self, Id extends string, Message extends ServiceFreeSchema$
438
440
  readonly send: (message: Schema.Schema.Type<Message>, options?: QueueSendOptions) => Effect.Effect<void, QueueOperationError | Schema.SchemaError, Self>;
439
441
  readonly sendBatch: (messages: Iterable<MessageSendRequest<Schema.Schema.Type<Message>>>, options?: QueueSendBatchOptions) => Effect.Effect<void, QueueOperationError | Schema.SchemaError, Self>;
440
442
  readonly metrics: () => Effect.Effect<QueueMetrics, QueueOperationError, Self>;
441
- readonly rawUnsafe: Effect.Effect<globalThis.Queue<Schema.Codec.Encoded<Message>>, never, Self>;
443
+ readonly rawUnsafe: Effect.Effect<QueueProducer<Schema.Codec.Encoded<Message>>, never, Self>;
442
444
  }
443
445
  declare const make$2: <Id extends string, Message extends ServiceFreeSchema$1>(id: Id, definition: {
444
446
  readonly message: Message;
@@ -481,6 +483,7 @@ declare class QueueMessageDecodeError extends QueueMessageDecodeError_base<{
481
483
  }
482
484
  type RuntimeContext<ROut> = ExecutionContext | WorkerContext | WorkerEnvironment | ROut;
483
485
  type QueueHandlerContext<ROut> = RuntimeContext<ROut> | Scope.Scope;
486
+ type EncodedQueueBody = globalThis.Message<unknown>["body"];
484
487
  type QueueHandler<ROut, Body = unknown> = (batch: QueueBatch<Body>) => Effect.Effect<void, unknown, QueueHandlerContext<ROut>>;
485
488
  interface QueueOptions<ROut, Body = unknown> {
486
489
  readonly queue: QueueHandler<ROut, Body>;
@@ -495,7 +498,7 @@ declare const fromMessage: <Body>(message: globalThis.Message<unknown>, body: Bo
495
498
  retry: (options?: globalThis.QueueRetryOptions) => Effect.Effect<void, never, never>;
496
499
  };
497
500
  declare const fromMessageBatch: <Body>(batch: globalThis.MessageBatch<unknown>, messages: ReadonlyArray<QueueMessage<Body>>) => QueueBatch<Body>;
498
- declare const decodeBatch: <Body>(batch: globalThis.MessageBatch<unknown>, decodeBody: (body: unknown) => Effect.Effect<Body, unknown>) => Effect.Effect<QueueBatch<Body>, QueueMessageDecodeError>;
501
+ declare const decodeBatch: <Body>(batch: globalThis.MessageBatch<unknown>, decodeBody: (body: EncodedQueueBody) => Effect.Effect<Body, unknown>) => Effect.Effect<QueueBatch<Body>, QueueMessageDecodeError>;
499
502
  type Definition$1<Id extends string = string, Message extends Definition$2.Any["message"] = Definition$2.Any["message"]> = Definition$2<Id, Message>;
500
503
  declare namespace Definition$1 {
501
504
  type Any = Definition$2.Any;
@@ -511,8 +514,8 @@ type Options$1<ROut, Self extends Definition$2.Any> = Options$2<ROut, Self>;
511
514
  //#endregion
512
515
  //#region src/internal/RpcInvocation.d.ts
513
516
  type AnyArgs = Array<any>;
514
- type AsyncMethodKey<Api> = { [Key in keyof Api]-?: Key extends string ? Api[Key] extends ((...args: AnyArgs) => Promise<unknown>) ? Key : never : never; }[keyof Api];
515
- type AsyncMethodArgs<Api, Method extends keyof Api> = Api[Method] extends ((...args: infer Args) => Promise<unknown>) ? Args : never;
517
+ type AsyncMethodKey<Api> = { [Key in keyof Api]-?: Key extends string ? Api[Key] extends ((...args: AnyArgs) => Promise<any>) ? Key : never : never; }[keyof Api];
518
+ type AsyncMethodArgs<Api, Method extends keyof Api> = Api[Method] extends ((...args: infer Args) => Promise<any>) ? Args : never;
516
519
  type AsyncMethodSuccess<Api, Method extends keyof Api> = Api[Method] extends ((...args: AnyArgs) => Promise<infer A>) ? A : never;
517
520
  type AsyncMethodCloudflareReturn<Api, Method extends keyof Api> = Result$1<AsyncMethodSuccess<Api, Method>>;
518
521
  declare namespace ServiceBinding_d_exports {
@@ -525,22 +528,22 @@ declare const TypeId: "effect-cf/ServiceBinding";
525
528
  interface ServiceFetcher {
526
529
  fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
527
530
  }
528
- type RpcClient<Api> = { readonly [Key in keyof Api as Key extends string ? Api[Key] extends ((...args: Array<any>) => unknown) ? Key : never : never]: Api[Key]; };
531
+ type RpcClient<Api> = { readonly [Key in keyof Api as Key extends string ? Api[Key] extends ((...args: Array<any>) => any) ? Key : never : never]: Api[Key]; };
529
532
  type ReservedMethodName$2 = ReservedMethodName$1 | "fetch";
530
533
  /**
531
534
  * Native Cloudflare service object including optional RPC methods.
532
535
  */
533
536
  type ServiceBindingClient<Api extends object> = ServiceFetcher & RpcClient<Provider<Api, ReservedMethodName$2>>;
534
- type ApiFromDefinition<Definition$4> = Definition$4 extends Definition.Any ? ServerApi$1<Definition$4> : never;
537
+ type ApiFromDefinition<Definition$12> = Definition$12 extends Definition.Any ? ServerApi$1<Definition$12> : never;
535
538
  type ApiOrDefinition<Api extends object, Definition> = [Api] extends [never] ? ApiFromDefinition<Definition> : Api;
536
539
  /**
537
540
  * Binding metadata used to create an Effect service from a Worker binding.
538
541
  */
539
- interface ServiceBindingDefinition<Definition$9 extends Definition.Any | undefined = undefined> {
542
+ interface ServiceBindingDefinition<Definition$8 extends Definition.Any | undefined = undefined> {
540
543
  /** Binding name as configured in `wrangler.jsonc`. */
541
544
  readonly binding: string;
542
545
  /** Optional RPC schema used for argument/result encoding. */
543
- readonly definition?: Definition$9;
546
+ readonly definition?: Definition$8;
544
547
  }
545
548
  declare const ServiceBindingFetchError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
546
549
  readonly _tag: "ServiceBindingFetchError";
@@ -572,9 +575,9 @@ type ServiceMethodArgs<Api, Method extends keyof Api> = AsyncMethodArgs<Api, Met
572
575
  type ServiceMethodSuccess<Api, Method extends keyof Api> = AsyncMethodSuccess<Api, Method>;
573
576
  type ServiceMethodCloudflareReturn<Api, Method extends keyof Api> = AsyncMethodCloudflareReturn<Api, Method>;
574
577
  type ServiceCall<R, Api> = <Method extends ServiceMethodKey<Api>>(method: Method, ...args: ServiceMethodArgs<Api, Method>) => Effect.Effect<ServiceMethodSuccess<Api, Method>, ServiceBindingRpcError, R>;
575
- type DefinitionDirectMethods<R, Definition$13 extends Definition.Any> = { readonly [Method in Definition$3.MethodNames<Definition$13>]: (...args: Method$2.Args<Definition$13["methods"][Method]>) => Effect.Effect<Method$2.Success<Definition$13["methods"][Method]>, ServiceBindingRpcError, R>; };
578
+ type DefinitionDirectMethods<R, Definition$11 extends Definition.Any> = { readonly [Method in Definition$3.MethodNames<Definition$11>]: (...args: Method$2.Args<Definition$11["methods"][Method]>) => Effect.Effect<Method$2.Success<Definition$11["methods"][Method]>, ServiceBindingRpcError, R>; };
576
579
  type DirectMethods<R, Definition$10> = Definition$10 extends Definition.Any ? DefinitionDirectMethods<R, Definition$10> : {};
577
- type ServiceBindingEffectClient<Api extends object, Definition$6 extends Definition.Any | undefined = undefined> = DirectMethods<never, Definition$6> & {
580
+ type ServiceBindingEffectClient<Api extends object, Definition$4 extends Definition.Any | undefined = undefined> = DirectMethods<never, Definition$4> & {
578
581
  /**
579
582
  * Forwards an HTTP request to the bound Worker service.
580
583
  *
@@ -659,15 +662,16 @@ type ServiceBindingEffectClient<Api extends object, Definition$6 extends Definit
659
662
  */
660
663
  readonly scopedCall: <Method extends ServiceMethodKey<Api>>(method: Method, ...args: ServiceMethodArgs<Api, Method>) => Effect.Effect<Awaited<ServiceMethodSuccess<Api, Method>>, unknown, Scope.Scope>;
661
664
  };
662
- type ServiceBindingStaticClient<R, Api extends object, Definition$7 extends Definition.Any | undefined = undefined> = DirectMethods<R, Definition$7> & {
665
+ type ServiceBindingStaticClient<R, Api extends object, Definition$5 extends Definition.Any | undefined = undefined> = DirectMethods<R, Definition$5> & {
663
666
  readonly fetch: (input: RequestInfo | URL, init?: RequestInit) => Effect.Effect<globalThis.Response, ServiceBindingFetchError, R>;
664
667
  readonly rpc: <Method extends ServiceMethodKey<Api>>(method: Method, ...args: ServiceMethodArgs<Api, Method>) => Effect.Effect<ServiceMethodCloudflareReturn<Api, Method>, ServiceBindingRpcError, R>;
665
668
  readonly call: <Method extends ServiceMethodKey<Api>>(method: Method, ...args: ServiceMethodArgs<Api, Method>) => Effect.Effect<ServiceMethodSuccess<Api, Method>, ServiceBindingRpcError, R>;
666
669
  readonly scopedCall: <Method extends ServiceMethodKey<Api>>(method: Method, ...args: ServiceMethodArgs<Api, Method>) => Effect.Effect<Awaited<ServiceMethodSuccess<Api, Method>>, unknown, Scope.Scope | R>;
667
670
  };
668
- declare const isServiceBindingClient: <Api extends object>(value: unknown) => value is ServiceBindingClient<Api>;
669
- declare const makeClient: <Api extends object, const Definition$8 extends Definition.Any | undefined = undefined>(definition: ServiceBindingDefinition<Definition$8>) => ((service: ServiceBindingClient<Api>) => ServiceBindingEffectClient<Api, Definition$8>);
670
- declare const layer: <Self, Api extends object, const Definition$12 extends Definition.Any | undefined = undefined>(tag: Context.Service<Self, ServiceBindingEffectClient<Api, Definition$12>>, definition: ServiceBindingDefinition<Definition$12>) => import("effect/Layer").Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
671
+ type ServiceBindingValue = Schema.Schema.Type<typeof Schema.Unknown>;
672
+ declare const isServiceBindingClient: <Api extends object>(value: ServiceBindingValue) => value is ServiceBindingClient<Api>;
673
+ declare const makeClient: <Api extends object, const Definition$13 extends Definition.Any | undefined = undefined>(definition: ServiceBindingDefinition<Definition$13>) => ((service: ServiceBindingClient<Api>) => ServiceBindingEffectClient<Api, Definition$13>);
674
+ declare const layer: <Self, Api extends object, const Definition$6 extends Definition.Any | undefined = undefined>(tag: Context.Service<Self, ServiceBindingEffectClient<Api, Definition$6>>, definition: ServiceBindingDefinition<Definition$6>) => import("effect/Layer").Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
671
675
  /**
672
676
  * Creates a typed Effect service for a Worker service binding.
673
677
  *
@@ -697,15 +701,15 @@ declare const layer: <Self, Api extends object, const Definition$12 extends Defi
697
701
  * });
698
702
  * ```
699
703
  */
700
- declare const Service: <Self, Api extends object = never>() => <Id extends string, const Definition$5 extends Definition.Any | undefined = undefined>(id: Id, definition: ServiceBindingDefinition<Definition$5>) => BindingService<Self, Id, ServiceBindingEffectClient<ApiOrDefinition<Api, Definition$5>, Definition$5>> & DirectMethods<Self, Definition$5> & {
704
+ declare const Service: <Self, Api extends object = never>() => <Id extends string, const Definition$9 extends Definition.Any | undefined = undefined>(id: Id, definition: ServiceBindingDefinition<Definition$9>) => BindingService<Self, Id, ServiceBindingEffectClient<ApiOrDefinition<Api, Definition$9>, Definition$9>> & DirectMethods<Self, Definition$9> & {
701
705
  readonly [TypeId]: typeof TypeId;
702
- readonly definition: ServiceBindingDefinition<Definition$5>;
706
+ readonly definition: ServiceBindingDefinition<Definition$9>;
703
707
  readonly fetch: (input: URL | RequestInfo<unknown, CfProperties<unknown>>, init?: RequestInit<CfProperties<unknown>> | undefined) => Effect.Effect<Response, ServiceBindingFetchError, Self>;
704
- readonly rpc: <Method extends ServiceMethodKey<ApiOrDefinition<Api, Definition$5>>>(method: Method, ...args: AsyncMethodArgs<ApiOrDefinition<Api, Definition$5>, Method>) => Effect.Effect<Result$1<AsyncMethodSuccess<ApiOrDefinition<Api, Definition$5>, Method>>, ServiceBindingRpcError, Self>;
705
- readonly call: <Method extends ServiceMethodKey<ApiOrDefinition<Api, Definition$5>>>(method: Method, ...args: AsyncMethodArgs<ApiOrDefinition<Api, Definition$5>, Method>) => Effect.Effect<AsyncMethodSuccess<ApiOrDefinition<Api, Definition$5>, Method>, ServiceBindingRpcError, Self>;
706
- readonly scopedCall: <Method extends ServiceMethodKey<ApiOrDefinition<Api, Definition$5>>>(method: Method, ...args: AsyncMethodArgs<ApiOrDefinition<Api, Definition$5>, Method>) => Effect.Effect<Awaited<AsyncMethodSuccess<ApiOrDefinition<Api, Definition$5>, Method>>, unknown, Self | Scope.Scope>;
708
+ readonly rpc: <Method extends ServiceMethodKey<ApiOrDefinition<Api, Definition$9>>>(method: Method, ...args: AsyncMethodArgs<ApiOrDefinition<Api, Definition$9>, Method>) => Effect.Effect<Result$1<AsyncMethodSuccess<ApiOrDefinition<Api, Definition$9>, Method>>, ServiceBindingRpcError, Self>;
709
+ readonly call: <Method extends ServiceMethodKey<ApiOrDefinition<Api, Definition$9>>>(method: Method, ...args: AsyncMethodArgs<ApiOrDefinition<Api, Definition$9>, Method>) => Effect.Effect<AsyncMethodSuccess<ApiOrDefinition<Api, Definition$9>, Method>, ServiceBindingRpcError, Self>;
710
+ readonly scopedCall: <Method extends ServiceMethodKey<ApiOrDefinition<Api, Definition$9>>>(method: Method, ...args: AsyncMethodArgs<ApiOrDefinition<Api, Definition$9>, Method>) => Effect.Effect<Awaited<AsyncMethodSuccess<ApiOrDefinition<Api, Definition$9>, Method>>, unknown, Self | Scope.Scope>;
707
711
  };
708
- declare const makeDirectMethods: <R, Api, Definition$11 extends Definition.Any | undefined>(rpcDefinition: Definition$11 | undefined, call: ServiceCall<R, Api>) => DirectMethods<R, Definition$11>;
712
+ declare const makeDirectMethods: <R, Api, Definition$7 extends Definition.Any | undefined>(rpcDefinition: Definition$7 | undefined, call: ServiceCall<R, Api>) => DirectMethods<R, Definition$7>;
709
713
  declare namespace WorkerDefinition_d_exports {
710
714
  export { Api, Definition, HandlerEffect, Handlers, LayerOptions, Method$1 as Method, Methods, NoReservedMethods, Options, ReservedMethodName$1 as ReservedMethodName, ServerApi$1 as ServerApi, ServiceFreeSchema, Tag, TagClass, Worker, implement, make$1 as make, method };
711
715
  }
@@ -722,7 +726,7 @@ declare namespace Method$1 {
722
726
  export type Args<Self extends Any> = ArgsFromSchemas<Self["args"]>;
723
727
  export type EncodedArgs<Self extends Any> = EncodedArgsFromSchemas<Self["args"]>;
724
728
  export type Success<Self extends Any> = Schema.Schema.Type<Self["success"]>;
725
- export type EncodedSuccess<Self extends Any> = Schema.Json;
729
+ export type EncodedSuccess<_Self extends Any> = Schema.Json;
726
730
  export {};
727
731
  }
728
732
  type Methods = Record<string, Method$1.Any>;
@@ -732,15 +736,15 @@ type Methods = Record<string, Method$1.Any>;
732
736
  * Create with {@link make} and reuse to type both worker implementations and
733
737
  * service bindings in other workers.
734
738
  */
735
- interface Definition<Id extends string = string, MethodsShape extends Methods = Methods> {
739
+ interface Definition<Id extends string = string, MethodDefinitions extends Methods = Methods> {
736
740
  readonly id: Id;
737
- readonly methods: MethodsShape;
741
+ readonly methods: MethodDefinitions;
738
742
  }
739
743
  declare namespace Definition {
740
744
  type Any = Definition<string, Methods>;
741
745
  }
742
746
  type ReservedMethodName$1 = ReservedMethodName;
743
- type NoReservedMethods<MethodsShape extends Methods> = Extract<keyof MethodsShape, ReservedMethodName$1> extends never ? MethodsShape : never;
747
+ type NoReservedMethods<MethodDefinitions extends Methods> = Extract<keyof MethodDefinitions, ReservedMethodName$1> extends never ? MethodDefinitions : never;
744
748
  /**
745
749
  * Promise-based client API derived from a {@link Definition}.
746
750
  */
@@ -750,19 +754,28 @@ type Api<Self extends Definition.Any> = Provider<ServerApi$1<Self>, ReservedMeth
750
754
  * Effect handlers for each RPC method in a worker definition.
751
755
  */
752
756
  type Handlers<ROut, Self extends Definition.Any> = { readonly [Key in keyof Self["methods"]]: (...args: Method$1.Args<Self["methods"][Key]>) => WorkerRpcHandler<ROut, Method$1.Success<Self["methods"][Key]>>; };
757
+ type BaseOptions<ROut, Self extends Definition.Any, REvent, EventLayerError> = Omit<WorkerOptions<ROut, REvent, EventLayerError, Handlers<ROut | REvent, Self>>, "eventLayer" | "rpc"> & {
758
+ readonly rpc: Handlers<ROut | REvent, Self>;
759
+ };
760
+ type EventLayerOptions<ROut, REvent, EventLayerError> = [REvent] extends [never] ? Pick<WorkerOptions<ROut, never, EventLayerError>, "eventLayer"> : {
761
+ readonly eventLayer: NonNullable<WorkerOptions<ROut, REvent, EventLayerError>["eventLayer"]>;
762
+ };
753
763
  /**
754
764
  * Worker constructor options for a specific RPC definition.
755
765
  */
756
- interface Options<ROut, Self extends Definition.Any, REvent = never, EventLayerError = never> extends Omit<WorkerOptions<ROut, REvent, EventLayerError, Handlers<ROut | REvent, Self>>, "rpc"> {
757
- readonly rpc: Handlers<ROut | REvent, Self>;
758
- }
766
+ type Options<ROut, Self extends Definition.Any, REvent = never, EventLayerError = never> = BaseOptions<ROut, Self, REvent, EventLayerError> & EventLayerOptions<ROut, REvent, EventLayerError>;
759
767
  type LayerOptions = {
760
768
  readonly binding: string;
761
769
  };
762
- type TagClass<Self, Id extends string, MethodsShape extends Methods> = Context.ServiceClass<Self, Id, ServiceBindingEffectClient<Api<Definition<Id, MethodsShape>>, Definition<Id, MethodsShape>>> & ServiceBindingStaticClient<Self, Api<Definition<Id, MethodsShape>>, Definition<Id, MethodsShape>> & {
770
+ type TagClass<Self, Id extends string, MethodDefinitions extends Methods> = Context.ServiceClass<Self, Id, ServiceBindingEffectClient<Api<Definition<Id, MethodDefinitions>>, Definition<Id, MethodDefinitions>>> & ServiceBindingStaticClient<Self, Api<Definition<Id, MethodDefinitions>>, Definition<Id, MethodDefinitions>> & {
763
771
  readonly id: Id;
764
- readonly methods: MethodsShape;
765
- readonly make: <ROut, LayerError, REvent = never, EventLayerError = never>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, options: Options<ROut, Definition<Id, MethodsShape>, REvent, EventLayerError>) => WorkerClass<Handlers<ROut | REvent, Definition<Id, MethodsShape>>, ROut | REvent>;
772
+ readonly methods: MethodDefinitions;
773
+ readonly make: {
774
+ <ROut, LayerError, REvent, EventLayerError = never>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, options: Options<ROut, Definition<Id, MethodDefinitions>, REvent, EventLayerError> & {
775
+ readonly eventLayer: NonNullable<WorkerOptions<ROut, REvent, EventLayerError>["eventLayer"]>;
776
+ }): WorkerClass<Handlers<ROut | REvent, Definition<Id, MethodDefinitions>>, ROut | REvent>;
777
+ <ROut, LayerError, REvent extends never = never, EventLayerError = never>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, options: Options<ROut, Definition<Id, MethodDefinitions>, REvent, EventLayerError>): WorkerClass<Handlers<ROut | REvent, Definition<Id, MethodDefinitions>>, ROut | REvent>;
778
+ };
766
779
  readonly layer: (options: LayerOptions) => Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
767
780
  };
768
781
  /**
@@ -777,8 +790,8 @@ declare const method: {
777
790
  readonly success: Success;
778
791
  }): Method$1<Args, Success>;
779
792
  };
780
- declare const make$1: <Id extends string, const MethodsShape extends Methods>(id: Id, methods: MethodsShape & NoReservedMethods<MethodsShape>) => TagClass<Definition<Id, MethodsShape>, Id, MethodsShape>;
781
- declare const Tag: <Self>() => <Id extends string, const MethodsShape extends Methods>(id: Id, methods: MethodsShape & NoReservedMethods<MethodsShape>) => TagClass<Self, Id, MethodsShape>;
793
+ declare const make$1: <Id extends string, const MethodDefinitions extends Methods>(id: Id, methods: MethodDefinitions & NoReservedMethods<MethodDefinitions>) => TagClass<Definition<Id, MethodDefinitions>, Id, MethodDefinitions>;
794
+ declare const Tag: <Self>() => <Id extends string, const MethodDefinitions extends Methods>(id: Id, methods: MethodDefinitions & NoReservedMethods<MethodDefinitions>) => TagClass<Self, Id, MethodDefinitions>;
782
795
  declare const Worker: typeof Tag;
783
796
  /**
784
797
  * Helper for implementing handlers with the exact method shape of a definition.
@@ -789,7 +802,7 @@ declare const implement: <ROut, const Self extends Definition.Any>(_definition:
789
802
  */
790
803
  type HandlerEffect<ROut, Self extends Definition.Any, Key extends keyof Self["methods"]> = WorkerRpcHandler<ROut, Method$1.Success<Self["methods"][Key]>>;
791
804
  declare namespace Worker_d_exports {
792
- export { Api, Definition, ExecutionContext, FetchHandler, FetchWorkerOptions, HandlerEffect, Handlers, LayerOptions, Method$1 as Method, Methods, NativeRequest, NoReservedMethods, Options, ReservedMethodName, RpcHandlers, ServerApi$1 as ServerApi, ServiceFreeSchema, Tag, TagClass, WorkerClass, WorkerContext, WorkerContextService, WorkerContextWaitUntilOptions, WorkerFetchSuccess, WorkerHandler, WorkerOptions, WorkerRpc, WorkerRpcHandler, WorkerRpcShape, implement, isWebSocketUpgrade, make, makeFetchHandler, method };
805
+ export { Api, Definition, ExecutionContext, FetchHandler, FetchWorkerOptions, HandlerEffect, Handlers, LayerOptions, Method$1 as Method, Methods, NativeRequest, NoReservedMethods, Options, ReservedMethodName, RpcHandlers, ServerApi$1 as ServerApi, ServiceFreeSchema, Tag, TagClass, WorkerClass, WorkerContext, WorkerContextService, WorkerContextWaitUntilOptions, WorkerFetchSuccess, WorkerHandler, WorkerOptions, WorkerRpc, WorkerRpcContract, WorkerRpcHandler, WorkerRpcContract as WorkerRpcShape, implement, isWebSocketUpgrade, make, makeFetchHandler, method };
793
806
  }
794
807
  declare const ExecutionContext_base: Context.ServiceClass<ExecutionContext, "effect-cf/ExecutionContext", globalThis.ExecutionContext<unknown>>;
795
808
  /**
@@ -845,6 +858,7 @@ type ReservedMethodName = ReservedMethodName$3 | "fetch" | "connect" | "queue" |
845
858
  type WorkerBaseContext<ROut> = ExecutionContext | WorkerContext | WorkerEnvironment | ROut;
846
859
  type WorkerFetchContext<ROut> = WorkerBaseContext<ROut> | NativeRequest | HttpServerRequest.HttpServerRequest | Scope.Scope;
847
860
  type WorkerRpcContext<ROut> = WorkerBaseContext<ROut> | Scope.Scope;
861
+ declare const FetchSymbol: unique symbol;
848
862
  /**
849
863
  * Successful result of a worker fetch handler: either a native `Response`
850
864
  * (returned to Cloudflare untouched) or an Effect `HttpServerResponse`
@@ -863,8 +877,8 @@ type WorkerRpcHandler<ROut, A = unknown> = Effect.Effect<A, unknown, WorkerRpcCo
863
877
  * Shape of worker RPC handlers passed to {@link make}.
864
878
  */
865
879
  type WorkerRpc<ROut> = Record<string, (...args: Array<any>) => WorkerRpcHandler<ROut>>;
866
- type WorkerRpcShape<Rpc extends WorkerRpc<ROut>, ROut> = { readonly [Key in keyof Rpc]: Rpc[Key] extends ((...args: infer Args) => Effect.Effect<infer A, unknown, WorkerRpcContext<ROut>>) ? (...args: Args) => Promise<A> : never; };
867
- type RpcHandlers<ROut, Api> = { readonly [Key in keyof Api as Key extends keyof WorkerEntrypoint ? never : Key extends string ? Key extends ReservedMethodName ? never : [Api[Key]] extends [never] ? never : Api[Key] extends ((...args: Array<any>) => Promise<unknown>) ? Key : never : never]: Api[Key] extends ((...args: infer Args) => Promise<infer A>) ? (...args: Args) => WorkerRpcHandler<ROut, A> : never; };
880
+ type WorkerRpcContract<Rpc extends WorkerRpc<ROut>, ROut> = { readonly [Key in keyof Rpc]: Rpc[Key] extends ((...args: infer Args) => Effect.Effect<infer A, unknown, WorkerRpcContext<ROut>>) ? (...args: Args) => Promise<A> : never; };
881
+ type RpcHandlers<ROut, Api> = { readonly [Key in keyof Api as Key extends keyof WorkerEntrypoint ? never : Key extends string ? Key extends ReservedMethodName ? never : [Api[Key]] extends [never] ? never : Api[Key] extends ((...args: Array<any>) => Promise<any>) ? Key : never : never]: Api[Key] extends ((...args: infer Args) => Promise<infer A>) ? (...args: Args) => WorkerRpcHandler<ROut, A> : never; };
868
882
  /**
869
883
  * Options for creating a worker class with Effect handlers.
870
884
  */
@@ -889,16 +903,23 @@ interface WorkerOptions<RRuntime, REvent = never, EventLayerError = never, Rpc e
889
903
  */
890
904
  readonly rpc?: Rpc;
891
905
  }
906
+ type WorkerOptionsWithEventLayer<RRuntime, REvent, EventLayerError, Rpc extends WorkerRpc<RRuntime | REvent> = Record<never, never>> = Omit<WorkerOptions<RRuntime, REvent, EventLayerError, Rpc>, "eventLayer"> & {
907
+ readonly eventLayer: Layer.Layer<REvent, EventLayerError, WorkerBaseContext<RRuntime>>;
908
+ };
892
909
  type FetchWorkerOptions<RRuntime, REvent = never, EventLayerError = never> = Omit<WorkerOptions<RRuntime, REvent, EventLayerError, Record<never, never>>, "rpc"> & {
893
910
  readonly rpc?: never;
894
911
  };
912
+ type FetchWorkerOptionsWithEventLayer<RRuntime, REvent, EventLayerError> = Omit<FetchWorkerOptions<RRuntime, REvent, EventLayerError>, "eventLayer"> & {
913
+ readonly eventLayer: Layer.Layer<REvent, EventLayerError, WorkerBaseContext<RRuntime>>;
914
+ };
895
915
  /**
896
916
  * Cloudflare `WorkerEntrypoint` constructor produced by {@link make}.
897
917
  */
898
918
  type WorkerClass<Rpc extends WorkerRpc<ROut>, ROut> = new (ctx: globalThis.ExecutionContext, env: WorkerEnv) => WorkerEntrypoint<WorkerEnv> & {
899
919
  fetch(request: Request): Promise<Response>;
900
920
  queue(batch: globalThis.MessageBatch): Promise<void>;
901
- } & WorkerRpcShape<Rpc, ROut>;
921
+ [FetchSymbol](request: Request, requestContext: globalThis.ExecutionContext): Promise<Response>;
922
+ } & WorkerRpcContract<Rpc, ROut>;
902
923
  /**
903
924
  * `ExportedHandler`-compatible fetch object produced by {@link makeFetchHandler}.
904
925
  */
@@ -921,7 +942,8 @@ interface FetchHandler<Env extends WorkerEnv = WorkerEnv> {
921
942
  * ```
922
943
  */
923
944
  declare function make<ROut, LayerError>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, fetch: WorkerHandler<ROut>): WorkerClass<Record<never, never>, ROut>;
924
- declare function make<ROut, LayerError, REvent = never, EventLayerError = never, const Rpc extends WorkerRpc<ROut | REvent> = Record<never, never>>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, options: WorkerOptions<ROut, REvent, EventLayerError, Rpc>): WorkerClass<Rpc, ROut | REvent>;
945
+ declare function make<ROut, LayerError, REvent, EventLayerError = never, const Rpc extends WorkerRpc<ROut | REvent> = Record<never, never>>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, options: WorkerOptionsWithEventLayer<ROut, REvent, EventLayerError, Rpc>): WorkerClass<Rpc, ROut | REvent>;
946
+ declare function make<ROut, LayerError, REvent extends never = never, EventLayerError = never, const Rpc extends WorkerRpc<ROut | REvent> = Record<never, never>>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, options: WorkerOptions<ROut, REvent, EventLayerError, Rpc>): WorkerClass<Rpc, ROut | REvent>;
925
947
  /**
926
948
  * Creates an `ExportedHandler`-compatible `{ fetch }` object backed by
927
949
  * {@link make}.
@@ -933,7 +955,8 @@ declare function make<ROut, LayerError, REvent = never, EventLayerError = never,
933
955
  * isolate is evicted; Cloudflare provides no shutdown hook. Use `eventLayer`
934
956
  * for resources that must be finalized per event.
935
957
  */
936
- declare const makeFetchHandler: <ROut, LayerError, REvent = never, EventLayerError = never, Env extends WorkerEnv = WorkerEnv>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, options: FetchWorkerOptions<ROut, REvent, EventLayerError>) => FetchHandler<Env>;
958
+ declare function makeFetchHandler<ROut, LayerError, REvent, EventLayerError = never, Env extends WorkerEnv = WorkerEnv>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, options: FetchWorkerOptionsWithEventLayer<ROut, REvent, EventLayerError>): FetchHandler<Env>;
959
+ declare function makeFetchHandler<ROut, LayerError, REvent extends never = never, EventLayerError = never, Env extends WorkerEnv = WorkerEnv>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, options: FetchWorkerOptions<ROut, REvent, EventLayerError>): FetchHandler<Env>;
937
960
  declare namespace DurableObjectState_d_exports {
938
961
  export { DurableObjectState, DurableObjectStateService, fromDurableObjectState };
939
962
  }
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { t as causeMessage } from "./ErrorMessage-_lg53p3W.mjs";
3
- import { Cause, Context, Data, Effect, Exit, Option, Result, Schema } from "effect";
2
+ import { t as causeMessage } from "./ErrorMessage-BM0K-Nik.mjs";
3
+ import { Cause, Context, Data, Effect, Exit, Option, Predicate, Result, Schema } from "effect";
4
4
  //#region src/DurableObjectStorage.ts
5
5
  var DurableObjectStorage_exports = /* @__PURE__ */ __exportAll({
6
6
  StorageOperationError: () => StorageOperationError,
@@ -80,7 +80,7 @@ const fromSyncKvStorage = (kv) => ({
80
80
  const fromDurableObjectTransaction = (txn) => ({
81
81
  get: (keyOrKeys, options) => Array.isArray(keyOrKeys) ? tryStoragePromise("transaction.get", () => txn.get(keyOrKeys, options)) : tryStoragePromise("transaction.get", () => txn.get(keyOrKeys, options)),
82
82
  list: (options) => tryStoragePromise("transaction.list", () => txn.list(options)),
83
- put: (keyOrEntries, valueOrOptions, maybeOptions) => tryStoragePromise("transaction.put", () => typeof keyOrEntries === "string" ? txn.put(keyOrEntries, valueOrOptions, maybeOptions) : txn.put(keyOrEntries, valueOrOptions)),
83
+ put: (keyOrEntries, valueOrOptions, maybeOptions) => tryStoragePromise("transaction.put", () => Predicate.isString(keyOrEntries) ? txn.put(keyOrEntries, valueOrOptions, maybeOptions) : txn.put(keyOrEntries, valueOrOptions)),
84
84
  delete: (keyOrKeys, options) => Array.isArray(keyOrKeys) ? tryStoragePromise("transaction.delete", () => txn.delete(keyOrKeys, options)) : tryStoragePromise("transaction.delete", () => txn.delete(keyOrKeys, options)),
85
85
  rollback: () => tryStorageSync("transaction.rollback", () => txn.rollback()),
86
86
  getAlarm: (options) => tryStoragePromise("transaction.getAlarm", () => txn.getAlarm(options)),
@@ -33,10 +33,7 @@ let WorkerConfig;
33
33
  * for use in tagged error `message` getters.
34
34
  */
35
35
  const causeMessage = (cause) => {
36
- if (typeof cause === "object" && cause !== null) {
37
- const message = Reflect.get(cause, "message");
38
- if (typeof message === "string" && message.length > 0) return message;
39
- }
36
+ if (Predicate.hasProperty(cause, "message") && Predicate.isString(cause.message) && cause.message.length > 0) return cause.message;
40
37
  try {
41
38
  return String(cause);
42
39
  } catch {
@@ -1,4 +1,4 @@
1
- import { c as WorkerEnvironment, r as BindingValidationError, t as BindingNotFoundError } from "./Binding-COCtoJXa.mjs";
1
+ import { c as WorkerEnvironment, r as BindingValidationError, t as BindingNotFoundError } from "./Binding-xJJJPmiD.mjs";
2
2
  import { Context, Effect, Layer } from "effect";
3
3
  declare namespace Hyperdrive_d_exports {
4
4
  export { HyperdriveClient, HyperdriveDefinition, HyperdriveService, LayerOptions, Tag, TagClass, isHyperdrive, layer, make, makeClient };
@@ -27,7 +27,7 @@ interface TagClass<Self, Id extends string> extends Context.ServiceClass<Self, I
27
27
  readonly id: Id;
28
28
  readonly layer: (options: LayerOptions) => Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
29
29
  }
30
- declare const isHyperdrive: (value: unknown) => value is Hyperdrive;
30
+ declare const isHyperdrive: <Candidate>(value: Candidate) => value is Candidate & Hyperdrive;
31
31
  declare const makeClient: (definition: HyperdriveDefinition) => (hyperdrive: Hyperdrive) => HyperdriveClient;
32
32
  declare const layer: <Self>(tag: Context.Service<Self, HyperdriveClient>, definition: HyperdriveDefinition) => Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
33
33
  declare const make: <Id extends string>(id: Id) => TagClass<HyperdriveService<Id>, Id>;
@@ -1,5 +1,5 @@
1
- import { c as WorkerEnvironment, r as BindingValidationError, t as BindingNotFoundError } from "./Binding-COCtoJXa.mjs";
2
- import { n as LayerOptions, r as TagClass } from "./Hyperdrive-6p59yyVk.mjs";
1
+ import { c as WorkerEnvironment, r as BindingValidationError, t as BindingNotFoundError } from "./Binding-xJJJPmiD.mjs";
2
+ import { n as LayerOptions, r as TagClass } from "./Hyperdrive-z-9fFz15.mjs";
3
3
  import { Layer } from "effect";
4
4
  import { PgClient } from "@effect/sql-pg";
5
5
  import { SqlClient, SqlError } from "effect/unstable/sql";
package/dist/Vitest.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { c as WorkerEnvironment, s as WorkerEnv } from "./Binding-COCtoJXa.mjs";
2
- import { n as DurableObjectStateService, t as DurableObjectState } from "./DurableObjectState-biHrHwrh.mjs";
3
- import { o as WorkflowInstanceStatusName } from "./WorkflowBinding-zlRPCXVf.mjs";
4
- import { Effect, Layer } from "effect";
1
+ import { c as WorkerEnvironment, s as WorkerEnv } from "./Binding-xJJJPmiD.mjs";
2
+ import { n as DurableObjectStateService, t as DurableObjectState } from "./DurableObjectState-B3uFY1eM.mjs";
3
+ import { o as WorkflowInstanceStatusName } from "./WorkflowBinding-wZ-yGHow.mjs";
4
+ import { Effect, Layer, Schema } from "effect";
5
5
  import { DurableObject } from "cloudflare:workers";
6
6
  import { adminSecretsStore as adminSecretsStore$1, getQueueResult, introspectWorkflow as introspectWorkflow$1, introspectWorkflowInstance as introspectWorkflowInstance$1 } from "cloudflare:test";
7
7
  //#region src/Vitest.d.ts
@@ -155,12 +155,13 @@ interface WorkflowMockEvent {
155
155
  interface WorkflowInstanceModifier {
156
156
  readonly disableSleeps: (steps?: ReadonlyArray<WorkflowStepTarget>) => Effect.Effect<void>;
157
157
  readonly disableRetryDelays: (steps?: ReadonlyArray<WorkflowStepTarget>) => Effect.Effect<void>;
158
- readonly mockStepResult: (step: WorkflowStepTarget, result: unknown) => Effect.Effect<void>;
158
+ readonly mockStepResult: (step: WorkflowStepTarget, result: WorkflowMockResult) => Effect.Effect<void>;
159
159
  readonly mockStepError: (step: WorkflowStepTarget, error: Error, times?: number) => Effect.Effect<void>;
160
160
  readonly forceStepTimeout: (step: WorkflowStepTarget, times?: number) => Effect.Effect<void>;
161
161
  readonly mockEvent: (event: WorkflowMockEvent) => Effect.Effect<void>;
162
162
  readonly forceEventTimeout: (step: WorkflowStepTarget) => Effect.Effect<void>;
163
163
  }
164
+ type WorkflowMockResult = Schema.Schema.Type<typeof Schema.Unknown>;
164
165
  /** Effect-native introspector for one Workflow instance. */
165
166
  interface WorkflowInstanceIntrospector {
166
167
  readonly raw: NativeWorkflowInstanceIntrospector;
package/dist/Vitest.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { a as WorkerEnvironment, i as WorkerConfig } from "./ErrorMessage-_lg53p3W.mjs";
2
- import { r as fromDurableObjectState, t as DurableObjectState } from "./DurableObjectState-Dux8KfjG.mjs";
1
+ import { a as WorkerEnvironment, i as WorkerConfig } from "./ErrorMessage-BM0K-Nik.mjs";
2
+ import { r as fromDurableObjectState, t as DurableObjectState } from "./DurableObjectState-BjkK2kwH.mjs";
3
3
  import { ConfigProvider, Effect, Exit, Layer } from "effect";
4
4
  import { env } from "cloudflare:workers";
5
5
  import { abortAllDurableObjects as abortAllDurableObjects$1, adminSecretsStore as adminSecretsStore$1, applyD1Migrations as applyD1Migrations$1, createExecutionContext, createMessageBatch, createPagesEventContext, createScheduledController, evictAllDurableObjects as evictAllDurableObjects$1, evictDurableObject as evictDurableObject$1, getQueueResult, introspectWorkflow as introspectWorkflow$1, introspectWorkflowInstance as introspectWorkflowInstance$1, listDurableObjectIds as listDurableObjectIds$1, reset as reset$1, runDurableObjectAlarm as runDurableObjectAlarm$1, runInDurableObject as runInDurableObject$1, waitOnExecutionContext } from "cloudflare:test";