primitives.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const benchmark_1 = __importDefault(require("benchmark"));
  7. const v3_1 = require("zod/v3");
  8. const Mocker_js_1 = require("../tests/Mocker.js");
  9. const val = new Mocker_js_1.Mocker();
  10. const enumSuite = new benchmark_1.default.Suite("z.enum");
  11. const enumSchema = v3_1.z.enum(["a", "b", "c"]);
  12. enumSuite
  13. .add("valid", () => {
  14. enumSchema.parse("a");
  15. })
  16. .add("invalid", () => {
  17. try {
  18. enumSchema.parse("x");
  19. }
  20. catch (_e) { }
  21. })
  22. .on("cycle", (e) => {
  23. console.log(`z.enum: ${e.target}`);
  24. });
  25. const longEnumSuite = new benchmark_1.default.Suite("long z.enum");
  26. const longEnumSchema = v3_1.z.enum([
  27. "one",
  28. "two",
  29. "three",
  30. "four",
  31. "five",
  32. "six",
  33. "seven",
  34. "eight",
  35. "nine",
  36. "ten",
  37. "eleven",
  38. "twelve",
  39. "thirteen",
  40. "fourteen",
  41. "fifteen",
  42. "sixteen",
  43. "seventeen",
  44. ]);
  45. longEnumSuite
  46. .add("valid", () => {
  47. longEnumSchema.parse("five");
  48. })
  49. .add("invalid", () => {
  50. try {
  51. longEnumSchema.parse("invalid");
  52. }
  53. catch (_e) { }
  54. })
  55. .on("cycle", (e) => {
  56. console.log(`long z.enum: ${e.target}`);
  57. });
  58. const undefinedSuite = new benchmark_1.default.Suite("z.undefined");
  59. const undefinedSchema = v3_1.z.undefined();
  60. undefinedSuite
  61. .add("valid", () => {
  62. undefinedSchema.parse(undefined);
  63. })
  64. .add("invalid", () => {
  65. try {
  66. undefinedSchema.parse(1);
  67. }
  68. catch (_e) { }
  69. })
  70. .on("cycle", (e) => {
  71. console.log(`z.undefined: ${e.target}`);
  72. });
  73. const literalSuite = new benchmark_1.default.Suite("z.literal");
  74. const short = "short";
  75. const bad = "bad";
  76. const literalSchema = v3_1.z.literal("short");
  77. literalSuite
  78. .add("valid", () => {
  79. literalSchema.parse(short);
  80. })
  81. .add("invalid", () => {
  82. try {
  83. literalSchema.parse(bad);
  84. }
  85. catch (_e) { }
  86. })
  87. .on("cycle", (e) => {
  88. console.log(`z.literal: ${e.target}`);
  89. });
  90. const numberSuite = new benchmark_1.default.Suite("z.number");
  91. const numberSchema = v3_1.z.number().int();
  92. numberSuite
  93. .add("valid", () => {
  94. numberSchema.parse(1);
  95. })
  96. .add("invalid type", () => {
  97. try {
  98. numberSchema.parse("bad");
  99. }
  100. catch (_e) { }
  101. })
  102. .add("invalid number", () => {
  103. try {
  104. numberSchema.parse(0.5);
  105. }
  106. catch (_e) { }
  107. })
  108. .on("cycle", (e) => {
  109. console.log(`z.number: ${e.target}`);
  110. });
  111. const dateSuite = new benchmark_1.default.Suite("z.date");
  112. const plainDate = v3_1.z.date();
  113. const minMaxDate = v3_1.z.date().min(new Date("2021-01-01")).max(new Date("2030-01-01"));
  114. dateSuite
  115. .add("valid", () => {
  116. plainDate.parse(new Date());
  117. })
  118. .add("invalid", () => {
  119. try {
  120. plainDate.parse(1);
  121. }
  122. catch (_e) { }
  123. })
  124. .add("valid min and max", () => {
  125. minMaxDate.parse(new Date("2023-01-01"));
  126. })
  127. .add("invalid min", () => {
  128. try {
  129. minMaxDate.parse(new Date("2019-01-01"));
  130. }
  131. catch (_e) { }
  132. })
  133. .add("invalid max", () => {
  134. try {
  135. minMaxDate.parse(new Date("2031-01-01"));
  136. }
  137. catch (_e) { }
  138. })
  139. .on("cycle", (e) => {
  140. console.log(`z.date: ${e.target}`);
  141. });
  142. const symbolSuite = new benchmark_1.default.Suite("z.symbol");
  143. const symbolSchema = v3_1.z.symbol();
  144. symbolSuite
  145. .add("valid", () => {
  146. symbolSchema.parse(val.symbol);
  147. })
  148. .add("invalid", () => {
  149. try {
  150. symbolSchema.parse(1);
  151. }
  152. catch (_e) { }
  153. })
  154. .on("cycle", (e) => {
  155. console.log(`z.symbol: ${e.target}`);
  156. });
  157. exports.default = {
  158. suites: [enumSuite, longEnumSuite, undefinedSuite, literalSuite, numberSuite, dateSuite, symbolSuite],
  159. };