@augment-vir/common 15.5.0 → 15.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.filterToEnumValues = exports.isEnumValue = exports.getEnumTypedValues = exports.getEnumTypedKeys = void 0;
|
|
3
|
+
exports.filterToEnumValues = exports.ensureEnum = exports.isEnumValue = exports.getEnumTypedValues = exports.getEnumTypedKeys = void 0;
|
|
4
4
|
const object_entries_1 = require("./object-entries");
|
|
5
5
|
function getEnumTypedKeys(input) {
|
|
6
6
|
// enum keys are always strings
|
|
@@ -12,10 +12,22 @@ function getEnumTypedValues(input) {
|
|
|
12
12
|
return keys.map((key) => input[key]);
|
|
13
13
|
}
|
|
14
14
|
exports.getEnumTypedValues = getEnumTypedValues;
|
|
15
|
+
/** Check if the given value is within the given enum. */
|
|
15
16
|
function isEnumValue(input, checkEnum) {
|
|
16
17
|
return getEnumTypedValues(checkEnum).includes(input);
|
|
17
18
|
}
|
|
18
19
|
exports.isEnumValue = isEnumValue;
|
|
20
|
+
/** Interpret a primitive as an enum value with type safety. */
|
|
21
|
+
function ensureEnum(value, checkEnum) {
|
|
22
|
+
if (isEnumValue(value, checkEnum)) {
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const enumValues = getEnumTypedValues(checkEnum);
|
|
27
|
+
throw new Error(`Given value '${value}' does not match given enum. Possible enum values: ${enumValues.join(',')}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.ensureEnum = ensureEnum;
|
|
19
31
|
function filterToEnumValues(inputs, checkEnum, caseInsensitive = false) {
|
|
20
32
|
if (caseInsensitive) {
|
|
21
33
|
return inputs.reduce((accum, currentInput) => {
|
|
@@ -7,9 +7,20 @@ export function getEnumTypedValues(input) {
|
|
|
7
7
|
const keys = getEnumTypedKeys(input);
|
|
8
8
|
return keys.map((key) => input[key]);
|
|
9
9
|
}
|
|
10
|
+
/** Check if the given value is within the given enum. */
|
|
10
11
|
export function isEnumValue(input, checkEnum) {
|
|
11
12
|
return getEnumTypedValues(checkEnum).includes(input);
|
|
12
13
|
}
|
|
14
|
+
/** Interpret a primitive as an enum value with type safety. */
|
|
15
|
+
export function ensureEnum(value, checkEnum) {
|
|
16
|
+
if (isEnumValue(value, checkEnum)) {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const enumValues = getEnumTypedValues(checkEnum);
|
|
21
|
+
throw new Error(`Given value '${value}' does not match given enum. Possible enum values: ${enumValues.join(',')}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
13
24
|
export function filterToEnumValues(inputs, checkEnum, caseInsensitive = false) {
|
|
14
25
|
if (caseInsensitive) {
|
|
15
26
|
return inputs.reduce((accum, currentInput) => {
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export declare function getEnumTypedKeys<T extends object>(input: T): (keyof T)[];
|
|
2
2
|
export declare function getEnumTypedValues<T extends object>(input: T): T[keyof T][];
|
|
3
|
+
/** Check if the given value is within the given enum. */
|
|
3
4
|
export declare function isEnumValue<T extends object>(input: unknown, checkEnum: T): input is T[keyof T];
|
|
5
|
+
/** Interpret a primitive as an enum value with type safety. */
|
|
6
|
+
export declare function ensureEnum<const ValueType extends `${EnumType[keyof EnumType]}`, const EnumType extends object>(value: ValueType, checkEnum: EnumType): EnumType;
|
|
4
7
|
export declare function filterToEnumValues<T extends object>(inputs: ReadonlyArray<unknown>, checkEnum: T, caseInsensitive?: boolean): T[keyof T][];
|