feats
Version:
A comprehensive TypeScript utility library featuring fluent text building, type-safe switching, duration utilities, React hooks, and extended array/object prototypes for modern JavaScript development.
129 lines (128 loc) • 3.66 kB
TypeScript
/**
* Represents all valid input units for durations.
* Includes both short and long forms (e.g. "s", "second", "seconds").
*/
export type DurationInputUnit = "ms" | "millisecond" | "milliseconds" | "s" | "second" | "seconds" | "m" | "minute" | "minutes" | "h" | "hour" | "hours" | "d" | "day" | "days";
/**
* Creates an immutable duration object with fluent utilities.
*
* Example:
* ```ts
* const d = duration(2, "minutes");
* d.as("seconds"); // 120
* d.add(30, "seconds").milliseconds; // 150000
* ```
*
* @param value - The numeric value of the duration
* @param unit - The unit of the value (e.g. "minutes", "s", etc.)
* @returns A duration instance with utility methods and accessors
*/
export declare function duration(value: number, unit: DurationInputUnit): {
/**
* Converts the current duration to another unit.
* @param targetUnit - The unit to convert to
* @returns The converted value
*/
as: (targetUnit: DurationInputUnit) => number;
/**
* Adds another duration and returns a new immutable duration.
* @param addValue - The value to add
* @param addUnit - The unit of the value to add
*/
add: (addValue: number, addUnit: DurationInputUnit) => /*elided*/ any & {
ms: number;
millisecond: number;
milliseconds: number;
s: number;
second: number;
seconds: number;
m: number;
minute: number;
minutes: number;
h: number;
hour: number;
hours: number;
d: number;
day: number;
days: number;
};
/**
* Subtracts another duration and returns a new immutable duration.
* @param subValue - The value to subtract
* @param subUnit - The unit of the value to subtract
*/
subtract: (subValue: number, subUnit: DurationInputUnit) => /*elided*/ any & {
ms: number;
millisecond: number;
milliseconds: number;
s: number;
second: number;
seconds: number;
m: number;
minute: number;
minutes: number;
h: number;
hour: number;
hours: number;
d: number;
day: number;
days: number;
};
/**
* Returns the internal value in milliseconds.
*/
valueOf: () => number;
/**
* Converts the duration to a string in milliseconds.
* @returns A string like `"120000ms"`
*/
toString: () => string;
/**
* Returns a new duration instance with the same value.
*/
clone: () => /*elided*/ any & {
ms: number;
millisecond: number;
milliseconds: number;
s: number;
second: number;
seconds: number;
m: number;
minute: number;
minutes: number;
h: number;
hour: number;
hours: number;
d: number;
day: number;
days: number;
};
/**
* Converts the duration to a primitive value (number or string).
*/
[Symbol.toPrimitive]: (hint: string) => string | number;
} & {
ms: number;
millisecond: number;
milliseconds: number;
s: number;
second: number;
seconds: number;
m: number;
minute: number;
minutes: number;
h: number;
hour: number;
hours: number;
d: number;
day: number;
days: number;
};
/**
* Converts a duration to milliseconds.
*
* @param value - The numeric value of the duration
* @param unit - The unit of the value (e.g. "seconds", "m", etc.)
* @returns The equivalent duration in milliseconds
*/
export declare function millis(value: number, unit: DurationInputUnit): number;