shelving
Version:
Toolkit for using data in JavaScript.
21 lines (20 loc) • 1.34 kB
TypeScript
import type { ImmutableArray } from "./array.js";
import type { Data } from "./data.js";
/** Allowed types for the "id" property (identifier) for an item. */
export type Identifier = string | number;
/** An item object is a data object that includes an "id" identifier property that is either a string or number. */
export type Item<I extends Identifier, T extends Data> = {
id: I;
} & T;
/** Entity or `undefined` to indicate the item doesn't exist. */
export type OptionalItem<I extends Identifier, T extends Data> = Item<I, T> | undefined;
/** Get the identifier from an item object. */
export declare function getIdentifier<I extends Identifier, T extends Data>({ id }: Item<I, T>): I;
/** Get the identifiers from an iterable set item objects. */
export declare function getIdentifiers<I extends Identifier, T extends Data>(entities: Iterable<Item<I, T>>): Iterable<I>;
/** Does a data object or data item object. */
export declare function hasIdentifier<I extends Identifier, T extends Data>(item: T | Item<I, T>, id: I): item is Item<I, T>;
/** Merge an ID into a set of data to make an `ItemData` */
export declare function getItem<I extends Identifier, T extends Data>(id: I, data: T | Item<I, T>): Item<I, T>;
/** An array of item data. */
export type Items<I extends Identifier, T extends Data> = ImmutableArray<Item<I, T>>;