@voiceflow/common
Version:
Junk drawer of utility functions
74 lines • 3 kB
TypeScript
import type { Normalized } from '../types.js';
export interface ObjectWithId {
id: number | string;
}
export interface RemoveNormalizedByKey {
<T>(normalized: Normalized<T>, targetKey: string): Normalized<T>;
<T extends Normalized<any>>(normalized: T, targetKey: string): T;
}
export interface GetNormalizedByKey {
<T>({ byKey }: Normalized<T>, key: string): T;
<T extends Normalized<any>>({ byKey }: T, key: string): T extends Normalized<infer R> ? R : never;
}
export interface SafeGetNormalizedByKey {
<T>({ byKey }: Normalized<T>, key: string): T | null;
<T extends Normalized<any>>({ byKey }: T, key: string): T extends Normalized<infer R> ? R | null : never;
}
export declare const EMPTY: Normalized<any>;
export type GetKey<T> = (obj: T, index?: number, array?: T[]) => string;
export type GetKeyFromMap<T> = (obj: T, index: number, array: T[]) => string;
export declare const defaultGetKey: <T extends ObjectWithId>(obj: T) => string;
/**
* @deprecated prefer `normal-store`
*/
export declare const safeAdd: <T>(items: T[], obj: T) => T[];
export declare const getByIndex: <T>(items: T[]) => (_: string, index: number) => T;
export declare const getByKey: <T>(lookup: Record<string, T>) => (key: string) => T;
export declare const buildLookup: <T>(allKeys: string[], getValue: (key: string, index: number) => T) => Record<string, T>;
/**
* @deprecated prefer `normal-store`
*/
export declare const normalize: <T extends unknown>(items: T[], getKey?: GetKeyFromMap<T>) => Normalized<T>;
/**
* @deprecated prefer `normal-store`
*/
export declare const denormalize: <T>({ allKeys, byKey }: Normalized<T>) => T[];
/**
* @deprecated prefer `normal-store`
*/
export declare const getNormalizedByKey: GetNormalizedByKey;
/**
* @deprecated prefer `normal-store`
*/
export declare const safeGetNormalizedByKey: SafeGetNormalizedByKey;
/**
* @deprecated prefer `normal-store`
*/
export declare const getAllNormalizedByKeys: <T>({ byKey }: Normalized<T>, keys: string[]) => T[];
/**
* @deprecated prefer `normal-store`
*/
export declare const updateNormalizedByKey: <T, N extends Normalized<T>>({ byKey, ...rest }: N, key: string, obj: T) => N;
/**
* @deprecated prefer `normal-store`
*/
export declare const addNormalizedByKey: <T>(normalized: Normalized<T>, key: string, obj: T) => {
allKeys: string[];
byKey: Record<string, T>;
};
/**
* @deprecated prefer `normal-store`
*/
export declare const addToStartNormalizedByKey: <T>(normalized: Normalized<T>, key: string, obj: T) => {
allKeys: string[];
byKey: Record<string, T>;
};
/**
* @deprecated prefer `normal-store`
*/
export declare const addAllNormalizedByKeys: <T extends unknown, K extends GetKey<T> = (obj: T) => string>(normalized: Normalized<T>, objs: T[], getKey?: K) => Normalized<T>;
/**
* @deprecated prefer `normal-store`
*/
export declare const reorderKeys: <T>(newKeyArray: string[], byKey: Record<string, T>) => Normalized<T>;
//# sourceMappingURL=normalized.d.ts.map