| /** | |
| * Represents immutable spans of time. | |
| * | |
| * A `Duration` can be finite, positive infinity, or negative infinity. It is | |
| * the standard representation for delays, timeouts, intervals, and | |
| * time-to-live values across Effect APIs. This module includes constructors | |
| * from common input shapes, unit conversions, comparisons, arithmetic, | |
| * formatting, and reusable reducer or combiner helpers. | |
| * | |
| * @since 2.0.0 | |
| */ | |
| import * as Combiner from "./Combiner.ts"; | |
| import * as Equal from "./Equal.ts"; | |
| import type * as Equ from "./Equivalence.ts"; | |
| import type * as Inspectable from "./Inspectable.ts"; | |
| import * as Option from "./Option.ts"; | |
| import * as order from "./Order.ts"; | |
| import type { Pipeable } from "./Pipeable.ts"; | |
| import * as Reducer from "./Reducer.ts"; | |
| declare const TypeId = "~effect/time/Duration"; | |
| /** | |
| * Represents a span of time with high precision, supporting operations from | |
| * nanoseconds to weeks. | |
| * | |
| * **When to use** | |
| * | |
| * Use to model elapsed time, delays, timeouts, schedule intervals, and cache | |
| * TTLs as immutable duration values. | |
| * | |
| * @see {@link Input} for values accepted by APIs that decode duration-like | |
| * inputs | |
| * @see {@link DurationValue} for the tagged representation exposed by the | |
| * `value` field | |
| * | |
| * @category models | |
| * @since 2.0.0 | |
| */ | |
| export interface Duration extends Equal.Equal, Pipeable, Inspectable.Inspectable { | |
| readonly [TypeId]: typeof TypeId; | |
| readonly value: DurationValue; | |
| } | |
| /** | |
| * Tagged representation of a `Duration` value. | |
| * | |
| * **When to use** | |
| * | |
| * Use when modeling or inspecting the exact tagged representation stored in a | |
| * `Duration`, including finite millisecond or nanosecond values and infinite | |
| * sentinels. | |
| * | |
| * **Details** | |
| * | |
| * A duration is represented as milliseconds, nanoseconds, positive infinity, | |
| * or negative infinity. | |
| * | |
| * @see {@link Duration} for the public type whose `value` field contains this | |
| * representation | |
| * @see {@link match} for pattern matching without reading `value` directly | |
| * | |
| * @category models | |
| * @since 2.0.0 | |
| */ | |
| export type DurationValue = { | |
| _tag: "Millis"; | |
| millis: number; | |
| } | { | |
| _tag: "Nanos"; | |
| nanos: bigint; | |
| } | { | |
| _tag: "Infinity"; | |
| } | { | |
| _tag: "NegativeInfinity"; | |
| }; | |
| /** | |
| * Valid time units that can be used in duration string representations. | |
| * | |
| * **When to use** | |
| * | |
| * Use when typing the unit portion of duration string inputs accepted by | |
| * `Duration.Input`. | |
| * | |
| * @see {@link Input} for the full duration input union | |
| * | |
| * @category models | |
| * @since 2.0.0 | |
| */ | |
| export type Unit = "nano" | "nanos" | "micro" | "micros" | "milli" | "millis" | "second" | "seconds" | "minute" | "minutes" | "hour" | "hours" | "day" | "days" | "week" | "weeks"; | |
| /** | |
| * Valid input types that can be converted to a Duration. | |
| * | |
| * **When to use** | |
| * | |
| * Use when an API should accept any value that Effect can convert into a | |
| * `Duration`, including existing durations, millisecond numbers, nanosecond | |
| * bigints, high-resolution tuples, duration strings, infinity strings, or | |
| * duration objects. | |
| * | |
| * **Details** | |
| * | |
| * String inputs accept values like `"10 seconds"`, `"500 millis"`, | |
| * `"Infinity"`, and `"-Infinity"`. Finite fractional values that are | |
| * normalized to nanoseconds are rounded to the nearest nanosecond, with ties | |
| * away from zero. | |
| * | |
| * @see {@link fromInput} for safe conversion to `Option` | |
| * @see {@link fromInputUnsafe} for throwing conversion | |
| * @see {@link DurationObject} for object-shaped duration input | |
| * @see {@link Unit} for supported string units | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type Input = Duration | number | bigint | readonly [seconds: number, nanos: number] | `${number} ${Unit}` | "Infinity" | "-Infinity" | DurationObject; | |
| /** | |
| * An object with optional duration components that can be combined to create | |
| * a Duration. All fields are optional and additive. | |
| * | |
| * **Details** | |
| * | |
| * Compatible with Temporal.Duration-like objects. | |
| * | |
| * **Example** (Combining duration object fields) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * Duration.fromInputUnsafe({ seconds: 30 }) | |
| * Duration.fromInputUnsafe({ days: 1 }) | |
| * Duration.fromInputUnsafe({ seconds: 1, nanoseconds: 500 }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface DurationObject { | |
| readonly weeks?: number | undefined; | |
| readonly days?: number | undefined; | |
| readonly hours?: number | undefined; | |
| readonly minutes?: number | undefined; | |
| readonly seconds?: number | undefined; | |
| readonly milliseconds?: number | undefined; | |
| readonly microseconds?: number | undefined; | |
| readonly nanoseconds?: number | undefined; | |
| } | |
| /** | |
| * Decodes a `Duration.Input` into a `Duration`. | |
| * | |
| * **When to use** | |
| * | |
| * Use when the input has already been validated or comes from a trusted source | |
| * and throwing is acceptable for invalid duration syntax. | |
| * | |
| * **Gotchas** | |
| * | |
| * If the input is not a valid `Duration.Input`, it throws an error. | |
| * | |
| * **Example** (Decoding duration inputs) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration1 = Duration.fromInputUnsafe(1000) // 1000 milliseconds | |
| * const duration2 = Duration.fromInputUnsafe("5 seconds") | |
| * const duration3 = Duration.fromInputUnsafe("Infinity") | |
| * const duration4 = Duration.fromInputUnsafe([2, 500_000_000]) // 2 seconds and 500ms | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const fromInputUnsafe: (input: Input) => Duration; | |
| /** | |
| * Decodes a `Input` value into a `Duration` safely, returning | |
| * `Option.none()` if decoding fails. | |
| * | |
| * **Example** (Safely decoding duration inputs) | |
| * | |
| * ```ts | |
| * import { Duration, Option } from "effect" | |
| * | |
| * Duration.fromInput(1000).pipe(Option.map(Duration.toSeconds)) // Some(1) | |
| * | |
| * Duration.fromInput("invalid" as any) // None | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const fromInput: (u: Input) => Option.Option<Duration>; | |
| /** | |
| * Checks whether a value is a Duration. | |
| * | |
| * **Example** (Checking for durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.isDuration(Duration.seconds(1))) // true | |
| * console.log(Duration.isDuration(1000)) // false | |
| * ``` | |
| * | |
| * @category guards | |
| * @since 2.0.0 | |
| */ | |
| export declare const isDuration: (u: unknown) => u is Duration; | |
| /** | |
| * Checks whether a Duration is finite (not infinite). | |
| * | |
| * **Example** (Checking finite durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.isFinite(Duration.seconds(5))) // true | |
| * console.log(Duration.isFinite(Duration.infinity)) // false | |
| * ``` | |
| * | |
| * @category guards | |
| * @since 2.0.0 | |
| */ | |
| export declare const isFinite: (self: Duration) => boolean; | |
| /** | |
| * Checks whether a Duration is zero. | |
| * | |
| * **Example** (Checking for zero durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.isZero(Duration.zero)) // true | |
| * console.log(Duration.isZero(Duration.seconds(1))) // false | |
| * ``` | |
| * | |
| * @category guards | |
| * @since 3.5.0 | |
| */ | |
| export declare const isZero: (self: Duration) => boolean; | |
| /** | |
| * Returns `true` if the duration is negative (strictly less than zero). | |
| * | |
| * **Example** (Checking for negative durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.isNegative(Duration.seconds(-5))) // true | |
| * console.log(Duration.isNegative(Duration.zero)) // false | |
| * console.log(Duration.isNegative(Duration.negativeInfinity)) // true | |
| * ``` | |
| * | |
| * @category guards | |
| * @since 4.0.0 | |
| */ | |
| export declare const isNegative: (self: Duration) => boolean; | |
| /** | |
| * Returns `true` if the duration is positive (strictly greater than zero). | |
| * | |
| * **Example** (Checking for positive durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.isPositive(Duration.seconds(5))) // true | |
| * console.log(Duration.isPositive(Duration.zero)) // false | |
| * console.log(Duration.isPositive(Duration.infinity)) // true | |
| * ``` | |
| * | |
| * @category guards | |
| * @since 4.0.0 | |
| */ | |
| export declare const isPositive: (self: Duration) => boolean; | |
| /** | |
| * Returns the absolute value of the duration. | |
| * | |
| * **Example** (Taking absolute duration values) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * Duration.toMillis(Duration.abs(Duration.seconds(-5))) // 5000 | |
| * Duration.abs(Duration.negativeInfinity) === Duration.infinity // true | |
| * ``` | |
| * | |
| * @category math | |
| * @since 4.0.0 | |
| */ | |
| export declare const abs: (self: Duration) => Duration; | |
| /** | |
| * Returns the negated duration. | |
| * | |
| * **Example** (Negating durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * Duration.toMillis(Duration.negate(Duration.seconds(5))) // -5000 | |
| * Duration.negate(Duration.infinity) === Duration.negativeInfinity // true | |
| * ``` | |
| * | |
| * @category math | |
| * @since 4.0.0 | |
| */ | |
| export declare const negate: (self: Duration) => Duration; | |
| /** | |
| * A Duration representing zero time. | |
| * | |
| * **Example** (Using the zero duration) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.toMillis(Duration.zero)) // 0 | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 2.0.0 | |
| */ | |
| export declare const zero: Duration; | |
| /** | |
| * A Duration representing infinite time. | |
| * | |
| * **Example** (Using infinite duration) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.toMillis(Duration.infinity)) // Infinity | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 2.0.0 | |
| */ | |
| export declare const infinity: Duration; | |
| /** | |
| * A Duration representing negative infinite time. | |
| * | |
| * **Example** (Using negative infinite duration) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.toMillis(Duration.negativeInfinity)) // -Infinity | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const negativeInfinity: Duration; | |
| /** | |
| * Creates a Duration from nanoseconds. | |
| * | |
| * **Example** (Creating durations from nanoseconds) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration = Duration.nanos(BigInt(500_000_000)) | |
| * console.log(Duration.toMillis(duration)) // 500 | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 2.0.0 | |
| */ | |
| export declare const nanos: (nanos: bigint) => Duration; | |
| /** | |
| * Creates a Duration from microseconds. | |
| * | |
| * **Example** (Creating durations from microseconds) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration = Duration.micros(BigInt(500_000)) | |
| * console.log(Duration.toMillis(duration)) // 500 | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 2.0.0 | |
| */ | |
| export declare const micros: (micros: bigint) => Duration; | |
| /** | |
| * Creates a Duration from milliseconds. | |
| * | |
| * **Example** (Creating durations from milliseconds) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration = Duration.millis(1000) | |
| * console.log(Duration.toMillis(duration)) // 1000 | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 2.0.0 | |
| */ | |
| export declare const millis: (millis: number) => Duration; | |
| /** | |
| * Creates a Duration from seconds. | |
| * | |
| * **Example** (Creating durations from seconds) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration = Duration.seconds(30) | |
| * console.log(Duration.toMillis(duration)) // 30000 | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 2.0.0 | |
| */ | |
| export declare const seconds: (seconds: number) => Duration; | |
| /** | |
| * Creates a Duration from minutes. | |
| * | |
| * **Example** (Creating durations from minutes) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration = Duration.minutes(5) | |
| * console.log(Duration.toMillis(duration)) // 300000 | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 2.0.0 | |
| */ | |
| export declare const minutes: (minutes: number) => Duration; | |
| /** | |
| * Creates a Duration from hours. | |
| * | |
| * **Example** (Creating durations from hours) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration = Duration.hours(2) | |
| * console.log(Duration.toMillis(duration)) // 7200000 | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 2.0.0 | |
| */ | |
| export declare const hours: (hours: number) => Duration; | |
| /** | |
| * Creates a Duration from days. | |
| * | |
| * **Example** (Creating durations from days) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration = Duration.days(1) | |
| * console.log(Duration.toMillis(duration)) // 86400000 | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 2.0.0 | |
| */ | |
| export declare const days: (days: number) => Duration; | |
| /** | |
| * Creates a Duration from weeks. | |
| * | |
| * **Example** (Creating durations from weeks) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration = Duration.weeks(1) | |
| * console.log(Duration.toMillis(duration)) // 604800000 | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 2.0.0 | |
| */ | |
| export declare const weeks: (weeks: number) => Duration; | |
| /** | |
| * Converts a Duration to milliseconds. | |
| * | |
| * **Example** (Converting durations to milliseconds) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.toMillis(Duration.seconds(5))) // 5000 | |
| * console.log(Duration.toMillis(Duration.minutes(2))) // 120000 | |
| * ``` | |
| * | |
| * @category getters | |
| * @since 2.0.0 | |
| */ | |
| export declare const toMillis: (self: Input) => number; | |
| /** | |
| * Converts a Duration to seconds. | |
| * | |
| * **Example** (Converting durations to seconds) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.toSeconds(Duration.millis(5000))) // 5 | |
| * console.log(Duration.toSeconds(Duration.minutes(2))) // 120 | |
| * ``` | |
| * | |
| * @category getters | |
| * @since 2.0.0 | |
| */ | |
| export declare const toSeconds: (self: Input) => number; | |
| /** | |
| * Converts a Duration to minutes. | |
| * | |
| * **Example** (Converting durations to minutes) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.toMinutes(Duration.seconds(120))) // 2 | |
| * console.log(Duration.toMinutes(Duration.hours(1))) // 60 | |
| * ``` | |
| * | |
| * @category getters | |
| * @since 3.8.0 | |
| */ | |
| export declare const toMinutes: (self: Input) => number; | |
| /** | |
| * Converts a Duration to hours. | |
| * | |
| * **Example** (Converting durations to hours) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.toHours(Duration.minutes(120))) // 2 | |
| * console.log(Duration.toHours(Duration.days(1))) // 24 | |
| * ``` | |
| * | |
| * @category getters | |
| * @since 3.8.0 | |
| */ | |
| export declare const toHours: (self: Input) => number; | |
| /** | |
| * Converts a Duration to days. | |
| * | |
| * **Example** (Converting durations to days) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.toDays(Duration.hours(48))) // 2 | |
| * console.log(Duration.toDays(Duration.weeks(1))) // 7 | |
| * ``` | |
| * | |
| * @category getters | |
| * @since 3.8.0 | |
| */ | |
| export declare const toDays: (self: Input) => number; | |
| /** | |
| * Converts a Duration to weeks. | |
| * | |
| * **Example** (Converting durations to weeks) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * console.log(Duration.toWeeks(Duration.days(14))) // 2 | |
| * console.log(Duration.toWeeks(Duration.days(7))) // 1 | |
| * ``` | |
| * | |
| * @category getters | |
| * @since 3.8.0 | |
| */ | |
| export declare const toWeeks: (self: Input) => number; | |
| /** | |
| * Gets the duration in nanoseconds as a bigint. | |
| * | |
| * **When to use** | |
| * | |
| * Use when the duration is known to be finite and you need the nanosecond value | |
| * as a `bigint`. | |
| * | |
| * **Details** | |
| * | |
| * Millisecond-backed fractional durations are rounded to the nearest | |
| * nanosecond, with ties away from zero. | |
| * | |
| * **Gotchas** | |
| * | |
| * If the duration is infinite, it throws an error. | |
| * | |
| * **Example** (Reading nanoseconds unsafely) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration = Duration.seconds(2) | |
| * const nanos = Duration.toNanosUnsafe(duration) | |
| * console.log(nanos) // 2000000000n | |
| * | |
| * // Duration.toNanosUnsafe(Duration.infinity) | |
| * // throws Error: "Cannot convert infinite duration to nanos" | |
| * ``` | |
| * | |
| * @category getters | |
| * @since 4.0.0 | |
| */ | |
| export declare const toNanosUnsafe: (input: Input) => bigint; | |
| /** | |
| * Gets the duration in nanoseconds safely as an `Option<bigint>`. | |
| * | |
| * **Details** | |
| * | |
| * If the duration is infinite, returns `Option.none()`. | |
| * | |
| * **Example** (Safely reading nanoseconds) | |
| * | |
| * ```ts | |
| * import { Duration, Option } from "effect" | |
| * | |
| * Duration.toNanos(Duration.seconds(1)) // Some(1000000000n) | |
| * | |
| * Duration.toNanos(Duration.infinity) // None | |
| * Option.getOrUndefined(Duration.toNanos(Duration.infinity)) // undefined | |
| * ``` | |
| * | |
| * @category getters | |
| * @since 2.0.0 | |
| */ | |
| export declare const toNanos: (self: Input) => Option.Option<bigint>; | |
| /** | |
| * Converts a Duration to high-resolution time format [seconds, nanoseconds]. | |
| * | |
| * **Example** (Converting durations to high-resolution time) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const duration = Duration.millis(1500) | |
| * const hrtime = Duration.toHrTime(duration) | |
| * console.log(hrtime) // [1, 500000000] | |
| * ``` | |
| * | |
| * @category getters | |
| * @since 2.0.0 | |
| */ | |
| export declare const toHrTime: (input: Input) => [seconds: number, nanos: number]; | |
| /** | |
| * Pattern matches on the representation of a `Duration`. | |
| * | |
| * **Details** | |
| * | |
| * Provide handlers for millisecond-backed values, nanosecond-backed values, | |
| * and positive infinity. Use `onNegativeInfinity` to handle negative infinity | |
| * separately; otherwise negative infinity is handled by `onInfinity`. | |
| * | |
| * **Example** (Pattern matching on duration representations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const result = Duration.match(Duration.seconds(5), { | |
| * onMillis: (millis) => `${millis} milliseconds`, | |
| * onNanos: (nanos) => `${nanos} nanoseconds`, | |
| * onInfinity: () => "infinite" | |
| * }) | |
| * console.log(result) // "5000 milliseconds" | |
| * ``` | |
| * | |
| * @category pattern matching | |
| * @since 2.0.0 | |
| */ | |
| export declare const match: { | |
| /** | |
| * Pattern matches on the representation of a `Duration`. | |
| * | |
| * **Details** | |
| * | |
| * Provide handlers for millisecond-backed values, nanosecond-backed values, | |
| * and positive infinity. Use `onNegativeInfinity` to handle negative infinity | |
| * separately; otherwise negative infinity is handled by `onInfinity`. | |
| * | |
| * **Example** (Pattern matching on duration representations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const result = Duration.match(Duration.seconds(5), { | |
| * onMillis: (millis) => `${millis} milliseconds`, | |
| * onNanos: (nanos) => `${nanos} nanoseconds`, | |
| * onInfinity: () => "infinite" | |
| * }) | |
| * console.log(result) // "5000 milliseconds" | |
| * ``` | |
| * | |
| * @category pattern matching | |
| * @since 2.0.0 | |
| */ | |
| <A, B, C, D = C>(options: { | |
| readonly onMillis: (millis: number) => A; | |
| readonly onNanos: (nanos: bigint) => B; | |
| readonly onInfinity: () => C; | |
| readonly onNegativeInfinity?: () => D; | |
| }): (self: Duration) => A | B | C | D; | |
| /** | |
| * Pattern matches on the representation of a `Duration`. | |
| * | |
| * **Details** | |
| * | |
| * Provide handlers for millisecond-backed values, nanosecond-backed values, | |
| * and positive infinity. Use `onNegativeInfinity` to handle negative infinity | |
| * separately; otherwise negative infinity is handled by `onInfinity`. | |
| * | |
| * **Example** (Pattern matching on duration representations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const result = Duration.match(Duration.seconds(5), { | |
| * onMillis: (millis) => `${millis} milliseconds`, | |
| * onNanos: (nanos) => `${nanos} nanoseconds`, | |
| * onInfinity: () => "infinite" | |
| * }) | |
| * console.log(result) // "5000 milliseconds" | |
| * ``` | |
| * | |
| * @category pattern matching | |
| * @since 2.0.0 | |
| */ | |
| <A, B, C, D = C>(self: Duration, options: { | |
| readonly onMillis: (millis: number) => A; | |
| readonly onNanos: (nanos: bigint) => B; | |
| readonly onInfinity: () => C; | |
| readonly onNegativeInfinity?: () => D; | |
| }): A | B | C | D; | |
| }; | |
| /** | |
| * Pattern matches on two `Duration`s, providing handlers that receive both values. | |
| * | |
| * **Example** (Pattern matching on duration pairs) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const sum = Duration.matchPair(Duration.seconds(3), Duration.seconds(2), { | |
| * onMillis: (a, b) => a + b, | |
| * onNanos: (a, b) => Number(a + b), | |
| * onInfinity: () => Infinity | |
| * }) | |
| * console.log(sum) // 5000 | |
| * ``` | |
| * | |
| * @category pattern matching | |
| * @since 4.0.0 | |
| */ | |
| export declare const matchPair: { | |
| /** | |
| * Pattern matches on two `Duration`s, providing handlers that receive both values. | |
| * | |
| * **Example** (Pattern matching on duration pairs) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const sum = Duration.matchPair(Duration.seconds(3), Duration.seconds(2), { | |
| * onMillis: (a, b) => a + b, | |
| * onNanos: (a, b) => Number(a + b), | |
| * onInfinity: () => Infinity | |
| * }) | |
| * console.log(sum) // 5000 | |
| * ``` | |
| * | |
| * @category pattern matching | |
| * @since 4.0.0 | |
| */ | |
| <A, B, C>(that: Duration, options: { | |
| readonly onMillis: (self: number, that: number) => A; | |
| readonly onNanos: (self: bigint, that: bigint) => B; | |
| readonly onInfinity: (self: Duration, that: Duration) => C; | |
| }): (self: Duration) => A | B | C; | |
| /** | |
| * Pattern matches on two `Duration`s, providing handlers that receive both values. | |
| * | |
| * **Example** (Pattern matching on duration pairs) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const sum = Duration.matchPair(Duration.seconds(3), Duration.seconds(2), { | |
| * onMillis: (a, b) => a + b, | |
| * onNanos: (a, b) => Number(a + b), | |
| * onInfinity: () => Infinity | |
| * }) | |
| * console.log(sum) // 5000 | |
| * ``` | |
| * | |
| * @category pattern matching | |
| * @since 4.0.0 | |
| */ | |
| <A, B, C>(self: Duration, that: Duration, options: { | |
| readonly onMillis: (self: number, that: number) => A; | |
| readonly onNanos: (self: bigint, that: bigint) => B; | |
| readonly onInfinity: (self: Duration, that: Duration) => C; | |
| }): A | B | C; | |
| }; | |
| /** | |
| * Provides an `Order` instance for comparing `Duration` values. | |
| * | |
| * **Details** | |
| * | |
| * `NegativeInfinity` < any finite value < `Infinity`. | |
| * | |
| * **Example** (Sorting durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const durations = [ | |
| * Duration.seconds(3), | |
| * Duration.seconds(1), | |
| * Duration.seconds(2) | |
| * ] | |
| * const sorted = durations.sort((a, b) => Duration.Order(a, b)) | |
| * console.log(sorted.map(Duration.toSeconds)) // [1, 2, 3] | |
| * ``` | |
| * | |
| * @category instances | |
| * @since 2.0.0 | |
| */ | |
| export declare const Order: order.Order<Duration>; | |
| /** | |
| * Returns `true` if a `Duration` is greater than or equal to `minimum` and | |
| * less than or equal to `maximum`, according to `Duration.Order`. | |
| * | |
| * **When to use** | |
| * | |
| * Use to test whether a duration is inside an inclusive range. | |
| * | |
| * **Details** | |
| * | |
| * Both bounds are inclusive and compared with `Duration.Order`. | |
| * | |
| * **Gotchas** | |
| * | |
| * The bounds are not normalized. If `minimum` is greater than `maximum`, the | |
| * predicate returns `false` for every duration. | |
| * | |
| * **Example** (Checking duration ranges) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isInRange = Duration.between(Duration.seconds(3), { | |
| * minimum: Duration.seconds(2), | |
| * maximum: Duration.seconds(5) | |
| * }) | |
| * console.log(isInRange) // true | |
| * ``` | |
| * | |
| * @see {@link clamp} for constraining a duration to a range | |
| * @see {@link isGreaterThanOrEqualTo} for checking only the lower bound | |
| * @see {@link isLessThanOrEqualTo} for checking only the upper bound | |
| * | |
| * @category predicates | |
| * @since 2.0.0 | |
| */ | |
| export declare const between: { | |
| /** | |
| * Returns `true` if a `Duration` is greater than or equal to `minimum` and | |
| * less than or equal to `maximum`, according to `Duration.Order`. | |
| * | |
| * **When to use** | |
| * | |
| * Use to test whether a duration is inside an inclusive range. | |
| * | |
| * **Details** | |
| * | |
| * Both bounds are inclusive and compared with `Duration.Order`. | |
| * | |
| * **Gotchas** | |
| * | |
| * The bounds are not normalized. If `minimum` is greater than `maximum`, the | |
| * predicate returns `false` for every duration. | |
| * | |
| * **Example** (Checking duration ranges) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isInRange = Duration.between(Duration.seconds(3), { | |
| * minimum: Duration.seconds(2), | |
| * maximum: Duration.seconds(5) | |
| * }) | |
| * console.log(isInRange) // true | |
| * ``` | |
| * | |
| * @see {@link clamp} for constraining a duration to a range | |
| * @see {@link isGreaterThanOrEqualTo} for checking only the lower bound | |
| * @see {@link isLessThanOrEqualTo} for checking only the upper bound | |
| * | |
| * @category predicates | |
| * @since 2.0.0 | |
| */ | |
| (options: { | |
| minimum: Duration; | |
| maximum: Duration; | |
| }): (self: Duration) => boolean; | |
| /** | |
| * Returns `true` if a `Duration` is greater than or equal to `minimum` and | |
| * less than or equal to `maximum`, according to `Duration.Order`. | |
| * | |
| * **When to use** | |
| * | |
| * Use to test whether a duration is inside an inclusive range. | |
| * | |
| * **Details** | |
| * | |
| * Both bounds are inclusive and compared with `Duration.Order`. | |
| * | |
| * **Gotchas** | |
| * | |
| * The bounds are not normalized. If `minimum` is greater than `maximum`, the | |
| * predicate returns `false` for every duration. | |
| * | |
| * **Example** (Checking duration ranges) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isInRange = Duration.between(Duration.seconds(3), { | |
| * minimum: Duration.seconds(2), | |
| * maximum: Duration.seconds(5) | |
| * }) | |
| * console.log(isInRange) // true | |
| * ``` | |
| * | |
| * @see {@link clamp} for constraining a duration to a range | |
| * @see {@link isGreaterThanOrEqualTo} for checking only the lower bound | |
| * @see {@link isLessThanOrEqualTo} for checking only the upper bound | |
| * | |
| * @category predicates | |
| * @since 2.0.0 | |
| */ | |
| (self: Duration, options: { | |
| minimum: Duration; | |
| maximum: Duration; | |
| }): boolean; | |
| }; | |
| /** | |
| * Provides an `Equivalence` instance for comparing `Duration` values. | |
| * | |
| * **Example** (Comparing durations for equivalence) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isEqual = Duration.Equivalence(Duration.seconds(5), Duration.millis(5000)) | |
| * console.log(isEqual) // true | |
| * ``` | |
| * | |
| * @category instances | |
| * @since 2.0.0 | |
| */ | |
| export declare const Equivalence: Equ.Equivalence<Duration>; | |
| /** | |
| * Returns the smaller of two Durations. | |
| * | |
| * **Example** (Selecting the shorter duration) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const shorter = Duration.min(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(shorter)) // 3 | |
| * ``` | |
| * | |
| * @category ordering | |
| * @since 2.0.0 | |
| */ | |
| export declare const min: { | |
| /** | |
| * Returns the smaller of two Durations. | |
| * | |
| * **Example** (Selecting the shorter duration) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const shorter = Duration.min(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(shorter)) // 3 | |
| * ``` | |
| * | |
| * @category ordering | |
| * @since 2.0.0 | |
| */ | |
| (that: Duration): (self: Duration) => Duration; | |
| /** | |
| * Returns the smaller of two Durations. | |
| * | |
| * **Example** (Selecting the shorter duration) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const shorter = Duration.min(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(shorter)) // 3 | |
| * ``` | |
| * | |
| * @category ordering | |
| * @since 2.0.0 | |
| */ | |
| (self: Duration, that: Duration): Duration; | |
| }; | |
| /** | |
| * Returns the larger of two Durations. | |
| * | |
| * **Example** (Selecting the longer duration) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const longer = Duration.max(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(longer)) // 5 | |
| * ``` | |
| * | |
| * @category ordering | |
| * @since 2.0.0 | |
| */ | |
| export declare const max: { | |
| /** | |
| * Returns the larger of two Durations. | |
| * | |
| * **Example** (Selecting the longer duration) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const longer = Duration.max(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(longer)) // 5 | |
| * ``` | |
| * | |
| * @category ordering | |
| * @since 2.0.0 | |
| */ | |
| (that: Duration): (self: Duration) => Duration; | |
| /** | |
| * Returns the larger of two Durations. | |
| * | |
| * **Example** (Selecting the longer duration) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const longer = Duration.max(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(longer)) // 5 | |
| * ``` | |
| * | |
| * @category ordering | |
| * @since 2.0.0 | |
| */ | |
| (self: Duration, that: Duration): Duration; | |
| }; | |
| /** | |
| * Returns a `Duration` constrained between a minimum and maximum value. | |
| * | |
| * **Example** (Clamping durations to a range) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const clamped = Duration.clamp(Duration.seconds(10), { | |
| * minimum: Duration.seconds(2), | |
| * maximum: Duration.seconds(5) | |
| * }) | |
| * console.log(Duration.toSeconds(clamped)) // 5 | |
| * ``` | |
| * | |
| * @category ordering | |
| * @since 2.0.0 | |
| */ | |
| export declare const clamp: { | |
| /** | |
| * Returns a `Duration` constrained between a minimum and maximum value. | |
| * | |
| * **Example** (Clamping durations to a range) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const clamped = Duration.clamp(Duration.seconds(10), { | |
| * minimum: Duration.seconds(2), | |
| * maximum: Duration.seconds(5) | |
| * }) | |
| * console.log(Duration.toSeconds(clamped)) // 5 | |
| * ``` | |
| * | |
| * @category ordering | |
| * @since 2.0.0 | |
| */ | |
| (options: { | |
| minimum: Duration; | |
| maximum: Duration; | |
| }): (self: Duration) => Duration; | |
| /** | |
| * Returns a `Duration` constrained between a minimum and maximum value. | |
| * | |
| * **Example** (Clamping durations to a range) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const clamped = Duration.clamp(Duration.seconds(10), { | |
| * minimum: Duration.seconds(2), | |
| * maximum: Duration.seconds(5) | |
| * }) | |
| * console.log(Duration.toSeconds(clamped)) // 5 | |
| * ``` | |
| * | |
| * @category ordering | |
| * @since 2.0.0 | |
| */ | |
| (self: Duration, options: { | |
| minimum: Duration; | |
| maximum: Duration; | |
| }): Duration; | |
| }; | |
| /** | |
| * Divides a `Duration` by a finite, non-zero number safely. | |
| * | |
| * **Details** | |
| * | |
| * Returns `Option.none()` for zero, negative zero, or non-finite divisors. For | |
| * nanosecond-backed durations, also returns `Option.none()` when the divisor | |
| * cannot be converted to a `bigint`, such as a fractional divisor. | |
| * | |
| * **Example** (Safely dividing durations) | |
| * | |
| * ```ts | |
| * import { Duration, Option } from "effect" | |
| * | |
| * const d = Duration.divide(Duration.seconds(10), 2) | |
| * console.log(Option.map(d, Duration.toSeconds)) // Some(5) | |
| * | |
| * Duration.divide(Duration.seconds(10), 0) // None | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.4.19 | |
| */ | |
| export declare const divide: { | |
| /** | |
| * Divides a `Duration` by a finite, non-zero number safely. | |
| * | |
| * **Details** | |
| * | |
| * Returns `Option.none()` for zero, negative zero, or non-finite divisors. For | |
| * nanosecond-backed durations, also returns `Option.none()` when the divisor | |
| * cannot be converted to a `bigint`, such as a fractional divisor. | |
| * | |
| * **Example** (Safely dividing durations) | |
| * | |
| * ```ts | |
| * import { Duration, Option } from "effect" | |
| * | |
| * const d = Duration.divide(Duration.seconds(10), 2) | |
| * console.log(Option.map(d, Duration.toSeconds)) // Some(5) | |
| * | |
| * Duration.divide(Duration.seconds(10), 0) // None | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.4.19 | |
| */ | |
| (by: number): (self: Duration) => Option.Option<Duration>; | |
| /** | |
| * Divides a `Duration` by a finite, non-zero number safely. | |
| * | |
| * **Details** | |
| * | |
| * Returns `Option.none()` for zero, negative zero, or non-finite divisors. For | |
| * nanosecond-backed durations, also returns `Option.none()` when the divisor | |
| * cannot be converted to a `bigint`, such as a fractional divisor. | |
| * | |
| * **Example** (Safely dividing durations) | |
| * | |
| * ```ts | |
| * import { Duration, Option } from "effect" | |
| * | |
| * const d = Duration.divide(Duration.seconds(10), 2) | |
| * console.log(Option.map(d, Duration.toSeconds)) // Some(5) | |
| * | |
| * Duration.divide(Duration.seconds(10), 0) // None | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.4.19 | |
| */ | |
| (self: Duration, by: number): Option.Option<Duration>; | |
| }; | |
| /** | |
| * Divides a `Duration` by a number using fallback rules instead of returning | |
| * an `Option`. | |
| * | |
| * **When to use** | |
| * | |
| * Use when dividing a `Duration` should return `Duration.zero` or signed | |
| * infinity for invalid cases instead of forcing callers to handle `Option.none`. | |
| * | |
| * **Details** | |
| * | |
| * Non-finite divisors return `Duration.zero`. Division by positive or negative | |
| * zero can produce signed infinity for non-zero finite durations, while zero | |
| * or infinite durations divided by zero produce `Duration.zero`. | |
| * Nanosecond-backed durations return `Duration.zero` when the divisor cannot | |
| * be converted to a `bigint`. | |
| * | |
| * **Example** (Dividing durations unsafely) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const half = Duration.divideUnsafe(Duration.seconds(10), 2) | |
| * console.log(Duration.toSeconds(half)) // 5 | |
| * | |
| * const infinite = Duration.divideUnsafe(Duration.seconds(10), 0) | |
| * console.log(Duration.toMillis(infinite)) // Infinity | |
| * ``` | |
| * | |
| * @category math | |
| * @since 4.0.0 | |
| */ | |
| export declare const divideUnsafe: { | |
| /** | |
| * Divides a `Duration` by a number using fallback rules instead of returning | |
| * an `Option`. | |
| * | |
| * **When to use** | |
| * | |
| * Use when dividing a `Duration` should return `Duration.zero` or signed | |
| * infinity for invalid cases instead of forcing callers to handle `Option.none`. | |
| * | |
| * **Details** | |
| * | |
| * Non-finite divisors return `Duration.zero`. Division by positive or negative | |
| * zero can produce signed infinity for non-zero finite durations, while zero | |
| * or infinite durations divided by zero produce `Duration.zero`. | |
| * Nanosecond-backed durations return `Duration.zero` when the divisor cannot | |
| * be converted to a `bigint`. | |
| * | |
| * **Example** (Dividing durations unsafely) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const half = Duration.divideUnsafe(Duration.seconds(10), 2) | |
| * console.log(Duration.toSeconds(half)) // 5 | |
| * | |
| * const infinite = Duration.divideUnsafe(Duration.seconds(10), 0) | |
| * console.log(Duration.toMillis(infinite)) // Infinity | |
| * ``` | |
| * | |
| * @category math | |
| * @since 4.0.0 | |
| */ | |
| (by: number): (self: Duration) => Duration; | |
| /** | |
| * Divides a `Duration` by a number using fallback rules instead of returning | |
| * an `Option`. | |
| * | |
| * **When to use** | |
| * | |
| * Use when dividing a `Duration` should return `Duration.zero` or signed | |
| * infinity for invalid cases instead of forcing callers to handle `Option.none`. | |
| * | |
| * **Details** | |
| * | |
| * Non-finite divisors return `Duration.zero`. Division by positive or negative | |
| * zero can produce signed infinity for non-zero finite durations, while zero | |
| * or infinite durations divided by zero produce `Duration.zero`. | |
| * Nanosecond-backed durations return `Duration.zero` when the divisor cannot | |
| * be converted to a `bigint`. | |
| * | |
| * **Example** (Dividing durations unsafely) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const half = Duration.divideUnsafe(Duration.seconds(10), 2) | |
| * console.log(Duration.toSeconds(half)) // 5 | |
| * | |
| * const infinite = Duration.divideUnsafe(Duration.seconds(10), 0) | |
| * console.log(Duration.toMillis(infinite)) // Infinity | |
| * ``` | |
| * | |
| * @category math | |
| * @since 4.0.0 | |
| */ | |
| (self: Duration, by: number): Duration; | |
| }; | |
| /** | |
| * Returns a `Duration` multiplied by a number. | |
| * | |
| * **Details** | |
| * | |
| * For nanosecond-backed durations, the multiplier must be convertible to a | |
| * `bigint`; fractional or non-finite multipliers can throw. Infinite | |
| * durations return positive infinity, negative infinity, or zero depending on | |
| * the multiplier sign. | |
| * | |
| * **Example** (Multiplying durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const doubled = Duration.times(Duration.seconds(5), 2) | |
| * console.log(Duration.toSeconds(doubled)) // 10 | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.0.0 | |
| */ | |
| export declare const times: { | |
| /** | |
| * Returns a `Duration` multiplied by a number. | |
| * | |
| * **Details** | |
| * | |
| * For nanosecond-backed durations, the multiplier must be convertible to a | |
| * `bigint`; fractional or non-finite multipliers can throw. Infinite | |
| * durations return positive infinity, negative infinity, or zero depending on | |
| * the multiplier sign. | |
| * | |
| * **Example** (Multiplying durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const doubled = Duration.times(Duration.seconds(5), 2) | |
| * console.log(Duration.toSeconds(doubled)) // 10 | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.0.0 | |
| */ | |
| (times: number): (self: Duration) => Duration; | |
| /** | |
| * Returns a `Duration` multiplied by a number. | |
| * | |
| * **Details** | |
| * | |
| * For nanosecond-backed durations, the multiplier must be convertible to a | |
| * `bigint`; fractional or non-finite multipliers can throw. Infinite | |
| * durations return positive infinity, negative infinity, or zero depending on | |
| * the multiplier sign. | |
| * | |
| * **Example** (Multiplying durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const doubled = Duration.times(Duration.seconds(5), 2) | |
| * console.log(Duration.toSeconds(doubled)) // 10 | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.0.0 | |
| */ | |
| (self: Duration, times: number): Duration; | |
| }; | |
| /** | |
| * Subtracts one Duration from another. The result can be negative. | |
| * | |
| * **Details** | |
| * | |
| * Infinity subtraction follows signed-infinity arithmetic. Subtracting the | |
| * same infinity from itself returns zero. Positive infinity minus negative | |
| * infinity or any finite duration remains positive infinity. Negative infinity | |
| * minus positive infinity or any finite duration remains negative infinity. | |
| * Finite durations minus positive infinity produce negative infinity, and | |
| * finite durations minus negative infinity produce positive infinity. | |
| * | |
| * **Example** (Subtracting durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const result = Duration.subtract(Duration.seconds(10), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(result)) // 7 | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.0.0 | |
| */ | |
| export declare const subtract: { | |
| /** | |
| * Subtracts one Duration from another. The result can be negative. | |
| * | |
| * **Details** | |
| * | |
| * Infinity subtraction follows signed-infinity arithmetic. Subtracting the | |
| * same infinity from itself returns zero. Positive infinity minus negative | |
| * infinity or any finite duration remains positive infinity. Negative infinity | |
| * minus positive infinity or any finite duration remains negative infinity. | |
| * Finite durations minus positive infinity produce negative infinity, and | |
| * finite durations minus negative infinity produce positive infinity. | |
| * | |
| * **Example** (Subtracting durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const result = Duration.subtract(Duration.seconds(10), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(result)) // 7 | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.0.0 | |
| */ | |
| (that: Duration): (self: Duration) => Duration; | |
| /** | |
| * Subtracts one Duration from another. The result can be negative. | |
| * | |
| * **Details** | |
| * | |
| * Infinity subtraction follows signed-infinity arithmetic. Subtracting the | |
| * same infinity from itself returns zero. Positive infinity minus negative | |
| * infinity or any finite duration remains positive infinity. Negative infinity | |
| * minus positive infinity or any finite duration remains negative infinity. | |
| * Finite durations minus positive infinity produce negative infinity, and | |
| * finite durations minus negative infinity produce positive infinity. | |
| * | |
| * **Example** (Subtracting durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const result = Duration.subtract(Duration.seconds(10), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(result)) // 7 | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.0.0 | |
| */ | |
| (self: Duration, that: Duration): Duration; | |
| }; | |
| /** | |
| * Adds two Durations together. | |
| * | |
| * **Details** | |
| * | |
| * Infinity addition follows these rules: | |
| * | |
| * - infinity + infinity = infinity | |
| * - infinity + negativeInfinity = zero | |
| * - infinity + finite = infinity | |
| * - negativeInfinity + negativeInfinity = negativeInfinity | |
| * - negativeInfinity + finite = negativeInfinity | |
| * | |
| * **Example** (Adding durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const total = Duration.sum(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(total)) // 8 | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.0.0 | |
| */ | |
| export declare const sum: { | |
| /** | |
| * Adds two Durations together. | |
| * | |
| * **Details** | |
| * | |
| * Infinity addition follows these rules: | |
| * | |
| * - infinity + infinity = infinity | |
| * - infinity + negativeInfinity = zero | |
| * - infinity + finite = infinity | |
| * - negativeInfinity + negativeInfinity = negativeInfinity | |
| * - negativeInfinity + finite = negativeInfinity | |
| * | |
| * **Example** (Adding durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const total = Duration.sum(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(total)) // 8 | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.0.0 | |
| */ | |
| (that: Duration): (self: Duration) => Duration; | |
| /** | |
| * Adds two Durations together. | |
| * | |
| * **Details** | |
| * | |
| * Infinity addition follows these rules: | |
| * | |
| * - infinity + infinity = infinity | |
| * - infinity + negativeInfinity = zero | |
| * - infinity + finite = infinity | |
| * - negativeInfinity + negativeInfinity = negativeInfinity | |
| * - negativeInfinity + finite = negativeInfinity | |
| * | |
| * **Example** (Adding durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const total = Duration.sum(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(Duration.toSeconds(total)) // 8 | |
| * ``` | |
| * | |
| * @category math | |
| * @since 2.0.0 | |
| */ | |
| (self: Duration, that: Duration): Duration; | |
| }; | |
| /** | |
| * Checks whether the first Duration is less than the second. | |
| * | |
| * **Example** (Comparing durations with less than) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isLess = Duration.isLessThan(Duration.seconds(3), Duration.seconds(5)) | |
| * console.log(isLess) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| export declare const isLessThan: { | |
| /** | |
| * Checks whether the first Duration is less than the second. | |
| * | |
| * **Example** (Comparing durations with less than) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isLess = Duration.isLessThan(Duration.seconds(3), Duration.seconds(5)) | |
| * console.log(isLess) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| (that: Duration): (self: Duration) => boolean; | |
| /** | |
| * Checks whether the first Duration is less than the second. | |
| * | |
| * **Example** (Comparing durations with less than) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isLess = Duration.isLessThan(Duration.seconds(3), Duration.seconds(5)) | |
| * console.log(isLess) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| (self: Duration, that: Duration): boolean; | |
| }; | |
| /** | |
| * Checks whether the first Duration is less than or equal to the second. | |
| * | |
| * **Example** (Comparing durations with less than or equal) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isLessOrEqual = Duration.isLessThanOrEqualTo( | |
| * Duration.seconds(5), | |
| * Duration.seconds(5) | |
| * ) | |
| * console.log(isLessOrEqual) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| export declare const isLessThanOrEqualTo: { | |
| /** | |
| * Checks whether the first Duration is less than or equal to the second. | |
| * | |
| * **Example** (Comparing durations with less than or equal) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isLessOrEqual = Duration.isLessThanOrEqualTo( | |
| * Duration.seconds(5), | |
| * Duration.seconds(5) | |
| * ) | |
| * console.log(isLessOrEqual) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| (that: Duration): (self: Duration) => boolean; | |
| /** | |
| * Checks whether the first Duration is less than or equal to the second. | |
| * | |
| * **Example** (Comparing durations with less than or equal) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isLessOrEqual = Duration.isLessThanOrEqualTo( | |
| * Duration.seconds(5), | |
| * Duration.seconds(5) | |
| * ) | |
| * console.log(isLessOrEqual) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| (self: Duration, that: Duration): boolean; | |
| }; | |
| /** | |
| * Checks whether the first Duration is greater than the second. | |
| * | |
| * **Example** (Comparing durations with greater than) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isGreater = Duration.isGreaterThan(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(isGreater) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| export declare const isGreaterThan: { | |
| /** | |
| * Checks whether the first Duration is greater than the second. | |
| * | |
| * **Example** (Comparing durations with greater than) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isGreater = Duration.isGreaterThan(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(isGreater) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| (that: Duration): (self: Duration) => boolean; | |
| /** | |
| * Checks whether the first Duration is greater than the second. | |
| * | |
| * **Example** (Comparing durations with greater than) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isGreater = Duration.isGreaterThan(Duration.seconds(5), Duration.seconds(3)) | |
| * console.log(isGreater) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| (self: Duration, that: Duration): boolean; | |
| }; | |
| /** | |
| * Checks whether the first Duration is greater than or equal to the second. | |
| * | |
| * **Example** (Comparing durations with greater than or equal) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isGreaterOrEqual = Duration.isGreaterThanOrEqualTo( | |
| * Duration.seconds(5), | |
| * Duration.seconds(5) | |
| * ) | |
| * console.log(isGreaterOrEqual) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| export declare const isGreaterThanOrEqualTo: { | |
| /** | |
| * Checks whether the first Duration is greater than or equal to the second. | |
| * | |
| * **Example** (Comparing durations with greater than or equal) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isGreaterOrEqual = Duration.isGreaterThanOrEqualTo( | |
| * Duration.seconds(5), | |
| * Duration.seconds(5) | |
| * ) | |
| * console.log(isGreaterOrEqual) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| (that: Duration): (self: Duration) => boolean; | |
| /** | |
| * Checks whether the first Duration is greater than or equal to the second. | |
| * | |
| * **Example** (Comparing durations with greater than or equal) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isGreaterOrEqual = Duration.isGreaterThanOrEqualTo( | |
| * Duration.seconds(5), | |
| * Duration.seconds(5) | |
| * ) | |
| * console.log(isGreaterOrEqual) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 4.0.0 | |
| */ | |
| (self: Duration, that: Duration): boolean; | |
| }; | |
| /** | |
| * Checks whether two Durations are equal. | |
| * | |
| * **Example** (Checking duration equality) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isEqual = Duration.equals(Duration.seconds(5), Duration.millis(5000)) | |
| * console.log(isEqual) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 2.0.0 | |
| */ | |
| export declare const equals: { | |
| /** | |
| * Checks whether two Durations are equal. | |
| * | |
| * **Example** (Checking duration equality) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isEqual = Duration.equals(Duration.seconds(5), Duration.millis(5000)) | |
| * console.log(isEqual) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 2.0.0 | |
| */ | |
| (that: Duration): (self: Duration) => boolean; | |
| /** | |
| * Checks whether two Durations are equal. | |
| * | |
| * **Example** (Checking duration equality) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * const isEqual = Duration.equals(Duration.seconds(5), Duration.millis(5000)) | |
| * console.log(isEqual) // true | |
| * ``` | |
| * | |
| * @category predicates | |
| * @since 2.0.0 | |
| */ | |
| (self: Duration, that: Duration): boolean; | |
| }; | |
| /** | |
| * Decomposes a `Duration` into normalized signed components. | |
| * | |
| * **Details** | |
| * | |
| * Finite durations are returned as `{ days, hours, minutes, seconds, millis, | |
| * nanos }`. Infinite durations return every component as `Infinity` or | |
| * `-Infinity`. | |
| * | |
| * **Example** (Decomposing durations into parts) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * // Create a complex duration by adding multiple parts | |
| * const duration = Duration.sum( | |
| * Duration.sum( | |
| * Duration.sum(Duration.days(1), Duration.hours(2)), | |
| * Duration.sum(Duration.minutes(30), Duration.seconds(45)) | |
| * ), | |
| * Duration.millis(123) | |
| * ) | |
| * const components = Duration.parts(duration) | |
| * console.log(components) | |
| * // { | |
| * // days: 1, | |
| * // hours: 2, | |
| * // minutes: 30, | |
| * // seconds: 45, | |
| * // millis: 123, | |
| * // nanos: 0 | |
| * // } | |
| * | |
| * const complex = Duration.sum(Duration.hours(25), Duration.minutes(90)) | |
| * const complexParts = Duration.parts(complex) | |
| * console.log(complexParts) | |
| * // { | |
| * // days: 1, | |
| * // hours: 2, | |
| * // minutes: 30, | |
| * // seconds: 0, | |
| * // millis: 0, | |
| * // nanos: 0 | |
| * // } | |
| * ``` | |
| * | |
| * @category converting | |
| * @since 3.8.0 | |
| */ | |
| export declare const parts: (self: Duration) => { | |
| days: number; | |
| hours: number; | |
| minutes: number; | |
| seconds: number; | |
| millis: number; | |
| nanos: number; | |
| }; | |
| /** | |
| * Converts a `Duration` to a human readable string. | |
| * | |
| * **Example** (Formatting durations) | |
| * | |
| * ```ts | |
| * import { Duration } from "effect" | |
| * | |
| * Duration.format(Duration.millis(1000)) // "1s" | |
| * Duration.format(Duration.millis(1001)) // "1s 1ms" | |
| * ``` | |
| * | |
| * @category converting | |
| * @since 2.0.0 | |
| */ | |
| export declare const format: (self: Duration) => string; | |
| /** | |
| * Reducer for summing `Duration`s. | |
| * | |
| * **When to use** | |
| * | |
| * Use to sum many `Duration` values through APIs that consume a `Reducer`. | |
| * | |
| * **Details** | |
| * | |
| * `ReducerSum` uses `sum` and starts from `zero`, so `combineAll([])` returns | |
| * `zero`. | |
| * | |
| * @see {@link sum} for adding two duration values directly | |
| * @see {@link CombinerMax} for keeping the longest duration instead of summing | |
| * @see {@link CombinerMin} for keeping the shortest duration instead of summing | |
| * | |
| * @category math | |
| * @since 4.0.0 | |
| */ | |
| export declare const ReducerSum: Reducer.Reducer<Duration>; | |
| /** | |
| * Combiner that returns the maximum `Duration`. | |
| * | |
| * **When to use** | |
| * | |
| * Use to keep the longest `Duration` when an API consumes a `Combiner`. | |
| * | |
| * @see {@link CombinerMin} for keeping the shortest `Duration` | |
| * @see {@link max} for comparing two `Duration` values directly | |
| * | |
| * @category math | |
| * @since 4.0.0 | |
| */ | |
| export declare const CombinerMax: Combiner.Combiner<Duration>; | |
| /** | |
| * Combiner that returns the minimum `Duration`. | |
| * | |
| * **When to use** | |
| * | |
| * Use to keep the shortest `Duration` through APIs that consume a `Combiner`. | |
| * | |
| * @see {@link CombinerMax} for keeping the longest `Duration` | |
| * @see {@link min} for comparing two `Duration` values directly | |
| * | |
| * @category math | |
| * @since 4.0.0 | |
| */ | |
| export declare const CombinerMin: Combiner.Combiner<Duration>; | |
| export {}; | |
| //# sourceMappingURL=Duration.d.ts.map |
Xet Storage Details
- Size:
- 52.7 kB
- Xet hash:
- 7b3c7b61140a905afec68016811381c81a3184b7d0058d4ba7a3003ff7cfaa51
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.