UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

30 lines (29 loc) 1.76 kB
import type { ImmutableArray } from "./array.js"; import type { ImmutableObject } from "./object.js"; import type { ImmutableSet } from "./set.js"; /** * Single entry from a map-like object. * - Consistency with `UnknownObject` * - Always readonly. */ export type Entry<K = unknown, T = unknown> = readonly [K, T]; /** Extract the type for the value of an entry. */ export type EntryKey<X> = X extends Entry<infer Y, unknown> ? Y : never; /** Extract the type for the value of an entry. */ export type EntryValue<X> = X extends Entry<unknown, infer Y> ? Y : never; /** Convert an entry back into an object. */ export type EntryObject<T extends Entry<PropertyKey, unknown>> = { readonly [E in T as E[0]]: E[1]; }; /** Extract the key from an object entry. */ export declare function getEntryKey<K, T>([k]: Entry<K, T>): K; /** Extract the value from an object entry. */ export declare function getEntryValue<K, T>([, v]: Entry<K, T>): T; /** Yield the keys of an iterable set of entries. */ export declare function getEntryKeys<K, T>(input: Iterable<Entry<K, T>>): Iterable<K>; /** Yield the values of an iterable set of entries. */ export declare function getEntryValues<K, T>(input: Iterable<Entry<K, T>>): Iterable<T>; /** Yield the entries in something that can yield entries. */ export declare function getEntries<K extends string, T = K>(...input: (ImmutableSet<K & T> | Partial<ImmutableObject<K, T>> | Iterable<Entry<K, T>>)[]): Iterable<Entry<K, T>>; export declare function getEntries<K extends number, T = K>(...input: (ImmutableArray<T> | ImmutableSet<K & T> | Iterable<Entry<K, T>>)[]): Iterable<Entry<K, T>>; export declare function getEntries<K, T = K>(...input: (ImmutableSet<K & T> | Iterable<Entry<K, T>>)[]): Iterable<Entry<K, T>>;