@naturalcycles/js-lib
Version:
Standard library for universal (browser + Node.js) javascript
93 lines (92 loc) • 4.05 kB
TypeScript
import type { NumberEnum, StringEnum } from './types.js';
/**
* Returns all String keys of a number-enum.
*/
export declare function _numberEnumKeys<T extends NumberEnum>(en: T): (keyof T)[];
/**
* Returns all Number values of a number-enum.
*/
export declare function _numberEnumValues<T extends NumberEnum>(en: T): T[keyof T][];
/**
* Returns all String keys of a string-enum.
*/
export declare function _stringEnumKeys<T extends StringEnum>(en: T): (keyof T)[];
/**
* Returns all String values of a string-enum.
*/
export declare function _stringEnumValues<T extends StringEnum>(en: T): T[keyof T][];
/**
* Returns all number-enum "entries", where entry is a tuple of [key, value],
* where key is a String key, value is a Number value, typed as Enum itself.
*
* Doesn't work on String-enums!
*/
export declare function _numberEnumEntries<T extends NumberEnum>(en: T): [k: keyof T, v: T[keyof T]][];
/**
* Like _numberEnumEntries, but reversed.
* So, keys are Numbers, values are Strings.
*/
export declare function _numberEnumEntriesReversed<T extends NumberEnum>(en: T): [k: T[keyof T], v: keyof T][];
/**
* Like _numberEnumEntries, but as a Map.
* Keys are Strings, values are Numbers.
*/
export declare function _numberEnumAsMap<T extends NumberEnum>(en: T): Map<keyof T, T[keyof T]>;
/**
* Like _numberEnumEntriesReversed, but as a Map.
* Keys are Numbers (actual Numbers, because it's a Map, not an Object), values are Strings.
*/
export declare function _numberEnumAsMapReversed<T extends NumberEnum>(en: T): Map<T[keyof T], keyof T>;
/**
* Returns all string-enum "entries", where entry is a tuple of [key, value],
* where key is a String key, value is a String value, typed as Enum itself.
*
* Doesn't work on Number-enums!
*/
export declare function _stringEnumEntries<T extends StringEnum>(en: T): [k: keyof T, v: T[keyof T]][];
/**
* Like _stringEnumEntries, but keys and values are reversed.
*/
export declare function _stringEnumEntriesReversed<T extends StringEnum>(en: T): [k: T[keyof T], v: keyof T][];
/**
* Return String enum as Map (with the same keys and values).
*/
export declare function _stringEnumAsMap<T extends StringEnum>(en: T): Map<keyof T, T[keyof T]>;
/**
* Return String enum as Map, with keys and values reversed.
*/
export declare function _stringEnumAsMapReversed<T extends StringEnum>(en: T): Map<T[keyof T], keyof T>;
/**
* Allows to return a Number enum value (typed as Enum itself) based on it's String key.
* e.g:
* const v = SomeEnum['stringKey']
* // v is of type SomeEnum, which is of type Number
*
* Throws if value is not found!
*/
export declare function _numberEnumValue<T extends NumberEnum>(en: T, k: keyof T): T[keyof T];
/**
* _numberEnumKey, but allows to get/return undefined output.
*/
export declare function _numberEnumValueOrUndefined<T extends NumberEnum>(en: T, k: keyof T | undefined): T[keyof T] | undefined;
/**
* Takes number or string enum input, returns normalized Enum output (Number).
* Only works for number enums.
*
* Throws if value is not found!
*/
export declare function _numberEnumNormalize<T extends NumberEnum>(en: T, v: string | number): T[keyof T];
/**
* Same as _numberEnumNormalize, but allows to return undefined values.
*/
export declare function _numberEnumNormalizeOrUndefined<T extends NumberEnum>(en: T, v: string | number | undefined): T[keyof T] | undefined;
/**
* Returns a String key for given NumberEnum value, or undefined if not found.
*/
export declare function _numberEnumKeyOrUndefined<T extends NumberEnum>(en: T, v: T[keyof T] | undefined | null): keyof T | undefined;
/**
* Returns a String key for given NumberEnum value, throws if not found.
*/
export declare function _numberEnumKey<T extends NumberEnum>(en: T, v: T[keyof T] | undefined | null): keyof T;
export declare function _stringEnumKeyOrUndefined<T extends StringEnum>(en: T, v: string | undefined | null): keyof T | undefined;
export declare function _stringEnumKey<T extends StringEnum>(en: T, v: string | undefined | null): keyof T;