import { Config, ConfigProvider, Context, Effect, Layer } from "effect"; import * as _$effect_Types0 from "effect/Types"; import * as _$effect_Cause0 from "effect/Cause"; import * as _$effect_Redacted0 from "effect/Redacted"; import * as _$effect_Layer0 from "effect/Layer"; //#region src/Environment.d.ts /** Cloudflare worker environment object (`env`). */ type WorkerEnv = Cloudflare.Env; declare const WorkerEnvironment_base: Context.ServiceClass; /** * Context service for reading worker bindings from the current `env` object. */ declare class WorkerEnvironment extends WorkerEnvironment_base {} type ScalarConfigValue = string | number | boolean; type ScalarConfigKey = Extract<{ readonly [Key in keyof Cloudflare.Env]-?: NonNullable extends ScalarConfigValue ? Key : never }[keyof Cloudflare.Env], string>; /** * Effect `Config` helpers for scalar Cloudflare vars and secrets declared on * `Cloudflare.Env`. * * Users still author their app config explicitly with Effect `Config`: * * ```ts * import { Config, Effect } from "effect"; * import { WorkerConfig } from "effect-cf"; * * const AppConfig = Config.all({ * databaseUrl: WorkerConfig.redacted("DATABASE_URL"), * port: WorkerConfig.integer("PORT").pipe(Config.withDefault(8787)), * }); * * const program = Effect.gen(function* () { * const config = yield* AppConfig; * // ... * }).pipe(Effect.provide(WorkerConfig.layer)); * ``` * * Keys are constrained to scalar `Cloudflare.Env` properties (`string`, * `number`, or `boolean`, including optional scalar properties). Binding * objects such as `KVNamespace`, `DurableObjectNamespace`, and service * bindings are intentionally excluded; keep using the package binding helpers * for those live resources. */ declare namespace WorkerConfig { /** Scalar env value types supported by the typed config key helpers. */ type Scalar = ScalarConfigValue; /** Scalar keys available on the current consumer's `Cloudflare.Env`. */ type Key = ScalarConfigKey; /** Read a scalar Cloudflare var or secret as a string. */ const string: (name: Name) => Config.Config; /** Read a scalar Cloudflare secret as a redacted string. */ const redacted: (name: Name) => Config.Config<_$effect_Redacted0.Redacted>; /** Read a scalar Cloudflare var or secret as a number. */ const number: (name: Name) => Config.Config; /** Read a scalar Cloudflare var or secret as an integer. */ const integer: (name: Name) => Config.Config; /** Read a scalar Cloudflare var or secret as a boolean. */ const boolean: (name: Name) => Config.Config; /** Build a `ConfigProvider` from a Cloudflare worker `env` object. */ const providerFromEnv: (env: WorkerEnv) => ConfigProvider.ConfigProvider; /** * Build a `ConfigProvider` from the current `WorkerEnvironment` with a custom * conversion function. */ const providerWith: (makeProvider: (env: WorkerEnv) => ConfigProvider.ConfigProvider) => Effect.Effect; /** Build a `ConfigProvider` from the current `WorkerEnvironment`. */ const provider: Effect.Effect; /** * Replace the active Effect `ConfigProvider` with one backed by the current * Cloudflare worker `env` object. */ const providerLayer: _$effect_Layer0.Layer; /** Alias for `providerLayer` for concise use in worker layers. */ const layer: _$effect_Layer0.Layer; /** Build a `ConfigProvider` layer with a custom `env` conversion function. */ const layerWith: (makeProvider: (env: WorkerEnv) => ConfigProvider.ConfigProvider) => _$effect_Layer0.Layer; } declare namespace Binding_d_exports { export { BindingNotFoundError, BindingService, BindingValidationError, Service, TypeId, ValidationOptions, layer$1 as layer }; } /** Internal type id marker used by binding helper services. */ declare const TypeId: "effect-cf/Binding"; declare const BindingNotFoundError_base: new = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => _$effect_Cause0.YieldableError & { readonly _tag: "BindingNotFoundError"; } & Readonly; /** Error raised when a configured binding does not exist on `env`. */ declare class BindingNotFoundError extends BindingNotFoundError_base<{ readonly binding: string; readonly message: string; }> {} declare const BindingValidationError_base: new = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => _$effect_Cause0.YieldableError & { readonly _tag: "BindingValidationError"; } & Readonly; /** Error raised when a binding exists but does not match the expected shape. */ declare class BindingValidationError extends BindingValidationError_base<{ readonly binding: string; readonly expected: string; readonly actual: string; readonly message: string; }> {} interface ValidationOptions { readonly expected?: string; } /** * Creates a Context tag + layer for reading and validating a Cloudflare binding. */ interface BindingService extends Context.ServiceClass { readonly [TypeId]: typeof TypeId; readonly binding: string; readonly layer: Layer.Layer; } declare const layer$1: (tag: Context.Service, binding: string, isResource: (value: unknown) => value is Resource, wrap?: (resource: Resource) => Service, options?: ValidationOptions) => Layer.Layer; declare const Service: () => (id: Id, binding: string, isResource: (value: unknown) => value is Resource, wrap?: (resource: Resource) => Service, options?: ValidationOptions) => BindingService; declare namespace Hyperdrive_d_exports { export { HyperdriveClient, HyperdriveDefinition, HyperdriveService, LayerOptions, Tag, TagClass, isHyperdrive, layer, make, makeClient }; } /** Typed Hyperdrive binding definition. */ interface HyperdriveDefinition { /** Binding name as configured in `wrangler.jsonc`. */ readonly binding: string; } interface HyperdriveClient { readonly connectionString: string; readonly unsafeRaw: Effect.Effect; readonly definition: HyperdriveDefinition; } declare const HyperdriveServiceTypeId: unique symbol; /** Nominal service marker for Hyperdrive services created with {@link make}. */ interface HyperdriveService { readonly [HyperdriveServiceTypeId]: { readonly id: Id; }; } type LayerOptions = { readonly binding: string; }; interface TagClass extends Context.ServiceClass { readonly id: Id; readonly layer: (options: LayerOptions) => Layer.Layer; } declare const isHyperdrive: (value: unknown) => value is Hyperdrive; declare const makeClient: (definition: HyperdriveDefinition) => (hyperdrive: Hyperdrive) => HyperdriveClient; declare const layer: (tag: Context.Service, definition: HyperdriveDefinition) => Layer.Layer; declare const make: (id: Id) => TagClass, Id>; declare const Tag: () => (id: Id) => TagClass; //#endregion export { BindingService as a, WorkerConfig as c, BindingNotFoundError as i, WorkerEnv as l, LayerOptions as n, BindingValidationError as o, TagClass as r, Binding_d_exports as s, Hyperdrive_d_exports as t, WorkerEnvironment as u };