util.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.getParsedType = exports.ZodParsedType = exports.objectUtil = exports.util = void 0;
  4. var util;
  5. (function (util) {
  6. util.assertEqual = (_) => { };
  7. function assertIs(_arg) { }
  8. util.assertIs = assertIs;
  9. function assertNever(_x) {
  10. throw new Error();
  11. }
  12. util.assertNever = assertNever;
  13. util.arrayToEnum = (items) => {
  14. const obj = {};
  15. for (const item of items) {
  16. obj[item] = item;
  17. }
  18. return obj;
  19. };
  20. util.getValidEnumValues = (obj) => {
  21. const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number");
  22. const filtered = {};
  23. for (const k of validKeys) {
  24. filtered[k] = obj[k];
  25. }
  26. return util.objectValues(filtered);
  27. };
  28. util.objectValues = (obj) => {
  29. return util.objectKeys(obj).map(function (e) {
  30. return obj[e];
  31. });
  32. };
  33. util.objectKeys = typeof Object.keys === "function" // eslint-disable-line ban/ban
  34. ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban
  35. : (object) => {
  36. const keys = [];
  37. for (const key in object) {
  38. if (Object.prototype.hasOwnProperty.call(object, key)) {
  39. keys.push(key);
  40. }
  41. }
  42. return keys;
  43. };
  44. util.find = (arr, checker) => {
  45. for (const item of arr) {
  46. if (checker(item))
  47. return item;
  48. }
  49. return undefined;
  50. };
  51. util.isInteger = typeof Number.isInteger === "function"
  52. ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban
  53. : (val) => typeof val === "number" && Number.isFinite(val) && Math.floor(val) === val;
  54. function joinValues(array, separator = " | ") {
  55. return array.map((val) => (typeof val === "string" ? `'${val}'` : val)).join(separator);
  56. }
  57. util.joinValues = joinValues;
  58. util.jsonStringifyReplacer = (_, value) => {
  59. if (typeof value === "bigint") {
  60. return value.toString();
  61. }
  62. return value;
  63. };
  64. })(util || (exports.util = util = {}));
  65. var objectUtil;
  66. (function (objectUtil) {
  67. objectUtil.mergeShapes = (first, second) => {
  68. return {
  69. ...first,
  70. ...second, // second overwrites first
  71. };
  72. };
  73. })(objectUtil || (exports.objectUtil = objectUtil = {}));
  74. exports.ZodParsedType = util.arrayToEnum([
  75. "string",
  76. "nan",
  77. "number",
  78. "integer",
  79. "float",
  80. "boolean",
  81. "date",
  82. "bigint",
  83. "symbol",
  84. "function",
  85. "undefined",
  86. "null",
  87. "array",
  88. "object",
  89. "unknown",
  90. "promise",
  91. "void",
  92. "never",
  93. "map",
  94. "set",
  95. ]);
  96. const getParsedType = (data) => {
  97. const t = typeof data;
  98. switch (t) {
  99. case "undefined":
  100. return exports.ZodParsedType.undefined;
  101. case "string":
  102. return exports.ZodParsedType.string;
  103. case "number":
  104. return Number.isNaN(data) ? exports.ZodParsedType.nan : exports.ZodParsedType.number;
  105. case "boolean":
  106. return exports.ZodParsedType.boolean;
  107. case "function":
  108. return exports.ZodParsedType.function;
  109. case "bigint":
  110. return exports.ZodParsedType.bigint;
  111. case "symbol":
  112. return exports.ZodParsedType.symbol;
  113. case "object":
  114. if (Array.isArray(data)) {
  115. return exports.ZodParsedType.array;
  116. }
  117. if (data === null) {
  118. return exports.ZodParsedType.null;
  119. }
  120. if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") {
  121. return exports.ZodParsedType.promise;
  122. }
  123. if (typeof Map !== "undefined" && data instanceof Map) {
  124. return exports.ZodParsedType.map;
  125. }
  126. if (typeof Set !== "undefined" && data instanceof Set) {
  127. return exports.ZodParsedType.set;
  128. }
  129. if (typeof Date !== "undefined" && data instanceof Date) {
  130. return exports.ZodParsedType.date;
  131. }
  132. return exports.ZodParsedType.object;
  133. default:
  134. return exports.ZodParsedType.unknown;
  135. }
  136. };
  137. exports.getParsedType = getParsedType;