UNPKG

succulent

Version:

Powerful and easy runtime type checking

21 lines 773 B
import { Schema } from "../schema"; function isEnumMemberName(x, enumObject) { // @ts-expect-error - This is some real fun voodoo :) // eslint-disable-next-line return x in enumObject && typeof enumObject[enumObject[x]] !== "number"; } function enumKeys(enumObject) { return Object.keys(enumObject).filter((key) => isEnumMemberName(key, enumObject)); } export function $enum(enumObject, options = {}) { const keys = enumKeys(enumObject); const values = new Set(keys.map((key) => enumObject[key])); // eslint-disable-next-line return new Schema((x) => values.has(x), { displayName: options.displayName ?? `enum { ${keys.join(", ")} }`, *iter() { yield* values; }, }); } //# sourceMappingURL=enum.js.map