import * as Effect from "effect/Effect"; import * as Fiber from "effect/Fiber"; import * as Option from "effect/Option"; import * as Result from "effect/Result"; import type { DeepMutable, Equals, Mutable } from "./Types.js"; export * from "./utils/effectify.ts"; export * from "./utils/extend.ts"; export * from "./utils/gen.ts"; export * from "./utils/logger.ts"; export * from "./utils/logLevel.ts"; export * from "effect/Utils"; export declare const cloneTrait: unique symbol; export interface Clone { [cloneTrait](this: this, that: any): this; } export declare const unsafeRight: (ei: Result.Result) => A; export declare const unsafeSome: (makeErrorMessage: () => string) => (o: Option.Option) => A; export declare function toString(v: unknown): string; export declare const typedKeysOf: (obj: T) => (keyof T)[]; export declare const typedValuesOf: (obj: T) => ValueOf[]; type ValueOf = T[keyof T]; export type Constructor = { new (...args: any[]): T; }; export type ThenArg = T extends Promise ? U : T extends (...args: any[]) => Promise ? V : T; /** * @deprecated TODO: does not filter optional fields! */ type NoUndefinedField = { [P in keyof T]: Exclude; }; export declare function dropUndefinedT>(input: A): NoUndefinedField; type IsOptional, K extends keyof T> = {} extends Pick ? true : false; type WithUndefined> = { [K in keyof T]: IsOptional extends true ? T[K] | undefined : T[K]; }; type WithUndefinedRecursive> = { [K in keyof T]: WithUndefinedRecursive extends infer $RTK ? IsOptional extends true ? $RTK | undefined : $RTK : never; }; /** a version of @see dropUndefinedT that keeps support for go to definition, auto completion, and documentation of fields! */ export declare function dropUndefinedT2>(): (input: WithUndefined) => Desired; /** * A recursive version of @see dropUndefinedT that preserves IDE support for * go-to-definition, auto-completion, and field documentation. * * Note: This utility does not physically remove `undefined` fields at runtime. * It provides type-level compatibility with libraries that use `prop?: type` * syntax. Before the introduction of `exactOptionalPropertyTypes`, this syntax * implicitly allowed `undefined` values. Libraries that adopted `prop?: type` * before this flag was introduced still accept `undefined` at runtime. */ export declare function dropUndefinedRec>(): (input: WithUndefinedRecursive) => Desired; export type Dictionary = { readonly [P in string]: T; }; export declare function dropUndefined(input: Dictionary): Dictionary; type GetTag = T extends { _tag: infer K; } ? K : never; export declare const isOfType: (tag: GetTag) => (e: { _tag: string; }) => e is T; export declare function capitalize(string: T): Capitalize; export declare function uncapitalize(string: T): Uncapitalize; export declare function pretty(o: unknown): string; export type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; export type IsUnion = [T] extends [UnionToIntersection] ? false : true; export type EnforceNonEmptyRecord = keyof R extends never ? never : R; export declare function intersect(...as: AS): UnionToIntersection<{ [k in keyof AS]: AS[k]; }[number]>; export type IsEqualTo = (() => T extends X ? 1 : 2) extends () => (T extends Y ? 1 : 2) ? true : false; export declare const unifyIndex: unique symbol; export type unifyIndex = typeof unifyIndex; export interface UnifiableIndexed<_X> { } export type UnifiableIndexedURI = keyof UnifiableIndexed; export interface Unifiable { Unify: [X] extends [{ readonly [unifyIndex]: infer K; }] ? K extends UnifiableIndexedURI ? UnifiableIndexed[K] : never : never; } export type Unify = Unifiable[keyof Unifiable] extends never ? X : Unifiable[keyof Unifiable]; /** Signifies that the modified property descriptor can be reset to its original state */ interface ResettableDescriptor { /** * Restore the property descriptor on the given class instance or prototype and re-apply the lazy getter. * @param on The class instance or prototype */ reset(on: any): void; } /** A filter function that must return true for the value to cached */ export type ResultSelectorFn = (v: any) => boolean; /** * Evaluate the getter function and cache the result * @param [setProto=false] Set the value on the class prototype as well. Only applies to non-static getters. * @param [makeNonConfigurable=false] Set to true to make the resolved property non-configurable * @param [resultSelector] A filter function that must return true for the value to cached * @return A decorator function */ export declare function LazyGetter(setProto?: boolean, makeNonConfigurable?: boolean, resultSelector?: ResultSelectorFn): MethodDecorator & ResettableDescriptor; export type RefinementWithIndex = (i: I, a: A) => a is B; export type PredicateWithIndex = (i: I, a: A) => boolean; export type Erase = R & K extends K & infer R1 ? R1 : R; /** from ts-toolbelt, minimal port of Compute */ export type Depth = "flat" | "deep"; type Errors = Error; type Numeric = Date; type Textual = RegExp; type Arrays = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array; type Maps = ReadonlyMap | ReadonlySet | WeakMap | WeakSet; type Structures = ArrayBuffer | DataView; type Abstractions = Function | Promise | Generator; type WebAssembly = never; export type BuiltInObject = Errors | Numeric | Textual | Arrays | Maps | Structures | Abstractions | WebAssembly; export type ComputeRaw = A extends Function ? A : { [K in keyof A]: A[K]; } & {}; export type ComputeFlat = A extends BuiltInObject ? A : { [K in keyof A]: A[K]; } & {}; export type ComputeDeep = A extends BuiltInObject ? A : { [K in keyof A]: ComputeDeep; } & {}; export type Compute = { flat: ComputeFlat; deep: ComputeDeep; }[depth]; export declare const LazySymbol: unique symbol; export declare function lazyGetter(creator: (target: T) => T2): (target: T) => T2; export declare function exhaustiveMatch(): any>>(handlers: Out) => (t: T) => ReturnType; export declare function exhaustiveMatch_(t: T): any>>(handlers: Out) => ReturnType; export declare function assertUnreachable(x: never): never; export type OptPromise any> = (...args: Parameters) => Promise> | ReturnType; export declare function access(t: Record): (key: T) => Record[T]; export declare function todayAtUTCNoon(): Date; export declare function anyOp$(self: T): AnyOps; export interface AnyOps { subject: T; } export declare const clone: ((f: NoInfer) => (self: A) => A) & ((self: A, f: A) => A); export declare const copy: { (f: (a: A) => Partial>): (self: A) => A; (f: Partial>): (self: A) => A; } & { (self: A, f: (a: A) => Partial): A; (self: A, f: Partial): A; }; export type CopyOriginU any> = { [K in keyof U & keyof InstanceType]?: U[K]; } & {}; export type CopyOriginRet = { [K in keyof A | keyof U]: K extends keyof U ? U[K] : A[K & keyof A]; } & {}; export type CopyOriginSelf = Equals<{}, U> extends true ? Equals extends true ? `updates argument is empty or contains only extra properties` : A : A; export interface StructuralCopyOrigin { >(f: (a: A) => { [K in keyof U & keyof Self]?: U[K]; } & {}): (self: CopyOriginSelf) => CopyOriginRet; >(updates: { [K in keyof U & keyof Self]?: U[K]; } & {}): (self: CopyOriginSelf) => CopyOriginRet; >(self: CopyOriginSelf, f: (a: A) => { [K in keyof U & keyof Self]?: U[K]; } & {}): CopyOriginRet; >(self: CopyOriginSelf, updates: { [K in keyof U & keyof Self]?: U[K]; } & {}): CopyOriginRet; } /** * By design this does not return `Self` directly. * * The return type is computed from `Self` and the update payload so callers can * expose an explicit structural return type that remains assignable to `Self`. */ export declare const copyOrigin: any>(ctor: Ctor) => { , U extends Partial>>(f: (a: A) => CopyOriginU): (self: CopyOriginSelf) => CopyOriginRet; , U extends Partial>>(updates: CopyOriginU): (self: CopyOriginSelf) => CopyOriginRet; } & { , U extends Partial>>(self: CopyOriginSelf, f: (a: A) => CopyOriginU): CopyOriginRet; , U extends Partial>>(self: CopyOriginSelf, updates: CopyOriginU): CopyOriginRet; }; export declare function debug(a: AnyOps, name: string): Effect.Effect; export declare function debugUnsafe(a: AnyOps, name: string): A; export declare function spread, NewProps>(fields: Fields, fnc: (fields: Fields) => NewProps): NewProps; export declare function spreadS>(fields: Fields, fnc: (fields: Fields) => Fields): Fields; export declare function makeAzureFriendly(path: string): string; export declare function undoAzureFriendly(path: T): T; export declare function arrayMove(arrInput: readonly T[], oldIndex: number, newIndex: number): (T | undefined)[]; export declare function arrayMoveDropUndefined(arrInput: readonly (T | undefined)[], oldIndex: number, newIndex: number): T[]; export declare function arMoveElDropUndefined(el: T, newIndex: number): (arrInput: ReadonlyArray) => Option.Option>; export declare function setMoveElDropUndefined(el: T, newIndex: number): (arrInput: ReadonlySet) => Option.Option>; type RemoveNonArray = T extends readonly any[] ? T : never; export declare function isNativeTuple(a: A): a is RemoveNonArray; export declare const mutable: { (a: A, deep: true): DeepMutable; (a: A): Mutable; }; /** * Recursively removes all elements assignable to type `E` from tuple `T`. * * @example * ```typescript * type Mixed = [1, "hello", 2, "world", 3] * type Numbers = ExcludeFromTuple * // Result: [1, 2, 3] * ``` */ export type ExcludeFromTuple = T extends [infer F, ...infer R] ? [F] extends [E] ? ExcludeFromTuple : [F, ...ExcludeFromTuple] : []; export declare const addAbortToRuntimeFiber: (fiber: Fiber.Fiber, signal: AbortSignal) => Fiber.Fiber; export declare const runtimeFiberAsPromise: (fiber: Fiber.Fiber, signal?: AbortSignal) => Promise; export declare const wrapEffect: >(m: ((...args: Args) => A) | ((...args: Args) => Effect.Effect) | I) => (...args: Args) => Effect.Effect; export type UnionToTuples = [T] extends [never] ? [] : T extends any ? [T, ...UnionToTuples>] | UnionToTuples> : []; /** * @example * ```ts * import * as Utils from "effect/Utils" * * function* generatorFn() { * yield 1 * yield 2 * } * * console.log(Utils.isGeneratorFunction(generatorFn)) // true * console.log(Utils.isGeneratorFunction(() => {})) // false * ``` * * @category predicates * @since 3.11.0 */ export declare const isGeneratorFunction: (u: unknown) => u is (...args: Array) => Generator; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUV2QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUVyQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUd2QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUV2QyxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUc5RCxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMscUJBQXFCLENBQUE7QUFHbkMsY0FBYyxjQUFjLENBQUE7QUFFNUIsZUFBTyxNQUFNLFVBQVUsZUFBNEIsQ0FBQTtBQUNuRCxNQUFNLFdBQVcsS0FBSztJQUNwQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUE7Q0FDMUM7QUFFRCxlQUFPLE1BQU0sV0FBVyxHQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BTXhELENBQUE7QUFFRCxlQUFPLE1BQU0sVUFBVSxxQkFBc0IsTUFBTSxNQUFNLE1BQU0sQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BS3BGLENBQUE7QUFFRCx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLFVBRWxDO0FBRUQsZUFBTyxNQUFNLFdBQVcsR0FBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUE7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