effect-cf 0.41.0 → 0.42.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/CHANGELOG.md +22 -0
- package/README.md +28 -0
- package/dist/AiGateway.d.mts +2 -2
- package/dist/AnalyticsEngine.d.mts +2 -2
- package/dist/Artifacts.d.mts +2 -2
- package/dist/BrowserRendering.d.mts +2 -2
- package/dist/ContainerNamespace.d.mts +2 -2
- package/dist/ContainerNamespace.mjs +23 -20
- package/dist/D1.d.mts +9 -12
- package/dist/DurableObject.d.mts +5 -3
- package/dist/DurableObject.mjs +4 -3
- package/dist/DurableObjectDefinition.d.mts +15 -12
- package/dist/DurableObjectDefinition.mjs +5 -3
- package/dist/DurableObjectNamespace.d.mts +10 -8
- package/dist/DurableObjectNamespace.mjs +1 -1
- package/dist/Email.d.mts +2 -2
- package/dist/Hyperdrive.d.mts +2 -2
- package/dist/Images.d.mts +2 -2
- package/dist/Kv.d.mts +2 -2
- package/dist/Queue.d.mts +5 -4
- package/dist/QueueDefinition.d.mts +4 -4
- package/dist/R2.d.mts +2 -2
- package/dist/RpcDefinition.d.mts +26 -12
- package/dist/RpcDefinition.mjs +22 -5
- package/dist/RpcTargets.mjs +1 -2
- package/dist/Sandbox.d.mts +1 -1
- package/dist/Sandbox.mjs +87 -65
- package/dist/ServiceBinding.d.mts +17 -18
- package/dist/Vectorize.d.mts +2 -2
- package/dist/Worker.d.mts +5 -3
- package/dist/Worker.mjs +5 -4
- package/dist/WorkerDefinition.d.mts +15 -11
- package/dist/WorkerDefinition.mjs +5 -3
- package/dist/WorkersAi.d.mts +2 -2
- package/dist/Workflow.d.mts +5 -4
- package/dist/WorkflowDefinition.d.mts +4 -4
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/internal/RpcTargets.mjs +5 -0
- package/package.json +1 -1
- package/src/AiGateway.ts +2 -0
- package/src/AnalyticsEngine.ts +2 -0
- package/src/Artifacts.ts +2 -0
- package/src/BrowserRendering.ts +2 -0
- package/src/ContainerNamespace.ts +34 -39
- package/src/D1.ts +16 -8
- package/src/DurableObject.ts +14 -1
- package/src/DurableObjectDefinition.ts +33 -17
- package/src/DurableObjectNamespace.ts +19 -35
- package/src/Email.ts +2 -0
- package/src/Hyperdrive.ts +2 -0
- package/src/Images.ts +2 -0
- package/src/Kv.ts +2 -0
- package/src/Queue.ts +4 -7
- package/src/QueueDefinition.ts +7 -4
- package/src/R2.ts +2 -0
- package/src/RpcDefinition.ts +64 -25
- package/src/RpcTargets.ts +2 -8
- package/src/Sandbox.ts +133 -146
- package/src/ServiceBinding.ts +39 -34
- package/src/Vectorize.ts +2 -0
- package/src/Worker.ts +12 -1
- package/src/WorkerDefinition.ts +28 -17
- package/src/WorkersAi.ts +2 -0
- package/src/Workflow.ts +9 -8
- package/src/WorkflowDefinition.ts +12 -4
- package/src/internal/RpcTargets.ts +10 -0
package/dist/Kv.d.mts
CHANGED
|
@@ -6,7 +6,7 @@ import * as S from "effect/Schema";
|
|
|
6
6
|
import * as Option from "effect/Option";
|
|
7
7
|
import { Layer } from "effect";
|
|
8
8
|
declare namespace Kv_d_exports {
|
|
9
|
-
export { Definition, KvClient, KvDefinition, KvListKey, KvListOptions, KvListResult, KvOperation, KvOperationError, KvPutOptions, KvWithMetadata, LayerOptions, Tag, TagClass, isKvNamespace, layer, makeClient };
|
|
9
|
+
export { BindingNotFoundError, BindingValidationError, Definition, KvClient, KvDefinition, KvListKey, KvListOptions, KvListResult, KvOperation, KvOperationError, KvPutOptions, KvWithMetadata, LayerOptions, Tag, TagClass, isKvNamespace, layer, makeClient };
|
|
10
10
|
}
|
|
11
11
|
type KvOperation = "put" | "get" | "getWithMetadata" | "list" | "delete";
|
|
12
12
|
declare const KvOperationError_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 & {
|
|
@@ -81,4 +81,4 @@ declare const Tag: <Self>() => <Id extends string, Key, Value, EncodedValue>(id:
|
|
|
81
81
|
readonly value: S.Codec<Value, EncodedValue>;
|
|
82
82
|
}) => TagClass<Self, Id, Key, Value, EncodedValue>;
|
|
83
83
|
//#endregion
|
|
84
|
-
export { Definition, KvClient, KvDefinition, KvListKey, KvListOptions, KvListResult, KvOperation, KvOperationError, KvPutOptions, KvWithMetadata, Kv_d_exports, LayerOptions, Tag, TagClass, isKvNamespace, layer, makeClient };
|
|
84
|
+
export { type BindingNotFoundError, type BindingValidationError, Definition, KvClient, KvDefinition, KvListKey, KvListOptions, KvListResult, KvOperation, KvOperationError, KvPutOptions, KvWithMetadata, Kv_d_exports, LayerOptions, Tag, TagClass, isKvNamespace, layer, makeClient };
|
package/dist/Queue.d.mts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { WorkerEnvironment } from "./Environment.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { BindingNotFoundError, BindingValidationError } from "./Binding.mjs";
|
|
3
|
+
import { QueueOperationError, QueueProducer } from "./QueueBinding.mjs";
|
|
4
|
+
import { Definition as Definition$1, Handler as Handler$1, LayerOptions as LayerOptions$1, Options as Options$1, Tag, TagClass, implement } from "./QueueDefinition.mjs";
|
|
3
5
|
import { ExecutionContext, WorkerContext } from "./Worker.mjs";
|
|
4
6
|
import * as Effect from "effect/Effect";
|
|
5
7
|
import { Scope } from "effect";
|
|
6
8
|
declare namespace Queue_d_exports {
|
|
7
|
-
export { Definition, Handler, LayerOptions, Options, QueueBatch, QueueHandler, QueueMessage, QueueMessageDecodeError, QueueOptions, Tag, TagClass, decodeBatch, fromMessage, fromMessageBatch, implement };
|
|
9
|
+
export { BindingNotFoundError, BindingValidationError, Definition, Handler, LayerOptions, Options, QueueBatch, QueueHandler, QueueMessage, QueueMessageDecodeError, QueueOperationError, QueueOptions, QueueProducer, Tag, TagClass, decodeBatch, fromMessage, fromMessageBatch, implement };
|
|
8
10
|
}
|
|
9
11
|
interface QueueMessage<Body> {
|
|
10
12
|
readonly raw: globalThis.Message<unknown>;
|
|
@@ -57,8 +59,7 @@ declare namespace Definition {
|
|
|
57
59
|
type Any = Definition$1.Any;
|
|
58
60
|
}
|
|
59
61
|
type LayerOptions = LayerOptions$1;
|
|
60
|
-
type TagClass<Self, Id extends string, Message extends Definition$1.Any["message"]> = TagClass$1<Self, Id, Message>;
|
|
61
62
|
type Handler<ROut, Self extends Definition$1.Any> = Handler$1<ROut, Self>;
|
|
62
63
|
type Options<ROut, Self extends Definition$1.Any> = Options$1<ROut, Self>;
|
|
63
64
|
//#endregion
|
|
64
|
-
export { Definition, Handler, LayerOptions, Options, QueueBatch, QueueHandler, QueueMessage, QueueMessageDecodeError, QueueOptions, Queue_d_exports, Tag, TagClass, decodeBatch, fromMessage, fromMessageBatch, implement };
|
|
65
|
+
export { type BindingNotFoundError, type BindingValidationError, Definition, Handler, LayerOptions, Options, QueueBatch, QueueHandler, QueueMessage, QueueMessageDecodeError, type QueueOperationError, QueueOptions, type QueueProducer, Queue_d_exports, Tag, type TagClass, decodeBatch, fromMessage, fromMessageBatch, implement };
|
|
@@ -9,7 +9,7 @@ import * as Effect from "effect/Effect";
|
|
|
9
9
|
import * as S from "effect/Schema";
|
|
10
10
|
import { Layer, Scope } from "effect";
|
|
11
11
|
declare namespace QueueDefinition_d_exports {
|
|
12
|
-
export { Definition, Handler, LayerOptions, Options, Queue, Tag, TagClass, implement, make };
|
|
12
|
+
export { BindingNotFoundError, BindingValidationError, Definition, Handler, LayerOptions, Options, Queue, QueueOperationError, QueueProducer, Tag, TagClass, implement, make };
|
|
13
13
|
}
|
|
14
14
|
interface Definition<Id extends string = string, Message extends ServiceFreeSchema = ServiceFreeSchema> {
|
|
15
15
|
readonly id: Id;
|
|
@@ -26,7 +26,7 @@ interface Options<ROut, Self extends Definition.Any> extends Omit<WorkerOptions<
|
|
|
26
26
|
type LayerOptions = {
|
|
27
27
|
readonly binding: string;
|
|
28
28
|
};
|
|
29
|
-
|
|
29
|
+
type TagClass<Self, Id extends string, Message extends ServiceFreeSchema> = Context$1.ServiceClass<Self, `effect-cf/Queue/${Id}`, QueueBindingClient<Message>> & {
|
|
30
30
|
readonly id: Id;
|
|
31
31
|
readonly message: Message;
|
|
32
32
|
readonly make: <ROut, LayerError>(layer: Layer.Layer<ROut, LayerError, ExecutionContext | WorkerContext | WorkerEnvironment>, options: Options<ROut, Definition<Id, Message>>) => WorkerClass<Record<never, never>, ROut>;
|
|
@@ -35,7 +35,7 @@ interface TagClass<Self, Id extends string, Message extends ServiceFreeSchema> e
|
|
|
35
35
|
readonly sendBatch: (messages: Iterable<MessageSendRequest<S.Schema.Type<Message>>>, options?: QueueSendBatchOptions) => Effect.Effect<void, QueueOperationError | S.SchemaError, Self>;
|
|
36
36
|
readonly metrics: () => Effect.Effect<QueueMetrics, QueueOperationError, Self>;
|
|
37
37
|
readonly rawUnsafe: Effect.Effect<QueueProducer<S.Codec.Encoded<Message>>, never, Self>;
|
|
38
|
-
}
|
|
38
|
+
};
|
|
39
39
|
declare const make: <Id extends string, Message extends ServiceFreeSchema>(id: Id, definition: {
|
|
40
40
|
readonly message: Message;
|
|
41
41
|
}) => TagClass<Definition<Id, Message>, Id, Message>;
|
|
@@ -45,4 +45,4 @@ declare const Tag: <Self>() => <Id extends string, Message extends ServiceFreeSc
|
|
|
45
45
|
declare const Queue: typeof Tag;
|
|
46
46
|
declare const implement: <ROut, const Self extends Definition.Any>(_definition: Self, handler: Handler<ROut, Self>) => Handler<ROut, Self>;
|
|
47
47
|
//#endregion
|
|
48
|
-
export { Definition, Handler, LayerOptions, Options, Queue, QueueDefinition_d_exports, Tag, TagClass, implement, make };
|
|
48
|
+
export { type BindingNotFoundError, type BindingValidationError, Definition, Handler, LayerOptions, Options, Queue, QueueDefinition_d_exports, type QueueOperationError, type QueueProducer, Tag, TagClass, implement, make };
|
package/dist/R2.d.mts
CHANGED
|
@@ -6,7 +6,7 @@ import * as Schema$1 from "effect/Schema";
|
|
|
6
6
|
import * as Option from "effect/Option";
|
|
7
7
|
import { Layer } from "effect";
|
|
8
8
|
declare namespace R2_d_exports {
|
|
9
|
-
export { LayerOptions, R2Client, R2Definition, R2GetOptions, R2ListOptions, R2MultipartOptions, R2MultipartUploadClient, R2ObjectBodyClient, R2Operation, R2OperationError, R2PutOptions, R2PutValue, R2Service, R2UploadPartOptions, R2UploadPartValue, Tag, TagClass, isR2Bucket, layer, make, makeClient };
|
|
9
|
+
export { BindingNotFoundError, BindingValidationError, LayerOptions, R2Client, R2Definition, R2GetOptions, R2ListOptions, R2MultipartOptions, R2MultipartUploadClient, R2ObjectBodyClient, R2Operation, R2OperationError, R2PutOptions, R2PutValue, R2Service, R2UploadPartOptions, R2UploadPartValue, Tag, TagClass, isR2Bucket, layer, make, makeClient };
|
|
10
10
|
}
|
|
11
11
|
type R2Operation = "head" | "get" | "put" | "delete" | "list" | "createMultipartUpload" | "resumeMultipartUpload" | "uploadPart" | "abortMultipartUpload" | "completeMultipartUpload" | "arrayBuffer" | "bytes" | "text" | "json" | "blob";
|
|
12
12
|
declare const R2OperationError_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 & {
|
|
@@ -86,4 +86,4 @@ declare const layer: <Self>(tag: Context$1.Service<Self, R2Client>, definition:
|
|
|
86
86
|
declare const make: <Id extends string>(id: Id) => TagClass<R2Service<Id>, Id>;
|
|
87
87
|
declare const Tag: <Self>() => <Id extends string>(id: Id) => TagClass<Self, Id>;
|
|
88
88
|
//#endregion
|
|
89
|
-
export { LayerOptions, R2Client, R2Definition, R2GetOptions, R2ListOptions, R2MultipartOptions, R2MultipartUploadClient, R2ObjectBodyClient, R2Operation, R2OperationError, R2PutOptions, R2PutValue, R2Service, R2UploadPartOptions, R2UploadPartValue, R2_d_exports, Tag, TagClass, isR2Bucket, layer, make, makeClient };
|
|
89
|
+
export { type BindingNotFoundError, type BindingValidationError, LayerOptions, R2Client, R2Definition, R2GetOptions, R2ListOptions, R2MultipartOptions, R2MultipartUploadClient, R2ObjectBodyClient, R2Operation, R2OperationError, R2PutOptions, R2PutValue, R2Service, R2UploadPartOptions, R2UploadPartValue, R2_d_exports, Tag, TagClass, isR2Bucket, layer, make, makeClient };
|
package/dist/RpcDefinition.d.mts
CHANGED
|
@@ -2,7 +2,7 @@ import { Provider } from "./Rpc.mjs";
|
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import * as S from "effect/Schema";
|
|
4
4
|
declare namespace RpcDefinition_d_exports {
|
|
5
|
-
export { Definition, Method, Methods, NoReservedMethods, ReservedMethodName, RpcArgumentCountError, RpcArgumentDecodeError, RpcArgumentEncodeError, RpcReservedMethodNameError, RpcSuccessDecodeError, RpcSuccessEncodeError, ServiceFreeSchema, WireError, assertNoReservedMethods, decodeArgs, decodeSuccess, decodeWireError, encodeArgs, encodeSuccess, encodeWireError, isWireError, make, method, reservedMethodNames };
|
|
5
|
+
export { Definition, Method, Methods, NativeSchema, NativeSchemaTypeId, NoReservedMethods, ReservedMethodName, RpcArgumentCountError, RpcArgumentDecodeError, RpcArgumentEncodeError, RpcReservedMethodNameError, RpcSchema, RpcSuccessDecodeError, RpcSuccessEncodeError, SchemaType, ServiceFreeSchema, WireEncoded, WireError, assertNoReservedMethods, decodeArgs, decodeSuccess, decodeWireError, encodeArgs, encodeSuccess, encodeWireError, isWireError, make, method, native, reservedMethodNames };
|
|
6
6
|
}
|
|
7
7
|
declare const RpcReservedMethodNameError_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 & {
|
|
8
8
|
readonly _tag: "RpcReservedMethodNameError";
|
|
@@ -72,18 +72,32 @@ declare const reservedMethodNameValues: readonly ["constructor", "fetch", "conne
|
|
|
72
72
|
declare const reservedMethodNames: Set<string>;
|
|
73
73
|
type ReservedMethodName = (typeof reservedMethodNameValues)[number];
|
|
74
74
|
type ServiceFreeSchema = S.Codec<any, any, never, never>;
|
|
75
|
-
|
|
75
|
+
declare const NativeSchemaTypeId: unique symbol;
|
|
76
|
+
/** A schema whose encoded value is passed directly to Workers RPC. */
|
|
77
|
+
interface NativeSchema<Schema extends ServiceFreeSchema = ServiceFreeSchema> {
|
|
78
|
+
readonly [NativeSchemaTypeId]: typeof NativeSchemaTypeId;
|
|
79
|
+
readonly schema: Schema;
|
|
80
|
+
}
|
|
81
|
+
type RpcSchema = ServiceFreeSchema | NativeSchema;
|
|
82
|
+
type SchemaType<Schema extends RpcSchema> = Schema extends NativeSchema<infer Native extends ServiceFreeSchema> ? S.Schema.Type<Native> : Schema extends ServiceFreeSchema ? S.Schema.Type<Schema> : never;
|
|
83
|
+
type WireEncoded<Schema extends RpcSchema> = Schema extends NativeSchema<infer Native extends ServiceFreeSchema> ? S.Codec.Encoded<Native> : S.Json;
|
|
84
|
+
/**
|
|
85
|
+
* Marks a schema to use its declared encoded form directly at the Workers RPC
|
|
86
|
+
* boundary instead of lowering it to canonical JSON.
|
|
87
|
+
*/
|
|
88
|
+
declare const native: <Schema extends ServiceFreeSchema>(schema: Schema) => NativeSchema<Schema>;
|
|
89
|
+
interface Method<Args extends ReadonlyArray<RpcSchema> = ReadonlyArray<RpcSchema>, Success extends RpcSchema = RpcSchema> {
|
|
76
90
|
readonly args: Args;
|
|
77
91
|
readonly success: Success;
|
|
78
92
|
}
|
|
79
93
|
declare namespace Method {
|
|
80
|
-
export type Any = Method<ReadonlyArray<
|
|
81
|
-
type ArgsFromSchemas<Args extends ReadonlyArray<
|
|
82
|
-
type EncodedArgsFromSchemas<Args extends ReadonlyArray<
|
|
94
|
+
export type Any = Method<ReadonlyArray<RpcSchema>, RpcSchema>;
|
|
95
|
+
type ArgsFromSchemas<Args extends ReadonlyArray<RpcSchema>> = Args extends readonly [] ? [] : Args extends readonly [infer Head extends RpcSchema, ...infer Tail extends ReadonlyArray<RpcSchema>] ? [SchemaType<Head>, ...ArgsFromSchemas<Tail>] : Array<SchemaType<Args[number]>>;
|
|
96
|
+
type EncodedArgsFromSchemas<Args extends ReadonlyArray<RpcSchema>> = { [Index in keyof Args]: WireEncoded<Args[Index]>; };
|
|
83
97
|
export type Args<Self extends Any> = ArgsFromSchemas<Self["args"]>;
|
|
84
98
|
export type EncodedArgs<Self extends Any> = EncodedArgsFromSchemas<Self["args"]>;
|
|
85
|
-
export type Success<Self extends Any> =
|
|
86
|
-
export type EncodedSuccess<
|
|
99
|
+
export type Success<Self extends Any> = SchemaType<Self["success"]>;
|
|
100
|
+
export type EncodedSuccess<Self extends Any> = WireEncoded<Self["success"]>;
|
|
87
101
|
export {};
|
|
88
102
|
}
|
|
89
103
|
type Methods = Record<string, Method.Any>;
|
|
@@ -100,17 +114,17 @@ declare namespace Definition {
|
|
|
100
114
|
}
|
|
101
115
|
type ReservedMethodValue = S.Schema.Type<typeof S.Unknown>;
|
|
102
116
|
declare const assertNoReservedMethods: <MethodDefinitions extends Readonly<Record<string, ReservedMethodValue>>>(target: string, methods: MethodDefinitions, reserved: ReadonlySet<string>) => void;
|
|
103
|
-
declare function method<Success extends
|
|
117
|
+
declare function method<Success extends RpcSchema>(definition: {
|
|
104
118
|
readonly success: Success;
|
|
105
119
|
}): Method<readonly [], Success>;
|
|
106
|
-
declare function method<const Args extends ReadonlyArray<
|
|
120
|
+
declare function method<const Args extends ReadonlyArray<RpcSchema>, Success extends RpcSchema>(definition: {
|
|
107
121
|
readonly args: Args;
|
|
108
122
|
readonly success: Success;
|
|
109
123
|
}): Method<Args, Success>;
|
|
110
|
-
declare const decodeArgs: <const Self extends Definition.Any, MethodName extends Definition.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
|
|
111
|
-
declare const encodeArgs: <const Self extends Definition.Any, MethodName extends Definition.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
|
|
124
|
+
declare const decodeArgs: <const Self extends Definition.Any, MethodName extends Definition.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 RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ... /*elided*/ any] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<T[number]>[] : never : never, RpcArgumentCountError | RpcArgumentDecodeError, never>;
|
|
125
|
+
declare const encodeArgs: <const Self extends Definition.Any, MethodName extends Definition.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 RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ...Tail extends readonly [] ? [] : Tail extends readonly [infer Head extends RpcSchema, ...infer Tail extends readonly RpcSchema[]] ? [SchemaType<Head>, ... /*elided*/ any] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<Tail[number]>[]] : SchemaType<T[number]>[] : never : never) => Effect.Effect<Self["methods"][MethodName]["args"] extends (infer T_1 extends readonly RpcSchema[]) ? { [Index in keyof T_1]: WireEncoded<T_1[Index]>; } : never, RpcArgumentCountError | RpcArgumentEncodeError, never>;
|
|
112
126
|
declare const encodeSuccess: <const Self extends Definition.Any, MethodName extends Definition.MethodNames<Self>>(definition: Self, methodName: MethodName, value: Method.Success<Self["methods"][MethodName]>) => Effect.Effect<Method.EncodedSuccess<Self["methods"][MethodName]>, RpcSuccessEncodeError>;
|
|
113
127
|
declare const decodeSuccess: <const Self extends Definition.Any, MethodName extends Definition.MethodNames<Self>>(definition: Self, methodName: MethodName, value: WireValue) => Effect.Effect<Method.Success<Self["methods"][MethodName]>, RpcSuccessDecodeError>;
|
|
114
128
|
declare const make: <Id extends string, const MethodDefinitions extends Methods>(id: Id, methods: MethodDefinitions) => Definition<Id, MethodDefinitions>;
|
|
115
129
|
//#endregion
|
|
116
|
-
export { Definition, Method, Methods, NoReservedMethods, ReservedMethodName, RpcArgumentCountError, RpcArgumentDecodeError, RpcArgumentEncodeError, RpcDefinition_d_exports, RpcReservedMethodNameError, RpcSuccessDecodeError, RpcSuccessEncodeError, ServiceFreeSchema, WireError, assertNoReservedMethods, decodeArgs, decodeSuccess, decodeWireError, encodeArgs, encodeSuccess, encodeWireError, isWireError, make, method, reservedMethodNames };
|
|
130
|
+
export { Definition, Method, Methods, NativeSchema, NativeSchemaTypeId, NoReservedMethods, ReservedMethodName, RpcArgumentCountError, RpcArgumentDecodeError, RpcArgumentEncodeError, RpcDefinition_d_exports, RpcReservedMethodNameError, RpcSchema, RpcSuccessDecodeError, RpcSuccessEncodeError, SchemaType, ServiceFreeSchema, WireEncoded, WireError, assertNoReservedMethods, decodeArgs, decodeSuccess, decodeWireError, encodeArgs, encodeSuccess, encodeWireError, isWireError, make, method, native, reservedMethodNames };
|
package/dist/RpcDefinition.mjs
CHANGED
|
@@ -6,6 +6,7 @@ import * as S from "effect/Schema";
|
|
|
6
6
|
import * as Predicate from "effect/Predicate";
|
|
7
7
|
//#region src/RpcDefinition.ts
|
|
8
8
|
var RpcDefinition_exports = /* @__PURE__ */ __exportAll({
|
|
9
|
+
NativeSchemaTypeId: () => NativeSchemaTypeId,
|
|
9
10
|
RpcArgumentCountError: () => RpcArgumentCountError,
|
|
10
11
|
RpcArgumentDecodeError: () => RpcArgumentDecodeError,
|
|
11
12
|
RpcArgumentEncodeError: () => RpcArgumentEncodeError,
|
|
@@ -22,6 +23,7 @@ var RpcDefinition_exports = /* @__PURE__ */ __exportAll({
|
|
|
22
23
|
isWireError: () => isWireError,
|
|
23
24
|
make: () => make,
|
|
24
25
|
method: () => method,
|
|
26
|
+
native: () => native,
|
|
25
27
|
reservedMethodNames: () => reservedMethodNames
|
|
26
28
|
});
|
|
27
29
|
var RpcReservedMethodNameError = class extends Data.TaggedError("RpcReservedMethodNameError") {
|
|
@@ -110,13 +112,26 @@ const reservedMethodNames = /* @__PURE__ */ new Set([
|
|
|
110
112
|
"serialize",
|
|
111
113
|
"deserialize"
|
|
112
114
|
]);
|
|
115
|
+
const NativeSchemaTypeId = Symbol.for("effect-cf/RpcDefinition/NativeSchema");
|
|
116
|
+
/**
|
|
117
|
+
* Marks a schema to use its declared encoded form directly at the Workers RPC
|
|
118
|
+
* boundary instead of lowering it to canonical JSON.
|
|
119
|
+
*/
|
|
120
|
+
const native = (schema) => {
|
|
121
|
+
return Object.freeze({
|
|
122
|
+
[NativeSchemaTypeId]: NativeSchemaTypeId,
|
|
123
|
+
schema
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
const isNativeSchema = (schema) => Predicate.hasProperty(schema, NativeSchemaTypeId) && schema[NativeSchemaTypeId] === NativeSchemaTypeId;
|
|
113
127
|
/**
|
|
114
128
|
* Workers RPC structured-clones every value that crosses an isolate boundary
|
|
115
129
|
* and rejects class instances. Declaration schemas such as `Schema.Result`
|
|
116
130
|
* keep their container instance in their `Encoded` form, so the declared
|
|
117
|
-
* schemas are lowered to their canonical JSON codec before touching the wire
|
|
131
|
+
* schemas are lowered to their canonical JSON codec before touching the wire,
|
|
132
|
+
* unless explicitly wrapped with `native`.
|
|
118
133
|
*/
|
|
119
|
-
const wireCodec = (schema) => S.toCodecJson(schema);
|
|
134
|
+
const wireCodec = (schema) => isNativeSchema(schema) ? schema.schema : S.toCodecJson(schema);
|
|
120
135
|
const assertNoReservedMethods = (target, methods, reserved) => {
|
|
121
136
|
for (const method of Object.keys(methods)) if (reserved.has(method)) throw new RpcReservedMethodNameError({
|
|
122
137
|
definition: target,
|
|
@@ -137,7 +152,8 @@ const decodeArgs = Effect.fnUntraced(function* (definition, methodName, args) {
|
|
|
137
152
|
expected: methodDefinition.args.length,
|
|
138
153
|
actual: args.length
|
|
139
154
|
});
|
|
140
|
-
|
|
155
|
+
const codecs = methodDefinition.args.map((schema) => wireCodec(schema));
|
|
156
|
+
return yield* S.decodeUnknownEffect(S.Tuple(codecs))(args).pipe(Effect.mapError((cause) => new RpcArgumentDecodeError({
|
|
141
157
|
definition: definition.id,
|
|
142
158
|
method: methodName,
|
|
143
159
|
cause
|
|
@@ -151,7 +167,8 @@ const encodeArgs = Effect.fnUntraced(function* (definition, methodName, args) {
|
|
|
151
167
|
expected: methodDefinition.args.length,
|
|
152
168
|
actual: args.length
|
|
153
169
|
});
|
|
154
|
-
|
|
170
|
+
const codecs = methodDefinition.args.map((schema) => wireCodec(schema));
|
|
171
|
+
return yield* S.encodeUnknownEffect(S.Tuple(codecs))(args).pipe(Effect.mapError((cause) => new RpcArgumentEncodeError({
|
|
155
172
|
definition: definition.id,
|
|
156
173
|
method: methodName,
|
|
157
174
|
cause
|
|
@@ -181,4 +198,4 @@ const make = (id, methods) => {
|
|
|
181
198
|
};
|
|
182
199
|
};
|
|
183
200
|
//#endregion
|
|
184
|
-
export { RpcArgumentCountError, RpcArgumentDecodeError, RpcArgumentEncodeError, RpcDefinition_exports, RpcReservedMethodNameError, RpcSuccessDecodeError, RpcSuccessEncodeError, assertNoReservedMethods, decodeArgs, decodeSuccess, decodeWireError, encodeArgs, encodeSuccess, encodeWireError, isWireError, make, method, reservedMethodNames };
|
|
201
|
+
export { NativeSchemaTypeId, RpcArgumentCountError, RpcArgumentDecodeError, RpcArgumentEncodeError, RpcDefinition_exports, RpcReservedMethodNameError, RpcSuccessDecodeError, RpcSuccessEncodeError, assertNoReservedMethods, decodeArgs, decodeSuccess, decodeWireError, encodeArgs, encodeSuccess, encodeWireError, isWireError, make, method, native, reservedMethodNames };
|
package/dist/RpcTargets.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.mjs";
|
|
2
|
-
import
|
|
2
|
+
import { CurrentTargets } from "./internal/RpcTargets.mjs";
|
|
3
3
|
import * as Data from "effect/Data";
|
|
4
4
|
import * as Effect from "effect/Effect";
|
|
5
5
|
import * as Option from "effect/Option";
|
|
@@ -12,7 +12,6 @@ var RpcTargets_exports = /* @__PURE__ */ __exportAll({
|
|
|
12
12
|
});
|
|
13
13
|
/** A native RPC target could not be constructed. */
|
|
14
14
|
var RpcTargetError = class extends Data.TaggedError("RpcTargetError") {};
|
|
15
|
-
var CurrentTargets = class extends Context.Service()("effect-cf/RpcTargets") {};
|
|
16
15
|
/**
|
|
17
16
|
* Reuse a native RPC target within the current invocation. Native Durable Object
|
|
18
17
|
* stubs capture the calling request's channel when created. Recreating a stub
|
package/dist/Sandbox.d.mts
CHANGED
|
@@ -194,4 +194,4 @@ declare const proxyToSandbox: (request: Request<unknown, CfProperties<unknown>>,
|
|
|
194
194
|
readonly binding?: string;
|
|
195
195
|
} | undefined) => Effect.Effect<Option.Option<Response>, SandboxOperationError, WorkerEnvironment>;
|
|
196
196
|
//#endregion
|
|
197
|
-
export { type BackupOptions, type CheckChangesOptions, type CheckChangesResult, type CreateTerminalOptions, DeleteFileResult, type DirectoryBackup, type ExecOptions, ExposePortOptions, ExposedPort, ExposedPortStatus, FileExistsResult, type FileWatchSSEEvent, type ISandbox, LayerOptions, type ListFilesOptions, ListFilesResult, MkdirResult, type MountBucketOptions, MoveFileResult, type ProcessExit, type ProcessLogEvent, type ProcessLogsOptions, type ProcessOutput, type ProcessOutputOptions, type ProcessStatus, ReadFileEncoding, ReadFileResult, RenameFileResult, type RestoreBackupResult, Sandbox, SandboxClientResource, type SandboxCommand, SandboxDefinition, SandboxInstanceClient, SandboxNamespaceClient, SandboxNamespaceResource, SandboxNamespaceService, SandboxOperationError, type SandboxOptions, type SandboxProcess, SandboxProcessHandle, SandboxTerminalHandle, SandboxTunnelsClient, SandboxTunnelsResource, Tag, TagClass, type Terminal, type TerminalOutputCursor, type TerminalOutputEvent, type TerminalOutputOptions, type TerminalSnapshot, type TunnelInfo, type TunnelOptions, type WaitForExitOptions, type WaitForLogOptions, type WaitForLogResult, type WaitForPortOptions, type WatchOptions, WriteFileResult, fromSandboxClient, isSandboxNamespaceResource, layer, make, makeClient, proxyToSandbox };
|
|
197
|
+
export { type BackupOptions, type BindingNotFoundError, type BindingValidationError, type CheckChangesOptions, type CheckChangesResult, type CreateTerminalOptions, DeleteFileResult, type DirectoryBackup, type ExecOptions, ExposePortOptions, ExposedPort, ExposedPortStatus, FileExistsResult, type FileWatchSSEEvent, type ISandbox, LayerOptions, type ListFilesOptions, ListFilesResult, MkdirResult, type MountBucketOptions, MoveFileResult, type ProcessExit, type ProcessLogEvent, type ProcessLogsOptions, type ProcessOutput, type ProcessOutputOptions, type ProcessStatus, ReadFileEncoding, ReadFileResult, RenameFileResult, type RestoreBackupResult, Sandbox, SandboxClientResource, type SandboxCommand, SandboxDefinition, SandboxInstanceClient, SandboxNamespaceClient, SandboxNamespaceResource, SandboxNamespaceService, SandboxOperationError, type SandboxOptions, type SandboxProcess, SandboxProcessHandle, SandboxTerminalHandle, SandboxTunnelsClient, SandboxTunnelsResource, Tag, TagClass, type Terminal, type TerminalOutputCursor, type TerminalOutputEvent, type TerminalOutputOptions, type TerminalSnapshot, type TunnelInfo, type TunnelOptions, type WaitForExitOptions, type WaitForLogOptions, type WaitForLogResult, type WaitForPortOptions, type WatchOptions, WriteFileResult, fromSandboxClient, isSandboxNamespaceResource, layer, make, makeClient, proxyToSandbox };
|