nativeEnum.js 576 B

12345678910111213141516
  1. export function parseNativeEnumDef(def) {
  2. const object = def.values;
  3. const actualKeys = Object.keys(def.values).filter((key) => {
  4. return typeof object[object[key]] !== "number";
  5. });
  6. const actualValues = actualKeys.map((key) => object[key]);
  7. const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)));
  8. return {
  9. type: parsedTypes.length === 1
  10. ? parsedTypes[0] === "string"
  11. ? "string"
  12. : "number"
  13. : ["string", "number"],
  14. enum: actualValues,
  15. };
  16. }