/** * @since 2.0.0 */ import type * as Brand from "./Brand.js"; import type * as Chunk from "./Chunk.js"; import type * as ConfigError from "./ConfigError.js"; import type * as Duration from "./Duration.js"; import type * as Effect from "./Effect.js"; import type * as Either from "./Either.js"; import type { LazyArg } from "./Function.js"; import type * as HashMap from "./HashMap.js"; import type * as HashSet from "./HashSet.js"; import type * as LogLevel from "./LogLevel.js"; import type * as Option from "./Option.js"; import type { Predicate, Refinement } from "./Predicate.js"; import type * as Redacted from "./Redacted.js"; import type * as Secret from "./Secret.js"; import type * as Types from "./Types.js"; /** * @since 2.0.0 * @category symbols */ export declare const ConfigTypeId: unique symbol; /** * @since 2.0.0 * @category symbols */ export type ConfigTypeId = typeof ConfigTypeId; /** * A `Config` describes the structure of some configuration data. * * @since 2.0.0 * @category models */ export interface Config extends Config.Variance, Effect.Effect { } /** * @since 2.0.0 */ export declare namespace Config { /** * @since 2.0.0 * @category models */ interface Variance { readonly [ConfigTypeId]: { readonly _A: Types.Covariant; }; } /** * @since 2.5.0 * @category models */ type Success> = [T] extends [Config] ? _A : never; /** * @since 2.0.0 * @category models */ interface Primitive extends Config { readonly description: string; parse(text: string): Either.Either; } /** * Wraps a nested structure, converting all primitives to a `Config`. * * `Config.Wrap<{ key: string }>` becomes `{ key: Config }` * * To create the resulting config, use the `unwrap` constructor. * * @since 2.0.0 * @category models */ type Wrap = [NonNullable] extends [infer T] ? [IsPlainObject] extends [true] ? { readonly [K in keyof A]: Wrap; } | Config : Config : Config; type IsPlainObject = [A] extends [Record] ? [keyof A] extends [never] ? false : [keyof A] extends [string] ? true : false : false; } /** * @since 2.0.0 * @category models */ export type LiteralValue = string | number | boolean | null | bigint; /** * Constructs a config from a tuple / struct / arguments of configs. * * @since 2.0.0 * @category constructors */ export declare const all: > | Record>>(arg: Arg) => Config<[ Arg ] extends [ReadonlyArray>] ? { -readonly [K in keyof Arg]: [Arg[K]] extends [Config] ? A : never; } : [Arg] extends [Iterable>] ? Array : [Arg] extends [Record>] ? { -readonly [K in keyof Arg]: [Arg[K]] extends [Config] ? A : never; } : never>; /** * Constructs a config for an array of values. * * @since 2.0.0 * @category constructors */ export declare const array: (config: Config, name?: string) => Config>; /** * Constructs a config for a boolean value. * * @since 2.0.0 * @category constructors */ export declare const boolean: (name?: string) => Config; /** * Constructs a config for a network port [1, 65535]. * * @since 3.16.0 * @category constructors */ export declare const port: (name?: string) => Config; /** * Constructs a config for an URL value. * * @since 3.11.0 * @category constructors */ export declare const url: (name?: string) => Config; /** * Constructs a config for a sequence of values. * * @since 2.0.0 * @category constructors */ export declare const chunk: (config: Config, name?: string) => Config>; /** * Constructs a config for a date value. * * @since 2.0.0 * @category constructors */ export declare const date: (name?: string) => Config; /** * Constructs a config that fails with the specified message. * * @since 2.0.0 * @category constructors */ export declare const fail: (message: string) => Config; /** * Constructs a config for a float value. * * @since 2.0.0 * @category constructors */ export declare const number: (name?: string) => Config; /** * Constructs a config for a integer value. * * @since 2.0.0 * @category constructors */ export declare const integer: (name?: string) => Config; /** * Constructs a config for a literal value. * * **Example** * * ```ts * import { Config } from "effect" * * const config = Config.literal("http", "https")("PROTOCOL") * ``` * * @since 2.0.0 * @category constructors */ export declare const literal: >(...literals: Literals) => (name?: string) => Config; /** * Constructs a config for a `LogLevel` value. * * @since 2.0.0 * @category constructors */ export declare const logLevel: (name?: string) => Config; /** * Constructs a config for a duration value. * * @since 2.5.0 * @category constructors */ export declare const duration: (name?: string) => Config; /** * This function returns `true` if the specified value is an `Config` value, * `false` otherwise. * * This function can be useful for checking the type of a value before * attempting to operate on it as an `Config` value. For example, you could * use `isConfig` to check the type of a value before using it as an * argument to a function that expects an `Config` value. * * @since 2.0.0 * @category refinements */ export declare const isConfig: (u: unknown) => u is Config; /** * Returns a config whose structure is the same as this one, but which produces * a different value, constructed using the specified function. * * @since 2.0.0 * @category mapping */ export declare const map: { /** * Returns a config whose structure is the same as this one, but which produces * a different value, constructed using the specified function. * * @since 2.0.0 * @category mapping */ (f: (a: A) => B): (self: Config) => Config; /** * Returns a config whose structure is the same as this one, but which produces * a different value, constructed using the specified function. * * @since 2.0.0 * @category mapping */ (self: Config, f: (a: A) => B): Config; }; /** * Returns a config whose structure is the same as this one, but which may * produce a different value, constructed using the specified function, which * may throw exceptions that will be translated into validation errors. * * @since 2.0.0 * @category utils */ export declare const mapAttempt: { /** * Returns a config whose structure is the same as this one, but which may * produce a different value, constructed using the specified function, which * may throw exceptions that will be translated into validation errors. * * @since 2.0.0 * @category utils */ (f: (a: A) => B): (self: Config) => Config; /** * Returns a config whose structure is the same as this one, but which may * produce a different value, constructed using the specified function, which * may throw exceptions that will be translated into validation errors. * * @since 2.0.0 * @category utils */ (self: Config, f: (a: A) => B): Config; }; /** * Returns a new config whose structure is the samea as this one, but which * may produce a different value, constructed using the specified fallible * function. * * @since 2.0.0 * @category utils */ export declare const mapOrFail: { /** * Returns a new config whose structure is the samea as this one, but which * may produce a different value, constructed using the specified fallible * function. * * @since 2.0.0 * @category utils */ (f: (a: A) => Either.Either): (self: Config) => Config; /** * Returns a new config whose structure is the samea as this one, but which * may produce a different value, constructed using the specified fallible * function. * * @since 2.0.0 * @category utils */ (self: Config, f: (a: A) => Either.Either): Config; }; /** * Returns a config that has this configuration nested as a property of the * specified name. * * @since 2.0.0 * @category utils */ export declare const nested: { /** * Returns a config that has this configuration nested as a property of the * specified name. * * @since 2.0.0 * @category utils */ (name: string): (self: Config) => Config; /** * Returns a config that has this configuration nested as a property of the * specified name. * * @since 2.0.0 * @category utils */ (self: Config, name: string): Config; }; /** * Returns a config whose structure is preferentially described by this * config, but which falls back to the specified config if there is an issue * reading from this config. * * @since 2.0.0 * @category utils */ export declare const orElse: { /** * Returns a config whose structure is preferentially described by this * config, but which falls back to the specified config if there is an issue * reading from this config. * * @since 2.0.0 * @category utils */ (that: LazyArg>): (self: Config) => Config; /** * Returns a config whose structure is preferentially described by this * config, but which falls back to the specified config if there is an issue * reading from this config. * * @since 2.0.0 * @category utils */ (self: Config, that: LazyArg>): Config; }; /** * Returns configuration which reads from this configuration, but which falls * back to the specified configuration if reading from this configuration * fails with an error satisfying the specified predicate. * * @since 2.0.0 * @category utils */ export declare const orElseIf: { /** * Returns configuration which reads from this configuration, but which falls * back to the specified configuration if reading from this configuration * fails with an error satisfying the specified predicate. * * @since 2.0.0 * @category utils */ (options: { readonly if: Predicate; readonly orElse: LazyArg>; }): (self: Config) => Config; /** * Returns configuration which reads from this configuration, but which falls * back to the specified configuration if reading from this configuration * fails with an error satisfying the specified predicate. * * @since 2.0.0 * @category utils */ (self: Config, options: { readonly if: Predicate; readonly orElse: LazyArg>; }): Config; }; /** * Returns an optional version of this config, which will be `None` if the * data is missing from configuration, and `Some` otherwise. * * @since 2.0.0 * @category utils */ export declare const option: (self: Config) => Config>; /** * Constructs a new primitive config. * * @since 2.0.0 * @category constructors */ export declare const primitive: (description: string, parse: (text: string) => Either.Either) => Config; /** * Returns a config that describes a sequence of values, each of which has the * structure of this config. * * @since 2.0.0 * @category utils */ export declare const repeat: (self: Config) => Config>; /** * Constructs a config for a secret value. * * @since 2.0.0 * @category constructors * @deprecated */ export declare const secret: (name?: string) => Config; /** * Constructs a config for a redacted value. * * @since 2.0.0 * @category constructors */ export declare const redacted: { /** * Constructs a config for a redacted value. * * @since 2.0.0 * @category constructors */ (name?: string): Config; /** * Constructs a config for a redacted value. * * @since 2.0.0 * @category constructors */ (config: Config): Config>; }; /** * Constructs a config for a branded value. * * @since 3.16.0 * @category constructors */ export declare const branded: { /** * Constructs a config for a branded value. * * @since 3.16.0 * @category constructors */ >(constructor: Brand.Brand.Constructor): (config: Config) => Config; /** * Constructs a config for a branded value. * * @since 3.16.0 * @category constructors */ >(name: string | undefined, constructor: Brand.Brand.Constructor): Config; /** * Constructs a config for a branded value. * * @since 3.16.0 * @category constructors */ >(config: Config, constructor: Brand.Brand.Constructor): Config; }; /** * Constructs a config for a sequence of values. * * @since 2.0.0 * @category constructors */ export declare const hashSet: (config: Config, name?: string) => Config>; /** * Constructs a config for a string value. * * @since 2.0.0 * @category constructors */ export declare const string: (name?: string) => Config; /** * Constructs a config for a non-empty string value. * * @since 3.7.0 * @category constructors */ export declare const nonEmptyString: (name?: string) => Config; /** * Constructs a config which contains the specified value. * * @since 2.0.0 * @category constructors */ export declare const succeed: (value: A) => Config; /** * Lazily constructs a config. * * @since 2.0.0 * @category constructors */ export declare const suspend: (config: LazyArg>) => Config; /** * Constructs a config which contains the specified lazy value. * * @since 2.0.0 * @category constructors */ export declare const sync: (value: LazyArg) => Config; /** * Constructs a config for a sequence of values. * * @since 2.0.0 * @category constructors */ export declare const hashMap: (config: Config, name?: string) => Config>; /** * Constructs a config from some configuration wrapped with the `Wrap` utility type. * * For example: * * ``` * import { Config, unwrap } from "./Config" * * interface Options { key: string } * * const makeConfig = (config: Config.Wrap): Config => unwrap(config) * ``` * * @since 2.0.0 * @category constructors */ export declare const unwrap: (wrapped: Config.Wrap) => Config; /** * Returns a config that describes the same structure as this one, but which * performs validation during loading. * * @since 2.0.0 * @category utils */ export declare const validate: { /** * Returns a config that describes the same structure as this one, but which * performs validation during loading. * * @since 2.0.0 * @category utils */ (options: { readonly message: string; readonly validation: Refinement; }): (self: Config) => Config; /** * Returns a config that describes the same structure as this one, but which * performs validation during loading. * * @since 2.0.0 * @category utils */ (options: { readonly message: string; readonly validation: Predicate; }): (self: Config) => Config; /** * Returns a config that describes the same structure as this one, but which * performs validation during loading. * * @since 2.0.0 * @category utils */ (self: Config, options: { readonly message: string; readonly validation: Refinement; }): Config; /** * Returns a config that describes the same structure as this one, but which * performs validation during loading. * * @since 2.0.0 * @category utils */ (self: Config, options: { readonly message: string; readonly validation: Predicate; }): Config; }; /** * Returns a config that describes the same structure as this one, but has the * specified default value in case the information cannot be found. * * @since 2.0.0 * @category utils */ export declare const withDefault: { /** * Returns a config that describes the same structure as this one, but has the * specified default value in case the information cannot be found. * * @since 2.0.0 * @category utils */ (def: A2): (self: Config) => Config; /** * Returns a config that describes the same structure as this one, but has the * specified default value in case the information cannot be found. * * @since 2.0.0 * @category utils */ (self: Config, def: A2): Config; }; /** * Adds a description to this configuration, which is intended for humans. * * @since 2.0.0 * @category utils */ export declare const withDescription: { /** * Adds a description to this configuration, which is intended for humans. * * @since 2.0.0 * @category utils */ (description: string): (self: Config) => Config; /** * Adds a description to this configuration, which is intended for humans. * * @since 2.0.0 * @category utils */ (self: Config, description: string): Config; }; /** * Returns a config that is the composition of this config and the specified * config. * * @since 2.0.0 * @category zipping */ export declare const zip: { /** * Returns a config that is the composition of this config and the specified * config. * * @since 2.0.0 * @category zipping */ (that: Config): (self: Config) => Config<[A, B]>; /** * Returns a config that is the composition of this config and the specified * config. * * @since 2.0.0 * @category zipping */ (self: Config, that: Config): Config<[A, B]>; }; /** * Returns a config that is the composes this config and the specified config * using the provided function. * * @since 2.0.0 * @category zipping */ export declare const zipWith: { /** * Returns a config that is the composes this config and the specified config * using the provided function. * * @since 2.0.0 * @category zipping */ (that: Config, f: (a: A, b: B) => C): (self: Config) => Config; /** * Returns a config that is the composes this config and the specified config * using the provided function. * * @since 2.0.0 * @category zipping */ (self: Config, that: Config, f: (a: A, b: B) => C): Config; }; //# sourceMappingURL=Config.d.ts.map